基于blog_的教师协同备课系统的设计与实现_第1页
基于blog_的教师协同备课系统的设计与实现_第2页
基于blog_的教师协同备课系统的设计与实现_第3页
基于blog_的教师协同备课系统的设计与实现_第4页
基于blog_的教师协同备课系统的设计与实现_第5页
已阅读5页,还剩89页未读 继续免费阅读

下载本文档

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

文档简介

2006- 5- 8 主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院1 高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程 C+ 面 向 对 象 程 序 设 计 主 编 : 李 涛 高 教 出 版 社 97348: 主讲教师: 个人主页: PDF 文件使用 “pdfFactory Pro“ 试用版本创建 2006- 5- 8 主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院2 高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程 C+ 面 向 对 象 程 序 设 计 主 编 : 李 涛 高 教 出 版 社 97348: 教材:教材:C+:面向对象程序设计面向对象程序设计 李涛 主编李涛 主编 游洪跃 陈良银 李琳等编游洪跃 陈良银 李琳等编 高等教育出版社高等教育出版社 2006年年2月出版月出版 PDF 文件使用 “pdfFactory Pro“ 试用版本创建 2006- 5- 8 主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院3 高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程 C+ 面 向 对 象 程 序 设 计 主 编 : 李 涛 高 教 出 版 社 97348: 本书内容本书内容 第第1章绪论章绪论 第第2章章C+类和对象类和对象 第第3章继承章继承 第第4章多态性章多态性 第第5章模板章模板 第第6章章C+常见问题常见问题 第第7章章Visual C+编程基础编程基础 第第8章对话框、常用消息、菜单和工具条章对话框、常用消息、菜单和工具条 第第9章单文档界面和多文档界面章单文档界面和多文档界面 第第10章图形设备接口章图形设备接口 实验(待安排)实验(待安排) PDF 文件使用 “pdfFactory Pro“ 试用版本创建 2006- 5- 8 主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院4 高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程 C+ 面 向 对 象 程 序 设 计 主 编 : 李 涛 高 教 出 版 社 97348: 提纲 输入与输出流输入与输出流 第二章 类与对象第二章 类与对象 ARM Vector Table FIQ IRQ (Reserved) Data Abort Prefetch Abort Software Interrupt Undefined Instruction Reset 0x1C 0x18 0x14 0x10 0x0C 0x08 0x04 0x00 1 1 1 3 3 3 2 2 2 类与对象类与对象 类的定义类的定义 PDF 文件使用 “pdfFactory Pro“ 试用版本创建 2006- 5- 8 主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院5 高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程 C+ 面 向 对 象 程 序 设 计 主 编 : 李 涛 高 教 出 版 社 97348: 类的诞生(一)类的诞生(一) 类(类(Class)是面向对象思想中的一个重要组)是面向对象思想中的一个重要组 成部分。成部分。如何在计算机中将如何在计算机中将“类类”表达出来?表达出来? 在在C语言中,当定义结构体(语言中,当定义结构体(struct):): structSAMPLE int member1, member2; var1; 以后,就可以使用结构中的成员:以后,就可以使用结构中的成员: int var = var1.member1*var1.member2; PDF 文件使用 “pdfFactory Pro“ 试用版本创建 2006- 5- 8 主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院6 高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程 C+ 面 向 对 象 程 序 设 计 主 编 : 李 涛 高 教 出 版 社 97348: 类的诞生(二)类的诞生(二) 将结构体成员的使用代码写成一个函数,得将结构体成员的使用代码写成一个函数,得 到:到: int caluc(struct SAMPLE var) return var.member1*var.member2; 操作结构变量操作结构变量 PDF 文件使用 “pdfFactory Pro“ 试用版本创建 2006- 5- 8 主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院7 高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程 C+ 面 向 对 象 程 序 设 计 主 编 : 李 涛 高 教 出 版 社 97348: 然后,将上面的函数放入结构体中然后,将上面的函数放入结构体中 structSAMPLE int calcu() return member1*member2; int member1, member2; ; 数据成员数据成员 函数成员函数成员 PDF 文件使用 “pdfFactory Pro“ 试用版本创建 2006- 5- 8 主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院8 高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程 C+ 面 向 对 象 程 序 设 计 主 编 : 李 涛 高 教 出 版 社 97348: 类的诞生(三)类的诞生(三) 这样的结构体就具有了一定的这样的结构体就具有了一定的属性属性(member1 和和member2),也具有一定的),也具有一定的行为行为(函数(函数 calcu), 它就是), 它就是“类类”的雏形。的雏形。 该结构体的使用方法如下:该结构体的使用方法如下: struct SAMPLE var; var.member1 = var.member2 = 10; int temp = var.calcu(); PDF 文件使用 “pdfFactory Pro“ 试用版本创建 2006- 5- 8 主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院9 高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程 C+ 面 向 对 象 程 序 设 计 主 编 : 李 涛 高 教 出 版 社 97348: PDF 文件使用 “pdfFactory Pro“ 试用版本创建 2006- 5- 8 主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院10 高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程 C+ 面 向 对 象 程 序 设 计 主 编 : 李 涛 高 教 出 版 社 97348: C+类的声明与定义(一)类的声明与定义(一) class CCompanyStaff /BEGIN /声明成员函数声明成员函数 void SetBasicSal ( float sal ); / 设置基本工资设置基本工资 /声明(定义)数据成员声明(定义)数据成员 int m_iStaffNum ; / 工作编工作编号号 char m_cName20 ; / 姓名姓名 float m_fRateOfAttend ; / 出出勤率勤率 float m_fBasicSal ; / 基本工资基本工资 ; / END 多多了一个函数(了一个函数(SetBasicSal),),其其它它都都象结构体。象结构体。 struct class PDF 文件使用 “pdfFactory Pro“ 试用版本创建 2006- 5- 8 主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院11 高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程 C+ 面 向 对 象 程 序 设 计 主 编 : 李 涛 高 教 出 版 社 97348: CCompanyStaff类的定义以类的定义以关键字关键字class开始开始。 其其后是后是类类名名。 “”表表示示类定义的类定义的开始开始和结和结束束,最终最终以分以分号号结结 束束。 一一般般在类中在类中只只声明成员函数的声明成员函数的原型原型,而而函数的函数的 实现实现(即即函数体的定义)函数体的定义)则则放在类放在类外完外完成。成。 “函数函数原型原型”,即只即只声明函数声明函数名、参名、参数类数类型型和和返返 回值回值类类型型,而不包括而不包括函数体代码。函数体代码。 PDF 文件使用 “pdfFactory Pro“ 试用版本创建 2006- 5- 8 主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院12 高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程 C+ 面 向 对 象 程 序 设 计 主 编 : 李 涛 高 教 出 版 社 97348: C+类的声明与定义(二)类的声明与定义(二) 函数的定义函数的定义则则可在函数(可在函数(SetBasicSal)声明)声明之之 后:后: void CCompanyStaff:SetBasicSal(float sal ) m_fBasicSal = sal ; 函数定义:函数函数定义:函数名前多名前多了一个了一个类作用类作用域运域运算算符符 (CCompanyStaff:),用),用于标识于标识该函数定义该函数定义 属属于哪于哪一个类。一个类。 PDF 文件使用 “pdfFactory Pro“ 试用版本创建 2006- 5- 8 主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院13 高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程 C+ 面 向 对 象 程 序 设 计 主 编 : 李 涛 高 教 出 版 社 97348: C+类的声明与定义(三)类的声明与定义(三) 对对于于C+语言的编语言的编程习惯程习惯: 1、将类的声明将类的声明存存放放于于“*.h”或或“*.hpp”的的头文件头文件 中,中,每每个类一个声明个类一个声明文件文件。 2、将类的定义将类的定义存存放放于于“*.cpp”文件文件中,与中,与相应相应 的声明的声明文件文件一一对一一对应应 .c .cpp PDF 文件使用 “pdfFactory Pro“ 试用版本创建 2006- 5- 8 主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院14 高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程 C+ 面 向 对 象 程 序 设 计 主 编 : 李 涛 高 教 出 版 社 97348: 封装封装成类的成类的好处好处可以可以实现实现数据数据隐藏隐藏。 封装封装也也确确定了类成员的定了类成员的访问访问属性属性。 PDF 文件使用 “pdfFactory Pro“ 试用版本创建 2006- 5- 8 主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院15 高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程 C+ 面 向 对 象 程 序 设 计 主 编 : 李 涛 高 教 出 版 社 97348: 对象的封装性对象的封装性 C+语言语言引引入面向对象思想,入面向对象思想,引引入类(对象)入类(对象) 的的概念之概念之后,后,必必然然会会具有一具有一些新些新的的特特性。性。 面向对象思想中类(对象)的基本面向对象思想中类(对象)的基本特特性性之之一:一: 封装封装性性。 封装封装性:性:直观理解直观理解,类将属,类将属于于它的数据(成员它的数据(成员 变量)和变量)和针针对数据的操作(成员函数)对数据的操作(成员函数)包裹包裹在在 一一起起就是一就是一种封装种封装。 封装封装的的目目的:的:保护保护类(对象)的类(对象)的实现实现。 对对封装封装属性属性进进行行细细分:分:公公有的有的;私;私有的有的;保护;保护 的。的。 PDF 文件使用 “pdfFactory Pro“ 试用版本创建 2006- 5- 8 主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院16 高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程 C+ 面 向 对 象 程 序 设 计 主 编 : 李 涛 高 教 出 版 社 97348: C+的封装(一)的封装(一) C+语言为了语言为了实现实现面向对象的面向对象的封装封装,引引入了入了三三 个个新新的的“修饰修饰”关键字关键字: public (公公有的):有的):公开公开的,可的,可见见的。对象成的。对象成 员(变量与方法)可以在对象员(变量与方法)可以在对象外外使用。使用。 private (私私有的):有的):不不可可见见的。成员的。成员只能只能在在 对象对象内内部使用。部使用。 protected (保护保护的):的):受受到到保护保护的。成员也的。成员也 只能只能在在内内部使用。(以后部使用。(以后再讨论再讨论) C+类的成员(变量和方法)具有了类的成员(变量和方法)具有了各自各自不不同同 的属性。的属性。 PDF 文件使用 “pdfFactory Pro“ 试用版本创建 2006- 5- 8 主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院17 高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程 C+ 面 向 对 象 程 序 设 计 主 编 : 李 涛 高 教 出 版 社 97348: C+的封装(二)的封装(二) class CCompanyStaff public: void SetBasicSal ( float sal ); / 设置基本工资设置基本工资 private: int m_iStaffNum ; / 工作编工作编号号 char m_cName20 ; / 姓名姓名 float m_fRateOfAttend ; / 出出勤率勤率 float m_fBasicSal ; / 基本工资基本工资 ; / END PDF 文件使用 “pdfFactory Pro“ 试用版本创建 2006- 5- 8 主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院18 高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程 C+ 面 向 对 象 程 序 设 计 主 编 : 李 涛 高 教 出 版 社 97348: C+的封装(三)的封装(三) CCompanyStaffstaff; staff.SetBasicSal(600); /合合法的,法的,因因为为SetBasicSal是一个是一个 公开公开(public)的方法。)的方法。 staff.m_iStaffNum = 100; /非非法的,法的,因因为为m_iStaffNum是是 一个一个私私有(有(private)的变量)的变量。 void CCompanyStaff:SetBasicSal(float sal) m_fBasicSal = sal; /SetBasicSal是对象的成员,是对象的成员,所所以它以它 的定义中可以的定义中可以访问访问m_fBasicSal私私有变量。有变量。 PDF 文件使用 “pdfFactory Pro“ 试用版本创建 2006- 5- 8 主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院19 高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程 C+ 面 向 对 象 程 序 设 计 主 编 : 李 涛 高 教 出 版 社 97348: C+的封装(四)的封装(四) 1、C+类定义中的类定义中的缺省缺省属性为属性为私私有有的的 (private)。)。 2、每、每个个修饰符修饰符的作用的作用范范:从从一个一个修饰符开修饰符开 始始,直直到到另另外外一个一个修饰符修饰符时时结结束束(或或类结类结束束 了)。了)。 3、C+类中的成员(变量和方法)类中的成员(变量和方法)都应都应该明该明 确确地指地指明它明它们各自们各自的属性。的属性。 PDF 文件使用 “pdfFactory Pro“ 试用版本创建 2006- 5- 8 主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院20 高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程 C+ 面 向 对 象 程 序 设 计 主 编 : 李 涛 高 教 出 版 社 97348: 类成员的访问权限类成员的访问权限 封装封装所所实现实现的数据的数据隐藏隐藏是是面向对象面向对象程程序序设计的设计的 一个一个关键特关键特性性隐藏隐藏一个类的数据一个类的数据从从而而使使其其 他他类类无无法法访问访问。 隐藏隐藏由由封装实现封装实现,所所以以隐藏隐藏所所实现实现的类成员的的类成员的 访问访问控制权限控制权限也和也和封装封装方法一一对方法一一对应应。 对对应于封装应于封装,类成员有,类成员有3种访问种访问权限权限: 公公有类有类型型(public)、 私私有类有类型型(private) 保护保护类类型型(protected)。)。数据数据隐藏隐藏 PDF 文件使用 “pdfFactory Pro“ 试用版本创建 2006- 5- 8 主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院21 高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程 C+ 面 向 对 象 程 序 设 计 主 编 : 李 涛 高 教 出 版 社 97348: 类类 私私有有 公公有有 数据数据或或函数函数 数据数据或或函数函数 无无法法从从类类 外访问外访问 允许从允许从类类 外访问外访问 类内类外 PDF 文件使用 “pdfFactory Pro“ 试用版本创建 2006- 5- 8 主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院22 高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程 C+ 面 向 对 象 程 序 设 计 主 编 : 李 涛 高 教 出 版 社 97348: 公公有类有类型型的成员定义了类的的成员定义了类的接口接口,由由关键字关键字 public声明,在声明,在类类外只能访问公外只能访问公有成员有成员。 私私有类有类型型的的访问访问权限权限为为私私有的成员有的成员由由关键字关键字 private声明,它声明,它们们只能只能被被类本类本身身的成员函数的成员函数访访 问问,来来自自类类外外部的部的任任何何访问都访问都是是非非法的法的。 保护保护类类型型的成员与的成员与私私有成员类有成员类似似,区别仅区别仅在在于于 继承过继承过程程中,中,保护保护类类型型的成员可以的成员可以被所被所在类的在类的 派生派生类成员函数类成员函数访问访问;而;而这一这一点点对对于私于私有成员有成员 来来说说是是非非法的。法的。 PDF 文件使用 “pdfFactory Pro“ 试用版本创建 2006- 5- 8 主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院23 高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程 C+ 面 向 对 象 程 序 设 计 主 编 : 李 涛 高 教 出 版 社 97348: 类的成员函数类的成员函数可以可以访问访问类的类的所所有成员,有成员,没没有有任任 何何限制限制; 而而类对象类对象访问访问类的成员就要类的成员就要受受到到访问访问控制控制符符的的 限制限制。 访问访问权限举例权限举例: sclass2_1_demo.h smain2_1.cpp 类对象和类的类对象和类的 成员函数对数成员函数对数 据成员的据成员的访问访问 权限权限不不同同。 PDF 文件使用 “pdfFactory Pro“ 试用版本创建 2006- 5- 8 主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院24 高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程 C+ 面 向 对 象 程 序 设 计 主 编 : 李 涛 高 教 出 版 社 97348: 外外部部接口接口是类是类外访问外访问类中类中私私有数据的有数据的桥梁桥梁。 声明声明时时,类中,类中不不同同访问访问权限权限的成员可以的成员可以按按任意任意 顺序顺序出出现现。 但依但依然然涉及涉及到一个编到一个编程习惯问程习惯问题题: “以数据为中以数据为中心心” “以行为为中以行为为中心心” 国际国际公公约约。 PDF 文件使用 “pdfFactory Pro“ 试用版本创建 2006- 5- 8 主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院25 高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程 C+ 面 向 对 象 程 序 设 计 主 编 : 李 涛 高 教 出 版 社 97348: 建议把建议把一个类的数据成员一个类的数据成员都都声明为声明为私私有的有的访问访问 权限权限。 这样这样做做有有两两个个好处好处: 一是一是信息信息隐藏隐藏,即实现封装即实现封装,把把类的类的内内部部实现实现 和和外外部表部表现现分分开开,让让使用使用者无需者无需了了解解类的类的实现实现 细细节节; 二二是是数据数据保护保护,将类的重要,将类的重要信息信息保护起保护起来,以来,以 免被免被其其他他程程序序不不恰恰当当地地修修改改。 PDF 文件使用 “pdfFactory Pro“ 试用版本创建 2006- 5- 8 主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院26 高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程 C+ 面 向 对 象 程 序 设 计 主 编 : 李 涛 高 教 出 版 社 97348: 成员函数的实现成员函数的实现 被被隐藏隐藏的数据可以有成员函数来的数据可以有成员函数来访问访问,对数据,对数据 的操作也体的操作也体现现在成员函数中:在成员函数中: 成员函数成员函数决决定对象的操作行为。定对象的操作行为。 它是它是程程序序算法的算法的实现实现部分。部分。 它也是对它也是对封装封装的数据的数据进进行操作的行操作的唯唯一一途径途径。 它有它有两两种种方方式式:类类外实现外实现和类和类内实现内实现。 数据对成员函数数据对成员函数 无无法法隐藏隐藏。 PDF 文件使用 “pdfFactory Pro“ 试用版本创建 2006- 5- 8 主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院27 高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程 C+ 面 向 对 象 程 序 设 计 主 编 : 李 涛 高 教 出 版 社 97348: 1一般实现方式一般实现方式 类类外实现外实现成员函数的形成员函数的形式式如下:如下: 返回值返回值类类型型 类类名名:成员函数成员函数名名(形(形式式参参数表)数表) 函数体函数体 例例2.2 企业企业员工类的员工类的实现实现。 sclass2_2_companyStaff.h s2_2sclass2_2_companyStaff.cpp s2_2smain2_2.cpp PDF 文件使用 “pdfFactory Pro“ 试用版本创建 2006- 5- 8 主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院28 高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程 C+ 面 向 对 象 程 序 设 计 主 编 : 李 涛 高 教 出 版 社 97348: 2内联函数方式内联函数方式 内内联联函数是函数是指指程程序序在编在编译时译时用函数的用函数的代码代码替换替换 每每一一处处函数函数调调用的用的地地方 。方 。 内内联联的的优点优点以以空间换时间空间换时间。 内内联联的的两两种种方方式式: 系统默认系统默认:sclass2_2_0_companyStaff.h 和函数和函数前前加加关键字关键字inline : inline () smain2_3.cpp 。 PDF 文件使用 “pdfFactory Pro“ 试用版本创建 2006- 5- 8 主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院29 高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程 C+ 面 向 对 象 程 序 设 计 主 编 : 李 涛 高 教 出 版 社 97348: 内联和宏替换内联和宏替换 宏宏替换替换是在是在编编译译前前由由预预处理程处理程序序进进行行预预处理处理, 它它只只做做简单简单的的字符字符替换替换而不而不涉及涉及语法语法检查检查。 而内而内联联函数是在函数是在编编译时译时处理处理的,编的,编译译程程序序能识能识 别别内内联联函数,对它函数,对它进进行语法行语法检查检查。 PDF 文件使用 “pdfFactory Pro“ 试用版本创建 2006- 5- 8 主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院30 高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程 C+ 面 向 对 象 程 序 设 计 主 编 : 李 涛 高 教 出 版 社 97348: 类与对象类与对象 类(类(class):具有:具有相相同同或相或相近近的性的性质质和行为的和行为的 事物集事物集合合。 对象(对象(object):the instance of a class。一个。一个 类的类的实实例例,即即类的性类的性质质(变量)具体(变量)具体化化之之后成后成 为 对象。为 对象。 一个对象是类的一一个对象是类的一种特种特殊情况殊情况。 一个类一个类会会有有很很多多的对象,的对象, 一个对象属一个对象属于于一个类。一个类。 它它们们是一对是一对多多的的关关系系。 PDF 文件使用 “pdfFactory Pro“ 试用版本创建 2006- 5- 8 主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院31 高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程 C+ 面 向 对 象 程 序 设 计 主 编 : 李 涛 高 教 出 版 社 97348: C+中的对象(一)中的对象(一) 当当C+中类的成员变量中类的成员变量被被赋赋与与特特定的定的值之值之后,后, 它它即即成为一个成为一个C+的对象。的对象。 CCompanyStaffstaff; /一个对象变量一个对象变量 staff.m_iStafNum = 12345; staff.m_cName = “张张三三” ; staff成为类成为类CCompanyStaff的一个对象,它有的一个对象,它有 了一个工作编了一个工作编号号,对,对应应一个一个人人名名。 当然,当然,还还会会有有很很多其多其它的对象,它的对象,比比如如staff1、 staff2等等等等 PDF 文件使用 “pdfFactory Pro“ 试用版本创建 2006- 5- 8 主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院32 高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程 C+ 面 向 对 象 程 序 设 计 主 编 : 李 涛 高 教 出 版 社 97348: C+中的对象(二)中的对象(二) 1、对象对象针针对计算机对计算机而而言,就是代码中的一个言,就是代码中的一个 变量。变量。 2、C+中对象变量的使用与中对象变量的使用与C语言中结构体变语言中结构体变 量的使用方法一样。量的使用方法一样。 CCompanyStaff staff1, *pstaff1, staff310; staff1.m_iStafNum = 11111; pstaff m_iStafNum = 22222; staff0.m_iStafNum = 33333; PDF 文件使用 “pdfFactory Pro“ 试用版本创建 2006- 5- 8 主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院33 高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程 C+ 面 向 对 象 程 序 设 计 主 编 : 李 涛 高 教 出 版 社 97348: C+类的对象化(一)类的对象化(一) C+中对象是类的变量,中对象是类的变量,但但它它不不象变量象变量那么单纯那么单纯。 C+提供提供一一套套特特殊殊的机的机制制实现实现类到对象的类到对象的转转换换。 class CCompanyStaff public: CCompanyStaff(); CCompanyStaff(); void SetBasicSal ( float sal ); / 设置基本工资设置基本工资 private: int m_iStaffNum ; / 工作编工作编号号 ; / END PDF 文件使用 “pdfFactory Pro“ 试用版本创建 2006- 5- 8 主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院34 高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程 C+ 面 向 对 象 程 序 设 计 主 编 : 李 涛 高 教 出 版 社 97348: 对象的创建和销毁对象的创建和销毁 创创建建对象对象时时,“对象对象存存放在何放在何处处?” 需需要向操作要向操作系统系统申请申请一定的一定的内存内存空间空间用用于存于存放放 新新建建的对象。的对象。 为对象分为对象分配配存存储储空间空间主主要有要有静态静态分分配配和和动态动态分分 配配两两种种方方式式。 PDF 文件使用 “pdfFactory Pro“ 试用版本创建 2006- 5- 8 主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院35 高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程 C+ 面 向 对 象 程 序 设 计 主 编 : 李 涛 高 教 出 版 社 97348: 可以将对象可以将对象或或静态静态成员成员存存放在放在栈栈中中或或静态静态存存储储 区区域域中。中。 动态动态内存内存分分配配是是指指在在堆堆(也(也称称自由自由内存内存)中分)中分 配配存存储单元储单元,即即为对象为对象动态动态从从堆堆中分中分配配内存内存。 使用操作使用操作符符new分分配配内存内存空间空间; 使用操作使用操作符符delete释释放放内存内存空间空间。 PDF 文件使用 “pdfFactory Pro“ 试用版本创建 2006- 5- 8 主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院36 高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程 C+ 面 向 对 象 程 序 设 计 主 编 : 李 涛 高 教 出 版 社 97348: 构造函数与析构函数构造函数与析构函数 C+语言为了语言为了保保证证一个对象一个对象被被初初始始化化(类的(类的实实 例例化化),),定义了一组定义了一组特特殊殊的方法(函数),的方法(函数),专专 门门用用于于对象对象生生成成时时的的初初始始化化。 构构造造函数(函数(constructor)与类与类名名称称相相同同, 没没有有返回值返回值。它在对象。它在对象生生成成之之时时自自动执动执行行。 析析构函数(构函数(destructor)在类在类名前名前加加作为作为 函数函数名名的函数,的函数,没没有有返回值返回值,也,也没没有有参参数。它数。它 在对象结在对象结束束时时自自动执动执行行。 PDF 文件使用 “pdfFactory Pro“ 试用版本创建 2006- 5- 8 主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院37 高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程 C+ 面 向 对 象 程 序 设 计 主 编 : 李 涛 高 教 出 版 社 97348: C+要要求求类设置一个类设置一个专门专门的成员函数来的成员函数来负责负责类类 中中所所有有对象的对象的初初始始化化,这个成员函数就是构,这个成员函数就是构造造 函数。函数。 构构造造函数的作用就是在对象函数的作用就是在对象被被创创建时建时利利用用特特定定 的的值值构构造造对象,将对象对象,将对象初初始始化化到一个到一个特特定的定的状状 态态。 声明一个构声明一个构造造函数的语函数的语示示格格式式如下:如下: public: 类类名名(); PDF 文件使用 “pdfFactory Pro“ 试用版本创建 2006- 5- 8 主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院38 高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程 C+ 面 向 对 象 程 序 设 计 主 编 : 李 涛 高 教 出 版 社 97348: 构构造造函数可以函数可以由由程程序序设计设计人人员员自自己己编写。编写。 也可以也可以由系统由系统提供提供。 例例2.4 构构造造函数函数举例举例。 sclass2_4_companyStaff.h smain2_4.cpp PDF 文件使用 “pdfFactory Pro“ 试用版本创建 2006- 5- 8 主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院39 高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程 C+ 面 向 对 象 程 序 设 计 主 编 : 李 涛 高 教 出 版 社 97348: 重载构造函数重载构造函数 所所谓谓重重载载构构造造函数,是函数,是指同指同一个构一个构造造函数函数名名, 具有具有不不同同的的实现实现。 例例2.5 在员工在员工管管理理系统系统中,中,创创建建一个对象一个对象时时, 还还可以一可以一次次性性地地给给对象的对象的姓名、姓名、出出勤率、勤率、基本基本 工资工资等几等几个数据成员个数据成员都都赋初赋初值值,这就,这就需需要重要重载载 构构造造函数。函数。 sclass2_5_companyStaff.h sclass2_5_companyStaff.cpp smain2_5.cpp PDF 文件使用 “pdfFactory Pro“ 试用版本创建 2006- 5- 8 主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院40 高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程 C+ 面 向 对 象 程 序 设 计 主 编 : 李 涛 高 教 出 版 社 97348: 需需要要注注意意一一点点,当构,当构造造函数函数带带默认默认参参数数时时,要,要 谨防谨防出出现现歧歧义。义。 例例2.6 下面这个下面这个程程序序存存在在歧歧义。义。 sclass2_6.h smain2_6.cpp 当当创创建建对象对象d2时时 ,有,有二二义性。义性。 PDF 文件使用 “pdfFactory Pro“ 试用版本创建 2006- 5- 8 主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院41 高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程 C+ 面 向 对 象 程 序 设 计 主 编 : 李 涛 高 教 出 版 社 97348: 拷贝构造函数拷贝构造函数 拷贝拷贝构构造造函数是用来函数是用来复复制制对象对象的一的一种特种特殊殊的构的构 造造函数。函数。 声明声明拷贝拷贝构构造造函数的函数的语法语法格格式式如下:如下: class 类类名名 public: 类类名名( const类类名名 CPoint c = a; PDF 文件使用 “pdfFactory Pro“ 试用版本创建 2006- 5- 8 主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院43 高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程 C+ 面 向 对 象 程 序 设 计 主 编 : 李 涛 高 教 出 版 社 97348: 析构函数析构函数 析析构函数与构构函数与构造造函数的作用函数的作用几乎正几乎正好相好相反反,当一个对,当一个对 象象消失消失时时,或或用用delete删除删除用用new创创建建的对象的对象时时,系统系统 都会都会自自动动调调用类的用类的析析构函数,构函数,做做一一些些清清理理工作。工作。 声明一个声明一个析析构函数的构函数的语法语法格格式式如下:如下: class Demo public: Demo(); Demo( void ); PDF 文件使用 “pdfFactory Pro“ 试用版本创建 2006- 5- 8 主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院44 高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程 C+ 面 向 对 象 程 序 设 计 主 编 : 李 涛 高 教 出 版 社 97348: 析析构函数构函数不能不能重重载载 。 / 析析构函数构函数 CCompanyStaff( void ) cout / 访问公访问公有数据成员有数据成员 - () / 访问公访问公有成员函数有成员函数 CCompanyStaff *pstaff ; pstaff = new CCompanyStaff( “LiuMei“, 0.95, 3000.0 ); pstaff - GetName( ) PDF 文件使用 “pdfFactory Pro“ 试用版本创建 2006- 5- 8 主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院50 高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程 C+ 面 向 对 象 程 序 设 计 主 编 : 李 涛 高 教 出 版 社 97348: 例例2.8 在员工在员工管管理理系统系统中,中,建建立立两两个对象分个对象分别别 用用两两种种方方式式去去访问访问类成员。类成员。 sclass2_8_companyStaff.h sclass2_8_companyStaff.cpp smain2_8.cpp PDF 文件使用 “pdfFactory Pro“ 试用版本创建 2006- 5- 8 主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院51 高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程 C+ 面 向 对 象 程 序 设 计 主 编 : 李 涛 高 教 出 版 社 97348: 普通对象指针普通对象指针 例例2.9 普普通通对象对象指指针针举例举例。 sclass2_9_objPointer.h smain2_9.cpp CPointerExam *pointer; pointer = pointer - SetNum ( 2 ); 对象对象指指针针在使用在使用之前之前一定要一定要初初始始化化,为,为其其动态动态 分分配配存存储储空间空间; 使用使用完完毕毕必必须须释释放该对象放该对象指指针针所所代表的代表的资资源源。 PDF 文件使用 “pdfFactory Pro“ 试用版本创建 2006- 5- 8 主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院52 高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程 C+ 面 向 对 象 程 序 设 计 主 编 : 李 涛 高 教 出 版 社 97348: 对象的对象的this指针指针 每每个个对象对象都都拥拥有有自自己己独立独立的的数据成员。数据成员。 而而类中的类中的所所有对象使用有对象使用相相同同的成员函数的成员函数,成员,成员 函数在函数在内存内存中中只只有一有一份份。 每每个对象个对象隐隐含含了一个了一个常常量量指指针针,称称为为this指指 针针,用,用于于指指向当向当前前发送发送消消息息的对象,以的对象,以识识别别当当 前前调调用成员函数的对象用成员函数的对象究竟究竟是是谁谁 。 当当通通过过一个对象一个对象调调用成员函数用成员函数时时,系统系统先先将该将该 对象的对象的地地址址赋给赋给this指指针针,成员函数在对对象成员函数在对对象 的数据的数据进进行操作行操作时时,就,就隐隐含含地地使用了使用了this指指 针针。 PDF 文件使用 “pdfFactory Pro“ 试用版本创建 2006- 5- 8 主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院53 高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程 C+ 面 向 对 象 程 序 设 计 主 编 : 李 涛 高 教 出 版 社 97348: CCompan

温馨提示

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

最新文档

评论

0/150

提交评论