面向对象
面向过程
就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
面向对象
就是把现实中的事物都抽象为“对象”。每个对象是唯一的,且都可以拥有它的属性与行为。我们就可以通过调用这些对象的方法、属性去解决问题。
举例
单说名词没有感觉,我们来个例子,假设我们在做一个游戏,我们可以控制的角色有猫咪、鱼、鸟。
其中猫咪需要4条腿走路,鱼只能在水里游,鸟需要在天上飞。这时,用户按下前进键,那么不同的角色就需要调用不同的前进函数。
| 角色 | 函数 |
|---|---|
| 猫咪 | run() |
| 鱼 | swimming() |
| 鸟 | fly() |
按照最直觉的想法,我们写一段代码
// 按键按下
void btn_press(unsigned char btn)
{
// 按下了前进键
if(btn == BTN_GO)
{
swich(roleNow)
{
case cat:
run();
break;
case fish:
swimming();
break;
case bird:
fly();
break;
}
}
}
这就是一段面向过程的代码,按下按键之后,先去判断当前选择的角色,然后根据不同的角色调用不同的前进函数。
看着好像没什么问题,也确实没什么问题,但如果角色多大100个,swich后面跟着100多个case,代码繁杂且难以维护。
下面我们试着用面向对象的方法去解决这个问题。
面向对象的解法
首先我们需要对猫咪、鱼、鸟进行抽象,我们发现这三个角色他们各自都有一个前进的函数,那么我们是否可以抽象出一个对象。
typedef struct Role
{
void (*go)();
};
这里我们定义了一个结构体,其中包含了一个函数指针,指针名称叫做go(),它没有具体的实现,但却是每一个角色都有的。
然后我们将角色实例化,也就是定义几个角色
void main()
{
struct Role cat;
struct Role fish;
struct Role bird;
cat.go = run;
fish

文章讲述了面向对象编程的概念,通过对比面向过程和面向对象的方法,解释了如何在C语言中使用结构体、函数指针和继承派生来简化代码并提高可维护性。作者给出了一个实际的游戏角色例子,展示了面向对象的优势和C语言的指针技巧应用。
最低0.47元/天 解锁文章
1016

被折叠的 条评论
为什么被折叠?



