当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《使用面向对象的分析和设计对电梯进行建模》经验,为你挑选了4个好方法。

在涉及面向对象的设计和分析时,有一组似乎在面试和课程中常用的问题.这是其中之一; 不幸的是,我在大学的OOP教授实际上从未给出答案,所以我一直在想.

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

为了论证,让我们假设我们的建筑有二十层; 底层是大厅,二楼连接到停车场(因此,人们将进入/离开底层或二楼的建筑物).有一个电梯银行为所有楼层提供服务; 电梯组中有三个电梯井,每个井有一个电梯.

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



1> Toon Krijthe..:

首先是电梯类.它有一个方向(向上,向下,站立,维护),当前楼层和按方向排序的楼层请求列表.它接收来自这个电梯的请求.

然后有一家银行.它包含电梯并接收楼层的要求.这些计划安排在所有有效电梯上(不在维护中).

安排如下:

如果有的话,为这个楼层选择一个站立式电梯

否则选择一个移动到这个楼层的电梯.

否则在另一层楼上挑一个站立的电梯.

否则选择负载最低的电梯.

每个电梯都有一组状态.

维护:电梯不对外部信号作出反应(仅对其自身的信号).

站立:电梯固定在地板上.如果它接到电话.电梯就在那个楼层,门打开了.如果它在另一层,它会向那个方向移动.

向上:电梯向上移动.每次到达楼层时,都会检查是否需要停止.如果是这样,它会停止并打开门.它会等待一段时间并关闭门(除非有人正在通过它们.然后它从请求清单中移除地板并检查是否有另一个请求.如果是这样,电梯再次开始移动.如果没有,它进入国家立场.

向下:喜欢向上,但反向.

还有其他信号:

报警.电梯停了下来.如果它在地板上,门打开,请求清单被清除,请求被移回银行.

门打开了.如果电梯在地板上而不移动,则打开门.

门关上了.如果它们打开就关上门.

编辑:有些电梯不从底部/ first_floor esp开始.在摩天大楼的情况下.

min_floor和max_floor是Elevator的另外两个属性.


电梯模拟http://play.elevatorsaga.com/

2> vine'th..:

唐纳德克努特的计算机程序设计艺术Vol.1展示了电梯和数据结构.Knuth提出了一个非常彻底的讨论和计划.

Knuth(1997)"Information Structures",The Art of Computer Programming Vol.1 pp.302-308


链接到上面的谷歌书籍.
本书的这一部分(详细说明)如何运行电梯模拟.它没有描述如何建模(以OOP方式).但是,是的......很棒的书!

3> Uri..:

我见过这个问题的很多变种.其中一个主要差异(决定难度)是是否有一些集中尝试拥有一个能够实现负载平衡的"智能和高效系统"(例如,在早上向大厅发送更多闲置电梯).如果是这种情况,设计将包括一个非常有趣的设计的整个子系统.

一个完整的设计显然太多了,无法在这里呈现,并且有许多替代品.广度也不明确.在一次采访中,他们会试着弄清楚你会怎么想.但是,这些是您需要的一些东西:

    中央控制器的表示(假设有一个).

    电梯的代表

    电梯的接口单元的表示(这些可以与电梯不同).显然也可以在每个楼层呼叫按钮等.

    每层楼上的箭头或指示器的表示(几乎是电梯模型的"视图").

    代表人类和货物(对于最大载荷因素可能很重要)

    建筑物的代表(在某些情况下,某些楼层可能会被封锁,等等)



4> Arun..:

看到:

Lu Luo, A UML Documentation for a Elevator System
Distributed Embedded Systems, Fall 2000
Ph.D. Project Report
Carneghie Mellon University

链接

推荐阅读
mobiledu2402851203
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有