第四章_类与对象
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
public定义了类的外部接口。 private只能被本类的成员函数访问,private 成员一般在类外不直接进行操作,而是通 过外部接口(公有函数)来操作类中的数 据成员。 protected成员与private成员性质相似,其差 别在于继承过程中对产生的新类的影响不 同。
注意: 注意: 如果private成员紧接着类的名称,则关键字private 可以省略。 一般情况下,一个类的数据成员应声明为私有成员。 书写时通常习惯将公有类型放在最前面,这样便于 阅读,因为它们是外部访问时所需了解的。
类的定义部分
类的实现部分
主函数
分析:
类的定义是对问题进行了高度的抽象和封装化的 描述; 问题的解决需要通过类的实例------对象之间的消 息传递完成。主函数的功能就是声明对象并传递 消息。
练习: 练习: 1定义并实现 定义并实现Circle和Triangle类,用主程序测试结 和 类
果。 2 比较结构类型定义和类类型定义。 比较结构类型定义和类类型定义。
2 类的定义
类的定义分为
声明部分(干什么) 声明部分(干什么) 实现部分(怎么干) 实现部分(怎么干)
2 类的定义
例4:时钟类定义
class Clock { private: int Hour, Minute, Second; public: void SetTime(int NewH, int NewM, int NewS); void ShowTime(); };
2 类的定义
class 类名称 { public: 外部接口 protected: 保护性成员 private: 私有成员 };
3 类成员的访问控制
通过设置成员的访问控制属性来实现类成 员的访问权限。 访问控制属性包含以下三种:
公有类型(public) 保护类型(protected) 私有类型(private)
5 对象
类是抽象的,对象是具体的。类实际上就是 创建对象的模板。 类与对象的关系如:人与某个人;桌子与某 张桌子;形状与圆;圆与某个圆;钟表与某 个钟表;基本数据类型与简单变量等等之间 的关系。
例6以类Circle为例
类作为模板
Circle类的三个对象 类的三个对象
图1 类是对象模板
对象的声明
谢谢!
对象的声明: 对象的声明: 对象名; 类名 对象名; 例如 Clock myClock; Circle a; 人 张三;
对象操作
如何访问对象的成员呢? myClock.SetTime(8,30,30); myClock.ShowTime(); myClock.hour;
例7:时钟类完整程序 #include<iostream> using namespace std; class Clock { public: void SetTime(int NewH=0, int NewM=0, int NewS=0); void ShowTime(); private: int Hour, Minute, Second; }; ; void Clock :: SetTime(int NewH, int NewM, int NewS) { Hour=NewH; Minute=NewM; Second=NewS;} void Clock :: ShowTime() { cout<<Hour<<":"<<Minute<<":"<<Second; } int main() { Clock myClock; myClock.SetTime(8,30,30); myClock.ShowTime(); }
所谓抽象是指对具体问题进行概括,抽出 是指对具体问题进行概括, 是指对具体问题进行概括 一类对象的公共属性并加以描述的过程。 一类对象的公共属性并加以描述的过程。 抽象的过程, 抽象的过程,也就是对问题进行分析和认 知的过程。 知的过程。 对一个问题的抽象包括两个方面: 数据抽象(描述某类对象的属性或状态) 行为抽象(描述的某类对象的共同行为或功能
2 类的定义
注意:在类中可以只声明函数的原型,函 数的实现部分可以在类外定义。
void Clock::SetTime(int NewH, int NewM, int NewS) { Hour=NewH; Minute=NewM; Second=NewS; } void Clock::ShowTime() { cout<<Hour<<”:”<<Minute<<”:”<<Second<<endl; }
特征)
例2:描述时钟类
时钟类 { 数据抽象: 数据抽象: 时,分,秒 行为抽象: 行为抽象: 显示时间 设置时间 }
例3:描述人类
人类 { 数据抽象: 数据抽象: 姓名,年龄,性别…… 姓名,年龄,性别 行为抽象: 行为抽象: 吃饭,走路,工作, 吃饭,走路,工作,学 习…… }
了解了类的概念,那么如何定义一个类呢?
面向过程的方法: 面向过程的方法:
函数1: 函数 :求圆的面积 函数2: 函数 :求圆的周长 其它函数 主函数: 主函数: 定义圆的半径; 定义圆的半径; 输入圆的半径; 输入圆的半径; 调用求面积函数; 调用求面积函数; 调用求周长函数; 调用求周长函数; 输出 ……
面向对象的方法: 面向对象的方法:
例5:时钟类成员函数举例说明
class Clock { private: int Hour, Minute, Second; public: void SetTime(int NewH, int NewM, int NewS); void ShowTime() { cout<<Hour<<”:”<<Minute<<”:”<<Second<<endl;//内联函数隐式声明 内联函数隐式声明 } }; void Clock::SetTime(int NewH, int NewM, int NewS) { Hour=NewH; Minute=NewM; Second=NewS; }
类Circle { 私有数据成员: 私有数据成员: 圆的半径 公有成员函数: 公有成员函数: 求圆的面积 求圆的周长 显示圆的半径 设定圆的半径 …… }; ; 主函数 定义类的对象; 定义类的对象; 通过对象调用相应的公有成员函数; 通过对象调用相应的公有成员函数;
类的概念
面向过程的结构化程序设计中,程序的模块 程序的模块 由函数构成的, 由函数构成的,每个函数用于完成特定的功 数据与对数据的操作分离。 能。数据与对数据的操作分离。 面向对象的程序设计中,程序的模块由类构 程序的模块由类构 类是对逻辑上相关的函数与数据的封装, 成,类是对逻辑上相关的函数与数据的封装, 它是对问题的抽象描述。 它是对问题的抽象描述。
山西大学计算机信息技术学院
第四章 类与对象
主讲人: 主讲人:杨红菊
பைடு நூலகம்章目的
掌握面向对象的基本概念; 掌握类与对象的定义与使用; 正确使用构造函数、析构函数以及类成员 函数与数据成员
主要内容
1 类的概念 2 类的定义 3 类成员的访问控制 4 类的成员函数 5 对象
对比面向过程与面向对象的程序设计方法的不同。 对比面向过程与面向对象的程序设计方法的不同。 描述圆Circle。 描述圆 。
4 类的成员函数
成员函数描述的是类的行为; 成员函数是程序算法的实现部分; 成员函数是对封装的数据进行操作的方法。
类的成员函数的实现
成员函数的实现分两种:
类内实现(内联成员函数) 类外实现(作用域标识符::,指明所属类)
成员函数在类外实现时分两部分:类中的 函数的原型声明+类外的函数的具体实现。