黑马程序员_面向对象的情景分析与设计

------- android培训java培训、期待与您交流! ----------

面向对象设计把握一个重要的经验:谁拥有数据,谁就对外提供操作这些数据的方法。

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

A,”球从绳子的一段移动到了另一端“

分析:

这里有两个对象小球Ball和绳子Rope,首先小球有一个滚动的方法move(),每次滚动它要就要问绳子往哪个方向滚,下一次要滚到哪个点上。绳子的本质是为球的移动提供了方向,所以绳子要有一个指定下一个点的方法nextPoint()。

Rope类的设计:

构造一个绳子需要两个点Point start,Pointend;它有一个方法nextPoint(),通过获取小球的currentPoint,返回给小球一个滚动Point

Ball类的设计:构造一个可以滚动的小球要有一个起始位置point start,它要知道自己的滚动方向,所以需要一个绳子Rope,作为参数传给构造方法,这样小球就与绳子绑定了;它还要一个滚动方法move();

 

(1)class Rope{

(2) private Point start;

(3) private Point end;

(4) public Rope(Pointstart,Point end){

(5)    this.start=start;

(6)    this.end=end;

(7) }

(8)

(9) public PointnextPoint(Point currentPoint){

(10)           /*通过两点一线的数学公式可以计算出当前点的下一个点,

(11)            * 这个细节不属于设计阶段要考虑的问题

(12)            * 如果当前点是终止点,则返回null,如果当前点不是线上的点,则抛出异常

(13)            **/

(14)        }

(15)    }

(16)    class Ball{

(17)        private Rope rope;

(18)        private Point currentPoint;

(19)        public Ball(Rope rope,Point startPoint){

(20)           this.rope=rope;

(21)           this.currentPoint=startPoint;

(22)        }

(23)        public void move(){

(24)           currentPoint=rope.nextPoint(currentPoint);

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

(26)        }

(27) }

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

此情景中的对象有:Stone,StoneKnife,Tree,Material,Chair

//两块石头被加工成石刀

StoneKnife =KnifeFactory.createKnife(Stonefirst,Stone second)

//石刀把树砍成木材

Material=StoneKnife.cut(tree)

//木材被加工成椅子

Chair=chairFactory.makeChair(material)


你可能感兴趣的:(黑马程序员_面向对象的情景分析与设计)