《c++程序设计语言》--第四讲 类

上传人:子 文档编号:52148389 上传时间:2018-08-18 格式:PPT 页数:51 大小:307.50KB
返回 下载 相关 举报
《c++程序设计语言》--第四讲 类_第1页
第1页 / 共51页
《c++程序设计语言》--第四讲 类_第2页
第2页 / 共51页
《c++程序设计语言》--第四讲 类_第3页
第3页 / 共51页
《c++程序设计语言》--第四讲 类_第4页
第4页 / 共51页
《c++程序设计语言》--第四讲 类_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《《c++程序设计语言》--第四讲 类》由会员分享,可在线阅读,更多相关《《c++程序设计语言》--第四讲 类(51页珍藏版)》请在金锄头文库上搜索。

1、*面向对象程序设计第一节 面向对象程序设计思想第二节 面向对象的方法第三节 面向对象的标记第四节 类和对象第五节 构造函数与析构函数第六节 类的组合第七节 类模板*面向对象程序设计第一节 面向对象程序设计思想一、软件系统开发方法现在常用的软件系统开发的方法有:传统方法、结构化方法、 信息建模方法、面向对象方法。下图是系统开发方法论技术和工 具:方法系统流数据与用户的沟通处理逻辑传统系统流程图表格、版面、 网格图采访英语、脚本 、程序流程 图 结构化数据流图数据词典、数 据结构图、E- R图采访、用户 审查、讨论判定树/表,结 构化英语、结 构图数据建模 (信息工程)商业领域分析、 处理模型商业

2、领 域分析 、E-R图采访、用户审查 、讨论,头脑风 暴商业系统 设计 面向对象对象模型对象模型、属 性采访、用户审查 、讨论,头脑风 暴对象、模型、服 务、场景、判定 树/表,结构化英 语*面向对象程序设计教材中强调了两种方法: 结构化程序设计 面向对象程序设计 具体内容参看教材p95-96*面向对象程序设计二 面向对象程序设计的基本特 点 面向对象软件开发方法是吸收了软件工程领域有益的 概念和有效的方法而发展起来的一种软件开发方法。 它集抽象性、封装性、继承性和多态性于一体,可以 帮助人们开发出模块化、数据抽象程度高的,体现信 息隐蔽、可复用、易修改、易扩充等特性的程序。 在系统分析与设计

3、中,抽象用来确定必要的信息系统 需求,删除不必要的部分。为了突出重点,抽象有意 地忽略信息系统的某些性质、属性或功能。抽象是一 种突出重点、去掉细节的总结。例如:地图的抽象, 根据抽象的层次,地图可分为国家地图、行政省或地 区地图、城市地图、邮政代码地图等。 参看教材p97*面向对象程序设计封装或信息隐蔽封装或信息隐蔽指软件的组成部分(模块、子程 序、方法等)应该互相独立,或者隐藏设计的细节。在系统分析和设计中,系统分析员把问题域分解 为小的封装单元,这些分析和设计决定最终成为软件 模块,封装就是有利于灵活地局部修改和维护软件模 块。*面向对象程序设计封装或信息隐蔽用于以下两种 情况1、当人们

4、只能使用或接触整个系统的某个子集时。例 如:当开发一个信息系统时,开发小组成员受命开发 系统的某个部分,不需接触其它成员开发的部分。所 以,封装或信息隐蔽适合于团队开发。 2. 有意防止信息系统的某些部件注意或利用系统的其它 部件。这涉及到封装的另外一个方面-分配责任。 正如现实生活中一个人负有某种责任,信息系统中的 一个部件也有自己的责任,比如自动取款机的付钞功 能,系统其它部件则担任付钞以外的其它责任。注意:在传统方法中,封装通常局限于将功能和数据分 开封装;而在面向对象的方法中,封装将功能和数据 同时装入对象中。*面向对象程序设计继承继承是表示相似性质的机制。正 如一个人同时继承父母的外

5、貌特点 一样,信息系统组成成分也从有关 部件继承某些特点。例如:右图显 示了人和教师、学生及管理者 之间的继承关系。人和教师、学生及管理者之间是继承(父子 )关系, 教师、学生、管理者之间是兄弟关系。 人的特点如姓名、 性别、年龄等,为继承层次中所有子节点继承;有些特点则为 子节点独有,如授课时间只对教师适用,平均分数只对学生 适用,头衔只对管理者适用。同样,一些人能做的事也对教 师、学生及管理者适用,例如吃饭、睡觉等,同样,有些事 则为子节点独有。注意:继承在层次中是自上而下单向进行的 。管 理 者人学 生教 师*面向对象程序设计多态多态一般指具有多种形态的能力。如:水有三 种形态,液体、气

6、体和固体。在某种程度上 ,在车里观察交通灯的反应是多态的,当交 通灯闪现不同颜色时,人的反应是不同的。 又如打印程序可以打印字符、数字、图形和 图像,打印程序由于知道如何打印图文,因 而是多态的。*面向对象程序设计第二节 面向对象的方法 面向对象是一种软件开发方法,软件开发的目的是为 了进行数据处理,所以程序中包含了数据以及对数据 的操作代码。面向对象的编程解决问题的思路从对象 (人、地方、事情等)角度入手,而不像传统方法与 结构化方法一样从功能入手。 面向对象的开发强调从问题域的概念到软件程序和界 面的直接映射;心理学的研究也表明,把客观世界看 成是许多对象更接近人类的自然思维方式。对象比函

7、 数更为稳定;软件需求的变动往往是功能相关的变动 ,而其功能的执行者-对象-通常不会有大的变动 。另外,面向对象的开发也支持、鼓励软件工程实践 中的信息隐藏、数据抽象和封装。在一个对象内部的 修改被局部隔离。面向对象开发的软件易于修改、扩 充和维护。*面向对象程序设计面向对象编程-基本概念 在面向对象编程中,程序被看作是相互协作的对象集合 ,每个对象都是某个类的实例,所有的类构成一个通过 继承关系相联系的层次结构。面向对象的语言常常具有 以下特征:对象生成功能、消息传递机制、类和遗传机 制。这些概念当然可以并且也已经在其他编程语言中单 独出现,但只有在面向对象语言中,他们才共同出现, 以一种独

8、特的合作方式互相协作、互相补充。 过程化编程模式: 参数输入- | 代 码 | -结果输出 为实现某个功能,参数被传入某个处理过程,最后 传回计算结果。 面向对象编程模式: 界面 - | 对象数据结构和 操作*面向对象程序设计 OO编程中,功能是通过与对象的通讯获得的。 对象可以被定义为一个封装了状态和行为的实体;或 者说是数据结构(或属性)和操作。 状态实际上是为执行行为而必须存于对象之中的数据 、信息。 对象的界面,也可称之为协议,是一组对象能够响应 的消息的集合。 消息是对象通讯的方式,因而也是获得功能的方式。 对象受到发给他的消息后,或者执行一个内部操作( 有时成为方法或过程),或者再

9、去调用其他对象的操 作。所有对象都是类的实例。类是具有相同特点的对 象的集合,或者也可以说,类是可用于产生对象的一 个模版。对象响应一个消息而调用的方法,由接受该 消息的对象自己决定。 类可以以一种层次结构来安排 。*面向对象程序设计第三节 面向对象的标记参看教材p100-101*面向对象程序设计第四节 类与对象一 类和类定义 对象和对象定义 初始化问题 静态成员 小结*面向对象程序设计一 类和类定义-1、类的声 明 类和对象是面向对象程序设计(OOP)的两个最基本 概念。所谓对象就是客观事物在计算机中的抽象描述 ;类是对具有相似属性和行为的一组对象的统一描述 。 类的定义C+的类是在结构体的

10、基础上扩充而来的。类是把各 种不同类型的数据(称为数据成员)和对数据的操作 (成员函数)组织在一起而形成的用户自定义的数据 类型。C+中,类定义包括类说明和类实现两大部分。说明 部分提供了对该类所有数据成员和成员函数的描述, 而实现部分提供了所有成员函数的实现代码。*面向对象程序设计类定义的一般形式为: class 类名 private:数据成员或成员函数protected:数据成员或成员函数public:数据成员或成员函数 ; /注意:此处分号不要少定义类时,当未 指明成员是哪部 分时,默认是属 于private成员,但 一般不要采用默 认形式。*面向对象程序设计几点说明(1)大括号的部分是

11、类的成员(数据成员和函数成员), 它们分成三部分,分别由private、public、proctected三 个关键字后跟冒号来指定。这三部分可以任何顺序出现 ,且在一个类的定义中,这三部分并非必须同时出现。 (2)类的数据成员可以使任何数据类型;(3)类的数据成员允许使用存储类型static,但其它三种 存储类型不能使用; (4)类中数据成员不允许使用表达式进行初始化;(5)类中数据成员与成员函数可用const修饰。(6)经常习惯地将类定义的说明部分或者整个定义部分( 包含实现部分)放到一个头文件中。*面向对象程序设计如:下例中定义描述图书的类定义class Record private:

12、/private成员char bookname20; /数据成员bookname,/ 用于表示图书的名称int number; /数据成员number,表示图书编号public:/public成员void regist(char *a,int b); /成员函数regist,用于给 /各数据成员赋值void show(); /成员函数show,显示各数据成员的值;*面向对象程序设计 根据类的定义,可看出:类是实现封装的工 具,所谓封装就是将类的成员按使用或存取 的方式分类,有条件地限制对类成员的使用 ,而封装是通过public和private与成员函数实 现的。private的成员构成类的内部

13、状态, public的成员则构成与外界通信的接口,通过 public的成员函数来使用private的数据成员, 从而在C+中实现了封装。*面向对象程序设计2、类成员的访问控制 从访问权限上来分,类的成员又分为:公有的(public) 、私有的(private)和保护的(protected)三类。 公有的成员用public来说明,公有部分往往是一些操 作(即成员函数),它是提供给用户的接口功能。这部 分成员可以在程序中引用。 私有的成员用private来说明,私有部分通常是一些数 据成员,这些成员是用来描述该类中的对象的属性的 ,用户是无法访问它们的,只有成员函数或经特殊说 明的函数才可以引用它

14、们,它们是被用来隐藏的部分 。 保护的成员用protected来说明,这种成员只有该类的 派生类可以访问,其余的在这个类外不能访问。保护 类(protected)将在以后介绍。*面向对象程序设计Who可以 直接访问Who不 能 直接访 问目的与用 途private本类Public成员函数 、 本类保护成员函数 、 类的友元对象数据成员一般 放在私有部分 ,实现 信息隐 蔽。protected本类公有成员函数 、 本类派生类(公有 和私有派生)成员函 数本类对象、 派生类对 象便于子类访问 的成员一般放 在保护部分。public本类公有成员函数 、 派生类成员函数、 公有派生类对 象私有派生类

15、对象成员函数一般 放在公有部分 ,实现 共享。类成员的访问权限表*面向对象程序设计返回类名:私有部分的成员保护部分的成员公有部分的成员 对于一个无继承关系的单一类(独立类), 其访问权限可参考下图:该类的对象*面向对象程序设计3、类成员函数的特性 类的成员函数可以分为内联函数和外联函数。内联函 数是指那些定义在类体内的成员函数,即该函数的函 数体放在类体内。而说明在类体内,定义在类体外的 成员函数叫外联函数。外联函数的函数体在类的实现 部分。 引入内联函数的目的是为了解决程序中函数调用的效 率问题。因为内联函数在调用时不是像一般函数那样 要转去执行被调用函数的函数体,执行完成后再转回 调用函数

16、中,执行其后语句,而是在调用函数处用内 联函数体的代码来替换,这样将会节省调用开销,提 高运行速度。*面向对象程序设计 在程序编译时,编译器将程序中出现的内联函数的调 用表达式用内联函数的函数体来进行替换。显然,这 种做法不会产生转去转回的问题,但是由于在编译时 将函数休中的代码被替代到程序中,因此会增加目标 程序代码量,进而增加空间开销,而在时间代销上不 象函数调用时那么大,可见它是以目标代码的增加为 代价来换取时间的节省。 内联函数的定义方法内联函数的定义方法与一般函数一样,只是在函数 定义的头前加上关键字inline即可。如:inline int add_int (int x, int y, int z)re

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号