247编号第3章:VC程序设计核心——类与对象

上传人:玩*** 文档编号:144699660 上传时间:2020-09-13 格式:PPT 页数:110 大小:625KB
返回 下载 相关 举报
247编号第3章:VC程序设计核心——类与对象_第1页
第1页 / 共110页
247编号第3章:VC程序设计核心——类与对象_第2页
第2页 / 共110页
247编号第3章:VC程序设计核心——类与对象_第3页
第3页 / 共110页
247编号第3章:VC程序设计核心——类与对象_第4页
第4页 / 共110页
247编号第3章:VC程序设计核心——类与对象_第5页
第5页 / 共110页
点击查看更多>>
资源描述

《247编号第3章:VC程序设计核心——类与对象》由会员分享,可在线阅读,更多相关《247编号第3章:VC程序设计核心——类与对象(110页珍藏版)》请在金锄头文库上搜索。

1、1,第3章 VC程序核心 类与对象,教学要点 本章内容主要包括面向对象程序设计特点、结构和类定义、类的成员变量和成员函数定义,类的封装性在类定义中的体现,利用继承性派生新的类,类的多态性。 要求了解类的各种继承方式、抽象类的概念与使用。熟悉类的定义和如何实现类的封装性、继承性和多态性 掌握构造函数和析构函数的调用特点、由类实例化对象的方法,熟练掌握通过虚函数、继承关系和指向基类的指针实现多态性的方法。,2,3.1 面向对象程序设计特点 3.2 面向对象的基石类 3.3 对象 3.4 类的继承与派生 3.5 类的多态性,第3章目录,3,3.1面向对象程序设计特点,3.1.1抽象 3.1.2封装

2、3.1.3继承 3.1.4多态 3.1.5以VC作为面向对象程序设计的原因 3.1.6 * 面向对象程序设计的优点,4,3.1.1抽象,抽象是指从具体的实例中抽取出来共同的性质并加以描述的过程,它忽略了一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。,5,3.1.2 封装,封装指的是将方法和数据放于同一对象中,使得对数据的存取只能通过该对象本身的方法来进行。 主要思想是将数据(数据成员)及处理这些数据的相应函数(成员函数)封装到类class中(C+的一种新的定义数据类型的方法),而使用类的变量则称为对象(object),在对象内,只有属于该对象的成员函数才可以存取该对

3、象的数据成员。这样,其他函数就不会破坏到它的内容,从而起到保护和隐藏数据的效果。,6,3.1.3继承,继承是一种联结类与类之间的层次模型,它允许和鼓励类的重用,提供了一种明确表达共性的方法。 一个新类可以从现有的类中派生,这个过程称为类继承 继承性很好地解决了软件的可重用问题,7,3.1.4多态,多态性指的是同一消息被不同的对象接收后被解释为不同含义的能力,也就是一个接口名称具有多种功能。 多态性语言具有语言灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名的问题。,8,3.1.5以VC作为面向对象程序设计的原因,1VC提供面向对象的完整语法与语义 2. VC还是一种结构化的程

4、序设计语言 3VC中的MFC是理解面向对象语法与语义 的最好平台,9,3.1.6面向对象程序设计的优点,面向对象编程的好处最明显的是使代码的可重用性大大提高,使程序员摆脱了重复性的劳动。 面向对象编程中的对象比较独立,它给外界提供了统一的接口,当对象一旦建立,就可以重复使用 。 采用面向对象编程的好处就是代码的可扩充性。,10,3.2面向对象的基石类,3.2.1 从结构到类 3.2.2 类的定义 3.2.3 类的属性成员变量 3.2.4 类的行为成员函数 3.2.5 类成员的访问控制 3.2.6 * 类的深入理解,11,3.2.1从结构到类,1结构体 VC不仅提供了大量预先定义的数据类型,而且

5、还支持自定义的数据类型。 结构就是把相互关联的一些基本数据类型的元素组成一个新的独立统一体。,12,【例3-1】 定义一个职工Employee结构数据类型,它包括姓名、工资、地址、移动电话。 struct Employee char name9; float salary; char address40; char mobile12; ;,定义一个结构体,事实上是定义了一种数据类型,程序并不会给类型分配内存,内存分配是发生在结构体变量上,13,#include iostream.h #include string.h void main() struct Employee EmployeeA;

6、 strcpy(EmployeeA.name,灭绝师太); EmployeeA.salary=168.47; strcpy(EmployeeA.address,峨眉山上); strcpy(EmployeeA.mobile,13688667755); cout EmployeeA.name已经领上工资了,其数目是 EmployeeA.salaryendl; cout要想拜谒她,请到 EmployeeA.address或直接传呼 EmployeeA.mobileendl; ,【例3-2】 定义一个具体职工EmployeeA,并对该职工进行赋值。程序的主文件名为DefStru.cpp。,14,程序的

7、运行结果是: 灭绝师太已经领上工资了,其数目是168.47 要想拜谒她,请到峨眉山上或直接传呼 13688667755,15,2类 类是从一个个具体的事物中把共同特征抽取出来形成的一个概念,它反映了事物之间的共性 在C+中,在类的定义中,不仅有反映事物属性的成员变量,还有反映属性操作的成员函数。 类一种自定义数据类型 。,16,3.2.2类的定义,在C+中类的定义方式为: class 类名 private: 私有数据及成员函数; protected: 保护数据及成员函数; public: 公有数据及成员函数; ;,17,class是类定义符,类名是一种标识符,它的命名规则与变量名的命名规则相同

8、。一对花括号内是类的说明部分,说明该类的成员。类的成员包括成员变量和成员函数两部分。 上述在类的成员变量和成员函数前面出现的关键字public(公有)、private(私有)或protected(保护)表示成员的访问属性。在类中声明的成员变量若不特别指明,都被视为私有类型。私有类型的数据只允许类本身声明的函数对其进行存取,而类外部的任何函数都不能访问。公有类型的成员可以被任何函数来访问,它们是类与外部的接口。,18,类的定义反映了对类的描述,定义一个类就是定义一种数据类型,把握类的定义首先要掌握类中包含反映事物属性的那些成员变量和反映事物操作的那些成员函数。 【例3-3】 定义一个职工TEmp

9、loyee类,它包括姓名、工资、地址、移动电话数据成员和两个成员函数,分别实现输入职工数据和显示职工属性。,19,class TEmployee public: void input(char *name,float salary,char *address,char *mobile); void display(); private: char m_name9; float m_salary; char m_address40; char m_mobile12; ;,20,【例3-4】 定义一个交通工具类TVehicle,它具有轮子个数、载重两个数据成员和三个成员函数,分别实现输入交通工具的

10、轮子和载重、取轮子个数和载重。,class TVehicle public : void Initialize(int wheels,float weight);/交通工具的初始化 int GetWheels(void);/取轮子个数 float GetWeight(void);/取载重 private: int m_wheels; /轮子个数 float m_weight;/ 载重 ;,21,3.2.3类的属性成员变量,1类的普通成员变量 类的普通成员变量指的是类的数据域的数据类型是基本数据类型如int、char、float等。例如前面定义的雇员类TEmployee,它的所有的数据域都是普通

11、的成员变量。 2类的对象成员变量 类的对象成员变量指的是类的数据域的数据类型是其它的类,这些类可以是自定义的,也可以是一些类库中的类(如后面所说的MFC类库)。,22,【例3-5】 在前面定义的职工TEmployee类中增加一个对象成员出生时间m_Birthday,它是MFC中的一个类CTime。,class TEmployee public: void input(char *name,float salary,char *address,char *mobile); private: char m_name9; CTime m_birthday;/定义对象成员m_birthday ;,23

12、,由于CTime类是MFC中的一个类,在使用该类库中的类时,必须在类的定义文件开始加上#include 语句,并对VC当前开发的工程进行一些设置(点击菜单Projects|Setting,打开General选项卡,在Microsoft Foundation Classes列表框中选择Use MFC in a Shared DLL)。,24,【例3-6】 看看CTime类中的对象成员,体会微软软件开发师的杰作,体会对象成员的作用(这些代码在Visual Studiovc98mfcincludeafx.h头文件中)。,class CTime public: / Constructors stati

13、c CTime PASCAL GetCurrentTime(); private: time_t m_time; /类的对象成员 ;,25,3类的静态成员变量,静态成员变量则不同于一般的类的成员变量。当一个类定义多个对象时,所有对象的静态成员变量占用同一个内存空间,也就是说静态成员变量对类的所有对象只有一份,不同的对象使用相同的成员变量 。 应用静态数据成员实现了数据的共享,使类的各个对象中可以进行消息的传递,同时静态数据成员不会破坏数据的封装性,有利于数据的安全通信。,26,从形式上看,静态成员变量是在一个类的成员变量定义前加上关键词static而构成的变量; 从存储角度上看,静态成员变量在

14、整个类上只保留一份,即该类的任何对象都共享该静态成员变量; 从作用域来看,静态成员变量可看作类的公共变量; 静态成员变量属于一个类而不属于该类的任何对象,所以,在类外调用静态成员变量时,必须要用“类名:”作为限定词。,27,【例3-7】 一个含有类的静态成员变量的实例:某班级有三个同学A、B、C,该班有班费1000元。每个人都可以访问班级的班费,当A花去班费中的钱时,B、C得到的班费就少了,同样,当B花去班费中的钱时,A、C得到的班费就少了,因而应将班费设置为静态成员变量。它的特点是该类的每个对象都可以访问,属于类的公共变量。,28,class TStudent private: char m

15、_Name6; static int m_ClassMoney; /m_ClassMoney为静态成员变量,保存班费 public: void InitStudent(char *); void ExpendMoney(int); static void ShowMoney(); ; int TStudent:m_ClassMoney=1000; /静态成员变量的初始化,29,【例3-8】了解应用程序类CWinApp公有的成员变量,CwinApp是Windows的一个应用程序类,它里面的一些公有的成员变量在程序中经常要使用。 m_pszAppName:应用程序的名称(包含路径)。 m_hIns

16、tance:应用程序的当前实例。 m_hPrevInstance:应用程序的前一个实例。 m_nCmdShow:应用程序主窗口的最初何显示方式(最大化、最小化等)。 m_pMainWnd:指向应用程序主窗口的指针变量。 m_pszExeName:应用程序的模块名称(不包含路径)。,30,3.2.4类的行为成员函数,当成员函数的函数体代码较短时,可以在定义类时直接定义成员函数,即在类内定义成员函数。但当成员函数函数体较复杂时,可以在类体外定义成员函数,但必须在类内对成员函数进行声明。,1类的普通成员函数,【例3-9】 在前面定义的职工TEmployee类中有一个输入职工姓名、工资等属性的成员函数input(),通过它实现职工对象的初始化。另外还有一个显示职工信息的成员函数diplay(),这些函数在类体外进行

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

当前位置:首页 > 高等教育 > 其它相关文档

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