- 1、本文档共112页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章类与对象分析
第6章 类与对象 内容概要 类和对象 构造函数与析构函数 对象的使用 静态成员 友元 常对象与常成员 对象的内存分配 类模板 6.1 类形成的基础 A 抽象 从众多的事物中抽取出共同的、本质性的特征,而舍弃其非本质的特征,然后再用计算机语言来进行描述表达 对一个事物的抽象应该包括两个方面: 属性(数据)抽象:某类事物的共同的属性,静态特性 行为抽象:共同的行为或功能特征,动态特性 计算机描述 在计算机中,用变量来描述事物的属性,用函数来描述事物的行为 例——人 属性: char name,char gender,int age 行为: 生物属性角度: GetCloth(), Eat(), … 社会属性角度: Work(), Promote() ,… 例——钟表 属性: int hour, int minute, int sec 行为: ShowTime() SetTime() SetAlarm() B 封 装: 封装就是将抽象得到的属性和行为相结合 描述事物静态特性的变量和描述事物动态特性的函数进行有机地结合,形成“类” 6.2 类与对象 在面向过程的结构化程序设计中,程序模块是由函数构成,函数将对数据处理的语句放在函数体内,完成特定的功能,数据则通过函数参数传递进入函数体。 在面向对象的程序设计中,程序模块是由类构成的。类是对逻辑上相关的函数与数据的封装,它是对问题的抽象描述 面向对象的程序设计方法就是运用面向对象的观点来对现实世界中的各种问题进行抽象,然后用计算机程序来描述并解决该问题,这种描述和处理是通过类与对象实现的 【例】 模拟时钟 分析:不管什么样的时钟, 也不管各种时钟是如何运行的, 它都具有时、分、秒3个属性。除了运行、显示时间的基本功能外,还有设置(调整)时间、设置闹钟等功能。将时钟的这些属性与功能抽象出来,分别给出面向过程的程序与面向对象的程序来实现对时钟的模拟。 思考:二者有何不同? A 类的定义 简单讲,类是一个包含函数的结构体。因此,类的定义与结构类型的定义相似,其格式如下: 例如:程序B定义了一个时钟类Clock。 1. 数据成员/成员变量 类定义中的数据成员描述了类对象所包含的数据类型,数据成员的类型可以是C++基本数据类型,也可以是构造数据类型。 struct Record { char name[20]; int score; }; class Team { private: int num; //基本数据类型 Record *p; //构造数据类型 }; class Team; //已定义的类 class Grade { Team a; // 使用了已定义的类类型 Grade *p; // 使用正在定义的类类型定义指针成员 Grade r; // 使用正在定义的类类型定义引用成员 Grade b; // 错误! 使用了未定义完的类Record 定义变量 }; 2. 成员函数 成员函数描述了对类中的数据成员实施的操作。成员函数的定义、声明格式与非成员函数(全局函数)的格式相同 位置:成员函数可以放在类中定义,也可以放在类外 放在类中定义的成员函数为内联(inline)函数。可以在类内声明成员函数的原型,在类外定义函数体。在类中声明函数原型的方法与一般函数原型的声明一样,在类外定义函数体的格式如下: Clock类中的成员函数可以在类中声明: class Clock { private: int H,M,S; public: void SetTime(int h,int m,int s); //声明成员函数 void ShowTime(); //声明成员函数 }; 在类外实现成员函数如下: void Clock::SetTime(int h,int m,int s) { H=h,M=m,S=s; }; void Clock:: ShowTime() { coutH:M:Sendl
文档评论(0)