思考题答案
前两个问题只有读者自己知道,所以省略。
用什么方法才能发现这些问题呢?
继续关注本公众号,并且勤加练习。<-你可以说是广告,管他呢。
应该如何解决这些问题呢?
两个字:分解
四个字:面向对象
解决软件遇到的问题,有一个最常用的方法就是对系统进行分解。好听的说法叫重构。
识别交通信号系统中的类
下面对于类图中出现的类进行简单的介绍
TrafficSystem:交通信号系统全体,具体系统中使用该类的派生类。
InputDevice:输入设备的基类。
PushButton:操作按钮。
TrafficLightEngine:信号系统整体执行逻辑,具体系统中使用该类的派生类。
TrafficLight:信号灯基类。
PedestrainSpeaker:严格讲这个不是信号灯,而是行人通行时播放提示音的设备。
RedestrainLight:行人专用信号灯。允许同行时绿灯,最后阶段绿灯闪烁,禁止同行是红灯。
StandardVehicleLight:车辆专用信号灯。允许同行时绿灯,最后阶段绿灯闪烁,安全停止时黄灯,禁止通行状态时红灯。
DigitalVehicleLight:车辆专用信号灯。允许同行时绿灯,最后阶段有数字表示剩余时间,安全停止时黄灯,禁止通行状态时红灯。
构建交通信号系统
例子系统构成如下包括:系统停止按钮,横穿马路请求按钮,行人通行音乐提示设备,行人信号灯,车辆信号等。
接下来的文章会针对这个交通系统中的每一个要素的状态机建模。敬请期待。
一点感想
对于系统结构的分解,不同的设计者会有不同的视角,不同的观点,所以就会有不同的模型。但是好的设计会有一些共同点,其中的一个特点应该就是分解的过程就像庖丁解牛。我想庖丁解牛至少需要两个要素:熟悉,熟练。熟悉就是要对牛的结构要熟悉,熟练就是运用工具要熟练。
希望每一位读者都能像庖丁解牛一样对系统进行分解。