EA&UML日拱一卒-状态图::庖丁解牛

时间:2022-11-13 17:16:13

思考题答案


前两个问题只有读者自己知道,所以省略。


用什么方法才能发现这些问题呢?


继续关注本公众号,并且勤加练习。<-你可以说是广告,管他呢。


应该如何解决这些问题呢?


  • 两个字:分解

  • 四个字:面向对象


解决软件遇到的问题,有一个最常用的方法就是对系统进行分解。好听的说法叫重构。


识别交通信号系统中的类


直接看结果

EA&UML日拱一卒-状态图::庖丁解牛

下面对于类图中出现的类进行简单的介绍


TrafficSystem:交通信号系统全体,具体系统中使用该类的派生类。

InputDevice:输入设备的基类。

PushButton:操作按钮。

TrafficLightEngine:信号系统整体执行逻辑,具体系统中使用该类的派生类。

TrafficLight:信号灯基类。

PedestrainSpeaker:严格讲这个不是信号灯,而是行人通行时播放提示音的设备。

RedestrainLight:行人专用信号灯。允许同行时绿灯,最后阶段绿灯闪烁,禁止同行是红灯。

StandardVehicleLight:车辆专用信号灯。允许同行时绿灯,最后阶段绿灯闪烁,安全停止时黄灯,禁止通行状态时红灯。

DigitalVehicleLight:车辆专用信号灯。允许同行时绿灯,最后阶段有数字表示剩余时间,安全停止时黄灯,禁止通行状态时红灯。


构建交通信号系统


以下是举例用系统的对象图

EA&UML日拱一卒-状态图::庖丁解牛

例子系统构成如下包括:系统停止按钮,横穿马路请求按钮,行人通行音乐提示设备,行人信号灯,车辆信号等。


接下来的文章会针对这个交通系统中的每一个要素的状态机建模。敬请期待。


一点感想


对于系统结构的分解,不同的设计者会有不同的视角,不同的观点,所以就会有不同的模型。但是好的设计会有一些共同点,其中的一个特点应该就是分解的过程就像庖丁解牛。我想庖丁解牛至少需要两个要素:熟悉,熟练。熟悉就是要对牛的结构要熟悉,熟练就是运用工具要熟练。


希望每一位读者都能像庖丁解牛一样对系统进行分解。


以上就是今天的文章,欢迎点赞,关注并推荐给您的朋友!阅读更多更新文章,请扫描下面二维码,关注微信公众号【面向对象思考】EA&UML日拱一卒-状态图::庖丁解牛