本文涉及个人对于面向对象(简称:OO),与面向过程(简称:PO)的理解,并通过电梯进行论述。
从能动的电梯开始
- 第一步我们的目标是写一个能动的电梯,要求如下:
- 能通过告诉他去第几层来移动到第几层。
- 能告知移动合不合法
- 能告诉大家他现在在第几层。
- PO写法:
- 变量:floor:存放当前楼层。
- 常量:MAX:存放最高楼层。
- 函数:
- moveTo:将电梯移动到目标楼层。
- isLegal:判断电梯目标楼层是否合法。
- OO写法:
- 类:elevator:
- 变量·私有:floor:存放当前楼层。
- 常量·私有:MAX:存放最高楼层。
- 函数·公有:
- 构造与析构函数。
- moveTo:将电梯移动到目标楼层。
- isLegal:判断电梯目标楼层是否合法。
- getFloor:返回当前楼层。
- 类:elevator:
这里并不能看出OO与PO的大区别,只能看出OO比PO多了一个类,一个构造与析构函数,一个getFloor函数,那么这些是不是多余的呢?
电梯的第一个客人
- 这一次我们的电梯迎来了第一个客人,这会任务也很简单,需要把客人送到指定楼层再接下一个客人,要求如下:
- 接受客人的请求方向,把电梯移动过去接客人。
- 接受电梯的请求楼层,把电梯移动过去送客人。
- 重复以上两步。
- PO写法:
- 分析:这回我们需要一个新的变量goal,来储存客人在第几层请求。之后使用moveTo移动过去,在储存客人要去几层,再moveTo过去,然后在外面套一个循环,就OK了。
- 事例代码:
#include<一堆头文件>
void moveTo(int goal){
移动到goal;
}
bool isLegal(int goal){
判断是否合法;
}
int main(){
int goal;
int floor;
const int MAX;
while(有输入){
处理输入;
}
return 0;
}
- OO写法:
- 分析:给类添加一个私有变量goal,添加公有方法setGoal,更改方法moveTo为私有
- 事例代码:(不存在的)