黑马程序员——高新技术 关于面向对象的理解

来源:互联网 发布:mac整理文件夹快捷键 编辑:程序博客网 时间:2024/05/15 04:39

 ------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

关于面向对象的理解,在高新技术视频学习之后,加上之前看到的张孝祥老师关于面向对象的详细讲解,印象变得更加的深刻,这里专门的复习一下。


面向对象很重要的一点,就是“谁拥有数据,谁就拥有对外提供操作这些数据的方法”。举例说来:

人在黑板上画圆。画圆的方法,应当是“圆”这个对象来提供的。


下面还有更加详细的三个例子:

1 列车司机紧急刹车,刹车的动作是车身上的方法。列车内部的刹车系统叉车

2 售票员统计收 货小票上的总金额。

售票员,小票,统计金额是小票的方法

售货员对象调用收货票据对象的getTotalMoney()的方法,getTotalMoney()方法内部计算出售货票据的总金额

3 人关门。“关门”这个动作,是“门”这个对象自己完成的。


接下来还有个看起来更加复杂的例子:

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

Stone Knife Chair Wood Tree,题目中提到的有这么几个对象。对于Stone  Knife,并不能直接让Stone用一个方法把Stone变成Knife,因为这样一来,Stone 这个对象就消失了,因此,我们想到下面的解决方式:

Stone Knife = KnifeFactory.creatKnife(stone1,stone 2)

Wood  = StoneKnife.cut(tree)

Chair = ChairFactory.makeChair(wood)


另一个稍复杂的经典例子:

球从一根绳子的一端移动到另一端,这个例子一共有两个对象:小球,绳子。绳子的构造方法中包括绳子的两个端点,同时绳子内部有一个方法来返回另一个端点。小球的构造方法要包括小球的起始点,同时小球有一个move()的方法。

这里的代码就直接写在文章里,不放在代码片之中了。

class Rope{

         privatePoint start;

         privatePoint end;

         publicRope(Point start,Point end){

                   this.start=start;

                   this.end=end; 

         }

         publicPoint nextPoint(Point currentPoint){

        

         }

}

class Ball{

         privateRope rope;

         privatePoint currentPoint;

         publicBall(Rope rope,startPoint){

                   this.rope=rope;

                   this.currentPoint=startPoint;

         }

        

         publicvoid move(){

                   currentPint=rope.nextPoint(currentPoint);

                   System.out.println("小球移动到了"+currentPoint);

         }

}


综上所述,关于面向对象,时刻记住一点,那就是:谁拥有数据,谁就拥有操作这些数据的方法。掌握了这一点,对于在编程时对象的建立与选择便会清晰明了许多。





0 0
原创粉丝点击