面向对象程序设计C++教程 教学课件 ppt 作者 于帆 赵妮 闫谦时第7章

上传人:w****i 文档编号:94399166 上传时间:2019-08-06 格式:PPT 页数:99 大小:290KB
返回 下载 相关 举报
面向对象程序设计C++教程 教学课件 ppt 作者 于帆 赵妮 闫谦时第7章_第1页
第1页 / 共99页
面向对象程序设计C++教程 教学课件 ppt 作者 于帆 赵妮 闫谦时第7章_第2页
第2页 / 共99页
面向对象程序设计C++教程 教学课件 ppt 作者 于帆 赵妮 闫谦时第7章_第3页
第3页 / 共99页
面向对象程序设计C++教程 教学课件 ppt 作者 于帆 赵妮 闫谦时第7章_第4页
第4页 / 共99页
面向对象程序设计C++教程 教学课件 ppt 作者 于帆 赵妮 闫谦时第7章_第5页
第5页 / 共99页
点击查看更多>>
资源描述

《面向对象程序设计C++教程 教学课件 ppt 作者 于帆 赵妮 闫谦时第7章》由会员分享,可在线阅读,更多相关《面向对象程序设计C++教程 教学课件 ppt 作者 于帆 赵妮 闫谦时第7章(99页珍藏版)》请在金锄头文库上搜索。

1、第七章 类与对象,面向对象程序设计 C+教程,西安工业大学 于帆,2,本章主要内容,面向对象的思想 类 对象 构造函数,析构函数 静态成员 友元,3,回顾:面向过程的设计方法,重点: 如何实现的细节和过程,将数据与函数分开。 形式: 主模块+若干个子模块(main()+子函数)。 特点: 自顶向下,逐步求精功能分解。 缺点: 效率低,程序的可重用性差。,4,面向对象的方法,目的: 实现软件设计的产业化。 观点: 自然界是由实体(对象)所组成。 程序设计方法: 使用面向对象的观点来描述模仿并处理现实问题。 要求: 高度概括、分类、和抽象。,5,面向对象的方法,将数据及对数据的操作方法封装在一起,

2、作为一个相互依存、不可分离的整体对象。 对同类型对象抽象出其共性,形成类。 类通过一个简单的外部接口,与外界发生关系。 对象与对象之间通过消息进行通信。,6,面向对象的语言,出发点: 更直接地描述客观世界中存在的事物(对象)以及它们之间的关系。 特点: 是高级语言。 将客观事物看作具有属性和行为的对象。 通过抽象找出同一类对象的共同属性和行为,形成类。 通过类的继承与多态实现代码重用,7,面向对象的语言,优点: 使程序能够比较直接地反映问题域的本来面目,软件开发人员能够利用人类认识事物所采用的一般思维方法来进行软件开发。,8,面向对象的基本概念 对象,一般意义上的对象: 是现实世界中一个实际存

3、在的事物。 可以是有形的(比如一辆汽车),也可以是无形的(比如一项计划)。 是构成世界的一个独立单位,具有 静态特征:可以用某种数据来描述 动态特征:对象所表现的行为或具有的功能,9,面向对象的基本概念 对象,面向对象方法中的对象: 是系统中用来描述客观事物的一个实体,它是用来构成系统的一个基本单位。对象由一组属性和一组行为构成。 属性:用来描述对象静态特征的数据项。 行为:用来描述对象动态特征的操作序列。,10,面向对象的基本概念 类,分类人类通常的思维方法 分类所依据的原则抽象 忽略事物的非本质特征,只注意那些与当前目标有关的本质特征,从而找出事物的共性,把具有共同性质的事物划分为一类,得

4、出一个抽象的概念。 例如,石头、树木、汽车、房屋等都是人们在长期的生产和生活实践中抽象出的概念。,11,面向对象的基本概念 类,面向对象方法中的“类“ 具有相同属性和服务的一组对象的集合 为属于该类的全部对象提供了抽象的描述,包括属性和行为两个主要部分。 类与对象的关系: 犹如模具与铸件之间的关系,一个属于某类的对象称为该类的一个实例。,12,面向对象的基本概念 封装,把对象的属性和服务结合成一个独立的系统单元。 尽可能隐蔽对象的内部细节。对外形成一个边界(或者说一道屏障),只保留有限的对外接口使之与外部发生联系。,13,封装,将抽象出的数据成员、代码成员相结合,将它们视为一个整体。 目的是曾

5、强安全性和简化编程,使用者不必了解具体的实现细节,而只需要通过外部接口,以特定的访问权限,来使用类的成员。 实现封装:类声明中的,14,封装,实例: class Clock public:void SetTime(int NewH,int NewM, int NewS); void ShowTime(); private: int Hour,Minute,Second; ;,特定的访问权限,15,面向对象的基本概念 继承,继承对于软件复用有着重要意义,是面向对象技术能够提高软件开发效率的重要原因之一。 定义:特殊类的对象拥有其一般类的全部属性与服务,称作特殊类对一般类的继承。 例如:将轮船作为

6、一个一般类,客轮便是一个特殊类。,16,继承与派生,是C+中支持层次分类的一种机制,允许程序员在保持原有类特性的基础上,进行更具体的说明。,17,面向对象的基本概念 多态性,多态是指在一般类中定义的属性或行为,被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。这使得同一个属性或行为在一般类及其各个特殊类中具有不同的语义。 例如: 数的加法-实数的加法 -复数的加法,18,多态性,多态:同一名称,不同的功能实现方式。 目的:达到行为标识统一,减少程序中标识符的个数。 实现:重载函数和虚函数,19,面向对象的软件工程,面向对象的软件工程是面向对象方法在软件工程领域的全面应用。它包括: 面

7、向对象的分析(OOA) 面向对象的设计(OOD) 面向对象的编程(OOP) 面向对象的测试(OOT) 面向对象的软件维护(OOSM),20,抽象,抽象是对具体对象(问题)进行概括,抽出这一类对象的公共性质并加以描述的过程。 先注意问题的本质及描述,其次是实现过程或细节。 数据抽象:描述某类对象的属性或状态(对象相互区别的物理量)。 代码抽象:描述某类对象的共有的行为特征或具有的功能。 抽象的实现:通过类的声明。,21,抽象实例钟表,数据抽象: int Hour,int Minute,int Second 代码抽象: SetTime(),ShowTime(),22,抽象实例钟表类,class C

8、lock public: void SetTime(int NewH,int NewM,int NewS); void ShowTime(); private: int Hour,Minute,Second; ;,23,抽象实例人,数据抽象: char *name,char *gender,int age,int id 代码抽象: 生物属性角度: GetCloth(), Eat(), Step(), 社会属性角度: Work(), Promote() ,24,c+中的类,类是具有相同属性和行为的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和行为两个主要部分。 利用

9、类可以实现数据的封装、隐藏、继承与派生。 利用类易于编写大型复杂程序,其模块化程度比C中采用函数更高。,25,类的声明形式,类是一种用户自定义类型,声明形式: class 类名称 public: 公有成员(外部接口) private: 私有成员 protected: 保护型成员 ,26,公有类型成员,在关键字public后面声明,它们是类与外部的接口,任何外部函数都可以访问公有类型数据和函数。,27,私有类型成员,在关键字private后面声明,只允许本类中的函数访问,而类外部的任何函数都不能访问。 如果紧跟在类名称的后面声明私有成员,则关键字private可以省略。,28,保护类型,与pri

10、vate类似,其差别表现在继承与派生时对派生类的影响不同。,29,类的成员,class Clock public: void SetTime(int NewH, int NewM, int NewS); void ShowTime(); private: int Hour, Minute, Second; ;,类 和 对 象,成员数据,成员函数,void Clock:SetTime(int NewH, int NewM, int NewS) Hour=NewH; Minute=NewM; Second=NewS; void Clock:ShowTime() coutHour“:“Minute“

11、:“Second; ,30,31,成员数据,与一般的变量声明相同,但需要将它放在类的声明体中。,类 和 对 象,32,成员函数,在类中说明原型,可以在类外给出函数体实现,并在函数名前使用类名加以限定。也可以直接在类中给出函数体,形成内联成员函数。 允许声明重载函数和带默认形参值的函数,类 和 对 象,33,内联成员函数,为了提高运行时的效率,对于较简单的函数可以声明为内联形式。 内联函数体中不要有复杂结构(如循环语句和switch语句)。 在类中声明内联成员函数的方式: 将函数体放在类的声明中。 使用inline关键字。,类 和 对 象,34,内联成员函数举例(一),class Point p

12、ublic: void Init(int initX,int initY) X=initX; Y=initY; int GetX() return X; int GetY() return Y; private: int X,Y; ;,类 和 对 象,35,内联成员函数举例(二),class Point public: void Init(int initX,int initY); int GetX(); int GetY(); private: int X,Y; ;,类 和 对 象,inline void Point: Init(int initX,int initY) X=initX; Y

13、=initY; inline int Point:GetX() return X; inline int Point:GetY() return Y; ,36,37,对象,类的对象是该类的某一特定实体,即类类型的变量。 声明形式: 类名 对象名; 例: Clock myClock;,类 和 对 象,38,类中成员的访问方式,类中成员互访 直接使用成员名 类外访问 使用“对象名.成员名”方式访问 public 属性的成员,类 和 对 象,39,对象指针的一般概念,声明形式 类名 *对象指针名; 例 Point A(5,10); Piont *ptr; ptr=,40,对象指针应用举例,int m

14、ain() Point A(5,10); Point *ptr; ptr= ,41,曾经出现过的错误例子,class Fred; /前向引用声明 class Barney Fred x; /错误:类Fred的声明尚不完善 ; class Fred Barney y; ;,42,正确的程序,class Fred; /前向引用声明 class Barney Fred *x; ; class Fred Barney y; ;,43,this指针,隐含于每一个类的成员函数中的特殊指针。 明确地指出了成员函数当前所操作的数据所属的对象。 当通过一个对象调用成员函数时,系统先将该对象的地址赋给this指针

15、,然后调用成员函数,成员函数对对象的数据成员进行操作时,就隐含使用了this指针。,44,this指针,例如:Point类的构造函数体中的语句: X=xx; Y=yy; 相当于: this-X=xx; this-Y=yy;,45,指向类的非静态成员的指针,通过指向成员的指针只能访问公有成员 声明指向成员的指针 声明指向公有数据成员的指针 类型说明符 类名:*指针名; 声明指向公有函数成员的指针 类型说明符 (类名:*指针名)(参数表);,46,指向类的非静态成员的指针,指向数据成员的指针 说明指针应该指向哪个成员 指针名=&类名:数据成员名; 通过对象名(或对象指针)与成员指针结合来访问数据成

16、员 对象名.* 类成员指针名 或: 对象指针名*类成员指针名,47,指向类的非静态成员的指针,指向函数成员的指针 初始化 指针名=类名:函数成员名; 通过对象名(或对象指针)与成员指针结合来访问函数成员 (对象名.* 类成员指针名)(参数表) 或: (对象指针名*类成员指针名)(参数表),48,指向类的非静态成员的指针,访问对象的公有成员函数的不同方式 int main() /主函数 Point A(4,5); /声明对象A Point *p1= ,49,指向类的静态成员的指针,对类的静态成员的访问不依赖于对象 可以用普通的指针来指向和访问静态成员 通过指针访问类的静态数据成员 通过指针访问类的静态函数成员,50,

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

当前位置:首页 > 高等教育 > 大学课件

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