• 【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;//储存门是否打开
    };
    
    
  • 相关阅读:
    leveldb的搜索
    分布式存储bfs
    golang channel的行为
    支持rotate和大小限制的golang log库
    后台架构 一些需要注意的地方
    不要滥用面向对象,写出难以阅读和修改的代码
    goloader
    逻辑引擎、工作流、CMDB小感
    HTML5学习笔记4
    HTML5学习笔记3
  • 原文地址:https://www.cnblogs.com/jhy16193335/p/8999319.html
Copyright © 2020-2023  润新知