面向对象的程序设计 (Object-oriented Programming) 把程序构造成由若干对象组成,每个对象是由一些数 据以及对这些数据所能实施的操作所构成的封装体: 对象的特征(数据与操作)由相应的类来描述: 对数据的使用是通过向包含数据的对象发送消息(调 用对象类接口中的操作)来实现的: 一个类所描述的对象特征可以从其它的类获得(继 承) 注意:如果没有“继承”,则称为:基于对象的程序 设计(Object-based Programming)
面向对象的程序设计 (Object-oriented Programming) ◼ 把程序构造成由若干对象组成,每个对象是由一些数 据以及对这些数据所能实施的操作所构成的封装体; ◼ 对象的特征(数据与操作)由相应的类来描述; ◼ 对数据的使用是通过向包含数据的对象发送消息(调 用对象类接口中的操作)来实现的; ◼ 一个类所描述的对象特征可以从其它的类获得(继 承)。 ◼ 注意:如果没有“继承”,则称为:基于对象的程序 设计(Object-based Programming)
面向对象程序的执行过程 ·对象构成了面向对象程序的基本计算单位 对象间的消息传递是引起面向对象程序进 行计算的唯一方式 从程序外部向程序中的某个对象发送第一条消 息引起计算: 该对象在处理这条消息的过程中,又向程序中 的其它对象发送消息,从而引起进一步的计算; 第一条消息处理完,程序的一次计算结束。 消息处理可分为同步(顺序)和异步(并发 两种方式,本课程只涉及同步消息处理
面向对象程序的执行过程 ◼ 对象构成了面向对象程序的基本计算单位。 ◼ 对象间的消息传递是引起面向对象程序进 行计算的唯一方式。 • 从程序外部向程序中的某个对象发送第一条消 息引起计算; • 该对象在处理这条消息的过程中,又向程序中 的其它对象发送消息,从而引起进一步的计算; • 第一条消息处理完,程序的一次计算结束。 • 消息处理可分为同步(顺序)和异步(并发) 两种方式,本课程只涉及同步消息处理
面向对象程序设计带来的好处 提高软件开发效率和保证软件质量的几个基本的程序 设计手段: 。抽象(复杂度控制) ·封装(信息隐藏) 模块化(组织大型程序) 软件复用(缩短开发周期〉 可维护性(延长软件寿命) 软件模型的自然度(缩小解题空间与问题空间之间的语义 间隙) 下面考察过程式和面向对象两种程序设计范式对上述 手段的支持
面向对象程序设计带来的好处 ◼ 提高软件开发效率和保证软件质量的几个基本的程序 设计手段: • 抽象(复杂度控制) • 封装(信息隐藏) • 模块化(组织大型程序) • 软件复用(缩短开发周期) • 可维护性(延长软件寿命) • 软件模型的自然度(缩小解题空间与问题空间之间的语义 间隙) ◼ 下面考察过程式和面向对象两种程序设计范式对上述 手段的支持
过程式程序设计的特点 以功能为中心,强调过程 Data (功能)抽象,但数据与 操作分离,二者联系松散。 实现了操作的封装,但数 据是公开的,数据缺乏保 护。 按子程序划分模块,模块 边界模糊。 子程序往往针对某个程序 而设计,这使得程序难以 复用。 功能易变,程序维护困难 基于功能分解的解题方式 Sub-programs 与问题空间缺乏对应
过程式程序设计的特点 ◼ 以功能为中心,强调过程 (功能)抽象,但数据与 操作分离,二者联系松散。 ◼ 实现了操作的封装,但数 据是公开的,数据缺乏保 护。 ◼ 按子程序划分模块,模块 边界模糊。 ◼ 子程序往往针对某个程序 而设计,这使得程序难以 复用。 ◼ 功能易变,程序维护困难。 ◼ 基于功能分解的解题方式 与问题空间缺乏对应。 Data Sub-programs
面向对象程序设计的特点 以数据为中心,强调数据 Objects 抽象,操作依附于数据, 二者联系紧密。 实现了数据的封装,加强 了数据的保护。 按对象类划分模块,模块 边界清晰。 ■ 对象(类)往往具有通用 性,再加上继承机制,使 得程序容易复用。 对象(类)相对稳定,有 利于程序维护。 基于对象/类的解题方式与 问题空间有很好的对应
◼ 以数据为中心,强调数据 抽象,操作依附于数据, 二者联系紧密。 ◼ 实现了数据的封装,加强 了数据的保护。 ◼ 按对象类划分模块,模块 边界清晰。 ◼ 对象(类)往往具有通用 性,再加上继承机制,使 得程序容易复用。 ◼ 对象(类)相对稳定,有 利于程序维护。 ◼ 基于对象/类的解题方式与 问题空间有很好的对应。 Objects 面向对象程序设计的特点