如何设计一个电梯系统?
Clarify
Core Object
Core Object,就是定义几个核心的类。承上启下,成为Use case的依据
步骤:
- 根据Input和Output线性分析 思考:电梯系统的输入和输出分别是什么呢?
- 思考各个模块都有什么内容? 需要注意的+Public,-Private,Protected(能被子类访问)这些属性
Use Case
就是一个个功能。 根据一个个CoreObject,列举每个CoreObject对应有哪些Use case
- ElevatorSystem
- 处理请求,分发
- Request
- Elevator
- 处理外部的请求(外面的人想进去,按按钮)
- 处理内部请求
- 开门
- 关门
- 检查重量
- ElevatorButton
- 按下去
Class
类图(Class diagram)
遍历每一个use case
对每个use case更加详细描述在做什么
Handle request:就是要把请求分发给某个电梯。那就给ElevatorSystem加一个方法:
一个小问题,万一没分配成功,例如现在电梯都坏了,怎么办?——使用Exceptions。加一个类:
Take external Request:除了电梯系统要handle,某个电梯也需要handle请求。那就给电梯加一个handleExternalRequest
除此以外,我们还有待停list:
Take internal Request:需要让电梯能处理internal的请求。 除此之外,我们还需要判断现在internal的请求是不是合法的。那就再加一个isQuestValid()和两个状态变量:
Open gate
给电梯加一个openGate()方法
Close gate
Check weight
press button
最终: