黑马程序员_面向对象的情景分析与设计
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
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)
面向对象设计把握一个重要的经验:谁拥有数据,谁就对外提供操作这些数据的方法。
用面向对象的方式设计如下情景:
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)
相关文章推荐
- 黑马程序员 十七、面试题之交通灯管理系统—面向对象的分析与设计、Road 类、Lamp 类、LampController 类、MainClass类)
- 黑马程序员 十七、面试题之交通灯管理系统—面向对象的分析与设计、Road 类、Lamp 类、LampController 类、MainClass类)
- 面向对象(oo)分析设计思想
- Java 设计模式情景分析——观察者模式
- 黑马程序员-----java入门一DAY10------类的设计分析 面向对象多态 构造代码块
- 面向对象(oo)分析设计思想
- 面向对象的六大设计原则(基于Volley框架分析)
- 黑马程序员——面向对象(数组工具类+单例设计模式)-第16天
- Java 设计模式情景分析——工厂方法模式
- 重温下面向对象设计--基于面向对象的分析和设计
- 黑马程序员——学习日志5面向对象(static关键字,单例设计模式,抽象类,接口)
- 黑马程序员——面向对象06(static、对象初始化、单例设计模式)
- 黑马程序员——Java语言基础:面向对象、封装(构造函数、设计模式)
- ooad面向对象的分析和设计
- 结构化与面向对象的需求分析与模型设计
- Trufun UML实战系列—UML与面向对象的分析和设计!
- 黑马程序员-----面向对象之代码分析1
- 【软件项目管理】用例分析方法采用一种面向对象的情景分析方法
- 人事档案信息管理系统的面向对象的分析、设计和实现
- java基础22(Javaoo17)——面向对象的分析与设计