面向对象程序设计 PPT课件

合集下载

第7章面向对象的程序设计PPT课件

第7章面向对象的程序设计PPT课件
在大型软件系统设计中,由于软件系统本身的复杂 性,要求必须许多人通力合作,采用工程化的方法进 行开发和管理,这也对程序设计语言和程序设计方法 提出了更高的要求。
通过使用结构化程序设计方法,可以对整个任务进 行清晰严格的划分,使每个程序员能明确了解自己的 工作任务以及与他人的接口。
每个程序员可以独立地设计调试自己负责的模块, 最终各模块也能够顺利地集成到整个系统中去。
§7.2.3 面向对象程序设计的特性(4)
3.继承性
例如,由基本类型的电话(拨号、讲话、听音 功能),可以派生出电话传真机、移动电话、 公用投币电话等,这些电话都继承了电话基本 类型的拨号、讲话、听音功能,又添加了各自 的独特功能。
由于有了继承性,当把基本类型的电话由拨 号改为按键,其它类型的电话都可以改为按键, 继承性使我们不必研究每种电话如何实现按键。
§7.2 面向对象程序设计的基本概念
面向对象技术为软件开发提供了一种新的思 想,引入了许多新的概念,这些概念是理解和 使用面向对象技术的基础和关键。
§7.2.1 对象(Object)(1) 现实世界的实体——事、物、概念等,都统
称为对象。在面向对象系统中一切成份都是对 象,大到整个系统、项目、数据库、表、表单, 小到窗口、控件都被视为对象。
§7.2.3 面向对象程序设计的特性(1)
与结构化程序设计相比,面向对象程序设计 有许多突出特性,即抽象性、封装性、继承性 和多态性。
1.抽象性
一般而们所关心的或认为重要的信息,而 将不重要的信息予以忽略。
例,我们对电话的认识已经抽象化了,拨号、 讲话、听音这就是我们印象中的电话,而不关 心和了解电话内部的线路和工作原理。
视图窗口的位置、大小、和颜色都是视图 对象的“属性”;对视图的修改操作后, 将数据替换源表,是视图对象的“方法”; 当数据修改完用鼠标点动关闭视图按钮, 就产生关闭视图的“事件”,视图对象接 收到这个关闭动作(事件)后,就会执行 另一方法程序将视图数据发送回源表。

第06章 面向对象程序设计PPT课件

第06章 面向对象程序设计PPT课件

3
面向对象的基本概念2-1
• 类和对象
– 通常把具有相同性质和功能的事物所构成的整体称为 类
– 属于一个类的某个具体的事物称为该类的一个对象
• 属性、方法和事件
– 属性是指一个类的性质 – 方法是指一个类的功能 – 事件是对象能够识别和响应的某些操作
• 封装
– 封装是指将用来描述客观事物的一组数据和操作包装 在一起,形成一个类
• namespace Ns1 • { class A {…} • class B {…} •}
10
使用命名空间5-4
• 命名空间可以嵌套使用,例如
– namespace Ns1 –{ – namespace Ns2 –{ – class B {…} –} –}
11
使用命名空间5-5
• 在C#开发中,每个项目会自动附加一个默 认的命名空间
方法
方法定义类可以执行的操作。方法可以接受提供输入数据的参数, 并且可以通过参数返回输出数据。方法还可以不使用参数而直接返 回值
事件
事件是向其他对象提供有关事件发生(如单击按钮或成功完成某个 方法)通知的一种方式
索引器 索引器允许以类似于数组的方式为对象建立索引
运算符 运算符是对操作数执行运算的术语或符号,如 +、*、< 等
• 析构函数具有如下性质
– 析构函数在类对象销毁时自动执行 – 一个类只能有一个析构函数,而且析构函数没有参数,
即析构函数不能重载 – 析构函数的名称是“~”加上类的名称(中间没有空
格)。 – 与构造函数一样,析构函数也没有返回类型 – 析构函数也不能被继承
24
析构函数示例
using System;
4
面向对象的基本概念2-2

第3章面向对象程序设计基础精品PPT课件

第3章面向对象程序设计基础精品PPT课件
▪ 在类声明之后,一对大括号括起来的部分称为类体。 类体中通常包括两部分内容,一是变量的声明,二 是方法的定义。其中,类中声明的变量又称为成员 变量或域变量,用于描述该类对象的属性;类中定 义的方法称为成员方法,成员方法用于描述该类对 象的行为。
3.2.2案例2:成员变量
▪ 类中声明的变量称为成员变量,成员变量声 明的一般语法格式如下:
▪ 面向对象程序设计方法以客观世界存在的事物为基础,采用 人类自然界思维模式,对问题(软件系统)进行抽象,从而构 造软件系统。面向对象程序设计的主要特点包括封装、继承 和多态。
▪ 1.封装 ▪ 所谓封装是指将数据和对数据的操作处理放在一起,封装是
面向对象程序设计的核心思想之一。其优势在于:一是信息 的隐藏;二是提高程序的可维护性 。 ▪ 2.继承 ▪ 继承是根据已有类创建新类的一种方法,也是面向对象程序 设计体现代码复用的关键特性。 ▪ 3.多态性 ▪ 所谓多态性是指使用相同接口完成不同操作或操作不同类型 数据,它是面向对象程序设计另一个重要特征。
3.2 类与对象
▪ 类和对象是面向对象程序设计最重要的两个概念。 类是一种数据类型,每个类都有一个特定的数据结 构,用于描述一类事物(对象)共有的属性和行为。 面向对象程序是由类构成的,面向对象编程的实质 就是类设计的过程。对象是类的一个特定实例,类 是创建对象的模型。对象的属性通过类中成员变量 来描述,对象的行为通过类中成员方法来描述,通 过成员方法对变量的操作实现软件系统功能。
▪ 例如: ▪ public class Hello //声明一个公共类Hello ▪ class MyFrame extends JFrame //声明类MyFrame
继承JFrame类 ▪ class MyThread implements Runnable //声明类

面向对象程序设计方法PPT课件

面向对象程序设计方法PPT课件
1
面向对象程序设计
前言 第1章 C++语言概述 第2章 数据类型和表达式 第3章 预处理和语句 第4章 函数和作用域 第5章 类和对象(一) 第6章 类和对象(二) 第7章 继承性和派生类 第8章 多态性和虚函数 第9章 C++的I/O流库
2
地位与作用
是计算机科学与技术专业本科生的一门必 修课程
C++程序设计教程.钱能编著.清华大学出版 社.1999
12
第1章 C++语言概述
基本要求 了解:面向对象程序设计的基本思想及 基本概念;面向对象语言的分类和c++中 支持面向对象的特点;面向对象的软件 开发环境;visual c++开发工作台的主要 功能。
13
第1章 C++语言概述
1.1 C++的起源及特点 1.2 面向对象的方法 1.3 面向对象的程序设计语言C++ 1.4 C++程序的编辑、编译和运行 1.5 C++的词法及词法规则 1.6 C++程序的结构
5
面向过程的程序设计(以C语言为例)
1、自上而下(top-down)的设计方式:是一个 自顶向下,逐步求精的过程; 2、以main函数概括出整个应用程序需要做的 事情,而main函数由对一系列的子函数的调 用组成;
main中的每一个子函数都可以被精炼成更 小的函数。重复这个过程,即可完成一个过 程式的设计; 3、特征是以函数为中心,以函数作为划分程 序的基本单位,数据往往处于从属地位。
15
1.1.1 面向对象的由来和发展(续)
20世纪60年代中期,Simula 67语言 面向对象语言的鼻祖,提出了对象、类的概

第5章面向对象程序设计PPT课件

第5章面向对象程序设计PPT课件
➢函数模板就是一系列相关函数定义的模型或样板,这些函数 的原代码除了所针对的数据类型不同而有所差异外,其基本结 构形式相同。
➢函数模板-------数据类型本身成了它的参数,因而是一种参数 化类型的函数。
5.2 函数模板
5.2.2 函数模板的使用与实例化
所有的函数模板都具有同样的基本格式: template<class T>或template<typename T> //模板声明 返回类型 函数名(参数表) {
5.2 函数模板
5.2.1 函数模板的定义
➢对于不同的数据类型,需要提供一种逻辑功能完全一样的函 数,即编制这些函数的程序代码完全一样,其区别仅仅是处理 的数据类型。
➢针对不同的数据类型,需要重载函数: 例如:求两数的最大值,不同的数值类型,程序逻辑相
同,程序代码相同,只是参数类型和返回值不同。
➢有一种更方便、更可靠的方法来完成这一功能。函数模板就 是为了适应这一要求而产生的。
5.1 模板的概念
➢ C++是一种“强制型”的语言,也就是说一个变 量,编译器必须确切地知道它的类型,而模板就 是构建在这个强类型语言基础上的泛型系统。
➢ 由模板可以得到一系列的相似类或相似函数,这 些相似类和相似函数涉及的数据其类型可能不同 但处理数据却具有相同的表现形态。
➢ C++模板包括函数模板和类模板。
//函数体的定义 } ➢template 关键字和尖括号中的class T 一起作为模板的构造 ➢每一个类型参数(上面语法形式中的T)之前都有关键字class 或 关键字typename,这些类型参数代表的是类型,可以是内部类型 或是自定义类型。 ➢类型参数就可以用来指定函数模板本身的形参类型和返回值类 型,以及声明函数中的局部变量。 ➢函数模板中函数的定义方式与定义其他函数类型类似。

面向对象程序设计PPT课件

面向对象程序设计PPT课件

2019/7/26
第5章多态与抽象类
32
小结
(1)如果你期望在派生类中重新定义一 个成员函数,那么你就应该在基类中 把该函数设为virtual。
(2)以单一指令调用不同函数,这种性 质就是"多态"。
(3)虚函数是C++语言的多态性质和动 态绑定的关键。
(4)虚函数派生下去仍是虚函数,而且
可以省略virtual关键词。 2019/7/26
2019/7/26
第5章多态与抽象类
10
根据类型兼容规则,基类指针p可以指 向派生类对象obj2、obj3(即派生类 对象可以代替基类对象,给基类指针 赋值),但编译时,编译器根据p的类 型是基类型,自动调用基类的who(), 所以结果如上所示。
2019/7/26
第5章多态与抽象类
11
【思考题5-3】如果基类指针要访问派 生类的who(),怎么办?
C++提供了多态机制来解决这个问题。 类型兼容规则是C++多态的重要基础。
2019/7/26
第5章多态与抽象类
12
多态
多态(Polymorphism)是指具有相似 功能的不同函数使用同一个名称来实 现,从而可以使用相同的调用方式来 调用这些具有不同功能的同名函数的 特性。
2019/7/26
提出问题
【例5-1】在例4-1程序中存在的两个 不足:
(1)基类Pay()和Display()的函数体均为空, 在实现部分仍要写出函数体,显得冗余。
(2)在主函数中,建立了4个不同类的对象, 进行了类似的操作,重复写了4遍类似的语句 ,程序不够简洁。
2019/7/26
第5章多态与抽象类

面向对象程序设计(共13张PPT)

面向对象程序设计(共13张PPT)
9.2.2 对象的使用
对象的使用主要体现在对其成员的引用上,对 象只能访问公有成员,一般格式为:
<对象名> . <公有成员数据名>
<对象名> . <公有成员函数名>(<参数表>)
prev
next
back
第5页,共13页。
9.2 类的使用
9.2.2 对象的使用
成员选择运算符 这里的符号“.”称为 对象数组的元素通过缺省构造函数而得到初始化。
4. 一个类的对象可作为另一个类的成员,
prev
称为对象成员。
next
back
第7页,共13页。
9.2 类的使用
9.2.3 对象数组和对象指针
定义一维对象数组的一般格式为:
《存储类型》<类名> <对象数组名>[<常量表达式
>];
对象数组中的每个元素可以象一般的对 象使用。
注意,在说明对象数组时,不能对它进 行初始化。对象数组的元素通过缺省构
第12页,共13页。
9.2 类的使用
9.2.5 类实现数据的封装
对象的封装性是指将对象的属性(成员数据)和 作用于这些属性上的操作(成员函数)封装在一 起,对象的使用者只能通过提供给它的接口
(公有成员函数)使用这个对象。
类通过对其成员设计不同的访问权限实现数据的
封装。公有成员是类的外部表现(在类外可以对 其进行访问和修改),而私有和保护成员则被 隐藏了。
prev
在定义类时,通常将该类的所有属性(成员数
据)和只供内部调用的操作(成员函数)定义为私
next
有成员或保护成员。
例9.5
back
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2018/8/8
第5章多态与抽象类
8
类型兼容规则中所指替代包括以下情 况:
(1)派生类的对象可以赋值给基类的对象。 (2)派生类的对象可以初始化基类的引用。 (3)派生类的对象的地址可以赋值给基类的指 针变量。
在替代之后,派生类对象就可以作为 基类的对象使用,但只能访问从基类 继承的成员。
2018/8/8 第5章多态与抽象类
21
在派生类中重新定义虚函数时,其函 数原型包括返回类型、函数名、参数 个数与参数类型的顺序,都必须与基 类中的原型必须相同。
2018/8/8
第5章多态与抽象类
22
一个函数一旦被声明为虚函数,则无 论声明它的类被继承了多少层,在每 一层派生类中该函数都保持虚函数特 性。因此,在派生类中重新定义该函 数时,可以省略关键字virtual。但是 ,为了提高程序的可读性,往往不省 略。
2018/8/8 第5章多态与抽象类 5
Employee *emp[4]={&m1,&t1,&s1,&sm1}; //声明 抽象类指针数组 for(int i=0;i<4;i++) { emp[i]->Pay(); //单一指令,实现多态, 计算指针指向对象的工资 emp[i]->Display();//单一指令,实现多态, 输出指针指向对象的信息 }
9
【例5-3】示例类型兼容规则的应用。 教材P261,该程序的运行结果为:
Base class Base class Base class Derivel class Derive2 class
2018/8/8 第5章多态与抽象类 10
根据类型兼容规则,基类指针p可以指 向派生类对象obj2、obj3(即派生类 对象可以代替基类对象,给基类指针 赋值),但编译时,编译器根据p的类 型是基类型,自动调用基类的who(), 所以结果如上所示。
《面向对象程序设计》
第 5章 多态与抽象类
内容提要
5.1 类层次的多态问题
5.2
5.3
类型兼容规则(重点)
多态的概念
5.4
5.5
多态的分类
联编
5.6
5.7
虚函数(重点)
抽象类与纯虚函数(重点)
提出问题
【例5-1】在例4-1程序中存在的两个 不足:
(1)基类Pay()和Display()的函数体均为空, 在实现部分仍要写出函数体,显得冗余。 (2)在主函数中,建立了4个不同类的对象, 进行了类似的操作,重复写了4遍类似的语句 ,程序不够简洁。
2018/8/8
第5章多态与抽象类
11
【思考题5-3】如果基类指针要访问派 生类的who(),怎么办? C++提供了多态机制来解决这个问题。 类型兼容规则是C++多态的重要基础。
2018/8/8
第5章多态与抽象类
12
多态
多态(Polymorphism)是指具有相似 功能的不同函数使用同一个名称来实 现,从而可以使用相同的调用方式来 调用这些具有不同功能的同名函数的 特性。
2018/8/8
第5章多态与抽象类

13
5.4
多态的分类
C++支持的多态可以分为四种类型:
重载多态:函数重载和运算符重载 强制多态:强制类型转换 包含多态:虚函数 参数多态:函数模板和类模板
2018/8/8
第5章多态与抽象类
14
联编
联编是指把一个标识符名和一个存储 地址联系在一起的过程。即函数调用 与某个函数在多态的实现过程中,确 定调用哪个同名联系的过程,又称绑 定。分为:
2018/8/8
第5章多态与抽象类
17
可见,同一个指针,在不同阶段被绑 定的类对象将是不同的,进而被关联 的类成员函数也是不同的。 如何来确定是用静态联编还是用动态 联编呢? C++规定,动态联编通过继承和虚函数 来实现。
2018/8/8 第5章多态与抽象类 18
虚函数是动态联编的基础。下面介绍 虚函数。
2018/8/8
第5章多态与抽象类
3
分析问题
基类设置成员函数Pay()和Display() 的目的是为了统一规定类簇的基本行 为,虽有冗余,但也必要。为此,C++ 提供了纯虚函数来解决此问题。
2018/8/8
第5章多态与抽象类
4
在主函数中建立了4个不同类的对象,进行 了类似的操作,重复写了4遍类似的语句。 应该怎样有效地来处理它们同样的行为呢 ?我们首先想到的是用循环解决,但调用 这些同名函数的对象却不相同。 分析这些对象有一个共同点,那就是来自 于同一个基类,而基类与派生类对象有什 么关系呢?事实上,它们遵循类型兼容规 则。
静态联编 动态联编
2018/8/8 第5章多态与抽象类 15
静态联编是在编译阶段完成的联编。 例5-2、例5-3及以前的函数重载都是 采用静态联编方式。 例5-4,教材P265,是静态联编。 动态联编是在运行阶段完成的联编。
2018/8/8
第5章多态与抽象类
16
在例5-4中,静态联编把基类指针ps指 向的对象绑定到基类上,而在运行时 进行动态联编将把ps指向的对象绑定 到派生类上。
2018/8/8
第5章多态与抽象类
19
5.6 虚函数
虚函数就是在基类中被关键字virtual 说明、并在一个或多个派生类中被重 新定义的成员函数。
2018/8/8
第5章多态与抽象类
20
声明虚函数的格式如下:
virtual <函数值类型> <函数名>(<参数表>);
2018/8/8
第5章多态与抽象类
2018/8/8 第5章多态与抽象类 6
5.2类型兼容规则
类型兼容规则是指在需要基类对象的 任何地方,都可以使用公有派生类的 对象来替代。
2018/8/8
第5章多态与抽象类
7
通过公有继承,派生类得到了基类中 除构造函数、析构函数之外的所有成 员。这样,公有派生类实际就具备了 基类的所有功能,凡是基类能解决的 问题,公有派生类都可以解决。
2018/8/8 第5章多态与抽象类 23
在程序运行时,不同类的对象调用各 自的虚函数,这就是运行时多态。
2018/8/8
第5章多态与抽象类
24
【例5-5】将例5-4基类的成员函数 print()设为虚函数,采用对象指针调 用虚函数,进而实现动态联编。
2018/8/8
第5章多态与抽象类
25
该程序的运行结果为:
相关文档
最新文档