第4章面向对象程序设计基本概念 对象( object 我们可以把生活所在的真实世界当作是 由许多大小不同的对象所组成的。对象 可以是有生命的个体,比如一个人或 ■对象也可以是无生命的个体,比如一辆汽车或一 计算机 ■对象也可以是一件抽象的概念,如天气的变化或 鼠标所产生的事件
第4章 面向对象程序设计基本概念 ◼ 对象 (object) ◼ 我们可以把生活所在的真实世界当作是 由许多大小不同的对象所组成的。对象 可以是有生命的个体,比如一个人或一 只鸟。 ◼对象也可以是无生命的个体,比如一辆汽车或一 台计算机。 ◼对象也可以是一件抽象的概念,如天气的变化或 鼠标所产生的事件
对象的特征 对象有两个特征:状态和行为。例如:一个人有他的身高或 体重作状态,并有他的行为——如唱歌、打球、骑摩托车、 开汽车。一只狗有它的颜色作状态,也有它的行为,如吠叫 或跳跃。 而在程序设计中,软件对象的概念由真实世界对象而来。对 象的概念是面向对象软件对象将状态保存在变量或称数据字 段里。而行为则借助方法( methods)为工具来实现。 rethod: E data: field: I 方法(行为) 数据字段(状态) data: field: : n method: i
对象的特征 ◼ 对象有两个特征:状态和行为。例如:一个人有他的身高或 体重作状态,并有他的行为——如唱歌、打球、骑摩托车、 开汽车。一只狗有它的颜色作状态,也有它的行为,如吠叫 或跳跃。 ◼ 而在程序设计中,软件对象的概念由真实世界对象而来。对 象的概念是面向对象软件对象将状态保存在变量或称数据字 段里。而行为则借助方法(methods)为工具来实现。 data field 1 data field n method 1 method n 方法(行为) 数据字段(状态)
软件对象的定义 我们可以对软件对象 作以下的定义 定义:对象是由数据字段(变量)及相关方法所组成的软件包 software bundle) data field IF 公用方法 I data field n 私用数据细节 method
软件对象的定义 ◼ 我们可以对软件对象 作以下的定义—— data field 1 data field n method 1 method n 公用方法 私用数据细节 定义:对象是由数据字段(变量)及相关方法所组成的软件包(software bundle)
汽车对象 以汽车为例,我们可定义其状态与方法 如 颜色 排档数 煞车 排气量 开大灯[开气 轮胎型号
汽车对象 ◼ 以汽车为例,我们可定义其状态与方法 如: 换档 开大灯 煞车 开冷气 颜色 排档数 排气量 轮胎型号
OOP三大特性:封装、继承与多态 封装 从軟件对象的表示图里,我们可以看到对象的核心是 由对象的变量所构成。对象的方法包围此核心,使核 心对其他的对象是隐藏的,而将对象的变量包裹在其 对象方法的保护性监护之下就称之为封装。封装用来 将对其他对象不是重要的实行细节隐藏起来。就好比 你开车换档时,并不须要知道变速箱、齿轮等机械是 如何运作的,你只要知道将档排到那里即可。同样在 软件程序中,你并不需要知道一个类的完整结构是如 何,你只要知道要调用哪一个方法即可。OOP将数据 成员和属于此数据的操作方法,都放在同一个实体或 称对象( object)中,这就是所谓的封装
OOP三大特性:封装、继承与多态 ◼ 封装 ◼ 从软件对象的表示图里,我们可以看到对象的核心是 由对象的变量所构成。对象的方法包围此核心,使核 心对其他的对象是隐藏的,而将对象的变量包裹在其 对象方法的保护性监护之下就称之为封装。封装用来 将对其他对象不是重要的实行细节隐藏起来。就好比 你开车换档时,并不须要知道变速箱、齿轮等机械是 如何运作的,你只要知道将档排到那里即可。同样在 软件程序中,你并不需要知道一个类的完整结构是如 何,你只要知道要调用哪一个方法即可。OOP将数据 成员和属于此数据的操作方法,都放在同一个实体或 称对象(object)中,这就是所谓的封装
封装 封装的用意,是避免数据成员被不正当的存取,以达 到信息隐藏的效果,避免错误的存取发生。封装相关 变量及万法到一个软件包里,是一个简单但却很有 能力的理念,此法对软件开发者提供了两个主要的好 处 1.模块化:一个对象的原始文件可以独立地被撰写及 维护而不影响其他对象。而且对象可以轻易地在系统 中来回地传递使用。就好像你借车给朋友,而它仍能 正常地运作一样 ■2信息隐藏:一个对象有一个公开的接口可供其他的 对象与之沟通,但对象仍然维持私有的信息及方法, 这些信息及方法可以在任何时间被修改,而不影响那 些依赖此对象的其他对象
封装 ◼ 封装的用意,是避免数据成员被不正当的存取,以达 到信息隐藏的效果,避免错误的存取发生。封装相关 的变量及方法到一个软件包里,是一个简单但却很有 能力的理念,此法对软件开发者提供了两个主要的好 处: ◼ 1.模块化:一个对象的原始文件可以独立地被撰写及 维护而不影响其他对象。而且对象可以轻易地在系统 中来回地传递使用。就好像你借车给朋友,而它仍能 正常地运作一样 。 ◼ 2.信息隐藏:一个对象有一个公开的接口可供其他的 对象与之沟通,但对象仍然维持私有的信息及方法, 这些信息及方法可以在任何时间被修改,而不影响那 些依赖此对象的其他对象
消息( message) 单一对象本身并不是很有用处。而通常是成为一个 包含许多对象的较大型程序的一个组件时,通过程 序中这些对象的交互,程序可以达成更高级的功能 以及更复杂的行为,就如汽车自己本身并不会产生 行为,而是当你(另一个对象)发动汽车,踩油 (交互)后,汽车内部就发生一连串复杂的行为 软件对象是通过传送消息给其他对象来达到交互及 沟通的作用。如下图所示 消息 对象A 对象B
消息 (message) ◼ 单一对象本身并不是很有用处。而通常是成为一个 包含许多对象的较大型程序的一个组件时,通过程 序中这些对象的交互,程序可以达成更高级的功能 以及更复杂的行为,就如汽车自己本身并不会产生 行为,而是当你(另一个对象)发动汽车,踩油门 (交互)后,汽车内部就发生一连串复杂的行为。 ◼ 软件对象是通过传送消息给其他对象来达到交互及 沟通的作用。如下图所示: data field 1 data field n method n method 1 对象A 对象B 消息
消息( message) ■有时候接受消息的对象需要更多的信息,以正确地 知道要做什么事,例如开车换档时要指明是要换低 速或高速档 个信息是由3个元素所组成 ■1信息目标对象(你的汽车) 2执行方法的名字(换档) 3执行方法所需用的参数( parameters)(低、高速 档) ■信息的好处 1.一个对象的行为是通过它的方法来表达,所以(除 了直接的变量存取外)信息传递已支持所有对象间 可能的交互 2对象不需要在相同的程序中,或者相同的机器上送 出或接受与其他对象间的信息
◼ 有时候接受消息的对象需要更多的信息,以正确地 知道要做什么事,例如开车换档时要指明是要换低 速或高速档: ◼ 一个信息是由3个元素所组成: ◼ 1.信息目标对象(你的汽车)。 ◼ 2.执行方法的名字(换档)。 ◼ 3.执行方法所需用的参数(parameters)(低、高速 档)。 ◼ 信息的好处 ◼ 1.一个对象的行为是通过它的方法来表达,所以(除 了直接的变量存取外)信息传递已支持所有对象间 可能的交互。 ◼ 2.对象不需要在相同的程序中,或者相同的机器上送 出或接受与其他对象间的信息。 消息 (message)
类( class) ■在真实世界里,有许多同“种类”的对 象。而这些同“种类”的对象可被归类 为一个“类”。例如我们可将世界上所 有的汽车归类为汽车类,所有的动物归 为动物类
类 (class) ◼ 在真实世界里,有许多同“种类”的对 象。而这些同“种类”的对象可被归类 为一个“类”。例如我们可将世界上所 有的汽车归类为汽车类,所有的动物归 为动物类
实例( instance) 汽车类有些共同的状态 (汽缸排气量,排档数, 颜色,轮胎数..)和 行为(换档,开灯,开 冷气.),但每一台 汽车个别的状态及方法 可不同于且独立于其他 汽车。 某个人的汽车只是这世 界中许多汽车中的一个 我们就称此汽车对象是 汽车类中的一个实例 (instance)
实例 (instance) ◼ 汽车类有些共同的状态 (汽缸排气量,排档数, 颜色,轮胎数……)和 行为(换档,开灯,开 冷气……),但每一台 汽车个别的状态及方法 可不同于且独立于其他 汽车 。 ◼ 某个人的汽车只是这世 界中许多汽车中的一个。 我们就称此汽车对象是 汽车类中的一个实例 (instance)