您的位置:首页 > 职场人生

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

2013-11-08 22:48 288 查看
------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------

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

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

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
Point
nextPoint(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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐