说起“面向对象”
关于“面向对象”这东西,就来这里小小分享一下个人感悟。
“对象”
说到“面向对象”,那肯定得先从“对象”说起。何为对象,答曰“万物皆可对象”。“对象”说白了就是一个实体,一个人、一只小鸡、一条蛇等,总之你能指出来的,都能作为对象。
在这里我们以人为“对象”,则有:人有年龄、身高、体重等属性,人会吃饭、会走路、会睡觉、会工作等动作…那我们就可以定义成一个类,如下:
class people {
private:
int age;//年龄
int height;//身高
int weight;//体重
void eat();//吃饭
void walk();//走路
void sleep();//睡觉
void work();//工作
public:
void init(......);//初始化
};
(其中private为私有,public为公有。简单理解就是,私有的属性只能类内调用,公有的则可在类内外调用,这里就不具体说)
通过这个例子,我们将“人”定义成一个类,在我们需要用到“人”时,即可通过对这个类进行实例化,就有了一个“人”的对象。
“面向对象”
面向对象,是一种编程的思想。我们思考一下,如果要来写一个贪吃蛇的小游戏,我们该怎么写。
(1)先从面向过程入手:
①首先我们应该定义一个地图(map),
②然后在规定位置生成一条小蛇(snake_position),
③然后规定蛇的方向等状态量(dir,speed),
④然后在随机位置生成一个食物(food),
⑤然后检查输入缓冲区,
⑥然后根据当前蛇的运动方向(dir)判断下一个时刻的状态(吃到,则运行吃到食物的程序eat_food;碰壁/蛇身,则运行游戏结束条件的程序game_over;没事,那就运行蛇动起来程序run),
⑦然后等待设定时间(sleep(刷新时间) ),
循环游戏阶段直至游戏结束。
(当然,整个过程中还有很多需要用到的功能函数,这只是整个程序的大概流程)
我们可以看到,我们需要对整个游戏的过程了如指掌,游戏到这里的下一步是什么、会怎么样、该怎么样,我们都需要对它负责。这样我们就需要先把整个游戏的逻辑流程写出来(好比上面那样写出来),然后根据这些步骤,逐渐填充完整实现各功能。
(2)从面向对象入手:
(这里只是强调了“蛇”这个对象,对其他先不“对象”化)
①首先我们应该定义一个地图(map),
②然后创建“蛇”这一对象(snake),
③然后在随机位置生成一个食物(food),
④然后检查输入缓冲区,