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

相关文章:

  • 2021-06-26
  • 2022-02-03
  • 2021-09-14
  • 2021-10-20
  • 2021-08-12
猜你喜欢
  • 2022-03-03
  • 2021-10-24
  • 2021-10-14
  • 2022-02-21
  • 2021-08-27
  • 2021-08-24
  • 2021-05-18
相关资源
相似解决方案