首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用面向对象的分析和设计对电梯进行建模

使用面向对象的分析和设计对电梯进行建模
EN

Stack Overflow用户
提问于 2009-01-29 20:30:39
回答 7查看 145.7K关注 0票数 139

当涉及到面向对象的设计和分析时,有一组问题似乎是面试和课程中常用的。这就是其中之一;不幸的是,我在大学里的OOP教授从来没有真正给出过答案,所以我一直在想。

问题如下:设计一组基本的对象/方法,用于模拟电梯组。对象和它们的属性/方法是什么?

为了便于讨论,让我们假设我们的建筑有20层;底部是大厅,第二层连接到停车场(因此,人们将从底部或第二层进入/离开该建筑)。有一个为所有楼层服务的电梯组;在电梯组中有三个电梯井,每个电梯井有一个电梯。

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

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-01-29 20:48:35

首先,有一个电梯课程。它有一个方向(上,下,站,维护),一个当前楼层和一个按方向排序的楼层请求列表。它接收来自此电梯的请求。

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

计划将如下所示:

  • 如果可用,请为此楼层选择站式电梯。
  • 否则选择移至此楼层的电梯。
  • 或选择其他楼层的站式电梯。
  • 否则选择负载最低的电梯。

每个电梯都有一组状态。

  • Maintenance:电梯不会对外部信号做出反应(只对它自己的signals).
  • Stand:)电梯固定在楼层上。如果它收到一个呼叫。电梯在那一层,门是开着的。如果它在另一个楼层,它会在电梯向上移动的那个direction.
  • Up:中移动。每次到达楼层时,它都会检查是否需要停止。如果是这样,它会停止并打开门。它会等待一段时间,然后关闭门(除非有什么东西通过它们。然后,它从请求列表中删除该发言权,并检查是否有另一个请求。如果是这样的话,电梯又开始移动了。如果没有,它就进入状态看台。
  • 向下:向上,但方向相反。

还有其他信号:

  • 警报。电梯停了下来。如果它在楼层上,门就会打开,请求列表就会被清除,请求就会移回银行。
  • 门打开了。如果电梯在楼层上并且静止不动,则打开门。
  • 门关闭。如果门是开着的,请将门关上。

编辑:一些电梯不是从底部/第一层开始的,特别是。如果是摩天大楼。

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

票数 176
EN

Stack Overflow用户

发布于 2011-07-28 19:11:19

Donald Knuth的计算机编程艺术第一卷有一个电梯和数据结构的演示。Knuth提出了一个非常彻底的讨论和计划。

Knuth(1997)“信息结构”,“计算机编程艺术”,第1卷pp.302-308

票数 19
EN

Stack Overflow用户

发布于 2009-01-29 20:39:25

我已经看到了这个问题的许多变体。其中一个主要的差异(这决定了难度)是,是否存在一些集中化的尝试,以拥有一个具有负载平衡的“智能和有效的系统”(例如,在早上派更多的空闲电梯去大厅)。如果是这样的话,设计将包括一个真正有趣的设计的整个子系统。

在这里呈现一个完整的设计显然太多了,而且还有很多替代方案。广度也不清楚。在面试中,他们会试着弄清楚你会怎么想。然而,以下是您需要的一些东西:

中央控制器的

  1. Representation (假设电梯接口单元的one).
  2. Representations为elevators
  3. Representations )(这些可能因电梯而异)。显然,还呼叫每个楼层上的按钮等。每个楼层上的箭头或指示器的视图(几乎是人和货物的电梯的视图( model).
  4. Representation )(对于考虑建筑物的最大loads)
  5. Representation可能是重要的(在某些情况下,因为某些楼层有时可能被阻塞等))
票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/493276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档