黑马程序员技术交流社区

标题: 面向对象的分析和设计经验总结 [打印本页]

作者: syusikoku    时间: 2014-3-6 20:47
标题: 面向对象的分析和设计经验总结
1,人在黑板上画圆
       对象:人,黑板,圆
       画圆的动作是哪个对象上的方法?
       是圆上面的方法。
       为什么这么说了?
       是因为画圆需要圆心和半径,x,y,半径
       Darwcircle(){
         x,y - radius
       }
2,列车司机紧急刹车了?
       对象:列车司机,列车
       刹车的动作是哪个对象上的方法?
       是列车上的方法
       因为列车司机只是给列车发出了一个紧急刹车的信号。
       而发动机熄火,离合器离合,车轮的抱紧。是由列车内部完成的。
3,你关上门
对象:人,门
关门的动作是哪个对象上的方法
是门
因为关门的时候有以下动作:旋转,撞上门框,伸出锁舌,插到锁孔。
这些动作都是由门内部完成的。
4,售货员统计售货小票上的金额
对象:售货员,集合小票
统计小票上的金额是哪个对象上的方法
是售货小票上的方法
因为某个商品购买了多少件,多少金额只有售货小票最清楚。
而售货员在统计的时候只是调用了售货小票上的getTotalMoney()这个方法,这个方法的内部完成了售货
金额的计算。

两个最为常见的设计例子?
A:两块石头,磨成一把石刀,石刀可以砍树,砍出木材,做成椅子。
根据面向对象的思想来设计
石头—-石刀这一步不是石头来完成的。因为石头不可能自己把自己变没了。
木材---椅子这一步同上面的道理。
结合上面的文字。我们进行了分析。得出结果如下:
StoneKnife=StoneKnifeFactory.createKnife(Stonefirst,Stone secondary);
//石刀加工厂有制作石刀的方法,接收的是两块石头,返回的是石刀
Wood=StoneKnife.cut(tree);  
//石刀有砍树的方法,去砍的树,出来之后是木材
Chairs=WoodFactor.makeChairs(wood);
//木材加工厂有生产椅子的方法。接收的是木材,做出来的是椅子

B:小球从绳子一端滚动到了另一端
对象:小球,绳子
绳子的构造方法就应该有起始点,绳子还应该有一个获取下一点的方法
小球的构造方法里面就应该有一个绳子,和当前点,另外小球还应该有一个滚动的方法。
class Rope
{
       privatePoint start;
       privatePoint end;
       publicRope(Point start,Point end){
              this.start=start;
              this.end=end;
       }
       publicvoid nextPoint(Point currentPoint){
              //如果当前点是下一点则返回null,//如果当前点不在绳子上则抛出异常
       }
}
class Ball
{
       privateRope rope;
       privatePoint start;
       publicBall(Rope rope,Point current){
              this.rope=rope;
              this.start=current;
       }
       publicvoid move(){
              currentPoint=rope.nextPoint(currentPoint);
              System.out.println("小球滚动到了"+currentPoint+"点");
       }
}







作者: 山治0712    时间: 2014-3-6 20:55
还可以,张老师的经典台词
作者: 1844611785    时间: 2014-3-6 21:15
知道,是谁拥有数据,谁就提供处理数据的方法
作者: 无所谓啦    时间: 2014-7-6 11:53
好帖子》。。。。。
作者: SLJ_920808    时间: 2014-7-6 19:16
刚看完,复习一下。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2