华东师范大学数学科学学院 目录页 School of Mathematical Sciences,ECNU Contents 面向对象的基本特点 2 类和对象的基本操作 3 构造函数和析构函数 http://math.ecnu.edu.cn/~jypan
目录页 Contents 华东师范大学 数学科学学院 School of Mathematical Sciences, ECNU http://math.ecnu.edu.cn/~jypan 1 2 面向对象的基本特点 类和对象的基本操作 3 构造函数和析构函数
面向对象的基本特点 高级语言发展 ■为什么面向对象 面向对象的特征 http://math.ecnu.edu.cn/~jypan 3
http://math.ecnu.edu.cn/~jypan 3 面向对象的基本特点 高级语言发展 为什么面向对象 面向对象的特征 1
高级语言发展 ●第一代:对数学表达式有很强的运算处理能力 代表有Fortran,Algol60 ●第二代:重点是如何有效地表达算法 代表有Pascal,C ●第三代:引入抽象数据类型的程序设计语言 代表有Ada ●第四代:面向对象程序设计语言 代表有Simulac67,Smalltalk80、C++、Java http://math.ecnu.edu.cn/~jypan 4
http://math.ecnu.edu.cn/~jypan 4 高级语言发展 第一代:对数学表达式有很强的运算处理能力 代表有 Fortran,Algol 60 第二代:重点是如何有效地表达算法 代表有 Pascal,C 第三代:引入抽象数据类型的程序设计语言 代表有 Ada 第四代:面向对象程序设计语言 代表有 Simula67,Smalltalk80、C++、Java
为什么面向对象 出发点 模仿人类认识和理解现实世界的自然思维,更直观地描述 客观世界中存在的事物(对象)以及它们之间的关系。 目的 通过提高代码的可重用性,降低软件开发成本和维护成本, 从而大大提高程序员的生产力。 http://math.ecnu.edu.cn/~jypan 5
http://math.ecnu.edu.cn/~jypan 5 为什么面向对象 模仿人类认识和理解现实世界的自然思维,更直观地描述 客观世界中存在的事物(对象)以及它们之间的关系。 出发点 通过提高代码的可重用性,降低软件开发成本和维护成本, 从而大大提高程序员的生产力。 目的
面向对象程序设计语言 基本特点 ·高级语言 ·将客观事物看作具有属性(数据)和行为(函数)的对象 ●通过抽象找出同一类对象的共同属性和行为,形成类 通过类的继承与多态实现代码重用 主要特征 抽象、封装、继承、多态 http://math.ecnu.edu.cn/~jypan 6
http://math.ecnu.edu.cn/~jypan 6 面向对象程序设计语言 基本特点 抽象、封装、继承、多态 主要特征 高级语言 将客观事物看作具有属性(数据)和行为(函数)的对象 通过抽象找出同一类对象的共同属性和行为,形成类 通过类的继承与多态实现代码重用
抽象 什么是抽象 对具体问题/事物(对象)进行概括,抽出这一类对象的 共有性质并加以描述的过程。 ·首先关注的是问题的本质及描述,其次是实现过程或细节 ●抽象包括:数据抽象和行为抽象 一数据抽象: 描述某类对象的属性或状态(对象相互区别的物理量) 一行为抽象(或功能抽象): 描述某类对象的共同行为或功能特征 ·抽象的实现:类与对象 http://math.ecnu.edu.cn/-jypan 7
http://math.ecnu.edu.cn/~jypan 7 抽象 对具体问题/事物(对象)进行概括,抽出这一类对象的 共有性质并加以描述的过程。 首先关注的是问题的本质及描述,其次是实现过程或细节 抽象包括:数据抽象和行为抽象 - 数据抽象: 描述某类对象的属性或状态(对象相互区别的物理量) - 行为抽象(或功能抽象): 描述某类对象的共同行为或功能特征 抽象的实现:类与对象 什么是抽象
抽象示例 例:时钟的描述 ·数据抽象: int hour,int minute,int second ●行为抽象: ShowTime(),SetTime() http://math.ecnu.edu.cn/~jypan 8
http://math.ecnu.edu.cn/~jypan 8 抽象示例 例:时钟的描述 ► 数据抽象: int hour, int minute, int second ► 行为抽象: ShowTime(), SetTime()
封装 什么是封装 将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体, 即将数据与操作数据的函数进行有机结合,形成“类”,其中数据 和函数都是类的成员。 为什么封装 十封装可以增强数据的安全性,并简化编程。用户不必了解具体的实现 细节,而只需要通过外部接口,以给定的访问权限,来访问类的成员。 十提供接口供外部调用,隐藏内部细节。 中简化被封装对象间的接口,降低系统的耦合度。 http://math.ecnu.edu.cn/~jypan 9
http://math.ecnu.edu.cn/~jypan 9 封装 将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体, 即将数据与操作数据的函数进行有机结合,形成 “类”,其中数据 和函数都是类的成员。 † 封装可以增强数据的安全性,并简化编程。用户不必了解具体的实现 细节,而只需要通过外部接口,以给定的访问权限,来访问类的成员。 † 提供接口供外部调用,隐藏内部细节。 † 简化被封装对象间的接口,降低系统的耦合度。 什么是封装 为什么封装
示例(时钟类) 例:时钟的描述 数据抽象:int hour,int minute,int second D行为抽象:ShowTime(),SetTime() 时钟类的声明 class Clock public: void SetTime(int h,int m,int s); void ShowTime(); private: int hour,minute,second; 此处的分号不能省! public和private用于指定成员的不同访问权限 http://math.ecnu.edu.cn/~jypan 10
http://math.ecnu.edu.cn/~jypan class Clock { public: void SetTime(int h, int m, int s); void ShowTime(); private: int hour, minute, second; }; 10 示例(时钟类) 例:时钟的描述 ► 数据抽象:int hour, int minute, int second ► 行为抽象: ShowTime(), SetTime() 此处的分号不能省! 时钟类的声明 † public 和 private 用于指定成员的不同访问权限
继承与多态 继承 C++提供继承机制,允许程序员在保持原有类特性的基础上, 进行更具体、更详细的说明。 多态 同一段程序能处理多种类型对象。 在C++中,多态有强制多态(如类型转换)、重载多态(如 函数重载、运算符重载)、类型参数化和虚函数、模板等。 http://math.ecnu.edu.cn/~jypan 11
http://math.ecnu.edu.cn/~jypan 11 继承与多态 C++ 提供继承机制,允许程序员在保持原有类特性的基础上, 进行更具体、更详细的说明。 同一段程序能处理多种类型对象。 在 C++ 中,多态有强制多态(如类型转换)、重载多态(如 函数重载、运算符重载)、类型参数化和虚函数、模板等。 继承 多态