一、对象导论(一)
来源:互联网 发布:生活中大数据的例子5个 编辑:程序博客网 时间:2024/04/29 20:50
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)。
聚合和组合的区别
组合关系的两个对象具有相同的生命周期,而聚合中两个具有不同的生命周期。例如人和手就是组合关系,手是人的一部分,人没有了,手也一起没有了;反观聚合关系中,如电脑和键盘,电脑没有了,键盘依然存在,这就是两者最大的区别。
所以说组合关系是使用现有类合成新类,是因为他们必须有相同的生命周期,而动态组合形成的聚合关系中,意味着两者生命周期不同。
书中接下来是继承部分的知识,打算放在后面讲多态之前再总结。
- 一、对象导论(一)
- 一、对象导论(二)
- 一、对象导论(三)
- <一>对象导论
- Java内功基础(一)对象导论
- Thinking in Java - - 对象导论(一)
- 第一章 对象导论笔记(一)
- Java编程思想(一)--对象导论
- 算法导论(一)
- 算法导论(一)
- 数据结构导论(一)
- Thinking in Java 读书笔记(一) --对象导论
- 《JAVA编程思想》日志(一)------对象导论
- 【Java编程思想】一、对象导论
- 【Thinking in Java】一:对象导论
- java语言设计对象导论一
- java编程思想读书笔记一:对象导论
- Enterprise JavaBeans导论(一)
- 两个VLC实现播放串流测试
- FFmpeg参数中文详细解释和FFmpeg常用基本命令
- UVa 201 Squares
- Interface接口回调
- 信号量CSemaphore的使用
- 一、对象导论(一)
- Coder Has Questions
- MachineLearning—Logistic Regression(三)
- iOS 二维码扫描 实时扫描+相册选图
- Linux使用mail功能自动发送邮件程序以及经常遇到的问题
- 算法导论—插入排序及Matlab实现
- FFmpeg 错误 C4996: "avcodec_alloc_frame"或者"av_free_packet"等函数被声明为已否决的解决方法
- 【js】:js中对于两种控件不同的值得显示方法
- 高性能web服务容错机制