D1: elevater design

来源:互联网 发布:手机切歌软件 编辑:程序博客网 时间:2024/06/05 17:46
paul198247 (S.Battier) 于 (Mon Jul 12 00:30:59 2010, 美东) 提到:

如果让设计一个多部电梯的控制系统,画出uml图。请问大概要设计哪些类,类之间的
关系?
我是最近才看OOD的,比较菜
我是这么想的:
主系统
System包含了taskcenter,elevator
任务系统taskcenter负责给不同电梯增加任务,删除任务,响应不同电梯内的任务请求
,每层用户的请求

电梯elevator 包括了自己的任务list,方向,以及状态。电梯类有2个子类,一个是UI
_elevator,一个是task_elevator。UI_elevator函数有addrequest,
removerequest,askforhelp,opendoor,closedoor这些是给电梯内的用户的;task_
elevator有getdirection,getcondition,getrequest,addtask, removetask等函数
,这些是给taskcenter调用。

request 有2种子类,一种是elevatorrequest,是UI_elevator发出的;一种是
floorrequest,是每层电梯外用户发出的。

taskcenter和request,UI_elevator和request的关系应该是关联关系
taskcenter和task_elevator的关系应该是聚合吧。




☆─────────────────────────────────────☆

  boyjemmy (jemmyboy) 于 (Mon Jul 12 18:52:30 2010, 美东) 提到:

先说说我对单个电梯设计的想法(欢迎批评指正)

1 Elevator Object, 应该包含physical components: Door, Indicator Lights, 
Control Panel. 一些性质(Non physical properties): Speed, Num of floors, 
capacity, max weight. 所能从事的操作methods: moveto, stop, ringbell。然后电
梯应该能够handle user request, 所以还应有一个requestQueue, 电梯应该根据自己
的state 和 requestQueue做出moveto, stop的决定,所以有一component: 
requestHandler(Strategy pattern),可以set不同的requestHanlder.

2 Door, properties: State, method: open, close, getState.

3 Indicator light(指示所到楼层),properties: state; method: on, off, 
getState

4 Control Panel, 包含physical component: Floor Buttons, Other buttons(也可直
接把Buttons 当作 elevator的components,还没考虑哪一个方法好)

5 Button, properties: floorNum, Parent Elevator, methods: OnPress(Observer 
Pattern). 

6 ElevatorRequestHandler: handleRequest(Elevator ele, requestList rlist), 可
以define 一个interface, 然后又各种不同实现

7 Request: 可以define 一个abstract class, 然后有子类movingRequest, 
helpRequest doorRequest etc.
原创粉丝点击