C++程序设计--类与对象(第1章)

上传人:sh****na 文档编号:129849538 上传时间:2020-04-23 格式:PPT 页数:105 大小:1.05MB
返回 下载 相关 举报
C++程序设计--类与对象(第1章)_第1页
第1页 / 共105页
C++程序设计--类与对象(第1章)_第2页
第2页 / 共105页
C++程序设计--类与对象(第1章)_第3页
第3页 / 共105页
C++程序设计--类与对象(第1章)_第4页
第4页 / 共105页
C++程序设计--类与对象(第1章)_第5页
第5页 / 共105页
点击查看更多>>
资源描述

《C++程序设计--类与对象(第1章)》由会员分享,可在线阅读,更多相关《C++程序设计--类与对象(第1章)(105页珍藏版)》请在金锄头文库上搜索。

1、C C 程序设计教程 郑秋生 2020 4 23 2 第1章类和对象 应该重点掌握以下内容 面向对象程序设计的基本特点类和对象的定义和使用构造函数和析构函数拷贝构造函数和堆对象 对象数组友元函数和友元类 2020 4 23 3 第1章类和对象 1 1面向对象程序设计概述1 2面向对象程序设计的基本概念1 3类和对象的定义1 4构造函数和析构函数1 5类和对象的进一步应用1 6静态成员1 7友元函数和友元类1 8string类1 9综合应用实例 2020 4 23 4 1 1面向对象程序设计概述 一 什么是面向对象程序设计面向对象程序设计 ObjectOrientedProgramming 简称

2、OOP 是软件系统设计与实现的新方法 这种新方法即吸取了结构化程序设计的全部优点 又考虑了现实世界与面向对象空间的映射关系 所追求的目标是将现实世界的问题求解尽可能的简单化 二 面向对象程序设计的基本思路例如 生产一台电脑 2020 4 23 5 1 2面向对象程序设计的基本概念 1 2 1类1 2 2对象1 2 3封装 encapsulation 与数据隐藏1 2 4继承 inheritance 1 2 5多态性 polymorphism 1 2 6消息 2020 4 23 6 1 2 1类 一 现实世界与面向对象系统对应关系二 什么是类1 类是一种复杂的数据类型 它将不同类型的数据和与这些

3、数据相关的操作封装在一起 类是对现实世界客观事物的抽象 2 两方面的要素 属性 atrribute 数据行为 behavior 数据的操作 函数 2020 4 23 7 1 2 2对象 一 什么是对象对象是类的一个实体 又称为实例二 对象与类的关系三 对象与对象之间消息传递 2020 4 23 8 1 2 3封装与数据隐藏 一 什么是封装封装是指将对象的数据和与这个数据有关的操作放在一起 各个对象之间相互独立 互不干扰 对象只留少量的接口 以便与外部联系 从外部看对象就像一个 黑匣子 数据和方法是隐蔽的 看不见的 当用户使用对象时 不必知道对象的具体实现细节 只需要根据对象提供的外部接口访问对

4、象即可 二 封装应具有以下几个特点具有一个清楚的边界 私有成员封装在内部 外部不可以访问提供必要的接口对象内部的数据和方法是受封装外壳保护的 其它对象不能直接使用 2020 4 23 9 1 2 4继承 一 继承概念的提出例如 已定义电视机类 现需要定义彩色电视机类解决方法 1 重新设计2 继承 继承原来电视机的属性和方法 再添加彩色电视机自己特有的新的属性和行为二 继承的概念C 提供的继承机制提供了类之间相互关系的解决方案 使某个类可以继承另外一个类的特征和能力 使用继承符合人们对事物的认识和叙述 大大简化了对问题的描述 提高了程序的可重用性 从而提高了程序设计 修改 扩充的效率 实现软件重

5、用 softwarereusability 2020 4 23 10 1 2 5多态性 polymorphism 一 多态性的概念多态性 描述的是同一个消息可以根据发送消息对象的不同采用不同的行为方式 例如 学校的上课铃响 不同班级的学生进入不同的教室学习 不同的老师进入不同教室开始讲课 不同的对象会作出不同的响应 可以看到学生和教师在接受到同一消息 上课铃声 时 执行不同的操作 这就是多态的表现 二 C 支持多态静态多态性动态多态性 2020 4 23 11 1 2 6消息 面向对象技术的封装使得对象相互独立 各个对象要相互协作实现系统的功能则需要对象之间的消息传递机制 消息是一个对象向另一

6、个对象发出的服务请求 进行对象之间的通信 也可以说是一个对象调用另一个对象的方法 Method 或称为函数 Function 2020 4 23 12 面向过程与面向对象程序设计方法的比较 一 面向过程程序设计方法程序 数据结构 算法二 面向对象程序设计方法的规律是 对象 数据结构 算法 程序 对象 对象 对象 对象 2020 4 23 13 1 3类和对象的定义 一 类定义组成数据成员 说明类的属性成员函数 又称函数成员 对类数据成员操作的类内函数 又称为方法 二 类定义的一般格式为class类名 public 数据成员和成员函数实现protected 数据成员和成员函数实现private

7、数据成员和成员函数实现 2020 4 23 14 1 3 1类的定义 说明 1 定义一个类时 使用关键字class 类名必须是一个合法的变量名 C 中习惯用C或T开头 例如CStudent 2 一个类包括类头和类体两部分 class 称为类头 classhead 3 大括号中定义的是类的数据成员和成员函数 称为类体 classbody 类定义结束要用 结束 4 关键字public 公有 protected 保护 和private 私有 称为成员访问限定符 mumberaccessspecifier 用访问限定符声明了各个数据成员和成员函数的访问权限 2020 4 23 15 1 3 1类的定义

8、 三 访问限定符公有 public 提供了与外界的接口功能 公有成员可以被本类中的成员使用和访问 还可以被类作用域内的其他外在其他函数使用 私有 private 封装在类内部的 只能被该类的成员和该类友元函数或友元类访问 任何类以外的函数对私有成员的访问都是非法的 保护 protected 访问权限介于私有和公有中间 类的成员可以访问 类以外的其他函数不能访问保护成员 不同访问权限关系图 2020 4 23 16 1 3 1类的定义 例 定义一个日期类Cdate 2020 4 23 17 includeclassCdate 使用关键字class声明一个类 类名为Cdate public 以下是

9、公有成员函数voidSetdate inty intm intd 设置日期 year y month m day d 以上3行是函数的实现intIsleapyear 判断日期是不是闰年 return year 4 0 2020 4 23 18 1 3 2成员函数的定义 类的成员函数也是函数的一种 它的与以前介绍的普通函数用法基本一样 成员函数由函数头和函数体组成 函数头包括函数名 函数的参数及函数的类型 函数体主要说明函数实现的功能 成员函数与一般函数的区别在于 它属于类的成员 出现在类体中 是类的一部分 使用类的成员函数时 要考虑类成员函数的访问权限 类的成员函数可以在类体中定义 也可以在类

10、体中声明类成员函数 成员函数的实现在类外定义 2020 4 23 19 1在类内定义成员函数 includeclassCdate public voidSetdate inty intm intd 在类内定义成员函数 year y month m day d intIsleapyear return year 4 0说明 在类内定义的成员函数默认的是内联函数 inline函数 一般把规模比较小的成员函数在类内定义 2020 4 23 20 2在类外定义成员函数 通常情况下C 程序员习惯在类体中只定义数据成员以及成员函数的声明 而将成员函数的实现写在类外 因此类的定义由两部分组成 声明部分声明类

11、的数据成员类型和成员函数的参数类型 个数以及返回值类型 实现部分对说明类成员函数的具体实现 2020 4 23 21 2在类外定义成员函数 一 定义的格式 类声明部分class类名 public private Protected 数据成员类型数据成员名 数据成员类型数据成员名 函数类型成员函数名 参数表 函数类型成员函数名 参数表 类实现部分函数类型类名 成员函数名 参数表 实现 2020 4 23 22 2在类外定义成员函数 说明 1 在类声明部分 包括数据成员的定义和成员函数的声明 2 成员函数的声明主要说明函数的类型 函数的参数个数及类型 并用 结束 3 函数实现部分是对在类中定义的成

12、员函数完成功能的实现 包括函数头和函数体 在类体中直接定义函数时 不需要在函数名前面加上类名 因为函数属于哪一个类是不言而喻的 但成员函数在类外定义时 必须在函数名前面加上类名 给与限定 qualifed 是作用域限定符 fieldqualifier 或称作用域运算符 用它声明函数是属于哪个类的 如果在作用域运算符 的前面没有类名 或者函数名前面既无类名又无作用域运算符 则表示display函数不属于任何类 该函数不是成员函数 而是全局函数 即非成员函数的一般普通函数 2020 4 23 23 2在类外定义成员函数 例 Cdate类定义 Cdate类声明部分classCdate public

13、函数声明voidSetdate inty intm intd 或voidSetdate int int int intIsleapyear voidPrint private intyear month day date1 date2 date3 Cdate类成员函数的实现voidCdate Setdate inty intm intd year y month m day d intCdate Isleapyear return year 4 0 2020 4 23 24 1 3 3类对象的定义 1 先声明类类型 然后定义类对象class类名 数据成员和成员函数实现 class 类名对象列表

14、说明 1 class 可选 可以写 也可以省略 2 类名是定义好的类 3 对象列表的格式为 对象名 对象名 对象名 定义多个对象时 各对象名中间用逗号隔开 如 classCdatedate1 date2 date3 Cdate是已经声明的类类型Cdatedate1 date2 date3 建议使用的方法 2020 4 23 25 2 在声明类类型的同时定义对象class类名 数据成员和成员函数实现 对象列表 例 includeclassCdate 使用关键字class声明一个类 类名为Cdate public 以下是公有成员函数voidSetdate inty intm intd 设置日期 y

15、ear y month m day d 以上3行是函数的实现intIsleapyear 判断日期是不是闰年 return year 4 0 声明类类型的同时定义了3个对象 1 3 3类对象的定义 2020 4 23 26 1 3 3类对象的定义 3 不写类名 直接定义类对象class 数据成员和成员函数实现 对象列表 例如 class 没有类名 无类名 public private date1 date2 date3 声明类类型的同时定义了3个对象注意 C 中不提倡使用 因为只能定义这一次对象 以后要想在定义这种类类型的对象 就需要把整个类定义再写一遍 2020 4 23 27 1 3 4对象

16、成员的访问 1 通过对象名和成员运算符访问对象中的成员的一般形式对象名 数据成员名 是成员运算符对象名 成员函数名例如 Cdated1 定义一个Cdate类的对象d1d1 Print 通过对象名和成员运算符访问对象中的公有成员 2 通过指向对象的指针和指针运算符访问对象中的成员的一般形式对象指针名 数据成员名 是指向运算符对象指针名 成员函数名例如 Cdated p 定义对象d和对象指针变量pp 通过指向对象的指针和指向运算符访问对象中的成员 2020 4 23 28 1 3 4对象成员的访问 3 通过对象的引用变量访问对象中的成员如果为一个对象定义了一个引用变量 它们是共占同一段存储单元的 实际上它们是同一个对象 只是用不同的名字表示而已 因此完全可以通过引用变量来访问该对象中的成员 通过对象的引用变量访问该对象中的成员的格式与通过对象名访问对象中的成员的形式一样 例如 Cdated1 定义对象d1Cdate 引用变量访问对象中的成员 输出日期 2020 4 23 29 Cdate h在头文件中声明日期类classCdate public voidSetdate inty intm

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

最新文档


当前位置:首页 > 大杂烩/其它

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