飨)单乘师学 第九讲 类与对象 (I)面向对象基础
第九讲 类与对象 (I) 面向对象基础
面向对象基础 ■面向对象的基本特点 ■类和对象的基本操作 ■构造函数和析构函数 ■类的组合 ■结构体与联合体 ■类的UML描述
2 面向对象基础 ◼ 面向对象的基本特点 ◼ 类和对象的基本操作 ◼ 构造函数和析构函数 ◼ 类的组合 ◼ 结构体与联合体 ◼ 类的 UML 描述
高级语言发展 ●第一代:对数学表达式有很强的运算处理能力 代表有 Fortran, Algol60 ●第二代:重点是如何有效地表达算法 代表有 Pascal,C ●第三代:引入抽象数据类型的程序设计语言 代表有Ada ●第四代:面向对象程序设计语言 代表有 Simula67, Smalltalk80、C++、Java
3 高级语言发展 ⚫ 第一代:对数学表达式有很强的运算处理能力 代表有 Fortran,Algol 60 ⚫ 第二代:重点是如何有效地表达算法 代表有 Pascal,C ⚫ 第三代:引入抽象数据类型的程序设计语言 代表有Ada ⚫ 第四代:面向对象程序设计语言 代表有 Simula67,Smalltalk80、C++、Java
为什么面向对象 ●出发点:更直观地描述客观世界中存在的事物(对象) 以及它们之间的关系 ●目的:通过提高代码的可重用性,降低软件的开发成本和 维护成本,从而大大提高程序员的生产力 ●面向对象基本特点 ●是高级语言 ●将客观事物看作具有属性(数据)和行为(函数)的对象 ●通过抽象找出同一类对象的共同属性和行为,形成类 ●通过类的继承与多态实现代码重用 ●面向对象的几个主要特征:抽象、封装、继承和多态
4 为什么面向对象 ⚫ 出发点:更直观地描述客观世界中存在的事物(对象) 以及它们之间的关系 ⚫ 面向对象基本特点 ⚫ 是高级语言 ⚫ 将客观事物看作具有属性(数据)和行为(函数)的对象 ⚫ 通过抽象找出同一类对象的共同属性和行为,形成类 ⚫ 通过类的继承与多态实现代码重用 ⚫ 目的:通过提高代码的可重用性,降低软件的开发成本和 维护成本,从而大大提高程序员的生产力 ⚫ 面向对象的几个主要特征:抽象、封装、继承和多态
抽象 抽象:对具体问题/事物(对象)进行概括,抽出这一类对象 的公共性质并加以描述的过程。 ●首先关注的是问题的本质及描述,其次是实现过程或细节 ●抽象包括:数据抽象和行为抽象 数据抽象: 描述某类对象的属性或状态(对象相互区别的物理量) 行为抽象(功能抽象、代码抽象): 描述某类对象的共同行为或功能特征 ●抽象的实现:类
5 抽象 抽象:对具体问题/事物(对象)进行概括,抽出这一类对象 的公共性质并加以描述的过程。 ⚫ 首先关注的是问题的本质及描述,其次是实现过程或细节 ⚫ 抽象包括:数据抽象和行为抽象 - 数据抽象: 描述某类对象的属性或状态(对象相互区别的物理量) - 行为抽象(功能抽象、代码抽象): 描述某类对象的共同行为或功能特征 ⚫ 抽象的实现:类
抽象示例 例:时钟的描述 ●数据抽象: int hour, int minute int second ●行为抽象: showTime, setTimeo
6 抽象示例 例:时钟的描述 ⚫ 数据抽象: int hour, int minute, int second ⚫ 行为抽象: showTime(), setTime()
封装 封装:将抽象得到的数据和行为(或功能)相结合,形成 个有机的整体,即将数据与操作数据的函数进行有机结合, 形成“类”,其中数据和函数都是类的成员。 为什么封装 封装可以增强数据的安全性,并简化编程。用户不必了解具 体的实现细节,而只需要通过外部接口,以特定的访问权限, 来使用类的成员
7 封装 封装:将抽象得到的数据和行为(或功能)相结合,形成一 个有机的整体,即将数据与操作数据的函数进行有机结合, 形成 “类”,其中数据和函数都是类的成员。 †封装可以增强数据的安全性,并简化编程。用户不必了解具 体的实现细节,而只需要通过外部接口,以特定的访问权限, 来使用类的成员。 为什么封装
示例(时钟类) 例:时钟的描述 ●数据抽象: int hour, int minute, int second ●行为抽象: showtime(), settime() ●实现方法:时钟类 时钟类 class Clock public void setTime(int NewH, int NewM, int NewS) void showTime o; private int hour minute. second 此处的分号不能省略! public和 private用于指定成员的不同访问权限 8
class Clock { public: void setTime(int NewH, int NewM, int NewS); void showTime(); private: int hour, minute, second; }; 8 示例(时钟类) 例:时钟的描述 ⚫ 数据抽象:int hour, int minute, int second ⚫ 行为抽象:showTime(), setTime() ⚫ 实现方法:时钟类 此处的分号不能省略! 时钟类 † public 和 private 用于指定成员的不同访问权限
继承与多态 继承:C+提供了继承机制,允许程序员在保持原有类特性 的基础上,进行更具体、更详细的说明。 多态:同一段程序能处理多种类型对象的能力。在C++中, 多态性是通过强制多态(如类型转换)、重载多态(如函数 重载、运算符重载)、类型参数化和包含多态(如虚函数、 模板)
9 继承与多态 继承:C++提供了继承机制,允许程序员在保持原有类特性 的基础上,进行更具体、更详细的说明。 多态:同一段程序能处理多种类型对象的能力。在C++中, 多态性是通过强制多态(如类型转换)、重载多态(如函数 重载、运算符重载)、类型参数化和包含多态(如虚函数、 模板)
类和对象基本操作 ●类的声明 ●类的成员:数据与函数 ●对象的创建 对象成员的访问 ●成员函数的定义,内联成员函数
10 ⚫ 类的声明 ⚫ 类的成员:数据与函数 ⚫ 对象的创建 ⚫ 对象成员的访问 ⚫ 成员函数的定义,内联成员函数 类和对象基本操作