当前位置:文档之家› 第9章面向对象方法学

第9章面向对象方法学


--意义

允许每个对象以自己最合适的方式去响应共同的消 息,从而增强软件的灵活性和可复用性。
9.2 面向对象的概念

多态性的示例
海尔 长虹 TCL
9.3 面向对象建模
建立问题模型是人们理解表达问题的方法之一。 模型是对事物作出的一种抽象,是对事物的一
种形式化的描述。 模型常由专门的语言 (一组图示符号和规则)来 描述. 面向对象建模就是根据面向对象观点(模拟人类 习惯的思维方式)建立问题的解模式. 面向对象的 实现能将此模式在计算机上实施.
(2) 面向对象
UML还吸取了面向对象技术领域中其他流派的长处。UML符号表示 考虑了各种方法的图形表示,删掉了大量易引起混乱的、多余的和极 少使用的符号,也添加了一些新符号。 9.3 面向对象建模
(3) 可视化、表示能力强
事件指对象之间一次消息的传递

多个事件按照时间顺序可构成事件序列
消息 vs. 事件:静 vs. 动
9.2 面向对象的概念

消息与对象

一个对象能接收不同形式不同内容的多个消息。 相同形式的消息可以送往不同的对象。 对于相同形式的消息,不同对象可以有 不同的解释,可以作出 不同的反映。

消息与方法
面向对象方法是一种新的思维方法,它是把程 序看作是相互协作而又彼此独立的对象的集合。 这样就减小了语义断层:系统中解空间对象可以 直接模拟问题空间的对象,解空间与问题空间 的结构十分一致。

9.1 面向对象方法学概述
面向对象方法具有下述4个要点: (1)认为客观世界是由各种对象组成的,任何事物都 是对象,复杂的对象可以由比较简单的对象以某种 方式组合而成。因此,面向对象的软件系统是由对 象组成的。 (2)类(class)是对一组对象的抽象,集中了该组对象 的共同特性(一组数据和一组方法)。对象是类的 实例。
9.1 面向对象方法学概述
与传统方法相反,面向对象方法是一种以数据 或信息为主线,把数据和处理相结合的方法。 面向对象方法把对象作为由数据及可以施加在 这些数据上的操作所构成的统一体。 对象与传统的数据有本质区别,它不是被动地 等待外界对它施加操作,相反,它是进行处理 的主体。

9.1 面向对象方法学概述
9.2 面向对象的概念

类的两种图形记法:
类名 属性:
例: Teacher类
teacher
操作
Username Password
属性: classes 操作:
Addclass() Removeclass()
9.2 面向对象的概念

对象

状态:张三,30岁,计算机系,讲师,1000元 行为:提职称,调工资
统一建模语言UML
2000年 (计划的较小修订) 1999
<documents> UML 1.4 <documents> UML 1.3 <documents> UML 1.2 <documents> UML 1.1 <documents> UML1.0 <documents> UML 2.0
1998 1997年9月最后 提交给OMG 1997年1月最 初提交给 OMG 1996 1995
9.4 对象模型
对象模型表示静态的、结构化的系统的“数据” 性质。它是对模拟客观世界实体的对象以及对 象彼此间的关系的映射,描述了系统的静态结 构。
用UML表达的对象模型由类图(类和类间关系)构 成.
9.4.1 类图的基本符号
类图描述类及类与类之间的静态关系。类图是一种 静态模型,它是创建其他UML图的基础。一个系统 可以由多张类图来描述,一个类也可以出现在几张 类图中。 1. 定义类 UML中类的图形符号为长方形,用两条横线把长方 形分成上、中、下3个区域(下面两个区域可省 略),3个区域分别放类的名字、属性和服务,如 图9.5所示。
9.4.1 类图的基本符号 2. 定义属性
UML描述属性的语法格式如下: [可见性] 属性名: 类型名=初值 {性质串} ——类的属性中还可以有一种能被该类所有对象共享的 属性,称为类的作用域属性,也称为类变量。C++语言 中静态数据成员就是这样的属性,在类图中表示为带下 划线的属性。 例如:发货单类的类变量“货单数”: -货单数:Integer



在问题空间中……
“人以类聚,物以群分” 类代表着具有类似性质的一组对象 类中的每一个对象即为类的不同实例 (instance)
在解空间 (计算机系统) 中……



类是对一组对象的抽象,集中了该组对象的共同特性。 在构造软件时,类实际上是具有特定功能的模块,其代码由该 种所有对象所共享。 类 vs. 对象:静 vs. 动。

类 (教师)

属性:姓名,年龄,系别,职称,工资 操作:提职称,调工资 方法 (指操作的具体代码实现)

实际上,类是创建对象的模板!
9.2 面向对象的概念

消息和事件(message & event) 消息是对象之间进行通信的构造或结构

消息分为请求消息和完成消息两种 (由消息模式描述) 消息模式:发送对象、接收对象、内容
9.1 面向对象方法学概述

对象?(面向对象语言)
在问题空间中,对象是…… • 现实世界中存在的实体 • 应用所关心的抽象概念、规则、事件、或者具有明 确边界和意义的具体事物
在解空间 (计算机系统) 中,对象是…… • 问题空间中的对象在计算机系统中的表示 • 封装 (encapsulation) 了数据和行为的通信单位
9.1 面向对象方法学概述
•面向对象方法学的要点
现实世界
领域知识 抽象
生成知识 设计知识 模拟 解空间 (计算机系统) 实现域
问题空间 问题域
9.1 面向对象方法学概述

客观世界中的实体既具有静态的属性又具有动 态的行为。然而传统语言提供的解空间对象实 质上却仅是描述实体属性的数据,必须在程序 中从外部对它施加操作,才能模拟它的行为。
9.3 面向对象建模
面向对象方法需要建立3种形式的模型:
1)描述系统数据结构的对象模型 2)描述系统控制结构的动态模型 3)描述系统功能的功能模型
在不同的应用问题中,这3种模型的相对重要程度会有 所不同,对象模型始终都是最重要、最基本、最核心的。 典型的软件系统组合了上述3方面内容: 使用数据结构(对象模型),执行操作(动态模型),并且完 成数据值的变化(功能模型)。 本课程介绍UML作为描述这些模型的语言.
9.1 面向对象方法学概述

面向对象的方法学可以用下列方程来概括:
OO=objects +classes +inheritance +communication with messages
面向对象就是既使用对象又使用类和继承等机 制,而且对象之间仅能通过传递消息实现彼此 通信。 也可以说,只有同时使用对象、类、继承和消 息的方法,才是真正面向对象的方法。
交 互

注 释
用 对 构 实 类 例 象 件 施 图 图 图 图 图 节 点 顺 协 状 活 序 作 态 动 图 图 图 图
用 接 类 例 口
协 作
活 动 类
组 件
统一建模语言UML
(1) 统一标准
UML统一了Booch、OMT和OOSE等方法中的基本概念,已成为OMG的 正式标准,提供了标准的面向对象的模型元素的定义和表示。
9.4.1 类图的基本符号 2. 定义属性
UML描述属性的语法格式如下: [可见性] 属性名: 类型名=初值 {性质串} ——属性的[可见性]:
公有的(public) (+) 、 私有的(private) (-) 保护的(protected) (#) 注意: 没有默认的可见性。
——类型名表示该属性的数据类型,它可以是基本数据 类型,也可以是用户自定义的类型。 ——{性质串}明确地列出该属性所有可能的取值,也可 以说明属性的其他性质。 e.g. “+婚否:布尔=假{真,假}”
9.4.1 类图的基本符号
图9.5 表示类的图
9.4.1 类图的基本符号
为类命名时应该遵守以下几条准则: (1) 使用标准术语。 例如,“交通信号灯”比“信号单元”这个名字好, “传送带”比“零件传送设备”好。 (2) 使用具有确切含义的名词。 例如,“库房”比“房屋”或“存物场所”更确切。 (3) 必要时用名词短语作名字。 例如,“最小的领土单元”、“储藏室”、“公司员 工”等都是比较恰当的名字。 总之,名字应该是富于描述性的、简洁的而且无二义性的。
第九章 面向对象方法学引论
9.1 9.2 9.3 9.4 9.5 9.6 9.7 面向对象方法学概述 面向对象的概念 面向对象建模 对象模型 动态模型 功能模型 3种模型之间的关系
9.1 面向对象方法学概述
-- 源于20世纪60年代后期出现的面向对象编程语言 Simula-67(类和对象的概念),逐步形成了面向对象 方法学 。到了20世纪90年代,面向对象方法学已经 成为人们在开发软件时常选的范型。

9.2 面向对象的概念


对象 类 类间关系 消息与事件 多态性
9.2 面向对象的概念

对象 定义:是类的实例,是属性+方法封装在一起构 成的实体。 对象的三要素是:名称+属性+方法
例:三角形对象
triangle (10,50) (30,60) (20,30) Draw Move(Δx, Δy) Contains?(a point)
3. 定义服务 服务也就是操作,UML描述操作的语法格式如下: 可见性 操作名(参数表): 返回值类型{性质串} 参数表是用逗号分隔的形式参数的序列。描述一个参数的 语法如下: 参数名: 类型名=默认值 当操作的调用者未提供实在参数时使用默认值。 与属性类似,在类中也可定义类作用域操作:这种操作只 能存取本类的类作用域属性。 “- set_counters(Integer=0, Integer): Integer {-1,0}”
相关主题