东南大学:《C++语言程序设计》课程教学资源(PPT课件讲稿)Chapter 13 Object-Oriented Programming - Polymorphism

Chapter 13 Object-Oriented Programming Polymorphism 0 2018, SEU. All rights reserved. 1
© 2009, SEU. All rights reserved. © 2018, SEU. All rights reserved. 1 Object-Oriented Programming: Polymorphism Chapter 13

OBJECTIVES What polymorphism(多态)i, how it makes programming more convenient, and how it makes systems more extensible and maintainable ° To declare and use virtual functions(虚函数)to effect polymorphism The distinction between abstract and concrete classes(抽象类和具体类 ° To declare pure virtual functions(纯虚函数)to create abstract classes 0 2018, SEU. All rights reserved. 2
© 2009, SEU. All rights reserved. © 2018, SEU. All rights reserved. 2 OBJECTIVES What polymorphism(多态) is, how it makes programming more convenient, and how it makes systems more extensible and maintainable. To declare and use virtual functions(虚函数) to effect polymorphism. The distinction between abstract and concrete classes(抽象类和具体类). To declare pure virtual functions(纯虚函数) to create abstract classes

Topics 13.1 Introduction o 13. 2 Relationships Among Objects in an Inheritance hierarchy 13.3 Type Fields and switch Statements 13. 4 Abstract Classes and pure virtual functions o 13.5 Case Study: Payroll System Using Polymorphism 0 2018, SEU. All rights reserved. 3
© 2009, SEU. All rights reserved. © 2018, SEU. All rights reserved. 3 Topics 13.1 Introduction 13.2 Relationships Among Objects in an Inheritance Hierarchy 13.3 Type Fields and switch Statements 13.4 Abstract Classes and Pure virtual Functions 13.5 Case Study: Payroll System Using Polymorphism

13.1 Introduction -通用化编程需求 画板 Tool 基类 Shape:长方形*2、椭圆形*3、三角形*4、菱形*5等 用 vector或者arry来保存指针 °基类指针vs派生类指针 当需更新画板时,枚举指针并调用各自draw函数 当需计算面积时,枚举指针并调用各自area函数 0 2018, SEU. All rights reserved. 4
© 2009, SEU. All rights reserved. © 2018, SEU. All rights reserved. 4 13.1 Introduction ---通用化编程需求 基类Shape:长方形*2、椭圆形*3、三角形*4、菱形*5等 用vector或者array来保存指针 基类指针 vs 派生类指针 当需更新画板时,枚举指针并调用各自draw函数 当需计算面积时,枚举指针并调用各自area函数 画板 Tool

13.1 Introduction 需 求 °用户通过键盘输入多个员工信息,统计收入数据 (1)CommissionEmployee name, ssn, grosssales, commisionRate (2)BasePlus Commission Employee name, ssn, grossSales, commisionRate, base Salary °用 vector或者aray来保存指向员工对象的指针 o Commission Employee pointer 希望通过这些通用指针来调用各自的 earnings0函 数以进行统计 o 2018, SEU. All rights reserved 5
© 2009, SEU. All rights reserved. © 2018, SEU. All rights reserved. 5 用户通过键盘输入多个员工信息,统计收入数据: (1)CommissionEmployee name, ssn, grossSales, commisionRate (2)BasePlusCommissionEmployee name, ssn, grossSales, commisionRate, baseSalary 用vector或者array来保存指向员工对象的指针 CommissionEmployee Pointer 希望通过这些通用指针来调用各自的earnings()函 数以进行统计 13.1 Introduction --- 需 求

13.1 Introduction 面向对象 °数据封装 °继承 多态 0 2018, SEU. All rights reserved. 6
© 2009, SEU. All rights reserved. © 2018, SEU. All rights reserved. 6 面向对象 数据封装 继承 多态 13.1 Introduction

13.1 Introduction 多态: 解释1:同样的消息被类的不同对象接收时导致的完全 不同的行为的一种现象。这里所说的消息即对类的成 员函数的调用。 解释2:通过指向派生类的基类指针,调用派生类的函 数;将不同的派生类对象都当作基类来处理,并根据对 象不同产生不同的行为,以屏蔽各派生类对象之间的 差异。写出通用的代码,使得程序员可以方便地处理 普遍性问题。 C++语言支持两种类型的多态: ①编译时的多态(静态多态)——函数重载 ②运行时的多态(动态多态)——虚函数 多态性提高了软件的可扩展性,使得可以用与接 收消息对象类型无关的方式编写 0 2018, SEU. All rights reserved. 7
© 2009, SEU. All rights reserved. © 2018, SEU. All rights reserved. 7 13.1 Introduction 多态: 解释1:同样的消息被类的不同对象接收时导致的完全 不同的行为的一种现象。这里所说的消息即对类的成 员函数的调用。 解释2:通过指向派生类的基类指针,调用派生类的函 数; 将不同的派生类对象都当作基类来处理,并根据对 象不同产生不同的行为,以屏蔽各派生类对象之间的 差异。写出通用的代码,使得程序员可以方便地处理 普遍性问题。 C++语言支持两种类型的多态: ① 编译时的多态(静态多态) ——函数重载 ② 运行时的多态(动态多态) ——虚函数 多态性提高了软件的可扩展性,使得可以用与接 收消息对象类型无关的方式编写

Topics 13.1 Introduction o 13.2 Relationships Among Objects in an Inheritance Hierarch 13.3 Type Fields and switch Statements 13. 4 Abstract Classes and pure virtual functions o 13.5 Case Study: Payroll System Using Polymorphism 0 2018, SEU. All rights reserved. 8
© 2009, SEU. All rights reserved. © 2018, SEU. All rights reserved. 8 Topics 13.1 Introduction 13.2 Relationships Among Objects in an Inheritance Hierarchy 13.3 Type Fields and switch Statements 13.4 Abstract Classes and Pure virtual Functions 13.5 Case Study: Payroll System Using Polymorphism

13.2 Relationships Among Objects in an Inheritance hierarch 13.2.1 Invoking Base-Class Functions from Derived Class objects(基类指针指向派生类,调用基类函数) o 13.2.2 Aiming Derived-Class Pointers at Base-Class Objects(派生类指针指向基类,错误) o 13.23 Derived-Class Member-Function Calls via Base Class pointers(基类指针指向派生类,调用派生类函数, 错误) °13.24 Virtua| Functions(应用虚函数,解决上述问题) 13.2.5 Summary of the allowed Assignments Between Base-Class and derived -class objects and pointers (基类/派生类对象和指针之间的赋值) 0 2018, SEU. All rights reserved. 9
© 2009, SEU. All rights reserved. © 2018, SEU. All rights reserved. 9 13.2 Relationships Among Objects in an Inheritance Hierarchy 13.2.1 Invoking Base-Class Functions from DerivedClass Objects(基类指针指向派生类,调用基类函数) 13.2.2 Aiming Derived-Class Pointers at Base-Class Objects(派生类指针指向基类,错误) 13.2.3 Derived-Class Member-Function Calls via BaseClass Pointers(基类指针指向派生类,调用派生类函数, 错误) 13.2.4 Virtual Functions(应用虚函数,解决上述问题) 13.2.5 Summary of the Allowed Assignments Between Base-Class and Derived-Class Objects and Pointers (基类/派生类对象和指针之间的赋值)

13.2.1 Invoking Base-Class Functions from Derived-Class Objects °基类 Commission Employee void printO const °派生类 Base Plus Commission Employee void print( const commissionEmployeePtr &basePlus CommissionEmployee 注意:基类指针调用函数,输出什么 程序 P13.1-5 0 2018, SEU. All rights reserved. 10
© 2009, SEU. All rights reserved. © 2018, SEU. All rights reserved. 10 13.2.1 Invoking Base-Class Functions from Derived-Class Objects 基类CommissionEmployee void print() const; 派生类BasePlusCommissionEmployee void print() const; commissionEmployeePtr = &basePlusCommissionEmployee; 注意:基类指针调用函数,输出什么
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 山东大学:《微机原理及单片机接口技术》课程教学资源(PPT课件讲稿)第四章 指令系统及汇编语言程序设计(4.1-4.4).ppt
- 多媒体技术及应用(PPT讲稿)多媒体音频技术.ppt
- 《网络搜索和挖掘关键技术 Web Search and Mining》课程教学资源(PPT讲稿)Lecture 13 Matrix Factorization and Latent Semantic Indexing.ppt
- 计算机网络技术基础(PPT课件讲稿).ppt
- PROGRAMMING METHDOLODGY AND SOFTWARE ENGINEERING(PPT讲稿)C Programming Review.ppt
- 《神经网络 Neural Networks》课程教学资源(PPT课件讲稿)Ch 8 Artificial Neural networks.pptx
- 电子工业出版社:《计算机网络》课程教学资源(第五版,PPT课件讲稿)第五章 运输层.ppt
- 《Web编程实用技术教程》课程教学资源(PPT课件讲稿)第5章 MFC WinSock类的编程.ppt
- 《数字图像处理》课程PPT教学课件(讲稿)第二章 图像获取、显示和表示.ppt
- 香港中文大学:《Topics in Theoretical Computer Science》课程教学资源(PPT课件讲稿)量子计算 Quantum computing.pptx
- 香港科技大学:深度学习导论(PPT讲稿)Introduction to Deep Learning.pptx
- 北京大学软件研究所:高级软件工程(PPT讲稿)云计算与平台即服务.ppt
- 合肥学院:《数据库原理与应用》课程教学资源(PPT课件)第1章 数据库系统概述(主讲:叶潮流).ppt
- 《数据库原理与应用》课程PPT教学课件(SQL Server)第9章 存储过程和触发器.ppt
- 《The C++ Programming Language》课程教学资源(PPT课件讲稿)Lecture 02 Procedure-Based Programming.ppt
- 东南大学:《数据结构》课程教学资源(PPT课件讲稿)第七章 图.ppt
- 北京大学:《高级软件工程》课程教学资源(PPT课件讲稿)第一讲 软件与软件开发.ppt
- 西安电子科技大学:《现代密码学》课程教学资源(PPT课件讲稿)第二章 流密码(主讲:董庆宽).pptx
- 《Photoshop基础教程与上机指导》教学资源(PPT讲稿)第18章 扫描和修饰图像.ppt
- 中国水利水电出版社:《单片机原理及应用》课程PPT教学课件(C语言版)第8章 单片机系统扩展(主编:周国运).ppt
- 《C++语言程序设计》课程教学资源(PPT课件)第14讲 运算符重载.ppt
- 淮阴工学院:《数据库原理》课程教学资源(PPT课件讲稿)第4章 结构化查询语言SQL.ppt
- 《计算机网络 COMPUTER NETWORKS》课程教学资源(PPT课件讲稿)Chapter 18 互联网协议 Internet Protocols(IP).ppt
- 计算机应用专业《计算机网络》教学大纲.doc
- 《计算机网络安全》课程教学资源(PPT课件讲稿)第四章 数据加密技术.ppt
- 西安培华学院:《计算机网络工程》课程教学资源(PPT课件讲稿)第1章 网络工程知识(主讲:张伟).ppt
- 对外经济贸易大学:《大学计算机基础》课程电子教案(PPT课件)第5章 PowerPoint幻灯片制作(PowerPoint 2010).pptx
- 中国地质大学(武汉):R语言入门教程(PPT讲稿).ppt
- 西南民族大学:软件需求分析与总体设计(PPT讲稿,主讲:殷锋).ppt
- 《软件测试 Software Testing》教学资源(PPT讲稿)Part 1 The Big Picture.ppt
- 系统编程工具REXX和CLIST.ppt
- 北京大学:基于信息利用的烟花算法研究(PPT讲稿)Research on Fireworks Algorithms from the Perspective of Information Utilization.pptx
- 《ARM嵌入式软件开发》课程教学资源(PPT课件讲稿)第三章 ARM体系结构及编程模型.ppt
- 《大型机系统管理技术》课程教学资源(PPT课件讲稿)第2章 大型服务器外存管理.ppt
- 《计算机组成原理》课程PPT教学课件(讲稿)第三章 计算机核心部件及其工作原理.ppt
- 《计算机网络概述》教学资源(PPT课件讲稿).ppt
- 面积对象编程(PPT讲稿)Object-Oriented Programming and Classes.ppt
- 同济大学:《大数据分析与数据挖掘 Big Data Analysis and Mining》课程教学资源(PPT课件讲稿)Evaluation & other classifiers.pptx
- 香港中文大学:Arm board tutorial Part 1 Using the ARM board And start working with C Tutorial 5 and 6.pptx
- 清华大学出版社:《JAVA程序设计实例教程》课程教材电子教案(PPT课件讲稿,共七章,主编:关忠).ppt