Closed. This question is opinion-based。它当前不接受答案。












想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。

6年前关闭。



Improve this question




在面向对象的设计和分析中,似乎有一些问题在访谈和类里面很常用。这就是其中之一;不幸的是,我在大学的OOP教授实际上并没有给出答案,所以我一直在想。

问题如下:设计一组基本的对象/方法以模拟电梯组。对象及其属性/方法是什么?

为了争辩,让我们假设我们的建筑物有20层。底层是大厅,而第二层是与 parking 场相连的(因此,人们将进入位于底层或第二层的建筑物)。有一个供所有楼层使用的电梯列;电梯组中有三个电梯井,每个井井有一个电梯。

在面向对象的模型中对此建模的正确方法是什么?

最佳答案

首先是电梯类(class)。它有一个方向(上,下,站,维护),当前楼层和按该方向排序的楼层请求列表。它从该电梯接收请求。

然后有一家银行。它包含电梯,并接收来自楼层的请求。这些安排在所有 Activity 的电梯中(不在维护中)。

调度将类似于:

  • (如果有)选择此楼层的站立式电梯。
  • else挑选一部电梯移动到该楼层。
  • else选择另一层的站立式电梯。
  • else选择负载最低的电梯。

  • 每个电梯都有一组状态。
  • 维护:电梯对外部信号无反应(仅对自身信号有反应)。
  • 支架:电梯固定在地板上。如果收到电话。电梯在那层楼上,门打开了。如果在另一层,则朝该方向移动。
  • Up:电梯向上移动。每次到达地板时,它都会检查是否需要停止。如果是这样,它将停止并打开门。它等待一段时间,然后关上门(除非有东西通过它们移动。然后将其从请求列表中删除,然后检查是否有其他请求。如果是,则电梯再次开始移动。如果没有,则进入国家立场
  • 下:像上,但方向相反。

  • 还有其他信号:
  • 警报。电梯停止。如果它在地板上,则门打开,清除请求列表,将请求移回银行。
  • 门打开。如果电梯在地板上并且不动,则打开门。
  • 门关闭。如果它们是打开的,则关上门。

  • 编辑:
    一些电梯不是从最低/第一层开始。如果是摩天大楼。

    min_floor和max_floor是Elevator的两个附加属性。

    关于oop - 使用面向对象的分析和设计对电梯建模,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/493276/

    10-11 04:15