C++语言程序设计 第四章类与对象 清华大学郑莉
第四章 类与对象 C++语言程序设计 清华大学 郑 莉
C++语言程序设计 清华大学郑莉 本拿主要内容 。面向对象的思想 。内联成员函数 ● OOP的基本特点 ·拷贝构造函数 ·类概念和声明 ·对象 ●类的组合 ·构造函数 ·结构体与联合体 ●析构函数 ·深度探索
C++语言程序设计 清华大学 郑莉 2 本章主要内容 ⚫ 面向对象的思想 ⚫ OOP的基本特点 ⚫ 类概念和声明 ⚫ 对象 ⚫ 构造函数 ⚫ 析构函数 ⚫ 内联成员函数 ⚫ 拷贝构造函数 ⚫ 类的组合 ⚫ 结构体与联合体 ⚫ 深度探索
C++语言程序设计 清华大学郑莉 回顾:面向过程的设计方法 面 向 ● 重点: 对 如何实现的细节和过程,将数据与函数分开。 象 ●形式: 的 主模块+若干个子模块(main0+子函数)。 思 ●特点: 自顶向下,逐步求精一一功能分解。 想 ● 缺点: 效率低,程序的可重用性差
C++语言程序设计 清华大学 郑莉 3 回顾:面向过程的设计方法 ⚫ 重点: –如何实现的细节和过程,将数据与函数分开。 ⚫ 形式: –主模块+若干个子模块(main()+子函数)。 ⚫ 特点: –自顶向下,逐步求精——功能分解。 ⚫ 缺点: –效率低,程序的可重用性差。 面 向 对 象 的 思 想
C++语言程序设计 清华大学郑莉 面向对象的方法 面 向 ● 目的: 对 -实现软件设计的产业化。 象 。观点: 的 自然界是由实体(对象)所组成。 思 ●程序设计方法: 想 使用面向对象的观点来描述模仿并处理 现实问题。 。要求: 高度概括、分类、和抽象
C++语言程序设计 清华大学 郑莉 4 面向对象的方法 ⚫ 目的: – 实现软件设计的产业化。 ⚫ 观点: – 自然界是由实体(对象)所组成。 ⚫ 程序设计方法: – 使用面向对象的观点来描述模仿并处理 现实问题。 ⚫ 要求: – 高度概括、分类、和抽象。 面 向 对 象 的 思 想
C++语言程序设计 清华大学郑莉 抽象 OOP 抽象是对具体对象(问题)进行概括, 抽出这一类对象的公共性质并加以描述 的 的过程。 基 先注意问题的本质及描述,其次是实现过 本 程或细节。 特 数据抽象:描述某类对象的属性或状态 (对象相互区别的物理量)。 点 代码抽象:描述某类对象的共有的行为特 征或具有的功能 抽象的实现:通过类的声明
C++语言程序设计 清华大学 郑莉 5 抽象 抽象是对具体对象(问题)进行概括, 抽出这一类对象的公共性质并加以描述 的过程。 – 先注意问题的本质及描述,其次是实现过 程或细节。 – 数据抽象:描述某类对象的属性或状态 (对象相互区别的物理量)。 – 代码抽象:描述某类对象的共有的行为特 征或具有的功能。 – 抽象的实现:通过类的声明。 OOP 的 基 本 特 点
C++语言程序设计 清华大学郑莉 抽象实例 钟表 OOP 数据抽象: 的 int hour,int minute,int second 基 ●代码抽象: 本 setTime ()showTime() 点
C++语言程序设计 清华大学 郑莉 6 抽象实例——钟表 ⚫ 数据抽象: int hour,int minute,int second ⚫ 代码抽象: setTime(),showTime() OOP 的 基 本 特 点
C++语言程序设计 清华大学郑莉 抽象实例 钟表类 OOP class Clock public: 的 void setTime(int newH,int newM,int newS); void showTime(); 基 private: int hour,minute,second; 特 }; 点
C++语言程序设计 清华大学 郑莉 7 抽象实例——钟表类 class Clock { public: void setTime(int newH, int newM, int newS); void showTime(); private: int hour, minute, second; }; OOP 的 基 本 特 点
C++语言程序设计 清华大学郑莉 抽象实例 OOP ●数据抽象: 的 string name,string gender,int age,int id 基 ●代码抽象: 本 生物属性角度: 特 getCloth(),eat(), step(),… 点 社会属性角度: work ()promote()
C++语言程序设计 清华大学 郑莉 8 抽象实例——人 ⚫数据抽象: string name,string gender,int age,int id ⚫代码抽象: 生物属性角度: getCloth(), eat(), step(),… 社会属性角度: work(), promote() ,… OOP 的 基 本 特 点
C++语言程序设计 清华大学郑莉 封装 OOP 将抽象出的数据成员、代码成员相结 的 合,将它们视为一个整体。 基 目的是曾强安全性和简化编程,使用者 本 不必了解具体的实现细节,而只需要通 特 过外部接口,以特定的访问权限,来使 点 用类的成员。 实现封装:类声明中的
C++语言程序设计 清华大学 郑莉 9 封装 将抽象出的数据成员、代码成员相结 合,将它们视为一个整体。 –目的是曾强安全性和简化编程,使用者 不必了解具体的实现细节,而只需要通 过外部接口,以特定的访问权限,来使 用类的成员。 –实现封装:类声明中的{} OOP 的 基 本 特 点
C++语言程序设计 清华大学郑莉 封装 OOP 实例: 的 class Clock 外部接口 基 public:void setTime int newH,int newM, 本 int newS); void showTime () 点 private:int hour, minute, second; 特定的访问权限 边界
C++语言程序设计 清华大学 郑莉 10 封装 ⚫ 实例: class Clock { public:void setTime(int newH, int newM, int newS); void showTime(); private: int hour, minute, second; }; 边界 特定的访问权限 OOP 的 基 本 特 点 外部接口