交通灯管理系统笔记

来源:互联网 发布:将文件夹共享到网络 编辑:程序博客网 时间:2024/04/27 15:59

面向对象的分析与设计

两块石头磨成一把石刀,石刀可以砍树,砍成木材,木材做成椅子

球从一根绳子的一段移动到了另一端

用面向对象的方法分析设计这两种过程。

1.       用到的类:StoneStoneSwordTreeWoodChairStoneFactoryWoodFactory

StoneFactroy

     StoneSword createSword(Stone stone1, Stone stone2);

 Wood cutTree(Tree tree);

 WoodFactory

 createChair(Wood wood);

2.       用到的类:BallRopePoint

       Ball

       move();

       Rope

       Rope(Point start, Point end);

       Point nextPoint(Point currentPoint);

设计准则:合适的方法写在合适的类里边,即哪个类里有方法要操作的属性,这个方法就写在哪个类里边。

 

交通灯系统的设计:

1.      确定业务的逻辑:

a)       共有12个方向的车。四条路,每条路上的车有三个转向方向(不转向、左转、右转)。四个交通灯,分别位于东西南北。两两对应,即相对的交通灯的红绿灯显示是一致的。

b)       简单模拟,认为只有红灯和绿灯。那么就有两方面需要考虑,东西方向是红灯的时候,南北方向是绿灯,反之亦然。先从一个方向的一个路口开始,比如:由南向北的车,有三个转向的方向,当南北方向的灯为红灯时,此车可转向东西两个方向,当南北方向的灯为绿灯时,此车可转向东、北和西三个防向。其他方向的车同理。 这就是基本的业务逻辑。

c)        涉及到的类:

                        i.              Road类代表路线,共有十二条路线。车属于路的属性,用多线程生成多辆车,并保存在向量中,当车穿过路口时,将生成的车移除。

                      ii.              Lamp类使用枚举类型,共有12个方向,用12Lamp表示12盏灯。由于有8个拐弯的方向不需看灯,所以只有4个方向的Lamp是其作用的。能够知道每个方向的灯是否亮,能够控制灯的亮灭。

                    iii.              LampController类用线程控制Lamp的开和关。

                    iv.              MainClass类用于启动整个系统,创建12条路和开启交通灯。

2.      编写代码:

a)       遇到的问题:思路不连贯,总断。不能熟练使用面向对象的方式编写代码。会把代码逻辑和业务逻辑相混淆。我还得多练啊。

3.      总结:

a)       面向对象的方式分析问题很容易,代码不再是代码,像是现实世界的一草一木,是有生命的。小技巧啊,小知识点啊,都是次要的。业务的逻辑确定了,剩下的就是把用语言表达的东西代码化了吧。有了想要实现的,其他的知识自然会找到,不用死记硬背。嗯,我是这样认为的。

原创粉丝点击