类与对象课件.ppt

上传人(卖家):三亚风情 文档编号:3282281 上传时间:2022-08-16 格式:PPT 页数:26 大小:388.50KB
下载 相关 举报
类与对象课件.ppt_第1页
第1页 / 共26页
类与对象课件.ppt_第2页
第2页 / 共26页
类与对象课件.ppt_第3页
第3页 / 共26页
类与对象课件.ppt_第4页
第4页 / 共26页
类与对象课件.ppt_第5页
第5页 / 共26页
点击查看更多>>
资源描述

1、C+语言程序设计普通高等教育“十一五”国家级规划教材国家精品课教材 尹云飞博士 硕导第1页,共26页。第第4章章 类与对象类与对象l面向对象的思想lOOP的基本特点l类概念和声明l对象l构造函数l析构函数l内联成员函数l拷贝构造函数l类的组合l结构体与联合体l深度探索第2页,共26页。抽象抽象l抽象是指对具体问题(对象)进行概括,抽象是指对具体问题(对象)进行概括,抽出一类对象的公共性质并加以描述的抽出一类对象的公共性质并加以描述的过程。过程。l例如,例如,p99面向对象程序设计的基本特点第3页,共26页。封装封装l封装是将抽象的到的数据和行为(或功封装是将抽象的到的数据和行为(或功能)相结合

2、,形成一个有机的整体,也能)相结合,形成一个有机的整体,也就是将数据与操作数据的函数代码进行就是将数据与操作数据的函数代码进行有机的结合,形成类,其中的数据和函有机的结合,形成类,其中的数据和函数都是类的成员。数都是类的成员。l例如,例如,p99面向对象程序设计的基本特点第4页,共26页。继承继承lC+语言中提供了类的继承机制,允许语言中提供了类的继承机制,允许程序员在保持原有类特性的基础上,进程序员在保持原有类特性的基础上,进行更具体、更详细的说明。行更具体、更详细的说明。面向对象程序设计的基本特点第5页,共26页。多态多态l多态是指一段程序能够处理多种类型对多态是指一段程序能够处理多种类型

3、对象的能力。象的能力。l在在C+语言中,这种多态性可以通过强语言中,这种多态性可以通过强制多态、重载多态、参数化多态(即模制多态、重载多态、参数化多态(即模板)、包含多态(即虚函数)来体现。板)、包含多态(即虚函数)来体现。面向对象程序设计的基本特点第6页,共26页。类的定义类的定义l类定义格式:类定义格式:class 类名称类名称public:外部接口外部接口protected:保护型成员保护型成员private:私有成员私有成员类和对象在面向对象程序设计中,程序模块是由类构成在面向对象程序设计中,程序模块是由类构成的。类是对逻辑上相关的函数与数据的封装,的。类是对逻辑上相关的函数与数据的封

4、装,它是对问题的抽象描述。它是对问题的抽象描述。第7页,共26页。类成员的访问控制类成员的访问控制l共有类型,共有类型,public:定义了类的外部接口:定义了类的外部接口l私有类型,私有类型,private:只能被本类的成员函数访问,:只能被本类的成员函数访问,来自外部的任何访问都是非法的来自外部的任何访问都是非法的l保护类型,保护类型,protected:和:和private相似,但可以被相似,但可以被继承继承l例如例如p103类和对象第8页,共26页。对象对象l格式:格式:类名类名 对象名对象名;例如:例如:Clock myClock;l对象所占据的内存空间只是用于存放对象所占据的内存空

5、间只是用于存放数据成员,函数成员不在每一个对象数据成员,函数成员不在每一个对象中存储副本,每个函数的代码在内存中存储副本,每个函数的代码在内存中只占据一份空间中只占据一份空间类和对象第9页,共26页。类的成员函数类的成员函数l成员函数的实现成员函数的实现返回值类型返回值类型 类名类名:函数成员名函数成员名(参数表参数表)函数体函数体l例如例如p104类和对象第10页,共26页。类的成员函数类的成员函数l成员函数调用中的目的对象:使用成员函数调用中的目的对象:使用.操作符指出操作符指出调用所针对的对象,称为本次调用的目的对象调用所针对的对象,称为本次调用的目的对象l带默认形参值的成员函数:例如带

6、默认形参值的成员函数:例如p105l内联成员函数,例如内联成员函数,例如p105l例例4-1,p106类和对象第11页,共26页。构造函数构造函数l构造函数的作用就是在对象被创建时利用特定的构造函数的作用就是在对象被创建时利用特定的值构造对象,将对象初始化为一个特定的状态。值构造对象,将对象初始化为一个特定的状态。l构造函数在对象被创建的时候自动被调用构造函数在对象被创建的时候自动被调用l例如例如p108构造函数和析构函数第12页,共26页。复制构造函数复制构造函数l又称拷贝构造函数,它是一种特殊的构造函数,具有一又称拷贝构造函数,它是一种特殊的构造函数,具有一般构造函数的所有特性,其形参是本

7、类的对象的引用。般构造函数的所有特性,其形参是本类的对象的引用。l拷贝构造函数的作用是使一个已经存在的对象去初始化同类拷贝构造函数的作用是使一个已经存在的对象去初始化同类的一个新对象的一个新对象l若果程序员没有定义类的拷贝构造函数,系统就会在必要的若果程序员没有定义类的拷贝构造函数,系统就会在必要的时候自动生成一个隐含的拷贝构造函数时候自动生成一个隐含的拷贝构造函数构造函数和析构函数第13页,共26页。复制构造函数复制构造函数l例如例如p110l拷贝构造函数在三种情况下被调用拷贝构造函数在三种情况下被调用l例例4-2,p112构造函数和析构函数:当用类的一个对象去初始化该类的另一个对当用类的一

8、个对象去初始化该类的另一个对象时象时如果函数的形参是类的对象,调用函数时,进行如果函数的形参是类的对象,调用函数时,进行形参和实参结合时形参和实参结合时如果函数的返回值是类的对象,函数执行完成如果函数的返回值是类的对象,函数执行完成返回调用者时返回调用者时第14页,共26页。析构函数析构函数l析构函数用来完成对象被删除前的一析构函数用来完成对象被删除前的一些清理工作。析构函数是在对象的生些清理工作。析构函数是在对象的生存期即将结束的时刻被自动调用的。存期即将结束的时刻被自动调用的。l析构函数没有形参、是析构函数没有形参、是public成员成员l例如例如p114构造函数和析构函数第15页,共26

9、页。组合组合l类的组合就是一个类内嵌其他类的对象作为成员,它们之类的组合就是一个类内嵌其他类的对象作为成员,它们之间的关系是一种包含与被包含的关系。间的关系是一种包含与被包含的关系。l当创建类的对象时,如果这个类具有内嵌对象成员,那当创建类的对象时,如果这个类具有内嵌对象成员,那么各个内嵌对象将首先被自动创建么各个内嵌对象将首先被自动创建l在创建对象时既要对本类的基本类型数据成员进行初始化在创建对象时既要对本类的基本类型数据成员进行初始化又要对内嵌对象成员进行初始化又要对内嵌对象成员进行初始化类的组合第16页,共26页。组合组合l组合类构造函数格式组合类构造函数格式类名类名:类名类名(形参表形

10、参表):内嵌对象内嵌对象1(形参形参表表):内嵌对象内嵌对象2(形参表形参表).l例例4-4,p120类的组合第17页,共26页。前向引用声明前向引用声明l即引用一个尚未定义的类即引用一个尚未定义的类l例如例如p120-122类的组合第18页,共26页。UML简介简介lUML(Unified Modeling Language)统一建模语言是统一建模语言是OMG于于1997年推行的年推行的l2003年年6月,月,OGM通过了通过了UML2.0UML图形标识第19页,共26页。UML类图类图l类和对象:在类和对象:在UML中用一个三段的矩中用一个三段的矩形表示一个类,如图形表示一个类,如图4-4

11、;用一个矩形;用一个矩形表示一个对象表示一个对象l几种图形标识:(几种图形标识:(1)依赖关系是一个)依赖关系是一个事物的变化可能会影响到使用它的另事物的变化可能会影响到使用它的另一个事物。图一个事物。图4-6,p126UML图形标识第20页,共26页。UML类图类图l几种图形标识:(几种图形标识:(2)关联关系是一个类的对象和)关联关系是一个类的对象和另一个类的对象之间相互作用的连接,例另一个类的对象之间相互作用的连接,例1对多。对多。图图4-7,p126l(3)包含关系是聚合和组合的总称。聚合是)包含关系是聚合和组合的总称。聚合是整体与部分关系,例如整体与部分关系,例如“包含包含”、“组成

12、组成”;组合是部分与整体共存。图组合是部分与整体共存。图4-8,p127UML图形标识第21页,共26页。UML类图类图l几种图形标识:(几种图形标识:(4)继承关系使用三)继承关系使用三角形标识。例如图角形标识。例如图4-10,p128l注释:用带有折角的矩形表示,例注释:用带有折角的矩形表示,例4-6,p128UML图形标识第22页,共26页。结构体结构体l结构体是一种特殊形态的类是对结构体是一种特殊形态的类是对C语言结构体的兼容语言结构体的兼容l结构体与类具有不同的默认访问控制属性:在结结构体与类具有不同的默认访问控制属性:在结构体中对于未指定人和访问控制属性的成员其类构体中对于未指定人

13、和访问控制属性的成员其类型为公有类型;而类则为私有类型型为公有类型;而类则为私有类型l全部是数据成员的结构可以被直接赋值,例全部是数据成员的结构可以被直接赋值,例4-7结构体和联合体第23页,共26页。联合体联合体l是指全部数据成员共享同一组内存单元是指全部数据成员共享同一组内存单元l例如例如p131l一般只用联合体来存储私有的数据,不为他定义一般只用联合体来存储私有的数据,不为他定义函数成员函数成员l联合体可以不声明名称,其成员的名字可以联合体可以不声明名称,其成员的名字可以直接访问例如直接访问例如132,例,例4-8结构体和联合体:联合体的各个对象成员不能有自定义的构造函数、联合体的各个对

14、象成员不能有自定义的构造函数、析构函数、重载赋值运算符析构函数、重载赋值运算符联合体不能继承、不支持包含多态性联合体不能继承、不支持包含多态性第24页,共26页。用构造函数定义类型转换用构造函数定义类型转换l构造函数可以实现类型转换构造函数可以实现类型转换,例如例如Line(Point(1),Point(4).getLen();l也可以写成也可以写成Line(1,4).getLen();这是隐式转换这是隐式转换l只允许显示执行类型转换:通过在构造函数只允许显示执行类型转换:通过在构造函数前面加前面加explicit实现实现深度探索第25页,共26页。对象作为函数参数和返回值对象作为函数参数和返回值l对象作为函数参数会调用拷贝构造函数对象作为函数参数会调用拷贝构造函数l不同的编译器会对这种调用进行优化以减少临时对象不同的编译器会对这种调用进行优化以减少临时对象生成生成l对象作为函数的返回值也会调用拷贝构造函数对象作为函数的返回值也会调用拷贝构造函数l不同的编译器也会对生成的临时对象进行优化不同的编译器也会对生成的临时对象进行优化深度探索第26页,共26页。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(类与对象课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|