PO电梯
- 一个用来储存请求的结构体,一个用来储存乘客信息的结构体。
- 流程如下:
- 检查是否有请求。
- 移动到请求。
- 接客。
- 送客。
- 检查是否已经送完了所有乘客,若没有则回到第一步检测是否有新的请求。
OO电梯
- 一个用来储存时间的类,一个用来储存乘客的类,一个用来储存电梯的类,一个用来储存请求的结构体,一个主函数。
- 流程如下:
- 预处理:读取乘客请求,定义一个电梯和一堆乘客,初始化时间类。
- 运行:
- 调用乘客类方法检查是否有请求,有则放入请求队列。、
- 调用乘客方法,检查是否有可以进出电梯。
- 调用电梯方法选取合适目标。
- 向合适目标方向移动。
- 检查是否已经送完了所有乘客,若没有则回到第一步检测是否有新的请求。
- 尾处理:暂时无。
对比
- 个人认为OO电梯在现在的题目条件下与PO电梯相比没有很大的优越性。
- 个人认为OOP像是围攻一个目标全部围上最后一网打尽,而PO更像是对着一个点打直到打到目标。
- 个人认为OO的代码拓展性,安全性,可读性更好。
电梯类
class Elevator
{
public:
Elevator() {
liftfloor = 1;
direction = 0;
isopen = 0;
}
~Elevator();
//输出当前楼层
int getLiftfloor() {
return liftfloor;
}
//开门
void open() {
isopen = 1;
}
//关门
void close() {
isopen = 0;
}
//运行
void run() {
liftfloor += direction;
}
//运行到目标
void runTo(int goalfloor) {
if (goalfloor != liftfloor) {
direction = (goalfloor - liftfloor) / abs(goalfloor - liftfloor);
}
for (int i = liftfloor; i < goalfloor; i++) {
run();
}
}
private:
int liftfloor; //储存当前楼层
int direction;//储存运行方向
bool isopen;//储存门是否打开
};