第4章类与对象
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第4章 类与对象
学习目标
1. 掌握类的定义,会根据需求设计类; 2. 会根据类创建各种对象; 3. 掌握对象的各种成员的使用方法; 4. 会设计构造函数与拷贝构造函数来初始化对象;理解其调用过程
与顺序; 5. 析构函数; 6. 类的组合。
面向过程的设计方法
面 向 ❖ 重点: 对 如何实现细节过程,将数据与函数分开。 象 ❖ 形式: 的 主模块+若干个子模块(main()+子函数)。 思 ❖ 特点: 想 自顶向下,逐步求精——功能分解。
成员的存取。如果前面没有标明访问权限,默认访问权限为private。
➢ 类的成员有数据成员与函数成员两类,类的数据成员和函数成员统称为类的
成员,类的数据成员一般用来描述该类对象的属性,称为属性;函数成员是描
述类行为,称作方法。函数成员由函数构成,这些作为类成员的函数因此也
叫成员函数。
时钟程序A
时钟程序B
的 的过程。
基
先注意问题的本质及描述,其次是实现过
本
程或细节。
特 点
数据抽象:描述某类对象的属性或状态 (对象相互区别的物理量)。
代码抽象:描述某类对象的共有的行为特
征或具有的功能。
抽象的实现:通过类的声明。
抽象实例——钟表Biblioteka Baidu
OOP
❖ 数据抽象:
的
int Hour, int Minute, int Second
1 类与对象
【例1】 模拟时钟
分析:不管什么样的时钟, 也不管各种时钟是 如何运行的, 它都具有时、分、秒3个属性。除了运 行、显示时间的基本功能外,还有设置(调整)时间、 设置闹钟等功能。将时钟的这些属性与功能抽象出 来,分别给出面向过程的程序与面向对象的程序来 实现对时钟的模拟。
思考:二者有何不同?
❖ 缺点:
效率低,程序的可重用性差。
面
面向对象的方法
向 ❖ 目的:
对
实现软件设计的产业化。
象 ❖ 观点:
的
自然界是由实体(对象)所组成。
思 ❖ 程序设计方法:
想
使用面向对象的观点来描述模仿并处理 现实问题。
❖ 要求:
高度概括、分类、和抽象。
抽象
OOP
抽象是对具体对象(问题)进行概括,
抽出这一类对象的公共性质并加以描述
多态性
❖ 多态:同一名称,不同的功能实现方式。
的 基 ❖ 目的:达到行为标识统一,减少程序中标 本 识符的个数。 特 点 ❖ 实现:重载函数和虚函数——第八章
1 类与对象
在面向过程的结构化程序设计中,程序模块是由函 数构成,函数将对数据处理的语句放在函数体内,完成 特定的功能,数据则通过函数参数传递进入函数体。
在面向对象的程序设计中,程序模块是由类构成的。 类是对逻辑上相关的函数与数据的封装,它是对问题的 抽象描述。
面向对象的程序设计方法就是运用面向对象的观点 来对现实世界中的各种问题进行抽象,然后用计算机程 序来描述并解决该问题,这种描述和处理是通过类与对 象实现的。
类与对象是C++程序设计中最重要的概念
➢16在程序} A中,时钟数据用一个结构型的变量存储,对} 时钟数据的存取通过函数实现。由于存 17储时钟vo数id 据Sh的ow是Ti一me个()全局变量,在任何地方都可见v,oid可S以ho不w通Tim过e函() 数单独存取时钟数据。
public:
11 void SetTime(int H,int M,int S)
void SetTime(int h,int m,int s)
12 {
{
111程通345 过序对解MMM上yyyCCC释述lllooo两:ccckkk...种HMS===方(((SHM案>>>===的000&&&程&&&SH序M<<<6进26040)行)?)??SH简M::00:单;0; ; 的观察,可以发现HMS===它(((shm>>们>===00存0&&&&在&&shm<下<62<0面46))0??几)sh?::0m点0;;:0不; 同:
5
#include <iostream>
#include <iostream>
6
using namespace std;
using namespace std;
7
struct Clock {
class Clock {
8
int H,M,S;
private:
9
};
int H,M,S;
10 Clock MyClock;
1
/*****************************
*****************************
2
* p7_1_a.cpp
*
* p7_1_b.cpp
*
3
* 面向过程的时钟程序 *
* 面向对象的时钟程序 *
4
******************************/
******************************/
封装
OOP
将抽象出的数据成员、代码成员相结
的 合,将它们视为一个整体。
基
目的是曾强安全性和简化编程,使用者
本
不必了解具体的实现细节,而只需要通
特
过外部接口,以特定的访问权限,来使
点
用类的成员。
实现封装:类声明中的{}
封装
OOP
❖ 实例:
class Clock
的{
外部接口
基
public: void SetTime(int NewH,int NewM,
本
int NewS);
特
void ShowTime();
点
private: int Hour,Minute,Second;
};
特定的访问权限
边界
继承与派生
OOP
是C++中支持层次分类的一种机制,
的 基 允许程序员在保持原有类特性的基础上,
本 进行更具体的说明。
特
点
实现:声明派生类——第七章
OOP
1.2 类的定义
简单讲,类是一个包含函数的结构体。因此,类的定义与结构类型的定 义相似,其格式如下:
class 类名
{
public:
公有数据成员或公有函数成员的定义;
protected:
➢ ➢ ➢
说类p关}u明;名键bl:是i字c、类cplpra的isrvos名a表tte称e明c保:私,te定护有d应义、数数是的p据据一r是iv成成个a一员员t合e个为或或法类存保私的;取护有标控函函识制数数符属成成;性员员(的的访定定问义义权;;限),用来控制对类的
基 ❖ 代码抽象:
本
SetTime(), ShowTime()
特
点
抽象实例——人
OOP
❖数据抽象:
的 char *name,char *gender,int age,int id
基 ❖代码抽象:
本 生物属性角度:
特 点
GetCloth(), Eat(), Walk(),… 社会属性角度:
Work(), Promote() ,…
学习目标
1. 掌握类的定义,会根据需求设计类; 2. 会根据类创建各种对象; 3. 掌握对象的各种成员的使用方法; 4. 会设计构造函数与拷贝构造函数来初始化对象;理解其调用过程
与顺序; 5. 析构函数; 6. 类的组合。
面向过程的设计方法
面 向 ❖ 重点: 对 如何实现细节过程,将数据与函数分开。 象 ❖ 形式: 的 主模块+若干个子模块(main()+子函数)。 思 ❖ 特点: 想 自顶向下,逐步求精——功能分解。
成员的存取。如果前面没有标明访问权限,默认访问权限为private。
➢ 类的成员有数据成员与函数成员两类,类的数据成员和函数成员统称为类的
成员,类的数据成员一般用来描述该类对象的属性,称为属性;函数成员是描
述类行为,称作方法。函数成员由函数构成,这些作为类成员的函数因此也
叫成员函数。
时钟程序A
时钟程序B
的 的过程。
基
先注意问题的本质及描述,其次是实现过
本
程或细节。
特 点
数据抽象:描述某类对象的属性或状态 (对象相互区别的物理量)。
代码抽象:描述某类对象的共有的行为特
征或具有的功能。
抽象的实现:通过类的声明。
抽象实例——钟表Biblioteka Baidu
OOP
❖ 数据抽象:
的
int Hour, int Minute, int Second
1 类与对象
【例1】 模拟时钟
分析:不管什么样的时钟, 也不管各种时钟是 如何运行的, 它都具有时、分、秒3个属性。除了运 行、显示时间的基本功能外,还有设置(调整)时间、 设置闹钟等功能。将时钟的这些属性与功能抽象出 来,分别给出面向过程的程序与面向对象的程序来 实现对时钟的模拟。
思考:二者有何不同?
❖ 缺点:
效率低,程序的可重用性差。
面
面向对象的方法
向 ❖ 目的:
对
实现软件设计的产业化。
象 ❖ 观点:
的
自然界是由实体(对象)所组成。
思 ❖ 程序设计方法:
想
使用面向对象的观点来描述模仿并处理 现实问题。
❖ 要求:
高度概括、分类、和抽象。
抽象
OOP
抽象是对具体对象(问题)进行概括,
抽出这一类对象的公共性质并加以描述
多态性
❖ 多态:同一名称,不同的功能实现方式。
的 基 ❖ 目的:达到行为标识统一,减少程序中标 本 识符的个数。 特 点 ❖ 实现:重载函数和虚函数——第八章
1 类与对象
在面向过程的结构化程序设计中,程序模块是由函 数构成,函数将对数据处理的语句放在函数体内,完成 特定的功能,数据则通过函数参数传递进入函数体。
在面向对象的程序设计中,程序模块是由类构成的。 类是对逻辑上相关的函数与数据的封装,它是对问题的 抽象描述。
面向对象的程序设计方法就是运用面向对象的观点 来对现实世界中的各种问题进行抽象,然后用计算机程 序来描述并解决该问题,这种描述和处理是通过类与对 象实现的。
类与对象是C++程序设计中最重要的概念
➢16在程序} A中,时钟数据用一个结构型的变量存储,对} 时钟数据的存取通过函数实现。由于存 17储时钟vo数id 据Sh的ow是Ti一me个()全局变量,在任何地方都可见v,oid可S以ho不w通Tim过e函() 数单独存取时钟数据。
public:
11 void SetTime(int H,int M,int S)
void SetTime(int h,int m,int s)
12 {
{
111程通345 过序对解MMM上yyyCCC释述lllooo两:ccckkk...种HMS===方(((SHM案>>>===的000&&&程&&&SH序M<<<6进26040)行)?)??SH简M::00:单;0; ; 的观察,可以发现HMS===它(((shm>>们>===00存0&&&&在&&shm<下<62<0面46))0??几)sh?::0m点0;;:0不; 同:
5
#include <iostream>
#include <iostream>
6
using namespace std;
using namespace std;
7
struct Clock {
class Clock {
8
int H,M,S;
private:
9
};
int H,M,S;
10 Clock MyClock;
1
/*****************************
*****************************
2
* p7_1_a.cpp
*
* p7_1_b.cpp
*
3
* 面向过程的时钟程序 *
* 面向对象的时钟程序 *
4
******************************/
******************************/
封装
OOP
将抽象出的数据成员、代码成员相结
的 合,将它们视为一个整体。
基
目的是曾强安全性和简化编程,使用者
本
不必了解具体的实现细节,而只需要通
特
过外部接口,以特定的访问权限,来使
点
用类的成员。
实现封装:类声明中的{}
封装
OOP
❖ 实例:
class Clock
的{
外部接口
基
public: void SetTime(int NewH,int NewM,
本
int NewS);
特
void ShowTime();
点
private: int Hour,Minute,Second;
};
特定的访问权限
边界
继承与派生
OOP
是C++中支持层次分类的一种机制,
的 基 允许程序员在保持原有类特性的基础上,
本 进行更具体的说明。
特
点
实现:声明派生类——第七章
OOP
1.2 类的定义
简单讲,类是一个包含函数的结构体。因此,类的定义与结构类型的定 义相似,其格式如下:
class 类名
{
public:
公有数据成员或公有函数成员的定义;
protected:
➢ ➢ ➢
说类p关}u明;名键bl:是i字c、类cplpra的isrvos名a表tte称e明c保:私,te定护有d应义、数数是的p据据一r是iv成成个a一员员t合e个为或或法类存保私的;取护有标控函函识制数数符属成成;性员员(的的访定定问义义权;;限),用来控制对类的
基 ❖ 代码抽象:
本
SetTime(), ShowTime()
特
点
抽象实例——人
OOP
❖数据抽象:
的 char *name,char *gender,int age,int id
基 ❖代码抽象:
本 生物属性角度:
特 点
GetCloth(), Eat(), Walk(),… 社会属性角度:
Work(), Promote() ,…