引言

说真的,从去年十一月份开始接触编程,到现在也好几个月了,自认为进步速度较快,但速度快也就导致了深度浅,走马观花式的学习,现在还是有很多理解不深刻的点,今天来仔细研究一下这个问题。我也是先入为主,第一门编程语言学的是Java,所以再接触C,一些概念就混淆了。

C语言模块化设计的核心

头文件本质是对外提供的接口契约,包含函数声明、宏定义、结构体类型声明。例如:

// math_utils.h
#ifndef MATH_UTILS_H
#define MATH_UTILS_H
int add(int a, int b);  // 函数声明
#endif

模块化实现规范

面向对象中的抽象机制

抽象类可以包含部分实现,它的目的是:描述一个公共基类,有共同的特征,有部分方法实现,但另一部分依赖子类自行实现

接口是一系列方法的声明,一个接口就是在描述一种能力。

设计目标上,抽象类为了代码复用+多台,而接口是行为契约。

设计范式对比

C模块化 vs OOP抽象