第1页:第二章OO技术概论目录
第二章 OO 技术概论:
- §2.1 OO:What & Why
- §2.2 对象与类
- §2.3 消息与方法
- §2.4 继承
- §2.5 多态
- §2.6 OO 技术的历史、现状、未来
第2页:OO的基本概念
§2.1 OO:What & Why —— 1. What:
- 对象
- 现实世界中个体或事物的抽象表示,是属性和相关操作的封装
- 类
- 某些对象的共同特征(属性和操作)的表示
- 操作
- 对象可以展现的外部服务
- 属性
- 对象的性质,属性值规定对象所有可能的状态
- 消息
- 消息传递是对象与外部世界关联的唯一途径
- 继承
- 现实世界中遗传关系的直接模拟,表示类之间的内在联系以及对属性和操作的共享
- 聚集
- 部分类的对象是整体类对象的组成部分
第3页:为什么要采用OO方法
§2.1 OO:What & Why —— 2. Why:
- 顺应人类思维习惯,让软件开发人员在解空间中直接模拟问题空间中的对象及其行为
- 支持增量式开发,支持大型软件开发
- 支持软件重用
- 改善软件结构(模块化与封装),提高软件灵活性
第4页:对象的构成
§2.2 对象与类 —— 1. 对象:
- 对象=名字+属性集+方法集+消息集
- 对象的外部接口=公有属性集+方法集+消息集
- 对象的状态=对象属性取值的集合
- 对象接收消息后执行某些方法
第5页:类的定义与作用
§2.2 对象与类 —— 2. 类:
- 类是某些对象共同特征的表示
- 类的所有实例(对象)具有相同的属性名称及类型、相同的方法、相同的消息响应方式
- 类描述对象的属性名及类型、对象方法的实现途径
- 类是创建对象的模板,对象是类的实例
第6页:消息与方法
§2.3 消息与方法:
- 对象接收消息后执行某些方法,以便:获取对象状态、改变对象状态、完成某项计算或控制功能
- 消息传递是对象与外部世界关联的唯一途径
- 为实现的方便与效率计,通常将消息合并至方法中
第7页:继承机制
§2.4 继承:
- 单重继承:子类仅从一个父类继承属性和方法,子类可以覆盖父类的部分属性和方法
- 多重继承:子类可从多个父类继承属性和方法
- 继承机制的意义:避免冗余,简化类或对象之间的接口;支持软件重用
第8页:重载与重设
§2.5 多态:
- 重载(Overloading)
- 相同的函数名称,属于不同的类或由不同的参数类型,而导致不同的功能或行为
- 重设(Overriding)
- 子类覆盖父类的方法
第9页:编译时多态与运行时多态
§2.5 多态 —— 3. 多态(Polymorphism):
- 编译时多态
- 由编译器决定函数名与函数体的联编(Binding)
- 运行时多态
- 在运行时刻动态决定函数名与函数体的联编;相同的消息由同一(父)类的不同对象接收时,导致不同的行为
第10页:OO技术的历史
§2.6 OO 技术的历史、现状、未来 —— 1. 历史:
- 60 年代末:Simula 67
- 80 年代初:Smalltalk
- 80 年代中:OOP、OOD 和 OOA 进入软件开发实践,出现 C++、Booch 方法、OOA/OOD、OOSE、OMT
- 90 年代:OOP、OOD 和 OOA 获得广泛应用
第11页:OO技术的现状与未来
§2.6 OO 技术的历史、现状、未来:
- 现状:OOP、OOD 和 OOA 成为最重要的软件开发方法,Java 与 UML 得到广泛应用
- 未来:OO 的形式化与自动化;OO 在分布计算、数据库、系统软件等领域大显身手;OO 构件的丰富将进一步提高软件开发的效率和质量
- 软件开发人员必须从 Think Procedurely 转变为 Think Object-Orientedly
第12页:本章小结
本章小结:
- 面向对象=对象+类+继承+消息+多态
- 面向对象是提高软件开发的效率和质量的有效手段