c++第1章(类和对象-4)

上传人:aa****6 文档编号:51012460 上传时间:2018-08-12 格式:PPT 页数:76 大小:762KB
返回 下载 相关 举报
c++第1章(类和对象-4)_第1页
第1页 / 共76页
c++第1章(类和对象-4)_第2页
第2页 / 共76页
c++第1章(类和对象-4)_第3页
第3页 / 共76页
c++第1章(类和对象-4)_第4页
第4页 / 共76页
c++第1章(类和对象-4)_第5页
第5页 / 共76页
点击查看更多>>
资源描述

《c++第1章(类和对象-4)》由会员分享,可在线阅读,更多相关《c++第1章(类和对象-4)(76页珍藏版)》请在金锄头文库上搜索。

1、第1章 类和对象 第2章 关于类和对象的进一步讨论 第3章 运算符重载基于对象的程序设计第1章 类和对象1-1 面向对象程序设计方法概述 1-2 类的声明和对象的定义 1-3 类的成员函数 1-4 对象成员的引用 1-5 类的封装性和信息隐蔽 1-6 类和对象的简单应用举例对于规模比较小的程序,编程者可以直 接编写出一个面向过程的程序,详细地描述每一瞬 时的数据结构及对其的操作过程。但是当程序规模 较大时,就显得力不从心了。C+就是为了解决编 写大程序过程中的困难而产生的。1-1 面向对象程序设计方法概述 面向对象的程序设计的思路和人们日常生 活中处理问题的思路是相似的:在自然世界和社会生活中

2、,一个复杂的事 物总是由许多部分组成的。1-1.1 什么是面向对象的程序设计 当人们生产汽车时,分别设计和制造发 动机、底盘、车身和轮子,最后把它们 组装在一起。在组装时,各部分之间有 一定的联系,以便协调工作。这就是面 向对象的程序设计的基本思路。1. 对象 客观世界中任何一个事物都可以看成一个 对象(object)。对象是构成系统的基本单位。 任何一个对象都应当具有这两个要素,即 属性和行为,它能根据外界给的信息进行相 应的操作。一个对象往往是由一组属性和一 组行为构成的。 一般来说,凡是具备属性和行为这两种要一般来说,凡是具备属性和行为这两种要 素的,都可以作为对象。素的,都可以作为对象

3、。 在一个系统中的多个对象之间通过一定的渠道相 互联系,要使某一个对象实现某一种行为(即操作) ,应当向它传送相应的消息。对象之间就是这样通 过发送和接收消息互相联系的。图1-1 在C+中,每个对象都是由数据和函数(即操作代 码)这两部分组成的,见图1-2。数据体现了前面提到的“属性”,如一个三角形对 象,它的3个边长就是它的属性。函数是用来对数 据进行操作的,以便实现某些功能,例如可以通过 边长计算出三角形的面积,并且输出三角形的边长 和面积 计算三角形面积和输出有关数据就 是前面提到的行为,在程序设计方 法中也称为方法。调用对象中的函 数就是向该对象传送一个消息,要 求该对象实现某一行为(

4、功能)。2. 封装与信息隐蔽 面向对象程序设计方法的一个重要特点就是“封 装性” , 所谓“封装”,指两方面的含义: 一是将有关的数据和操作代码封装在一个对象 中,形成一个基本单位,各个对象之间相对独立 ,互不干扰。 二是将对象中某些部分对外隐蔽,即隐蔽其内 部细节,只留下少量接口,以便与外界联系,接 收外界的消息。这种对外界隐蔽的做法称为信息 隐蔽。3. 抽象 抽象的作用是表示同一类事物的本质 。 如一个三角形可以作为一个对象,10 个不同尺寸的三角形是10个对象。如果 这10个三角形对象有相同的属性和行为 ,可以将它们抽象为一种类型,称为三 角形类型。4. 继承与重用 如果在软件开发中已经

5、建立了一个名 为A的“类”,又想另外建立一个名为B 的“类”,而后者与前者内容基本相同, 只是在前者的基础上增加一些属性和行 为,只需在类A的基础上增加一些新内 容即可。这就是面向对象程序设计中的 继承机制。 C+提供了继承机制,采用继承的 方法可以很方便地利用一个已有的 类建立一个新的类。这就是常说的“ 软件重用”(software reusability) 的 思想。5. 多态性 在C+中,所谓多态性 (polymorphism)是指: 由继承而产生的 相关的不同的类,其对象对同一消息会 作出不同的响应。多态性是面向对象程 序设计的一个重要特征,能增加程序的 灵活性。 如,在Windows

6、环境下,用鼠标双击一 个文件对象(这就是向对象传送一个消息) ,如果对象是一个可执行文件,则会执 行此程序,如果对象是一个文本文件, 则启动文本编辑器并打开该文件。 传统的面向过程程序设计是围绕功能进行的,用 一个函数实现一个功能。1-1.2 面向对象程序设计的特点 面向对象程序设计采取的是另外一种 思路。它面对的是一个个对象。实际上 ,每一组数据都是有特定的用途的,是 某种操作的对象。也就是说,一组操作 调用一组数据。程序设计者的任务包括两个方面: 一是设计所需的各种类和对象,即决定 把哪些数据和操作封装在一起; 二是考虑怎样向有关对象发送消息,以 完成所需的任务。 类是所有面向对象的语言的

7、共同特征,所 有面向对象的语言都提供了这种类型。 基于对象就是基于类。与面向过程的程序 不同,基于对象的程序是以类和对象为基础 的,程序的操作是围绕对象进行的。在此基 础上利用了继承机制和多态性,就成为面向 对象的程序设计。1-1.3 类和对象的作用 程序=算法数据结构 对象 = 算法 数据结构 程序 = (对象+对象+对象+) + 消息 或: 程序 = 对象s + 消息 需要规范整个软件开发过程,明确软件开 发过程中每个阶段的任务,在保证前一个阶 段工作的正确性的情况下,再进行下一阶段 的工作。这就是软件工程学需要研究和解决 的问题。 面向对象的软件工程包括以下几个部分: 1-1.4 面向对

8、象的软件开发1. 面向对象分析(OOA) 面向对象的分析,要按照面向对象的概念 和方法,在对任务的分析中,从客观存在的 事物和事物之间的关系,归纳出有关的对象( 包括对象的属性和行为)以及对象之间的联系 ,并将具有相同属性和行为的对象用一个类 (class)来表示。建立一个能反映真实工作情 况的需求模型。2. 面向对象设计(OOD) 根据面向对象分析阶段形成的需求模型, 对每一部分分别进行具体的设计,首先是进 行类的设计,类的设计可能包含多个层次(利 用继承与派生)。然后以这些类为基础提出程 序设计的思路和方法,包括对算法的设计。 在设计阶段,并不牵涉某一种具体的计算机 语言,而是用一种更通用

9、的描述工具(如伪代 码或流程图)来描述。3. 面向对象编程(OOP) 根据面向对象设计的结果,用一种计算 机语言把它写成程序,显然应当选用面 向对象的计算机语言(例如C+),否则无 法实现面向对象设计的要求。4. 面向对象测试(OOT) 在写好程序后交给用户使用前,必须对程 序进行严格的测试。测试的目的是发现程序 中的错误并改正它。面向对象测试是用面向 对象的方法进行测试,以类作为测试的基本 单元。5. 面向对象维护(object oriented soft maintenance, OOSM) 因为对象的封装性,修改一个对象对其 他对象影响很小。利用面向对象的方法 维护程序,大大提高了软件维

10、护的效率 。 在C+中对象的类型称为类(class)。类代表 了某一批对象的共性和特征。 类是对象的抽象,而对象是类的具体实例 (instance)。1-2 类的声明和对象的定义1-2.1 类和对象的关系 在C+中也是先声明一个类类型,然后用 它去定义若干个同类型的对象。对象就是类 类型的一个变量。可以说类是对象的模板, 是用来定义对象的一种抽象类型。 类是抽象的,不占用内存,而对象是具体 的,占用存储空间。在C+中声明一个类类型和声明一个结构体类型 是相似的。 下面是声明一个结构体类型的方法: struct Student int num; char name20; char sex; ;

11、Student stud1,stud2; 1-2.2 声明类类型现在声明一个类: class Student /以class开头 int num; char name20; char sex; /以上3行是数据成员 void display( ) /这是成员函数 coutabc; ; 可以用下面的语句来输出该类对象所 占用的字节数: couthour; /输出p指向的对象中的成员hour 在p指向t的前提下,p-hour,(*p).hour和t.hour 三者等价。1-4.2 通过指向对象的指针访问对象中的成员通过引用变量来访问对象中的成员: 如果已声明了Time类,并有以下定义语句: Tim

12、e t1; /定义对象t1 Time /定义Time类引用变量t2, 并 /使之初始化为t1 cout #include student.h /不要漏写此行,否则编译通不过 void Studentdisplay( ) /在类外定义display类函数 cout #include student.h /将类声明头文件包含进来 int main( ) Student stud; /定义对象 stud.display( ); /执行stud对象的display函数 return 0; 这是一个包括3个文件的程序,组成两个文件模 块 。在预编译时会将头文件student.h中的内容取代 #inclu

13、de student.h行。请注意: 由于将头文件student.h放在用户当前目 录中,因此在文件名两侧用双撇号包起来 (student.h)而不用尖括号(),否则编 译时会找不到此文件。图1-6 在实际工作中,并不是将一个类声明做成一个头 文件,而是将若干个常用的功能相近的类声明集中 在一起,形成类库。 类库有两种: 一种是C+编译系统提供的标准类 库;一种是用户根据自己的需要做成的用户类库, 提供给自己和自己授权的人使用,这称为自定义类 库。在程序开发工作中,类库是很有用的,它可以 减少用户自己对类和成员函数进行定义的工作量。类库包括两个组成部分:(1)类声明头文件;(2)已经过编译的成

14、员函数的定义,它是目标文件 。用户只需把类库装入到自己的计算机系统中(一 般装到C+编译系统所在的子目录下),并在程序中 用#include命令行将有关的类声明的头文件包含到 程序中,就可以使用这些类和其中的成员函数,顺 利地运行程序。 类的成员函数在面向对象程序理论中被称为“方 法”(method), “消息”,其实就是一个命令,由程序语句来实现 。 stud.display( ); 就是向对象stud发出的一个“消息”,通知它执行 其中的display“方法”上面这个语句涉及3个术语: 对象、方法和消息。stud是对象,display( )是方法 ,语句“stud.display( );”

15、是消息。1-5.3 面向对象程序设计中的几个名词例1-1 Time类 1)定义一个简单的Time类 2)实现成员函数 3)实现对象的简单复制1-6 类和对象的简单应用举例例1-2 找出一个整型数组中的元素的最 大值。#include using namespace std; class Array_max /声明类 public: /以下3行为成员函数原型声明 void set_value( ); /对数组元素设置值 void max_value( ); /找出数组中的最大元素 void show_value( ); /输出最大值 private: int array10; /整型数组 int max; /max用来存放最大值

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库 > 教育/培训/课件

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