面向对象设计经验
来源:互联网 发布:视频cms系统版权 编辑:程序博客网 时间:2024/06/03 22:15
一、面向对象设计经验
面向对象设计经验:谁有数据,谁就提供操作数据的方法。
二、例子体现
1.用面向对象的思想设计:石头磨成石刀,石刀可以砍树,树变成木材,木材做成椅子。
分析:
涉及对象:石头Stone, 石刀StoneKnife,树Tree,木材Wood,椅子Chair
1)石头磨成石刀。石头(数据)不能自己磨成石刀,否则自己就没有了。
可以创建新的类KnifeFactory,并在类中定义方法,接收石头,然后返回石刀
StoneKnife = KnifeFactory.creatKnife(stone);
2)石刀砍树。树变成木材
wood = Stone.cut(tree);
3)木材做成椅子。
木材不能自己变成椅子。所以也需要另外的类来操作木材。
chair = ChairFactory.makeChair(wood);
2.人在黑板上画圆
对象:人,黑板,圆
画圆,需要知道圆心,半径,这些数据是“圆”这个对象所拥有。
所以,画圆这个动作,是由圆来操作数据而得的。
3.司机要刹车
对象:司机,车
刹车这个动作是在车上执行的,司机只是负责给车这个信号,最后还是由车来执行刹车动作。
所以刹车这个方法定义在车对象中。
4.售货员统计票据上的总金额。
对象:售货员。票据
金额这个数据是票据所拥有的, 所以统计这个方法应该定义在票据中。
三、应用案例
需求:用面向对象的思想实现:小球从绳子的一端移动到了另一端。
分析:有两个对象,绳子,小球。
绳子:1.绳子要初始化长度,构造方法要接收两个参数:起点和终点。
2.要创建一个方法,让小球根据当前位置获取下一步该走到的位置。
绳子有数据,所以绳子要提供这样一个方法来操作位置的数据。
小球:1.小球要和绳子关联在一起,所以要将绳子对象传入小球的构造函数,还要获取当前位置。
2.小球要移动,得有方法控制小球。绳子告诉它要运动到哪儿,它就执行移动的方法。代码实现
1.Ball类
<span style="font-size:18px;">import java.awt.Point;//小球public class Ball {private Rope rope;private Point currentPoint;public Ball(Rope rope,Point currentPoint){this.currentPoint = currentPoint;this.rope = rope;}public void move() {currentPoint = rope.nextPoint(currentPoint);System.out.println("小球移动到了" + currentPoint);}}</span>
2.Rope类
<span style="font-size:18px;">import java.awt.Point;//绳子对象public class Rope {//起始端和终端private Point start;private Point end;//定义绳子的起点和终点public Rope(Point start,Point end) {this.start = start;this.end = end;}public Point nextPoint(Point currentPoint) {Point nextPoint = null;/*通过两点一线的数学公式可以计算出当前点的下一个点,如果当前点是终点,则返回null。如果当前点不是线上的点,则抛出异常。*/return nextPoint;}}</span>
- 面向对象设计经验
- 面向对象设计的经验原则
- 面向对象设计的经验原则
- 面向对象设计的经验原则
- 面向对象设计的经验原则[转]-
- 面向对象的设计原则与经验
- 面向对象设计的经验原则
- 面向对象设计的经验原则
- 面向对象设计的经验原则
- 面向对象设计的经验原则
- 【转】面向对象设计中的经验原则
- 61条面向对象设计的经验
- 面向对象设计的经验与原则
- Delphi面向对象设计的经验原则
- 61条面向对象设计的经验
- C++面向对象设计的经验体会
- 编程设计:61条面向对象设计的经验原则
- 61条面向对象设计的经验原则(转贴)
- OpenGL入门学习(一)
- CMS GC总结
- 排序方法之冒泡排序
- OpenGL入门学习[二]
- CentOS 安装memcached php扩展
- 面向对象设计经验
- note : InternetGetConnectedState
- SQL Server 中新建用户登录
- 集线器,路由器,交换机,网关设备之间的区别
- Spring 使用getHibernateTemplate 与 getSession有什么的区别?优点与缺点是什么
- JVM垃圾回收(GC)原理
- ConcurrentHashMap解析
- 淘宝应对双"11"的技术架构分析
- PCA算法的最小平方误差解释