一、对象导论(一)
2016-04-11 20:18
246 查看
1、抽象过程
人们所能解决的问题的复杂性直接取决于抽象的类型(所抽象的是什么?)和质量。我们将问题空间中的元素及其在解空间中的表示称为“对象”,每个对象都有状态和操作,程序可以通过添加新类型的对象使自身适用于某个特定问题。对象具有状态、行为和标识。
一种纯粹的面向对象程序设计方式:
1.1 万物皆对象
可以将对象视为一种特殊的数据类型,它可以由多个属性共同表明自己的状态,还能够在自身上进行操作。1.2 程序是对象的集合,他们通过发送消息来告知彼此所要做的
给一个对象发消息实际上就是请求调用这个消息的某个方法。1.3 每个对象都有自己的由其他对象所构成的存储
一个对象的属性可以是简单类型、Java内置类型,也可以是自定义类型。1.4 每个对象都有其类型
可以理解为,每个对象都是某个类(class)的一个实例(instance),每个类最重要的区别于其他类的特性是“可以发送什么消息给它”。1.5 某一特定类型的所有对象都可以接收同样的消息**
当这一个“特定类型”是一个接口的时候,比如“几何图形”,它的对象有“圆形”、“三角形”、“正方形”等,任何图形都必定能够接收这些对象都能够接受发送给“几何图形”的消息。这里涉及到多态的知识,后面会涉及到。2、 每个对象都有一个接口
类描述了具有相同特性(数据元素)和行为(功能)的对象集合,所以一个类实际上就是一个数据类型。面向对象程序设计的挑战之一就是在问题空间的元素和解空间之间创建一对一的映射。3、 每个对象都提供服务
我们可以将对象想象为”服务提供者“,程序本身向用户提供服务,他通过调用其他对象提供的服务来实现这一目的。将对象看作是服务提供者还有一个好处是:它有助于提高对象的内聚性。 高内聚是软件设计的基本质量要求之一:这意味着一个软件构件的各个方面都”组合“的很好。
4、 被隐藏的具体实现
类访问权限-public
public表示它所修饰的元素对任何人都是可用的。
-包访问权限
当没有使用访问权限修饰词的时候,这个元素便具有包访问权限,同一个包中的其他类能够访问到这个元素。
-protected
与private作用相当,只不过它除了本类之外,还能够被其子类访问。
-private
被private修饰的元素是完全不允许第二个类访问的。
5、 复用具体实现
代码复用是面向对象程序设计语言所提供的最了不起的优点之一。最简单的复用某个类的方式就是直接使用该类的一个对象,此外也可以将那个类的对象置于某个新的类中,作为这个新类的“成员对象”。这种使用现有的类合成新的类的方式叫做组合(composition),如果组合是动态发生的,那么它通常被称为聚合(aggregation)。
聚合和组合的区别
组合关系的两个对象具有相同的生命周期,而聚合中两个具有不同的生命周期。例如人和手就是组合关系,手是人的一部分,人没有了,手也一起没有了;反观聚合关系中,如电脑和键盘,电脑没有了,键盘依然存在,这就是两者最大的区别。
所以说组合关系是使用现有类合成新类,是因为他们必须有相同的生命周期,而动态组合形成的聚合关系中,意味着两者生命周期不同。
书中接下来是继承部分的知识,打算放在后面讲多态之前再总结。
相关文章推荐
- 缩略图
- 从数组中选出n个数之和为k
- [大数据]flume日志收集
- 汇编-分离一个整数的各个位
- fzu 2128 最长子串
- python命令行自动补全
- c++第三次作业
- 树的子结构
- C++中string分割函数
- PHP练手:比赛报名系统(一)实现简单单入口
- 算法课笔记系列(0)——Prologue and Notation
- Java并发学习之十七——线程同步工具之CountDownLatch
- VS2013MFC对话框工程学习笔记九 - C++语法的的学习
- 汉诺塔
- 杭电2546 灵活运用01背包问题
- hdu4348 To the moon (主席树 || 离线线段树)
- 进程间通信 :消息队列的实现
- nginx实操(1)安装及选项说明
- 设计模式之单例模式(线程安全)
- LaTex调整表格行高——minipage和vspace