类与对象课件_第1页
类与对象课件_第2页
类与对象课件_第3页
类与对象课件_第4页
类与对象课件_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、页。4继承C+语言中提供了类的继承机制,允许程序员在保持原有类特性的基础上,进行更具体、更详细的说明。面向对象程序设计的基本特点第5页,共26页。5多态多态是指一段程序能够处理多种类型对象的能力。在C+语言中,这种多态性可以通过强制多态、重载多态、参数化多态(即模板)、包含多态(即虚函数)来体现。面向对象程序设计的基本特点第6页,共26页。6类的定义类定义格式:class 类名称public:外部接口protected:保护型成员private:私有成员类和对象在面向对象程序设计中,程序模块是由类构成的。类是对逻辑上相关的函数与数据的封装,它是对问题的抽象描述。第7页,共26页。7类成员的访问

3、控制共有类型,public:定义了类的外部接口私有类型,private:只能被本类的成员函数访问,来自外部的任何访问都是非法的保护类型,protected:和private相似,但可以被继承例如p103类和对象第8页,共26页。8对象格式: 类名 对象名; 例如: Clock myClock;对象所占据的内存空间只是用于存放数据成员,函数成员不在每一个对象中存储副本,每个函数的代码在内存中只占据一份空间类和对象第9页,共26页。9类的成员函数成员函数的实现返回值类型 类名:函数成员名(参数表)函数体例如p104类和对象第10页,共26页。10类的成员函数成员函数调用中的目的对象:使用.操作符指

4、出调用所针对的对象,称为本次调用的目的对象带默认形参值的成员函数:例如p105内联成员函数,例如p105例4-1,p106类和对象第11页,共26页。11构造函数构造函数的作用就是在对象被创建时利用特定的值构造对象,将对象初始化为一个特定的状态。构造函数在对象被创建的时候自动被调用例如p108构造函数和析构函数第12页,共26页。12复制构造函数又称拷贝构造函数,它是一种特殊的构造函数,具有一般构造函数的所有特性,其形参是本类的对象的引用。拷贝构造函数的作用是使一个已经存在的对象去初始化同类的一个新对象若果程序员没有定义类的拷贝构造函数,系统就会在必要的时候自动生成一个隐含的拷贝构造函数构造函

5、数和析构函数第13页,共26页。13复制构造函数例如p110拷贝构造函数在三种情况下被调用例4-2,p112构造函数和析构函数拷贝构造函数在三种情况下被调用:当用类的一个对象去初始化该类的另一个对象时如果函数的形参是类的对象,调用函数时,进行形参和实参结合时如果函数的返回值是类的对象,函数执行完成返回调用者时第14页,共26页。14析构函数析构函数用来完成对象被删除前的一些清理工作。析构函数是在对象的生存期即将结束的时刻被自动调用的。析构函数没有形参、是public成员例如p114构造函数和析构函数第15页,共26页。15组合类的组合就是一个类内嵌其他类的对象作为成员,它们之间的关系是一种包含

6、与被包含的关系。当创建类的对象时,如果这个类具有内嵌对象成员,那么各个内嵌对象将首先被自动创建在创建对象时既要对本类的基本类型数据成员进行初始化又要对内嵌对象成员进行初始化类的组合第16页,共26页。16组合组合类构造函数格式类名: 类名(形参表):内嵌对象1(形参表):内嵌对象2(形参表) .例4-4,p120类的组合第17页,共26页。17前向引用声明即引用一个尚未定义的类例如p120-122类的组合第18页,共26页。18UML简介UML(Unified Modeling Language)统一建模语言是OMG于1997年推行的2003年6月,OGM通过了UML2.0UML图形标识第19

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

8、用带有折角的矩形表示,例4-6,p128UML图形标识第22页,共26页。22结构体结构体是一种特殊形态的类是对C语言结构体的兼容结构体与类具有不同的默认访问控制属性:在结构体中对于未指定人和访问控制属性的成员其类型为公有类型;而类则为私有类型全部是数据成员的结构可以被直接赋值,例4-7结构体和联合体第23页,共26页。23联合体是指全部数据成员共享同一组内存单元例如p131一般只用联合体来存储私有的数据,不为他定义函数成员联合体可以不声明名称,其成员的名字可以直接访问例如132,例4-8结构体和联合体联合体使用限制:联合体的各个对象成员不能有自定义的构造函数、析构函数、重载赋值运算符联合体不能继承、不支持包含多态性第24页,共26页。24用构造函数定义类型转换构造函数可以实现类型转换,例如Line(Point(1), Point(4).getLen();也可以写成Line(1, 4).getLen();这是隐式转换只允许显示执行类型转换:通过在构造函数前面加exp

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论