------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
由交通灯管理系统等到的一些面向对象的分析经验
1 面向对象分析:
交通灯系统中设计的对象有?
红绿灯 ------------>灯如何切换?------->交通灯控制系统
汽车汽车通过路口的条件?
1 绿灯
2 自己前面车。自己前面是否有车?问哪个对象呢?--->问路路上有车
所以路上得有一个存储汽车的集合。还得有增加删除的方法。
需求不需要体系汽车的移动过程,只是捕捉汽车过路的过程,也就是路上减少一个车的
过程。所以车不用独立设计为一个对象。用字符串表示就行。
3 等时绑定在路上的
路线
灯的设计:只能有12个,不可能让外界去new,整个程序中只有一份,且永远只有12个
所以选择 枚举
由于东西南北的对称性:只需设计四个灯的逻辑
灯中的成员:
灯是否是绿灯
与灯同时为绿的对应方向
灯变红时的下一个变绿的灯
控制器的设计
1 记住当前的灯时哪个? --->灯成员变量
--------------------------------------------------------------------------
面向对象设计的一条重要经验:谁拥有数据,谁就得对外提供操作这些数据的方法。
如:人在黑板上画圆,
对象有 person blackboard,circle
画圆:操作的数据:半径 圆心
所以圆对外提供画圆的方法;
人关门
列车司机急刹车
售货员统计收获小票的金额。
小球从绳子的一段移动到了另一端。有面向对象的方式分析
绳子的本质:为小球移动指定方向
具有nextPoint()的方法.
小球:有移动的方法
有一个绳子变量
2块石头磨成石刀石刀砍树树做出椅子
面向对象分析过程
对象有?
stone 石头如何变成石刀? 石头自己有个方法变成石刀?错 这样石头字节就没了
应该有其他对象操作石头,操作的结果是:stoneknife
stonekinfe = knifeFactory.createkinfe(stone);
stoneknife
tree 刀砍树 material = stoneKinife.cut(tree);
material 材料如何变椅子? 材料自己不能变 不然就是自己把自己变没了
chair = ChairFactory(material);
chair
实际应用有:比如线程间实现同步。
1 把资源单独定义为一个类
2资源拥有数据 ————-> 资源对外提供方法
3 资源在自己内部完成对同步的处理
4 将资源作为对象,传递给实现Runnable接口的类
5在该类的run方法中调用操作资源的函数
-----------------------------------------------------------------------
银行调度系统
面向对象分析过程
1 三种类型客户:VIP 普通客户 快速客户 异步随机产生各种客户。
各类型客户在器对应窗口按顺序依次办理
1客户 --------由取号机产生
2每个类型的客户 器号码编号是独立的-----三个取号器,由统一的
一个号码机进行管理 在整个系统中取号器始终只有一个 --->单例
2 各类型的客户在其对应的窗口依次办理业务,准确的说:时窗口依次叫号。
各窗口改叫哪个号呢?找号码管理器,窗口每次找号码管理器获取当前要被服务的号码
取号器的设计
服务窗口?
1 叫号方法?
public void start(){
//Executores:使用线程池的方法
};
2 窗口类型只有 三种如何表示? ---->枚举
public enmu CustomerType
{
COMMON,EXPRESS,VIP;
}
窗口类型不通过构造函数赋值 而是 通过set方法实现