标签:java
这一章节我们来讨论一下怎么理解对象?
1.服务提供者
对象:来源于“Object”,中文说的比较抽象,个人更倾向于台湾香港的译法“物件”,个人实实在在的感觉,不用那么虚,当然,如果叫实例也是比较好理解。
对象,我们可以想象成服务的提供者。它包含了一组数据以及一些可执行的方法。
例如:
package com.ray.ch01; public class Bird { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } private void say() { } public static void main(String[] args) { Bird bird1 = new Bird(); bird1.say(); Bird bird2 = new Bird(); bird2.say(); System.out.println(bird1.equals(bird2)); } }
Bird,我们称为类,其实它就是我们自己定义的数据类型,映射实际世界里面的“鸟”。
在main方法里面的bird1和bird2,我们称之为对象,或者实例,或者物件等等,这两个实例属于了Bird这个数据类型,里面含有name这个属性,还有say这个方法。
这里,我们可以把bird1看作服务提供商,这个对象给我们提供say这个执行的方法。
2.分解对象
上面提到服务提供商,那么我们可以引入下面例子。
例如:黑白双方在设计五子棋时,可分为行为是相同的黑白双方,负责绘制画面的棋盘系统,负责判定犯规、输赢等的规则 系统。第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的变化就要负责在屏幕上面显示出这种 变化,同时利用第三类对象(规则系统)来对棋局进行判定问题的步骤中的行为。
又例如:在分析学生管理系统,第一类对象是用户,负责输入数据,第二类对象是显示对象,赋值显示返回,第三类对象是逻辑处理对象,主要负责处理数据。
3.高内聚
既然上面提到了分解对象,那么必须提到高内聚。
高内聚:从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事
我们下面给出反面例子:
package com.ray.testobject; public class Bird { private String name; private void sing() { } private void fly() { } }
上面的例子很明显,sing这个方法应该属于歌唱家的,而fly是属于鸟的,因此这个类的内聚不高。由于内聚不高,因此当调用sing的方法的时候,就可能耦合bird这个类,造成以后维护的麻烦。
总结,这一章节介绍了对象作为服务提供者使用,并且延伸到分解对象和内聚。
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:java
原文地址:http://blog.csdn.net/raylee2007/article/details/49126729