【2017级面向对象程序设计】作业二

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;//储存门是否打开
};

posted @ 2018-05-06 19:54  纪华裕  阅读(146)  评论(2编辑  收藏  举报