-
Notifications
You must be signed in to change notification settings - Fork 0
Java
LiuJiawei4132 edited this page Mar 31, 2019
·
6 revisions
- 万物皆为对象
- 程序是对象的集合,它们通过发送消息来告知彼此所要做的
- 每个对象都有自己的由其他对象所构成的存储
- 每个对象都拥有其类型
- 某一特定类型的所有对象都可以接收同样的消息
- 创建抽象数据类型(类)是面向对象程序设计的基本概念之一
- 每个类的数据成员都具有某种共性:每个账户都有结余金额
- 每个类的成员都有其自身的状态:每个账户都有不同的结余金额
- 因为类描述了具有相同特性(数据元素)和行为(功能)的对象集合,所以一个类实际上就是一个数据类型。
- 通过面向对象,程序员通过定义类来适应问题,而不再被迫只能使用现有的用来表示机器中对应功能的数据类型,可以根据需求,通过添加新的数据类型来拓展。
- 如何创建一个有用的类呢?必须有某种方式产生对对象的请求,使对象完成各种任务,这样的请求由接口定义。
可以向Light对象发出的请求是:打开它、关闭它、将它调亮、将他调暗。
- 当试图开发或理解一个程序设计时,最好的方法之一就是将对象想象成“服务提供者”
- 你的目标就是创建(或者最好时在现有代码库中寻找)能够提供理想的服务来解决问题的一系列对象
- 将对象看作是服务提供者还有一个附带的好处:它有助于提高对象的内聚性,高内聚是软件设计的基本质量要求之一,人们在设计对象时面临一个将太多功能都塞在一个对象中。
-
程序开发人员按照角色分为类创建者(创建新数据类型的程序员)和客户端程序员(在其应用中使用数据类型的程序员)是大有脾益的
- 客户端程序员的目标是收集各种用来实现快速应用开发的类。
- 类创建者的目标是构建类,这种类只向客户端程序员暴露必需的部分,而隐藏其他部分,不用担心内部脆弱的部分被破坏
- 代码复用是面向对象程序设计最了不起的优点之一
- 使用现有的类合成新的类,这种概念被称为组合(composition),视为"has-a"关系,就像"汽车拥有引擎"一样
- 继承并不具备这样的灵活性,因为编译器必须对通过继承而创建的类施加编译时的限制
- 在建立新类时,应该先考虑组合,因为它更加简单灵活。如果采用这种方式,设计会更加清晰。有了一些经验后,就能看出必须使用继承的场合了
- 通过继承,能以现有类为基础,复制它,然后通过添加和修改这个副本来创建新类
- 当父类发出变动时,被修改的副本(子类)也会反映出这些变动
- 可以创建一个基类来表示系统中某些对象的核心概念,从基类中导出其他类型,表示此核心可以被实现的各种不同方式
- 所有可以发送给基类对象的消息同时也可以发送给导出类对象
- 有两种方法可以让导出类产生差异
- 直接在导出类添加新的方法
- 覆盖基类原有的方法