交通灯管理系统笔记
来源:互联网 发布:将文件夹共享到网络 编辑:程序博客网 时间:2024/04/27 15:59
面向对象的分析与设计
“两块石头磨成一把石刀,石刀可以砍树,砍成木材,木材做成椅子”,
“球从一根绳子的一段移动到了另一端”,
用面向对象的方法分析设计这两种过程。
1. 用到的类:Stone、StoneSword、Tree、Wood、Chair、StoneFactory、WoodFactory。
StoneFactroy
StoneSword createSword(Stone stone1, Stone stone2);
Wood cutTree(Tree tree);
WoodFactory
createChair(Wood wood);
2. 用到的类:Ball、Rope、Point。
Ball
move();
Rope
Rope(Point start, Point end);
Point nextPoint(Point currentPoint);
设计准则:合适的方法写在合适的类里边,即哪个类里有方法要操作的属性,这个方法就写在哪个类里边。
交通灯系统的设计:
1. 确定业务的逻辑:
a) 共有12个方向的车。四条路,每条路上的车有三个转向方向(不转向、左转、右转)。四个交通灯,分别位于东西南北。两两对应,即相对的交通灯的红绿灯显示是一致的。
b) 简单模拟,认为只有红灯和绿灯。那么就有两方面需要考虑,东西方向是红灯的时候,南北方向是绿灯,反之亦然。先从一个方向的一个路口开始,比如:由南向北的车,有三个转向的方向,当南北方向的灯为红灯时,此车可转向东西两个方向,当南北方向的灯为绿灯时,此车可转向东、北和西三个防向。其他方向的车同理。 这就是基本的业务逻辑。
c) 涉及到的类:
i. Road类代表路线,共有十二条路线。车属于路的属性,用多线程生成多辆车,并保存在向量中,当车穿过路口时,将生成的车移除。
ii. Lamp类使用枚举类型,共有12个方向,用12个Lamp表示12盏灯。由于有8个拐弯的方向不需看灯,所以只有4个方向的Lamp是其作用的。能够知道每个方向的灯是否亮,能够控制灯的亮灭。
iii. LampController类用线程控制Lamp的开和关。
iv. MainClass类用于启动整个系统,创建12条路和开启交通灯。
2. 编写代码:
a) 遇到的问题:思路不连贯,总断。不能熟练使用面向对象的方式编写代码。会把代码逻辑和业务逻辑相混淆。我还得多练啊。
3. 总结:
a) 面向对象的方式分析问题很容易,代码不再是代码,像是现实世界的一草一木,是有生命的。小技巧啊,小知识点啊,都是次要的。业务的逻辑确定了,剩下的就是把用语言表达的东西代码化了吧。有了想要实现的,其他的知识自然会找到,不用死记硬背。嗯,我是这样认为的。
- 交通灯管理系统笔记
- 交通灯管理系统 学习笔记
- 交通灯管理系统学习笔记
- 交通灯管理系统学习笔记
- 学习笔记--交通灯管理系统
- java笔记-交通灯管理系统
- 学习笔记16—交通灯管理系统
- 黑马程序员_交通灯管理系统笔记
- 黑马程序员---交通灯管理系统 学习笔记
- 黑马程序员-交通灯管理系统学习笔记
- 黑马程序员_交通灯管理系统笔记
- 黑马程序员 交通灯管理系统笔记总结
- 《黑马程序员》交通灯管理系统--学习笔记
- 黑马程序员_交通灯管理系统笔记
- 黑马程序员-10-交通灯管理系统笔记
- 黑马程序员_交通灯管理系统笔记
- 黑马程序员----交通灯管理系统学习笔记
- 交通灯管理系统
- Oracle中锁的几种模式
- 基于OPhone SDK1.5的英文电子词典的实现
- C++及数据结构中的堆和栈的区别
- StreamReader与StreamWriter
- .net 缩略图处理
- 交通灯管理系统笔记
- 在c#中通过http对象编程实现webservice调用
- 浅谈https/ssl/数字证书
- 银行业务调度系统笔记
- Oracle多表关联update的几种方法
- RDTSC指令实现纳秒级计时器
- 在U-boot下实现自动识别启动Flash的原理(针对S3C24x0)
- AT89C51SND1C技术简介与IC解密
- 悦读上品 得乎益友