当涉及到面向对象的设计和分析时,有一组问题似乎是面试和课程中常用的。这就是其中之一;不幸的是,我在大学里的OOP教授从来没有真正给出过答案,所以我一直在想。
问题如下:设计一组基本的对象/方法,用于模拟电梯组。对象和它们的属性/方法是什么?
为了便于讨论,让我们假设我们的建筑有20层;底部是大厅,第二层连接到停车场(因此,人们将从底部或第二层进入/离开该建筑)。有一个为所有楼层服务的电梯组;在电梯组中有三个电梯井,每个电梯井有一个电梯。
在面向对象模型中对此进行建模的正确方法是什么?
发布于 2009-01-29 20:48:35
首先,有一个电梯课程。它有一个方向(上,下,站,维护),一个当前楼层和一个按方向排序的楼层请求列表。它接收来自此电梯的请求。
然后是一家银行。它包含电梯并接收来自楼层的请求。这些被安排到所有活动的电梯(不是在维护中)。
计划将如下所示:
每个电梯都有一组状态。
还有其他信号:
编辑:一些电梯不是从底部/第一层开始的,特别是。如果是摩天大楼。
min_floor和max_floor是电梯的两个附加属性。
发布于 2011-07-28 19:11:19
Donald Knuth的计算机编程艺术第一卷有一个电梯和数据结构的演示。Knuth提出了一个非常彻底的讨论和计划。
Knuth(1997)“信息结构”,“计算机编程艺术”,第1卷pp.302-308
发布于 2009-01-29 20:39:25
我已经看到了这个问题的许多变体。其中一个主要的差异(这决定了难度)是,是否存在一些集中化的尝试,以拥有一个具有负载平衡的“智能和有效的系统”(例如,在早上派更多的空闲电梯去大厅)。如果是这样的话,设计将包括一个真正有趣的设计的整个子系统。
在这里呈现一个完整的设计显然太多了,而且还有很多替代方案。广度也不清楚。在面试中,他们会试着弄清楚你会怎么想。然而,以下是您需要的一些东西:
中央控制器的
https://stackoverflow.com/questions/493276
复制相似问题