C++课件 第七章 面向对象程序设计概述 1
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
面向对象的思想(1)
面向对象程序设计是在结构化程序设计的基础上发展 起来的,它吸取了结构化程序设计中最为精华的部分,有 人称它是“被结构化了的结构化程序设计”。 在面向对象程序设计中,对象是构成软件系统的基本 单元,并从相同类型的对象中抽象出一种新型的数据类 型—类,对象只是类的实例。类的成员中不仅包含有描述 类对象属性的数据,还包含对这些数据进行处理的程序代 码(这些程序代码被称为对象的行为或操作)。将对象的属 性和行为放在一起作为一个整体的方法称为封装,它将对 象的大部分行为的实现隐蔽起来,仅通过一个可控的接口 与外界交互。 面向对象程序设计提供了类的继承性,可通过对一个 被称为基类的类增添不同的特性来派生出多种被称为派生 类的特殊类,从而使得类与类之间建立了层次结构关系, 为软件复用提供了有效的途径。
结构化和面向对象的比较(2)
程序可以看成是一系列对数据进行操作的过程。目 前有两种组织数据和操作的方法:
面向过程的方法 即程序=数据+操 作(对数据和操 作不进行分类) 面向对象的方法 即程序=对象+对象 而对象=数据+操作 (对数据和操作进 行分类)
木材 钢材 水泥
搅拌机械 木工机械 金属加工机床
一个学校系统,目标是教学管理, 3. 确定一个事物是否是一个类的步骤是: 划分的类可能是教师、学生、教 材、课程、教室等。目标是后勤 先判断该事物是否有一个以上的实例对象,有则可能是一 管理,划分的类了能是宿舍、食 个类。再判断该事物的对象是否有绝对的不同点,没有就 堂、后勤工作人员、教室等。
面向对象的思想(2)
面向对象程序设计支持多态性。多态性与继承性相结 合,使不同结构的对象以各自不同的方式响应同一个消息。 软件系统中,对象与对象之间存在着一定的联系,这 种联系通过消息的传递来实现。在面向对象程序设计中, 消息表现为一个对象对另一个对象的行为的调用。 通过上面的分析可以看出:面向对象程序设计的核心思 想是数据的分解,着重点放在被操作的数据上而不是实现 操作的过程上。它把数据及其操作作为一个整体对待,数 据本身不能被外部过程直接存取。思想的特点是程序一般 由类的定义和类的使用两部分组成,主程序中定义各个对 象并规定它们之间传递消息的规律,程序中的一切操作都 通过向对象发送消息来实现,对象接收到消息后,调用有 关对象的行为来完成相应的操作。用这种方法开发的软件 可维护性和可复用性高。
消息(2)
1. 2.
消息的性质
同一对象可以对不同形式的多个消息作出不同的响应。 相同形式的消息可以传递给不同的对象,作出的响应可以是不同的。 消息的发送者可以不考虑具体的接受者,接受者可以响应,也可以不响 应。
3.
消息分为公有消息和私有消息两类
公有消息是由其他对象发送来的消息 私有消息是自己向自己发送的消息。 公有消息和私有消息的区分与消息传递要调用的方法有关,如果被调用 的方法在对象类中使用public说明的,则为公有消息,如果使用private 说明的,则为私有消息,私有消息只能发送调用属于自己的方法。
分类 前的 建筑 工地
木材 钢材 水泥
木工机械 金属加工机床 搅拌机械
分类 后的 建筑 工地
木工车间 金工车间 瓦工车间
7.2 面向对象的基本概念
7.2.1 7.2.2 7.2.3 7.2.4 7.2.5 7.2.6 对象和类 消息 抽象性 封装性 继承性 多态性
对象和类—现实世界中(1)
1.
结构化
2、结构化的核心思想 是功能的分解,将数 据结构与过程分离, 设计重点放在过程
面向对象
2、面向对象的核心思想 是数据的分解,设计重点 是数据而不是过程。数据 及其操作作为一个整体, 数据不能被外部过程直接 存取
3、程序由类 的定义和类 的使用两部 分组成,主 程序中定义 各个对象并 规定它们之 间传递消息 的规律,程 序中的一切 操作都通过 向对象发送 消息来实现,
这里的属性说明了学生 共有的特征,但没有具体的 属性值,操作说明了学生能 做什么。
他们都是学生,李 东是其中之一
对象和类—面向对象设计中(3)
类是创建对象的样板,它没有具体的属性值和具体 的操作,以它为样板创建的对象才有具体的值和操 作。一个对象是类的实例,有了类才能创建对象。
类名:学生 属性:年龄,性别,身高, 体重,特长,专业 操作:回答提问,从事本专 业的简单工作 当把类的各属性赋予实际李 东相关的值,同时给这个具 体化了的类命名李东后,就 用学生这个类创建了一个对 年龄20,性别 男,身高173厘米,体 象李东。
结构化程序设计回顾(2)
结构化程序设计方法以解决问题的过程作为出发点, 其方法是面向过程的。它把程序定义为“数据结构+算法”, 程序中数据与处理这些数据的算法(过程)是分离的。这 样,对不同的数据结构作相同的处理,或对相同的数据结 构作不同的处理,都要使用不同的模块,从而降低了程序 的可维护性和可复用性。同时,由于这种分离,导致了数 据可能被多个模块使用和修改,难于保证数据的安全性和 一致性。因此,对于小型程序和中等复杂程度的程序来说, 它是一种较为有效的技术,但对于复杂的、大规模的软件 的开发来说,它就不尽如人意了。 通过上面的分析可以看出:结构化程序设计的核心思 想是功能的分解,思想的特点是将数据结构与过程分离, 着重点在过程。用这种方法开发的软件可维护性和可复用 性差。
对象和类—对象的状态
1.
2.
对象能够独立存在于现实世界中的原因,是每个对 象都有各自的特征,这些特征就是对象的状态。对 象的状态用属性的值来表征,是所有静态属性和这 些属性的动态值的总和。 面向对象程序设计中对象的状态可以是初等的数据 类型,如整型、实型、字符型等,也可以是用户自 定义的数据类型,如结构性、枚举型等,还可以是 对象,如人的状态除姓名等外,可能有家庭成员, 而家庭成员是一个对象。
现实世界中的对象是现实世界中的实体
每个对象都有一个 用于与其他对象相 区别的名字。 具有某些特征,称 它为属性或状态。 有一组操作,每一 个操作决定对象的 一种行为即对象能 干什么。 对象的状态只能被 自身的行为所改变。 对象之间以消息传 递的方式相互通信。
颜色 座位数 发动机缸数
2.
3.
4.
5.
车轮数
结构化程序设计回顾(1)
结构化程序设计是为了解决早期计算机程序的难于阅 读、理解、调试、维护和扩充,以及开发周期长、不易控 制程序的质量等问题而提出来的,它的产生和发展奠定了 软件工程的基础。 结构化程序设计的基本思想是:自顶向下,逐步求精。 将整个程序结构划分成若干个功能相对独立的模块,模块 之间的联系尽可能简单;每个模块用顺序、选择、循环三 种基本结构来实现;每个模块只有一个入口和一个出口。 结构化程序设计有很多优点:各模块可以分别编程, 使程序易于阅读、理解、调试和修改;方便新功能模块的 扩充;功能独立的模块可以组成子程序库,有利于实现软 件复用等。
设计绘制圆的程序:通过分析可知,圆是这 个问题中唯一的事物。对于具体的圆,有大 有小,位置也不同,但用圆心的横、纵坐标 和圆的半径就可以描述一个确定的圆,这就 是对圆这个事物的数据抽象。由于抽象后没 有具体的数据,它不能是一个具体的圆,只 能代表一类事物―圆类。要能画出圆,该程 序还应有设置圆心位置、半径大小、绘制圆 形的功能,这就是对圆这个事物的行为抽象。
结构化和面向对象的比较(1)
1、解决了早期计算机 程序难于阅读、理解、 调试、维护和扩充、 开发周期长、不易控 制程序的质量等问题。 1、解决了结构化方法 中数据与算法分离带 来的可维护性、可复 用性、数据的安全性 和一致性差等问题。
3、程序由模 块构成,每 个模块用顺 序、选择、 循环三种基 本结构来实 现;模块单 入口单出口, 程序的功能 是通过过程 对数据的直 接操作而实 现的
这里的属性说明了李东 这个对象的特征,操作说明 了李东能做什么。
对象和类—面向对象设计中(2)
面向对象程序设计中的类是一组有相同属性结构和 操作行为对象的抽象。类由类名区分,如人、树等。
如学生是对学生对象抽象所 形成的类,它由学生共同的 属性和操作来表征:
类名:学生 属性:年龄,性别,身高,体 重,特长,专业等. 操作:回答有关针对个人的提 问,从事本专业的简单工作
对象和类—类的确定和划分
1.
2.
确定和划分类的重要性: 面向对象技术是将系统分 解成若干对象,对象之间的相互作用构成了整个系 统。设计类而不是对象可以避免重复编码,类只需 不能指望一次性正确地确定 和划分类,需要不断地对实 编码一次,就可以创建所有的对象。 际问题进行分析和整理,反 确定和划分类的一般原则 :寻求系统中各事物的共 复修改才能得出正确的结果。 性,将具有共性的那些事物划分成一个类。
类提供了完整地解决特定问题的能力,它描述了数据结 构(对象属性)、算法(方法)和外部接口(消息)。 对象通过外部接口接受它能识别的消息,按照自己的方 式来解释这个消息并调用某个方法来完成对数据的处理, 从而解决特定问题。
抽象性
面向对象程序设计中的抽象是对一类对象进行分析 和认识,经过概括,抽出一类对象的公共性质,并 加以描述的过程。 对一个事物的抽象一般包括两个方面:数据抽象和 行为抽象。
同一系统,达到的目标不同,确定和划分的类也不相同。
可确定它是一个类。
4.Biblioteka Baidu
设计类时应有明确的标准,设计的类应该是容易理 解和使用的。
消息(1)
学生请求 教师辅导, 学生向教 师发出消 息,教师 接收到这 个请求或 消息后, 才决定做 什么辅导 并执行辅 导。
一个对象向另一个对象发出的请求称为消息,它是 一个对象要求另一个对象执行某个操作的规格说明, 通过消息传递才能完成对象之间的相互请求和协作。 通常把发送消息的对象称为消息的发送者或请求者, 而把接收消息的对象称为消息的接受者或目标对象。 接受者只有在接收到消息时,才能被激活,之后才 能根据消息的要求调用某个方法完成相应的操作。 所以,消息传递的实质是方法的调用。 对象间传递的消息一般由三部分组成:接收对象名、 调用的操作名和一个或多个参数。一个对象所能接 受的消息及其所带的参数,就构成了该对象的外部 接口。
重71公斤,特长篮球运动,专业计算 机科学和技术,现在就不能代表在座 的所有学生了,故取名李东
对象和类—面向对象设计中(4)
特别要指出的是,在面向对象程序设计中,类只出 现在源程序代码中,不会出现在正在内存运行的程 序中,换句话说,类只是在编译时存在,为对象的 创建提供样板。对象作为类的实例出现在内存运行 的程序中,占有内存空间,对象是运行时存在的实 体。所以类实际上是一个新的数据类型,要使用它 时,要在源程序中说明,而说明部分的代码是不在 内存中运行的。在内存中运行的是类的对象,对象 在内存中分配空间并完成计算任务,对象通过类来 定义。所以,必须严格区分说明和定义两个概念。 在C++中,把描述类的属性的数据称为数据成员, 把描述行为的操作称为成员函数。
对象和类—面向对象设计中(1)
如学生李东是一个对象,他 由描述他的特征的数据和他 能提供的一组操作来表征:
对象名:李东 属性:年龄:20,性别:男, 身高:173厘米,体重:71公 斤,特长:篮球运动,专业: 计算机科学和技术 操作:回答有关自己的提问, 计算机软件开发、维护、组网
面向对象程序设计中的对象是由描述其属性的数据 和定义在数据上的一组操作组成的实体,是数据单 元和过程单元的集合体。 李东
第七章 面向对象程序设计概述
要点: 1. 面向对象程序设计的基本思想; 2. 对象、类、消息、抽象性、封装性、继承性、 多态性的基本概念。
本章内容
7.1 面向对象的思想 7.2 面向对象程序设计的基本概念 7.3 面向对象程序设计的语言
7.1 面向对象的思想
7.1.1 结构化程序设计回顾 7.1.2 面向对象的思想 7.1.3 结构化和面向对象的比较
刹车
加速
对象和类—现实世界中(2)
现实世界中的类是对一组具有共同属性和行为的对 象的抽象。
类和对象是抽象和具体的关 系。 具有共同属性和行为的事物 的抽象叫做类,同类中的事 物可以具有不同的属性值。 例如,右图中的车具有共同 的属性,因此同属轿车类。 同类的具有不同属性值的事 物叫做该类的一个对象。例 如,右图中每一部轿车,由 于其属性值各不相同,故是 轿车类的对象。