面向对象
面向过程
关心该怎么做,一步一步实现这个功能
面向对象
关心该让谁去做,调用对象的操作来实现这个功能
面向对象 = 对象 Object + 分类 Classification + 继承 Inheritance + 通过消息的通信 Communication with Messages
组成
类
- 定义了一组大体上类似的对象
- 类包含的方法、数据描述了一组对象的共同行为和属性
- 类是对象之上的抽象,对象是类的具体化(实例)
- 分类
- 实体类,现实生活中真实的实体
- 接口类(边界类),为用户提供与系统合作交互的方式
- 控制类,控制活动流,充当协调者
对象
- 由对象名、属性(数据/状态/成员变量)、方法组成
消息
- 定义:对象之间进行通信的一种构造
- 发送消息的对象不需要知道接收消息的对象如何对请求予以响应
方法重载
一个类可以具有多个重名而参数类型列表不同的方法。
- 方法名相同 参数个数不同
- 方法名相同 参数类型不同
- 方法名相同 参数类型顺序不同
面向对象的特征
封装
- 封装是一种信息屏蔽技术,目的是使对象的使用者和生产者分离,定义与实现分开。
继承 extends
- 定义和实现一个类时,可以基于已存在的类进行,将已定义的内容作为自己内容并加入新的内容。
- 继承关系中,子类将拥有父类的非私有化属性和方法
- 单重继承:只有一个父类。多重继承:有两个以上父类。
- 多重继承时,可能造成子类中存在二义性的成员
多态
不同对象收到同一消息产生完全不同的结果。
多态依赖于继承。
java
Person zst = new Student();
// 编译时看等号左边 zst是person类
// 运行时看等号右边 zst是student类
class Person {
target () {}
}
class Student extends Person {
public void target () {
System.out.println('more score')
}
}
class Worker extends Person {
public void target () {
System.out.println('more money')
}
}
function getTarget (person) {
person.target()
}
getTarget(new Student())
getTarget(new Worker())- 多态的形式
- 通用的
- 参数的,最纯的多态
- 包含的,在许多语言都存在,最常见的例子是子类型化
- 特定的
- 过载的,同一个名字在不同上下文表示的含义不同
- 强制的
- 通用的
- 在面向对象方法中,多态是指客户端无需知道所调用方法的特定子类的实现
动态绑定
- 绑定是一个把过程调用和响应调用所需执行的代码加以结合的过程。
- 静态绑定在编译时进行;动态绑定在运行时进行。
- 动态绑定是和类的继承以及多态相联系的。
面向对象设计原则
- 单一责任原则,一个类应该只有一个引起它变化的原因
- 开放-封闭原则,软件实体(类、模块、函数等)应该对扩展开放,对修改关闭
- 里式替换原则,子类对象能够替换掉它们的基类对象
- 依赖倒置原则,高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象。
- 接口分离原则,客户端不应该依赖它不需要的接口,依赖于抽象,不要依赖于具体。
以上为五大原则
- 共同封闭原则,包中的所有类对于同一类性质的变化应该是共同封闭的。变化对一个包产生影响,则对包中所有类产生影响。
- 共同重用原则,一个包中的所有类应该是共同重用的。重用包里的一个类,就要重用包中所有类。
面向对象分析
包含5个活动
- 认定对象,定义问题域,寻找系统关心的实质性对象
- 组织对象,分析对象间关系,抽象成类
- 对象间相互作用,描述出各对象在应用系统中的关系
- 确定基于对象的操作
- 定义对象的内部信息
面向对象设计
基于面向对象分析的分析模型转化为设计模型,目的是定义系统构造蓝图。理解解决方案,实现系统细节
对应如下五个活动
- 识别类及对象
- 定义属性
- 定义服务
- 识别关系
- 识别包
面向对象测试
四个层次:
- 算法层,类中的每个方法
- 类层,类中的方法、属性
- 模版层,类的相互作用
- 系统层,组装后的系统进行测试
📒 从题中的总结
- 面向对象分析不需要考虑系统测试问题
- 面向对象分析忽略与系统实现有关的问题
面向对象程序设计
没啥更多的内容
📒 从杂题中的总结
- 类的静态方法只能访问该类的静态数据成员;静态数据成员可被该类所有方法访问;类的实例化对象共享静态数据成员的值。
- 领域类模型中包含属性、操作、关联
- 面向对象方法进行软件开发时,分析阶段,架构师主要关注系统的行为。