2019年-第第四章面向对象编程-PPT精选文档
合集下载
第4面向对象编程-PPT文档资料
内联成员函数举例(二)
使用inline关键字(续)。
inline void Point::Init(int initX,int initY){ X=initX; Y=initY; }
inline int Point::GetX() { return X; } inline int Point::GetY(){ return Y; }
类的声明形式
类 和 对 象
类是一种用户自定义类型,声明形式:
class 类名称 { public: 公有成员(外部接口) private: 私有成员 protected: 保护型成员 }
类的声明形式
类 和 对 象
范围标志:private: , public: 或 protected:。 它们分别代表以下含义: private :class的私有成员,只有同一个class的其 他成员或该class的“friend” class可以访问这些成员。 protected :class的保护成员,只有同一个class的 其他成员,或该class的“friend” class,或该class的 子类(derived classes) 可以访问这些成员。 public :class的公有成员,任何可以看到这个class 的地方都可以访问这些成员。 如果我们在定义一个class成员的时候没有声明其允许 范围,这些成员将被默认为 private范围。
19
内联成员函数
类 和 对 象
为了提高运行时的效率,对于较简单的函 数可以声明为内联形式。 内联函数体中不要有复杂结构(如循环语 句和switch语句)。
在类中声明内联成员函数的两种方式:
将函数体放在类的声明中。
使用inline关键字。
第1章 面向对象编程的原理PPT教学课件
如:窗口的宽度(form1.width) 属性可以在设计对象时确定,也可以在程序运行时读取和修改 (如: W=form1.width; form1.width=100)。
2020/12/10
12
4. 方法(Methord)
即对象所因有的各种操作。
如:窗口关闭(form1.close)
这种操作的过程对外是封闭的,即用户只能看到这一方
法实施后的结果。这相当于事先已经设计好的各种过程,只
需要调用就可以了,用户不必去关心这一过程是如何编写的,
事实上,这个过程已经封装在对象中,用户也看不到。
对象的这一特性,即是对象的封装性.
5. 事件(Event) 即对象在执行某一操作后激发并执行
的一个或多个过程。
这些过程对用户是透明的,用户可以为这个过程编写自
己的程序代码,以完成特定的操作。
如:窗口对象在执行打开过程时,就会激活一个Active
事件(过程),用户可以自己编写这一过程的代码,以便在
打开这个窗口时完成一些自己所要求的任务,如打开一个数
据库,对某个变量进行初始化等等
2020/12/10
13
6. 类(Class)与实例(Instance)
类是具有共同属性、共同方法、共同事件的对象的集合。而一 个具体的对象则是其对应类的一个实例。
2020/12/10
3
第8章类
0面向对象的概述 1 结构 2类 3 静态成员与友员 4 构造函数与析构函数
2020/12/10
4
面向过程编程
图1.1
程序 =(模块 + 模块 + …) 模块 =(算法)+(数据结构)
2020/12/10
5
四章面向对象基础ppt课件
16
❖ 封装将对象的私有数据隐藏起来,其他对象不能直 接访问这些私有数据,必须通过调用该对象的相关 方法来间接访问。
公有数据 私有数据
数据
方法 对象A
方法
对象B
17
对象封装的好处
通过将对象进行封装,能把对别的对象来说并不重要的 对象的实现细节隐蔽起来,从而在使用一个对象时,只 需知道调用它的方法而无需知道该方法是如何实现的。
push_break() { … } add_oil() { … } }
class Trash_Car extends Car
{ double amount;
fill_trash() { … }
}
29
类层级(class hierarchy)
❖ 类的继承关系不仅仅只是一层关系,它可以有好几层。这 种树状关系,我们称作类层级(class hierarchy)。至于层 级数可依照实际需要而定 。
Java中声明方法的语法如下:
[修饰符] 返回值类型 方法名 (参数列表)
[ throws 例外名1,例外名2,… ]
{Байду номын сангаас
//方法体:
局部变量声明;
语句序列;
}
方法修饰符分为四种: 访问控制符:public 抽象修饰符:abstract 静态修饰符:static 最终修饰符:final
44
4.2.2 用户自定义类
11
软件对象
❖ 软件对象:现实世界中的对象在计算机中的抽象表 示,即仿照现实对象而建立的。
❖ 软件对象也有状态和行为,软件对象用变量表示对 象的状态、用方法来实现对象的行为。
❖ 一个软件对象就是变量和相关方法的集合。
软件对象 = 变量+方法
❖ 封装将对象的私有数据隐藏起来,其他对象不能直 接访问这些私有数据,必须通过调用该对象的相关 方法来间接访问。
公有数据 私有数据
数据
方法 对象A
方法
对象B
17
对象封装的好处
通过将对象进行封装,能把对别的对象来说并不重要的 对象的实现细节隐蔽起来,从而在使用一个对象时,只 需知道调用它的方法而无需知道该方法是如何实现的。
push_break() { … } add_oil() { … } }
class Trash_Car extends Car
{ double amount;
fill_trash() { … }
}
29
类层级(class hierarchy)
❖ 类的继承关系不仅仅只是一层关系,它可以有好几层。这 种树状关系,我们称作类层级(class hierarchy)。至于层 级数可依照实际需要而定 。
Java中声明方法的语法如下:
[修饰符] 返回值类型 方法名 (参数列表)
[ throws 例外名1,例外名2,… ]
{Байду номын сангаас
//方法体:
局部变量声明;
语句序列;
}
方法修饰符分为四种: 访问控制符:public 抽象修饰符:abstract 静态修饰符:static 最终修饰符:final
44
4.2.2 用户自定义类
11
软件对象
❖ 软件对象:现实世界中的对象在计算机中的抽象表 示,即仿照现实对象而建立的。
❖ 软件对象也有状态和行为,软件对象用变量表示对 象的状态、用方法来实现对象的行为。
❖ 一个软件对象就是变量和相关方法的集合。
软件对象 = 变量+方法
面向对象编程PPT课件
4.1.1 对象
现实世界中,对象(object)是状态(属性)和行为 的结合体,对象随处可见。对象普遍具有的特征是状 态和行为。 在开发软件的信息世界中,对象定义为相关数据和方 法的集合。对象是现实世界对象的抽象模型。从现实 世界对象中抽象出来的对象使用数据和方法描述其在 现实世界中的状态和行为特征,一般通过变量描述其 状态,通过方法实现其行为。变量是一种有名称的数 据实体,而方法则是和对象相关的函数或过程。
例4.1 设计一个Applet小程序,使其可以进行简单的 加法运算。
// 源程序名: Addition.java import java.awt.*; import java.awt.event.*; import java.applet.Applet;
4.1.5 继承
面向对象编程允许用一个类定义另外一个类。子类继 承了父类的状态和行为,但并不局限于此。也就是说, 子类可以添加新的变量和方法,有自己的特点。子类 还可以覆盖(override)继承下来的方法,实现特殊 要求。
继承(inheritance)不但可以发生在同一个层次上, 也可以发生在不同层次上。这种继承形成了一棵倒置 的树,从根部开始发芽分支,长成一棵继承树。在 Java系统中这棵树的根就是Object类,所有层次的类 都 是 从 Object 类 那 里 直 接 或 间 接 地 衍 生 下 来 的 。 Object仅提供了所有的类在Java虚拟机上运行时所需 要的基本状态和方法。一般来说,层次越高,类就越 抽象,反之类就越具体。
Java不支持多继承,子类只能有一个父类。有时需要 使用其他类中的方法,但又无法直接继承,在这种情 况下,可以使用接口技术。例如,Java的事件单独放 在一个事件类中,子类一般不直接从这个事件类派生, 而由Applet类派生,但子类运行时需要响应各种事件, 则需要使用事件类的处理方法。
现实世界中,对象(object)是状态(属性)和行为 的结合体,对象随处可见。对象普遍具有的特征是状 态和行为。 在开发软件的信息世界中,对象定义为相关数据和方 法的集合。对象是现实世界对象的抽象模型。从现实 世界对象中抽象出来的对象使用数据和方法描述其在 现实世界中的状态和行为特征,一般通过变量描述其 状态,通过方法实现其行为。变量是一种有名称的数 据实体,而方法则是和对象相关的函数或过程。
例4.1 设计一个Applet小程序,使其可以进行简单的 加法运算。
// 源程序名: Addition.java import java.awt.*; import java.awt.event.*; import java.applet.Applet;
4.1.5 继承
面向对象编程允许用一个类定义另外一个类。子类继 承了父类的状态和行为,但并不局限于此。也就是说, 子类可以添加新的变量和方法,有自己的特点。子类 还可以覆盖(override)继承下来的方法,实现特殊 要求。
继承(inheritance)不但可以发生在同一个层次上, 也可以发生在不同层次上。这种继承形成了一棵倒置 的树,从根部开始发芽分支,长成一棵继承树。在 Java系统中这棵树的根就是Object类,所有层次的类 都 是 从 Object 类 那 里 直 接 或 间 接 地 衍 生 下 来 的 。 Object仅提供了所有的类在Java虚拟机上运行时所需 要的基本状态和方法。一般来说,层次越高,类就越 抽象,反之类就越具体。
Java不支持多继承,子类只能有一个父类。有时需要 使用其他类中的方法,但又无法直接继承,在这种情 况下,可以使用接口技术。例如,Java的事件单独放 在一个事件类中,子类一般不直接从这个事件类派生, 而由Applet类派生,但子类运行时需要响应各种事件, 则需要使用事件类的处理方法。
第四章 面向对象编程PPT课件
方法的形参有传值调用和引用调用。前者 传一个变量副本,变量副本的值改变不影 响原变量;后者传一个变量地址,会改变 原变量的值。
与C++不同,这里变量地址不叫指针,而 叫引用,引用有 ref 和 out 两个关键字。
ref 引用与 out 引用
无论 ref 还是 out 引用,都可以使方法返回 多个参数的值,这是由引用的特性决定的。
第四章 面向对象编程 (4、5
一、类的构建及使用 二、类的方法参数的传递 三、类的继承 四、委托与事件 五、其它
一、 类的构建及使用
1.1 类的构建
我们已经简单介绍过类的基本结构
P66 例4-1 该项目中包含2个类,注意前一个类没有 main 方法。 如何在一个项目中添加多个类?
建立新项目后,可以新建类,也可将现有 的类直接 添加进来。
out 引用的例子
P73 例题 4-8 class Program {
public static void MyMethod(out int a, out int b) { a = 5; b = 6; } //函数中赋值
static void Main() { int x, y; MyMethod( out x, out y ); //引用时无初值 Console.WriteLine ( "调用MyMethod后,x={0},y={1}", x, y); Console.ReadLine(); }
两种引用的区别:分别为方法输入或输出参 数
ref:修改原变量的值,参数要求有初值
– 是函数的输入参数,在函数内部的任何改变, 都将影响函数外部该参数的值。
out:修改原变量的值,参数可以无初值
– 目的在于获取函数的返回值,是输出参数,必 须在函数内部对该参数赋值,这将冲掉函数外 部的任何赋值,使得函数外部赋值毫无意义。
与C++不同,这里变量地址不叫指针,而 叫引用,引用有 ref 和 out 两个关键字。
ref 引用与 out 引用
无论 ref 还是 out 引用,都可以使方法返回 多个参数的值,这是由引用的特性决定的。
第四章 面向对象编程 (4、5
一、类的构建及使用 二、类的方法参数的传递 三、类的继承 四、委托与事件 五、其它
一、 类的构建及使用
1.1 类的构建
我们已经简单介绍过类的基本结构
P66 例4-1 该项目中包含2个类,注意前一个类没有 main 方法。 如何在一个项目中添加多个类?
建立新项目后,可以新建类,也可将现有 的类直接 添加进来。
out 引用的例子
P73 例题 4-8 class Program {
public static void MyMethod(out int a, out int b) { a = 5; b = 6; } //函数中赋值
static void Main() { int x, y; MyMethod( out x, out y ); //引用时无初值 Console.WriteLine ( "调用MyMethod后,x={0},y={1}", x, y); Console.ReadLine(); }
两种引用的区别:分别为方法输入或输出参 数
ref:修改原变量的值,参数要求有初值
– 是函数的输入参数,在函数内部的任何改变, 都将影响函数外部该参数的值。
out:修改原变量的值,参数可以无初值
– 目的在于获取函数的返回值,是输出参数,必 须在函数内部对该参数赋值,这将冲掉函数外 部的任何赋值,使得函数外部赋值毫无意义。
面向对象ppt课件
类型——sbyte、byte、short、ushort、int、uint、
long、ulong、char、float、double、decimal、
bool、string、枚举类型或引用类型。常数表达式的值
类型应与目标类型一致,或者通过隐式转换规则转换成
目标类型。
11
例如: class A_const {
实例构造函数注意点:
1. 构造函数修饰符 ——public、protected、internal、private、extern 一般地,构造函数总是public类型的。 如果是private类型的,表明类不能被外部类实例化。
2. 标识符([参数列表] opt)——构造函数名 必须与这个类同名,无返回类型和返回值 构造函数可以有0~n个参数——构造函数重载
122.字段声明源自语法形式:[属性集信息] [字段修饰符] 类型 变量声明列表;
1. 变量声明列表——标识符或用逗号“,”分隔的多个标 识符,并且变量标识符还可用赋值号“=”设定初始值。
2. 字段修饰符——new、public、protected、private、 internal、 static、readonly、volatile
3. 类是对象的模板,对象是类的具体化或类的实例
示例: 学生——类 各位同学——对象
姓名、性别、年龄等:属性 学习课程、参加社会活动:方法
2
对象 与 类
属性 车轮数量 档的数量
行为
刹车 加速 换档
属性 型号 价格 里程
行为 行驶 起动 停车
属性 名称 颜色 品种
行为 犬吠 摇尾巴 吃东西
3
面向对象程序设计在处理对象时, 必须遵循的三个原则:
{
C#面向对象编程基础PPT课件
}
精选PPT课件
3
5.2.2 创建类实例
类实例创建格式: 类名 实例名 = new 类名([参数]);
例如,创建Person类的实例: Person myTest1 = new Person(“张三”,21,60012);
也可以分两步创建Person类的实例: Person myTest2; MyTest2 = new Person(“张三”,21,60012);
◆ 事件:由类产生的通知,用于说明发生了什么事情。
◆ 索引器:又称下标指示器,允许编程人员访问数组时,通
过索引器访问类的多个实例。
◆ 运算符:定义类的实例能使用的运算符。
◆ 构造函数:在类被实例化时首先执行的函数,主要完成对
象初始化操作。
◆ 析构函数:在对象被销毁之前最后执行的函数,主要完成
对象结束时的收尾工作。精选PPT课件
{ double s;
s = 3.14 * r * r ;
return s;
}
}
精选PPT课件
16
5.4.2 方法的参数
1.值参数 在方法声明时不加修饰的形参数,它表明实参与形
参之间按值传递。
【例5-7】 下面的程序演示了当方法Sort传递的是 值参数时,对形参的修改不影响其实参。
精选PPT课件
17
Sort(a, b, c);
Console.WriteLine("a={0},b={1},c={2}", a, b, c);
}
}
精选PPT课件
18
5.4.2 方法的参数
2.引用参数 如果调用一个方法,期望能够对传递给它的实
际变量进行操作,按值传递是不可能实现的。所 以C#用了ref修饰符来解决此类问题,它告诉编译 器,实参与形参的传递方式是引用。
精选PPT课件
3
5.2.2 创建类实例
类实例创建格式: 类名 实例名 = new 类名([参数]);
例如,创建Person类的实例: Person myTest1 = new Person(“张三”,21,60012);
也可以分两步创建Person类的实例: Person myTest2; MyTest2 = new Person(“张三”,21,60012);
◆ 事件:由类产生的通知,用于说明发生了什么事情。
◆ 索引器:又称下标指示器,允许编程人员访问数组时,通
过索引器访问类的多个实例。
◆ 运算符:定义类的实例能使用的运算符。
◆ 构造函数:在类被实例化时首先执行的函数,主要完成对
象初始化操作。
◆ 析构函数:在对象被销毁之前最后执行的函数,主要完成
对象结束时的收尾工作。精选PPT课件
{ double s;
s = 3.14 * r * r ;
return s;
}
}
精选PPT课件
16
5.4.2 方法的参数
1.值参数 在方法声明时不加修饰的形参数,它表明实参与形
参之间按值传递。
【例5-7】 下面的程序演示了当方法Sort传递的是 值参数时,对形参的修改不影响其实参。
精选PPT课件
17
Sort(a, b, c);
Console.WriteLine("a={0},b={1},c={2}", a, b, c);
}
}
精选PPT课件
18
5.4.2 方法的参数
2.引用参数 如果调用一个方法,期望能够对传递给它的实
际变量进行操作,按值传递是不可能实现的。所 以C#用了ref修饰符来解决此类问题,它告诉编译 器,实参与形参的传递方式是引用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
理发师
厨师
理发
属性:肚子饿与不饿 方法:会理发
属性:头发长与短 方法:会做饭
做饭
面向对象的程序设计就是在结构化的程序设 计的基础上用另外一种方式方法进行程序设 计的思路,把现实世界中的对象定义为一个 类,用定义类和定义对象这种方法来编程, 再往后就是用可视化的程序设计,软件里预 先做好很多类,比如要在屏幕上显示一个窗 口,那么用鼠标在控件上点窗口类,并拖到 屏幕上放开即可,像VB。
现实生活中对象,可以是有生命的个体,比如一个人或一只 老虎。也可以是无生命的个体,比如一辆汽车或一台计算机。 也可以是一个抽象的概念,如天气的变化或鼠标所产生的事 件。属性+行为
在开发软件的信息世界中,对象与现实生活中的对象极为相 似,是由属性和行为的组成的,Java程序中一般通过变量描 述其属性,通过方法实现其行为。对象定义相关数据和方法 的集合,通过方法来操作或改变属性,对象和对象之间通过 调用方法实现相互通信。 对象=数据+方法
第4章 面向对象编程
主要任务: 理解面向对象编程的基本概念 了解类的封装方法 如何创建类和对象 了解成员变量和成员方法的特性 学习使用OOP方法进行程序设计
本章主要内容
1.面向对象基本概念 2.类与对象 3.成员变量与访问限制 4.成员方法
4.1 面向对象基本概念
面向对象编程(Object Oriented Programming, OOP)是一种全新的编程理念,而 Java是一种完 全的面向对象编程语言,它的所有程序都是面向对 象的,所以讲Java就是讲面向对象。
从众多对象中归纳出“类”
电 品 型 行电品型行视牌号为电品型行视牌号为机:::视牌号为机:::飞开A3调4机:::开BL2调利声寸关1GC4东开声寸浦关音高4选芝音寸纯关清颜选频液平颜选色频道晶色频道道 调声音 颜色
一、结构化(面向过程的)程序设计
这种程序设计是围绕解题过程进行,必须向 计算机详细说明怎样完成预定的功能:第一 步做什么,第二步做什么,第三步做什么, 哪些操作只做一遍,哪些重复多遍,哪些某 条件成立时做等等。
程序=算法+数据结构
面向过程的程序设计是一种数学思维或计算 机思维方法,与人们认识世界的方法不同。
类是对具有相似属性和行为的一组对象的抽象。类就是对 象的软件图纸、模板或原型,它定义了同类对象共有的变 量和方法。
类与对象的关系如同汽车与具体的一辆车的关系,是抽象 和具体的关系。类是对多个对象进行综合抽象的结果,对 象又是类的个体实物,一个对象是类的一个实例,和一个 对象相关的变量称为实例变量,相关的方法称为实例方法。
它的本质是把数据和处理数据的过程当成一个整体-对象,采用数据抽象和信息隐蔽技术,将这个整体 抽象成一种新的数据类 封装 继承 多态
4.1.1 对象
对象是构成世界的一个独立单位,是我们认识世界的基本单 元,它具有自己的静态特征(状态/属性)和动态特征(操作/ 行为)。
面向对象的程序设计方法就是模拟人类习惯的思维方法,用 对象分解取代功能分解,把程序分解成许多对象,不同对象 之间通过发送消息向对方提出服务要求,接受消息的对象主 动完成指定功能,程序中的所有对象分工协作,共同完成整 个程序的功能 。
程序=对象+消息
如:理发师1.理发(板寸) 要求理发师1为其理板寸发型 这是一个消息,消息由三部分组成:接收消息 的对象名、请求的方法、参数。
人类习惯的思维活动是什么样的?
举例:一位厨师的头发长了需要理发,他会走进理发馆,告 诉理发师要理什么发式。也就是说,为了解决头发过长的问 题,厨师只需要向理发师提出要求,告诉他“做什么”(即, 理什么发式),并不需要告诉理发师“怎样做”,理发师自 己知道第一步做什么,第二步做什么…….,同样理发师肚子 饿了,只需要走进餐馆点好自己要吃的饭菜,厨师自己知道 该怎样做,并不需要顾客告诉他做菜的步骤,事实上,顾客 无需知道做菜的具体步骤。所以可看出人类习惯的解决问题 的方法是采用“顾客--服务员”的工作模式。
对象的两个特征:属性(Property)和行为(Behavior) 如:一个人的属性有:姓名、性别、年龄、身高、体重等 行为有:唱歌、打球、骑车、学习等。
变量是一种有名称的数据实体,而方法
则是和对象相关的函数或过程。
4.1.2 类
在Java程序中,类是创建对象的模板,对象是类的实例,任何一个对象 都是隶属于某个类的。Java程序设计是从类的设计开始的,所以,在 进一步讲述对象的知识之前,必须先掌握类的概念。
二、面向对象的程序设计
面向对象程序设计采纳了结构化程序设计的思想精 华,并且用一些新的概念与其结合,产生了一种新 的组织程序的方法。
从广义上讲,组织程序代码的方法有两种,一种是 围绕代码即围绕过程或者功能进行,是一种模拟计 算机思维的程序设计方法;
另一种是围绕数据,即以“数据控制代码访问”为 原则,是一种对现实世界的直接模拟,按照人类习 惯的思维活动进行程序设计(分类研究)。
什么是OOP?什么是对象?类又是什么?它们之间 有什么关系?对象是如何通过消息和外部通讯的?
下面的内容就讨论这些问题。
OOP介绍
程序设计方法是逐步发展的,以前采用面向过程的 设计方法,是因为计算机产生的初期主要是用于科 学计算,如飞机设计、计算导弹的飞行轨迹等,这 些问题的求解主要是过程计算,因此,程序设计的 目标与主要工作就是设计求解问题的过程。而现在 随着以Windows为代表的操作系统的广泛使用,图 形用户界面的普及,比如word、excel等软件,可 根据用户操作随时响应,若用面向过程则恐怕这些 软件依然只能按照规定的操作步骤进行操作了。
面向对象程序设计的基本思想是在程序空间内,利 用数据抽象的方法对客观世界中的实体进行描述, 即将一种数据结构和操作数据结构的方法捆在一起, 封装在一个程序实体内,从而实现数据封装和信息 隐蔽。把数据结构隐藏在操作的后面,通过“操作” 作为接口界面实现与外部的交流,即消息传递。对 外部来讲,只知道“它是做什么的”,而不知道 “它是如何做的”。