面向对象的分析与设计

来源:互联网 发布:全民神仙官网通知 编辑:程序博客网 时间:2024/05/15 06:50

谁拥有数据  谁就对外提供操作这些数据的方法!

eg:

1. 汽车 马路

汽车看到自己所在的录像对应的红绿灯就穿过路口? 不是,还需要看它前面是不是有车,那么,看它前面是否有车,该问哪个对象呢?

该问路,路中存储着车的集合,显然路上就应该有增加车辆和减少车辆的方法。不是汽车自己给自己减少了。

2.人在黑板画圆(两个对象:人, 黑板)

问题:现在有一个画圆的动作  这是那个对象上面的方法?

答:画圆用到了 圆心和半径  要操作这两个数据 那么谁有这些东西  肯定是 黑板有  所以画圆的方法是圆提供的 

3.人在开火车(两个对象:人,火车)

问题 : 现在有一个刹车的动作 这是哪个对象上面的方法?

答:火车  用到了火车刹车的功能。因为人只是给火车一个信号 那么 火车就去熄火 刹车动作是列车内部的

4.售票员统计售货小票上面的总金额(两个对象:人, 售货小票)

问题:统计票据金额这个动作   这是那个对象上面的方法?

答:票据  因为商品价格的多少是装在售货小票里面的 ,人只不过是去调用了一个票据对象上面getTotalMoney()方法  这个方法是票据提供的。

5.人锁门(两个对象:人 门)

问题:锁门的动作是你还是门?

答:门 。因为 人只是调用了门上锁的方法  是门自己锁上的

**************************************************************

请用面向对象的方式设计如下情景!:

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

分析:

Stone  身上应该有变成石刀的方法? 肯的没有 因为如果是这样的话  把自己逗弄没了,只能是别人把石头弄没了 怎么能是自己把自己弄没了呢?

结果:StoneKnife = KnifeFactory.createKnife(first stone,second stone)

StoneKnife

tree 木材变成 材料  

结果 material=StoneKnife.cut(tree);

material 材料变成椅子

结果  chair=chairFactory.makeChairz(material);

chair

2.小球从一个生子的一端移动到另一端。

分析:两个对象  小球和绳子

绳子是干什么用的? 本质:为球的移动提供了指引的方向  小球有一个滚动的方法,他怎么知道往哪个方向滚? 他去问绳子  哥们 nextPoint()在哪?

import java.awt.Point;public class Rope {//绳子private Point start;private Point end;public Rope(Point start, Point end) {super();this.start = start;this.end = end;}//获取下一个点的方法public Point getNextPoint(){}}//球类import java.awt.Point;public class Ball {private Rope rope;//小球依赖绳子 把绳子作为属性private Point curretnPoing;public Ball(Rope rope, Point curretnPoing) {super();this.rope = rope;this.curretnPoing = curretnPoing;}public void move() {curretnPoing = rope.getNextPoint();System.out.println("小球移动到了" + curretnPoing);}}


0 0
原创粉丝点击