c++第1章(类和对象).ppt
《c++第1章(类和对象).ppt》由会员分享,可在线阅读,更多相关《c++第1章(类和对象).ppt(82页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、c+第第1章章(类和对象类和对象)第1章 类和对象1-1 面向对象程序设计方法概述1-2 类的声明和对象的定义1-3 类的成员函数1-4 对象成员的引用1-5 类的封装性和信息隐蔽1-6 类和对象的简单应用举例对于规模比较小的程序,编程者可以直接编写出一个面向过程的程序,详细地描述每一瞬时的数据结构及对其的操作过程。但是当程序规模较大时,就显得力不从心了。C+就是为了解决编写大程序过程中的困难而产生的。1-1 面向对象程序设计方法概述面向对象的程序设计的思路和人们日常生活中处理问题的思路是相似的:在自然世界和社会生活中,一个复杂的事物总是由许多部分组成的。1-1.1 什么是面向对象的程序设计
2、当人们生产汽车时,分别设计和制造发当人们生产汽车时,分别设计和制造发动机、底盘、车身和轮子,最后把它们动机、底盘、车身和轮子,最后把它们组装在一起。在组装时,各部分之间有组装在一起。在组装时,各部分之间有一定的联系,以便协调工作。这就是面一定的联系,以便协调工作。这就是面向对象的程序设计的基本思路。向对象的程序设计的基本思路。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)是指: 由继承而产生的相关的不同的类,其对象对同一消息会作出
6、不同的响应。多态性是面向对象程序设计的一个重要特征,能增加程序的灵活性。 如,在如,在Windows环境下,用鼠标双击一环境下,用鼠标双击一个文件对象个文件对象(这就是向对象传送一个消息这就是向对象传送一个消息),如果对象是一个可执行文件,则会执行如果对象是一个可执行文件,则会执行此程序,如果对象是一个文本文件,则此程序,如果对象是一个文本文件,则启动文本编辑器并打开该文件。启动文本编辑器并打开该文件。传统的面向过程程序设计是围绕功能进行的,用一个函数实现一个功能。 1-1.2 面向对象程序设计的特点面向对象程序设计采取的是另外一种思路。它面对的是一个个对象。实际上,每一组数据都是有特定的用途
7、的,是某种操作的对象。也就是说,一组操作调用一组数据。程序设计者的任务包括两个方面:程序设计者的任务包括两个方面: 一是设计所需的各种类和对象,即决定一是设计所需的各种类和对象,即决定把哪些数据和操作封装在一起;把哪些数据和操作封装在一起; 二是考虑怎样向有关对象发送消息,以二是考虑怎样向有关对象发送消息,以完成所需的任务。完成所需的任务。类是所有面向对象的语言的共同特征,所有面向对象的语言都提供了这种类型。基于对象就是基于类。与面向过程的程序不同,基于对象的程序是以类和对象为基础的,程序的操作是围绕对象进行的。在此基础上利用了继承机制和多态性,就成为面向对象的程序设计。1-1.3 类和对象的
8、作用程序=算法数据结构对象 = 算法 数据结构程序 = (对象+对象+对象+) + 消息 或: 程序 = 对象s + 消息需要规范整个软件开发过程,明确软件开发过程中每个阶段的任务,在保证前一个阶段工作的正确性的情况下,再进行下一阶段的工作。这就是软件工程学需要研究和解决的问题。面向对象的软件工程包括以下几个部分: 1-1.4 面向对象的软件开发1. 面向对象分析(OOA)面向对象的分析,要按照面向对象的概念和方法,在对任务的分析中,从客观存在的事物和事物之间的关系,归纳出有关的对象(包括对象的属性和行为)以及对象之间的联系,并将具有相同属性和行为的对象用一个类(class)来表示。建立一个能
9、反映真实工作情况的需求模型。2. 面向对象设计(OOD)根据面向对象分析阶段形成的需求模型,对每一部分分别进行具体的设计,首先是进行类的设计,类的设计可能包含多个层次(利用继承与派生)。然后以这些类为基础提出程序设计的思路和方法,包括对算法的设计。在设计阶段,并不牵涉某一种具体的计算机语言,而是用一种更通用的描述工具(如伪代码或流程图)来描述。3. 面向对象编程面向对象编程(OOP) 根据面向对象设计的结果,用一种计算根据面向对象设计的结果,用一种计算机语言把它写成程序,显然应当选用面机语言把它写成程序,显然应当选用面向对象的计算机语言向对象的计算机语言(例如例如C+),否则无否则无法实现面向
10、对象设计的要求。法实现面向对象设计的要求。4. 面向对象测试(OOT)在写好程序后交给用户使用前,必须对程序进行严格的测试。测试的目的是发现程序中的错误并改正它。面向对象测试是用面向对象的方法进行测试,以类作为测试的基本单元。5. 面向对象维护面向对象维护(object oriented soft maintenance,OOSM) 因为对象的封装性,修改一个对象对其因为对象的封装性,修改一个对象对其他对象影响很小。利用面向对象的方法他对象影响很小。利用面向对象的方法维护程序,大大提高了软件维护的效率。维护程序,大大提高了软件维护的效率。在C+中对象的类型称为类(class)。类代表了某一批对
11、象的共性和特征。类是对象的抽象,而对象是类的具体实例(instance)。1-2 类的声明和对象的定义 1-2.1 类和对象的关系在C+中也是先声明一个类类型,然后用它去定义若干个同类型的对象。对象就是类类型的一个变量。可以说类是对象的模板,是用来定义对象的一种抽象类型。类是抽象的,不占用内存,而对象是具体的,占用存储空间。在C+中声明一个类类型和声明一个结构体类型是相似的。下面是声明一个结构体类型的方法: struct Student int num;char name20;char sex;Student stud1,stud2; 1-2.2 声明类类型现在声明一个类: class Stu
12、dent /以class开头 int num;char name20; char sex; /以上3行是数据成员 void display( ) /这是成员函数coutnum:numendl;coutname:nameendl; coutsex:sexendl; ;Student stud1,stud2; 一般是把数据隐蔽起来,而把成员函数作为对外界的接口。class Student /声明类类型 private: /声明以下部分为私有的int num;char name20; char sex; public: /声明以下部分为公用的void display( ) coutnum:numen
13、dl;coutname:nameendl;coutsex:sexendl; ;Student stud1,stud2; 对类类型的声明,可得到其一般形式如下: class 类名 private:私有的数据和成员函数; public:公用的数据和成员函数;private和public称为成员访问限定符(member access specifier)。 可访问 性成员类型外部函数成员函数privateNYpublicYprotectedN注意:注意: 在声明类类型时,声明为在声明类类型时,声明为private的成员和声明的成员和声明为为public的成员的次序任意,既可以先出现的成员的次序任意,
14、既可以先出现private部分,也可以先出现部分,也可以先出现public部分。部分。 如果在类体中既不写关键字如果在类体中既不写关键字private,又不写又不写public,就默认为就默认为private。 在一个类体中,关键字在一个类体中,关键字private和和public可以分可以分别出现多次。每个部分的有效范围到出现另一别出现多次。每个部分的有效范围到出现另一个访问限定符或类体结束时为止。个访问限定符或类体结束时为止。1-2.3 定义对象的方法先声明类类型,然后再定义对象在C+中,声明了类类型后,定义对象有两种形式。(1) class 类名 对象名 如 class Student
15、stud1,stud2;(2) 类名 对象名 如 Student stud1,stud2;2. 在声明类类型的同时定义对象class Student /声明类类型 public: /先声明公用部分 void display( ) coutnum:numendl;coutname:nameendl;coutsex:sexendl; private: /后声明私有部分int num;char name20; char sex; stud1,stud2; /定义了两个Student类的对象3. 不出现类名,直接定义对象class /无类名private: /声明以下部分为私有的 public: /声
16、明以下部分为公用的 stud1,stud2; /定义了两个无类名的类对象struct Student /用关键字struct来声明一个类 private: /声明以下部分为私有的 int num; /以下3行为数据成员 char name20; char sex; public: /声明以下部分为公用的 void display( ) /成员函数 coutnum:numendl; coutname:nameendl; coutsex:sexendl; ;Student stud1,stud2; /定义了两个Student类的对象1-2.4 类和结构体类型的异同用struct声明的类,如果对其成
17、员不作private或public的声明,系统将其默认为public。用class定义的类,如果不作private或public声明,系统将其成员默认为private。如果希望成员是公用的,使用struct比较方便,如果希望部分成员是私有的,宜用class。建议尽量使用class来建立类,写出完全体现C+风格的程序。类的成员函数(简称类函数)是函数的一种,属于一个类的成员,出现在类体中。它可以被指定为private(私有的)、public(公用的)或protected(受保护的)。1-3 类的成员函数 1-3.1 成员函数的性质成员函数可以访问本类中任何成员(包括私有的和公用的),可以引用在本
18、作用域中有效的数据。一般的做法是将需要被外界调用的成员函数指定为public,它们是类的对外接口。并非要求把所有成员函数都指定为public。可以在类体中只写成员函数的声明,而在类的外面进行函数定义。class Student public:void display( ); /公用成员函数原型声明private:int num;string name; char sex; /以上3行是私有数据成员 ;void Student display( ) /在类外定义display类函数coutnum:numendl; /函数体coutname:nameendl; coutsex:sexendl; S
19、tudent stud1,stud2; /定义两个类对象1-3.2 在类外定义成员函数注意:但成员函数在类外定义时,必须在函数名前面加上类名,予以限定“ ”是作用域限定符或称作用域运算符,用它声明函数是属于哪个类的。如果在作用域运算符“ ”的前面没有类名,或者函数名前面既无类名又无作用域运算符“ ”,如 display( ) 或 display( )则表示display函数不属于任何类,这个函数不是成员函数,而是全局函数,即非成员函数的一般普通函数。类函数必须先在类体中作原型声明,然后在类外定义,也就是说类体的位置应在函数定义之前,否则编译时会出错。如果一个函数,其函数体只有23行,一般可在声
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 对象
限制150内