android培训         

                                                           java培训

                                                        期待与您交流!

                              谁拥有数据,谁就对外提供操作这些数据的方法
谁拥有数据,谁就对外提供操作这些数据的方法。这句话简直就照亮了我的面向对象的天空。面向对象在我日常的编程中也在用,但用的时候总是觉得脑袋好像是面糊一般,归根结底就是没有透彻的理解。看了张孝祥老师的交通灯系统解析对我理解面向对象帮助很大。特别是张老师举得那几个典型的例子感觉很经典。
例子一:人在黑板上画圆
那么就有person,blackboard,circle这三个对象
然而这个画得方法(draw(){})是那个对象的呢,我刚开始的思考就是person对象的,这样代码就得这样写
public class Person {
 //Person的相关属性
 public Circle draw(float x,float y,float r){
  //......
  return new Circle();
 }
},这有有违于javabean的设计,和面向对象的原则,
但是听了讲解忽然就发现把draw(){}给blackboard才是面向对象的
public class Circle {
 private float x;
 private float y;
 private float r;
 public Circle draw(){
  //...........
  return new Circle();
 }
 
 public float getX() {
  return x;
 }

 public void setX(float x) {
  this.x = x;
 }

 public float getY() {
  return y;
 }

 public void setY(float y) {
  this.y = y;
 }

 public float getR() {
  return r;
 }

 public void setR(float r) {
  this.r = r;
 }
}
正是黑板拥有了圆心坐标和圆的半径这些数据,所以黑板就对外提供画圆的方法。

那么同理列车司机刹车这个刹车的方法就得由列车提供,售货员统计收获票据上的金额就得由票据提供统计的方法,这的确与我平常的一贯的认识是不同的


另一个例子就更有意思了:两块石头磨成一把石刀,石刀砍树,砍成木材,木材做成椅子。这里面由stone,stoneKnife,tree,wood,chair对象

那么这里的磨的方法是谁提供的呢?石头吗?如果是就是石头自己把自己变没了,这显然是不可能的,所以这里得有一个工厂,接收石头生产出石刀,StoneKnife stoneKnife = KnifeFactory.creatKnife(Stone firstStone,Stone secondStone){}
当然木材做成椅子也是如此了。而砍得方法就是就是接受树木返回木材。

 

 

 

                                                        android培训         

                                                           java培训

                                                        期待与您交流!

posted on 2011-09-03 10:51  www_ding@163.com  阅读(641)  评论(0编辑  收藏  举报