1 面向对象程序设计概述
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
面向对象程序的特点 面向对象程序的特点 程序
4.多态 4.多态( polymorphism )
优点: 优点: 1. 可以为具有继承关系的不同类所形成的类族 提供统一的外部接口; 提供统一的外部接口; 2. 减少记忆操作名的负担。 减少记忆操作名的负担。
对象和类的概念 对象和类的概念
1. 对象(object) 对象是软件开发所涉及的问题域中一些事物的抽 象; 对象是用来描述客观事物的一个实体, 对象是用来描述客观事物的一个实体,它是构成 系统的一个基本单位; 系统的一个基本单位; 对象由一组属性(attribute)和对这组属性进行 对象由一组属性 和对这组属性进行 操作的一组方法(method)的封装体,具有唯 的封装体, 操作的一组方法 的封装体 一的标识; 一的标识; 属 性 作 为 类 中 的 数 据 项 称 为 数 据 成 员 ( data member),表示一类对象所共有的静态特性; ) 表示一类对象所共有的静态特性; 方 法 作 为 类 中 的 操 作 称 为 成 员 函 数 ( member function),表示一类对象所共有的动态特性。 ) 表示一类对象所共有的动态特性。
对象和类的概念 对象和类的概念
消息和方法的关系 对象根据接收到的消息, 调用相应的方法; 对象根据接收到的消息 , 调用相应的方法 ; 反过 有了方法, 对象才能响应相应的消息。 来 , 有了方法 , 对象才能响应相应的消息 。 所以 消息模式与方法界面应该是一致的。 同时, 消息模式与方法界面应该是一致的 。 同时 , 只要 方法界面保持不变, 方法界面保持不变 , 方法体的改动不会影响方法 的调用。 的调用。 C++语言中方法是通过函数来实现的 语言中方法是通过函数来实现的, 在C++语言中方法是通过函数来实现的, 称为成员 函数。 函数。
面向对象程序的特点 面向对象程序的特点 程序
2.封装 2.封装(encapsulation)
将抽象而得的性质和行为,形成一个独立的整体 象而得的性质和行为, 性质和行为 对象); (即对象); 封装将尽可能隐蔽对象的内部细节, 封装将尽可能隐蔽对象的内部细节,只保留有限 的对外接口,达到对数据访问的合理控制; 的对外接口,达到对数据访问的合理控制; 封装可以有效地控制一个对象内部发生变化时对 其它对象的影响; 其它对象的影响; 封装能够通过对象接口简化对象的使用; 封装能够通过对象接口简化对象的使用; 封装便于通过继承机制实现代码重用; 封装便于通过继承机制实现代码重用;
对象和类的概念 对象和类的概念
1. 对象(object)
对象与对象之间通过消息( 对象与对象之间通过消息(message)进行相 消息 互通信,对象接收到消息后, 互通信,对象接收到消息后,启动有关方法完成 相应的方法完成各种功能, 相应的方法完成各种功能,数据本身不能被类外 的程序和过程直接存取。 的程序和过程直接存取。 使用一个对象的时候, 使用一个对象的时候,只需知道对象向外界提供 的接口形式而无需知道对象的数据结构细节和现 实操作的算法, 实操作的算法,这种机制增强了数据的安全性和 软件的可靠性; 软件的可靠性; 面向对象的程序设计的范型是 的范型是: 面向对象的程序设计的范型是: 程序=对象+ 程序=对象+消息
面向对象程序的特点 面向对象程序的特点 程序
4.多态 4.多态( polymorphism )
面向对象系统的多态性是指不同的对象收到相同 消息时产生多种不同的行为方式; 消息时产生多种不同的行为方式;
外部 对象 消息(请绘图) 几何图形 (绘图)
三角形 (画三角形)
矩形 (画矩形)
圆形 (画圆形)
程序=算法+ 程序=算法+数据结构
优点: 优点: 显著减少了软件开发的复杂性; 1. 显著减少了软件开发的复杂性; 提高软件的可靠性、可测试性和可维护性。 2. 提高软件的可靠性、可测试性和可维护性。 缺点: 缺点: 不适合开发比较复杂的问题、规模比较大的程序; 1. 不适合开发比较复杂的问题、规模比较大的程序; 数据和数据处理过程的分离, 2. 数据和数据处理过程的分离,造成程序的可重用性差 当数据结构改变时, (当数据结构改变时,所有相关的处理过程都要进行相 应的修改); 应的修改); 不适应日益广泛的图形用户界面( 3. 不适应日益广泛的图形用户界面(Graphics User Interface,GUI)软件的开发。 )软件的开发。
面向对象程序的特点 面向对象程序的特点 程序
4.多态 4.多态( polymorphism )
C++语言支持两种多态性: C++语言支持两种多态性: 语言支持两种多态性 编译时的多态性:通过重载来实现的; 1. 编译时的多态性:通过重载来实现的; 运行时的多态性: 继承中, 2. 运行时的多态性:在继承中,通过虚函数来 实现。 实现。 重载有二种: 重载有二种: 函数重载: 1. 函数重载 : 指一个标识符可同时用于多个函数命 名 运算符重载: 2. 运算符重载:指一个运算符可同时用于多种运算
面向对象程序的特点 面向对象程序的特点 程序
封装应该具有下面的几个条件: 封装应该具有下面的几个条件: 对象具有一个清楚的边界, 1. 对象具有一个清楚的边界 , 对象的私有数据和实 现操作的代码都被封装在内。 现操作的代码都被封装在内。 2. 具有一个描述对象与其他对象如何相互作用的接 该接口必须说明消息传递的使用方法。 口,该接口必须说明消息传递的使用方法。 对象内部的代码和数据应受到保护, 3. 对象内部的代码和数据应受到保护 , 其他对象不 能直接修改。 能直接修改。
程序=对象+ 程序=对象+消息
面向对象程序的特点 面向对象程序的特点 程序
1. 抽象(abstract) 抽象是对一类事物、问题的概括, 抽象是对一类事物、问题的概括,抽出其共同性 质和行为,形成概念的过程。 质和行为,形成概念的过程。 抽象包括两个方面:数据抽象和行为抽象。 抽象包括两个方面:数据抽象和行为抽象。 数据抽象:对某类事物、 数据抽象:对某类事物、问题的属性或形态的描 述; 行为抽象:对某类事物、 行为抽象:对某类事物、问题的公共行为或功能 的描述; 的描述;
对象和类的概念 对象和类的概念
消息具有以下3个性质: 消息具有以下3个性质: 同一个对象可以接收不同形式的多个消息, 同一个对象可以接收不同形式的多个消息 , 给出 不同的响应。 不同的响应。 相同形式的消息可以传递给不同的对象, 所给出 相同形式的消息可以传递给不同的对象 , 的响应可以是不同的。 的响应可以是不同的。 消息的响应并不是必需的, 对象可以响应消息, 消息的响应并不是必需的 , 对象可以响应消息 , 也可以不响应。 也可以不响应。
面向对象程序设计 面向对象程序设计
面向对象程序设计( 面向对象程序设计(Object-Oriented Programming, 程序设计 OOP)其设计理念是直接地以问题域(现实世界)中的事物 直接地 )其设计理念是直接 以问题域(现实世界) 为中心来思考和认识问题。 为中心来思考和认识问题。 面向对象的程序设计是以数据为核心, 面向对象的程序设计是以数据为核心,将数据以及对这些 数据的操作以类 封装( 数据的操作以类(class)的形式封装(encapsulation)为 )的形式封装 ) 一个整体,以类的对象 对象( 一个整体,以类的对象(object)作为程序的基本元素,通过 )作为程序的基本元素, 向对象发送消息 消息( ),进而由对象启动相关的方 向对象发送消息(message),进而由对象启动相关的方 ), 法完成各种功能。同时, 法完成各种功能。同时,数据本身不能被类外的程序和过程 直接存取,这种机制增强了数据的安全性和软件的可靠性。 直接存取,这种机制增强了数据的安全性和软件的可靠性。 其范型是: 其范型是:
对象和类的概念 对象和类的概念
2. 类(class) 类是对具有相同数据结构和相同操作的一类对象 的抽象描述。 的抽象描述。 类实质上就是一种类型, 类实质上就是一种类型,但这种类型与一般类型 不同。类包括数据成员和成员函数。 不同。类包括数据成员和成员函数。 类和对象之间的关系是抽象和具体的关系。 类和对象之间的关系是抽象和具体的关系。类是 多个对象进行综合抽象的结果, 多个对象进行综合抽象的结果,一个对象是类的 一个实例。 一个实例。 在面向对象程序设计中,总是先声明类, 在面向对象程序设计中,总是先声明类,再由类 生成其对象。类是建立对象的“模板”或说明书, 生成其对象。类是建立对象的“模板”或说明书, 按照这个模板所建立的是类的实例(instance) 。
对象
的
, , 张三
体 化
对象是用来描 对象 述客观事物 的一个实体
抽 象 具
… …
李四
是 的一 对象 的
继
, ,
… …
对象和类的概念 对象和类的概念
消息( 3. 消息(message)
消息就是通过一个对象对类的成员函数的一次调 用。 一般情况下,我们称发送消息的对象为发送者 请求者) 接收消息的对象为接收者 接收者( ( 或 请求者 ) , 接收消息的对象为 接收者 ( 或 目 标对象) 标对象)。 向对象发送消息的形式如下: 向对象发送消息的形式如下: 目标对象名.成员函数名 实际参数表) 成员函数名( 目标对象名 成员函数名(实际参数表) 接收对象只有在接收到消息时, 才能被激活, 接收对象只有在接收到消息时 , 才能被激活 , 被 激活的对象会根据消息的要求完成相应的功能。 激活的对象会根据消息的要求完成相应的功能。
第1章 面向对象程序设计概述
华东理工大学计算机系 华东理工大学计算机系 谢晓玲
面向过程程序设计 面向过程程序设计
面向过程的程序设计( 面向过程的程序设计(Structured Programming,SP) 的程序设计 ) 的核心是功能分解 功能分解, 的核心是功能分解,通常采用自顶向下的方法进行程序设 其范型是: 计。其范型是:
面向对象程序的特点 面向对象程序的特点 程序
3.继承 3.继承( inheritance )
在面向对象程序设计中, 在面向对象程序设计中,允许在已有类的基础上 通过增加新特征而派生出新的类,这称为继承 继承。 通过增加新特征而派生出新的类,这称为继承。 新类被称为已有类的子类 子类(subclass) ,又称派 又称派 新类被称为已有类的子类 生类(derived class) ,其原有的类称为父类 其原有的类称为 称为父类 生类 (super class) ,又叫基类 又叫基类 基类(base class)。 。 继承提供了创建新类的一种方法,实现代码重用. 继承提供了创建新类的一种方法,实现代码重用 继承机制符合人们对客观事物的认识和描述: 符合人们对客观事物的认识和描述 继承机制符合人们对客观事物的认识和描述: 父类更抽象、子类更具体 父类更抽象、子类更具体。 更具体