6c5f961f7f7dbba1a68532b1a7fd2fa4.ppt
- Количество слайдов: 92
第 9 章 面向对象与UML
9. 1 面向对象的基本概念
9. 1. 1 什么是面向对象的开发方法 OOSD (Object-Oriented Software Development) 法是一种 把面向对象的思想应用于软件开发过程, 指导开发活动的系统方法。 问题空间—软件系统所涉及到的应用领域和业务范 围(现实世界)。 解空间 — 用于解决某些问题的软件系统。 一、软件开发过程 问题空间 (现实世界 ) 映射 解空间 (软件系统)
二、面向对象技术的特点 1. 对软件开发过程所有阶段进行综合考虑。 使问题空间与解空间具有一致性, 降低复杂性。 2. 软件生存期各阶段所使用的方法、技术具有高 度的连续性,用符合人类认识世界的思维方式 来分析、解决问题。 问题空间 (现实世界) 实体n 解空间 (软件系统) 自然、连续 对象 2 实体 1 对象 1 实体 2 对象n
3. 将OOA、OOD、OOP有机地集成在一起。有利于 系统的稳定性. OOA(Object-Oriented Analysis) OOD(Object-Oriented Design) OOP(Object-Oriented Program) 以对象为中心各种构造系统, 而不是以功能为中心, 能很好地适应需求变化. 4. 具有良好的可重用性 由于对象所具有的封装性和信息隐蔽,具有很强的 独立性。
9. 1. 2 面向对象的基本概念 理解面向对象的基本概念对于学习和掌握面向 对象的开发方法是十分重要的。 对象(Object) 类(Class) 继承(Inheritance) 消息(Information) 多态性(Polymorphism) 永久对象(Persistent object)
1. 对象(Object)是客观事物或概念的抽象表述, 即对客观存在的事物的描述统称为对象。 对象可以是事、物、或抽象概念 ,是将一组 数据和使用该数据的一组基本操作或过程封装在一 起的实体。 属性 (attribute) — 对象本身的性质。 操作(operation) — 给对象定义一组运算。 对象将它自身的属性及运算“包装起来”,称 为“封装”(encapsulation). 对象的最基本的特征是封装性和继承性。
2. 类(Class) 类又称对象类 ( Object Class) , 是 一组具有相 同属性和相同操作的对象的集合。 在一个类中,每个对象都是类的实例(instance) , 它们都可以使用类中提供的函数。 类具有属性,用数据结构来描述类的属性, 类具有操作,它是对象的行为的抽象,操作实现 的过程称为方法(method) ,方法有方法名,方法 体和参数。 由于对象是类的实例,在进行分析和设计时, 通常把注意力集中在类上,而不是具体的对象上。
对象和类的描述 类和对象一般采用“名字”、“属性”和“运算”来描 述。 几何对象 类名 类 人 文件 属性 姓 名: 字符串 年 龄: 整 型 文件名 文件大小 最近更新日期 运算 改换 作 改换地址 打印 图 5. 1 对象类的描述 (人) 对象 (人) 李军 24 张红兵 28 程序员 无 绘图员 人民路 8号 图 5. 2 对象的描述 颜色 位置 移动(delta:矢量) 选择(P: 指针型): 布尔型 旋转(角度)
3. 继承 (Inheritance) 继承是使用现存的定义作为基础,建立新定义的 技术。是父类和子类之间共享数据结构和方法的机制, 这是类之间的一种关系。 继承性分: 单重继承:一个子类只有一个父类。即子类只继承 一个父类的数据结构和方法。 多重继承:一个子类可有多个父类。继承多个父类 的数据结构和方法。 基类 现存类定义 继 承 父类(基类) 新类定义 子类(派生类) 图 5. 3 继承性 子类A 子类B 图 5. 4 继承性描述
4. 消息(Message) 消息就是向对象发出的服务请求(互相联系、 协同 作等)。对象之间的联系可表示为对象间的 消息传递,即对象间的通讯机制。 一个消息应该包含以下信息:消息名、接收消 息对象的标识、服务标识 、消息和方法、输入信 息、回答信息。 在对象的操作中当一个消息发送给某个对象时, 消息包含接收对象去执行某种操作的消息。
5. 多态性和动态绑定 多态性(Polymorphism)是指相同的操作或函数、 过程作用于不同的对象上并获得不同的结果。 即相同的操作的消息发送给不同的对象时,每个 对象将根据自己所属类中定义的操作去执行,产生不 同的结果。 例如: “绘图”操作,作用在“椭圆” 和“矩形” 上, 画出不同的图形。 动态绑定(dynamic binding)是在运行时根据对象 接收的消息动态地确定要连接的服务代码。 使用虚函数可实现动态联编,不同联编可以选择 不同的实现,这便是多态性。 继承是动态联编的基础,虚函数是动态联编的关 键。
6. 永久对象(Persistent object) 所谓永久对象是指生存期可以超越程序的执行时 永久对象 间而长期存在的对象。 目前,大多数OOPL不支持永久对象,如果一个 对象要长期保存,必须依靠于文件系统或数据库管理 系统实现,程序员需要作对象与文件系统或数据库之 间数据格式的转换,以及保存和恢复所需的操作等烦 琐的 作。 为了实现永久对象,使上述烦琐 作由系统自动 完成,需要较强的技术支持;需要一个基于永久对象 管理系统OMS(object management system), 能够 描述和处理永久对象的编程语言。
9. 3 UML统一建模语言
9. 3 UML概述 UML(Unified Modeling Language)是软件界第 一个统一的建模语言,该方法结合了Booch, OMT, 和OOSE方法的优点,统一了符号体系,并从其它的 方法和 程实践中吸收了许多经过实际检验的概念 和技术。 它是一种标准的表示, 已成为国际软件界广泛承 认的标准。是一种基于面向对象的可视化的通用 (General)建模语言。为不同领域的用户提供了统一 的交流标准 — UML图。 UML应用领域很广泛,可用于软件开发建模的 各个阶段,商业建模(Business Modeling), 也可用 于其它类型的系统。
<documents> UML 1. 4 2000年 (计划的较小修订) <documents> UML 1. 3 1999 1998 1997年 1月最 初提交给 OMG 1996 1995 2001年 计划的重要修订 <documents> UML 1. 2 文字上的修改 没有显著的技 术变化 <documents> UML 1. 1 1997年 9月最后 提交给OMG <documents> UML 1. 0 <documents> UML 0. 9 <documents> Unified Method 0. 8 <documents> UML 2. 0 精华相关 文档版类 UML形成
9. 3. 1 UML的主要内容 UML的定义包括UML语义和UML表示法两个部分。 (1) UML语 义 描述基于UML的精确元模型(meta-model) 定义。元模型为UML的所有元素在语法和语义上提供了简单、 一致、通用的定义性说明, 使开发者能在语义上取得一致, 消除 了因人而异的表达方法所造成的影响。此外UML还支持对元模 型的扩展定义。 UML支持各种类型的语义。如布尔、表达式、列表、阶、 名字、坐标、字符串和时间等,还允许用户自定义类型。 (2) UML表 示 法 定义UML符号的表示法, 为开发者或开 发 具使用这些图形符号和文本语法为系统建模提供了标准。 这些图形符号和文字所表达的是应用级的模型, 在语义上 它是UML元模型的实例。
UML的主要构成 UML是一种标准化的图形建模语言,它是面向对 象分析与设计的一种标准表示。由: 视图(views), 图(Diagrams), 模型元素(Model elements) 通用机制(general mechanism) 等几个部分构成。
UML的主要内容 视图(views) 一个系统应从不同的角度进行描述, 从一个角度观察到的 系统称为一个视图(view)。 视 图 由 多 个 图 ( Diagrams) 构 成 , 它 不 是 一 个 图 表 ( Graph), 而是在某一个抽象层上,对系统的抽象表示。 如果要为系统建立一个完整的模型图,需定义一定数量的 视图,每个视图表示系统的一个特殊的方面。另外,视图还把 建模语言和系统开发时选择的方法或过程连接起来。
Design View 描 Use case View描 述 述系统设计特征, 系统的外部特性、系 包括结构模型视 统功能等。 图和行为模型视 图,前者描述系 统的静态结构(类 设计视图 实现视图 图、对象图),后 Use case 者描述系统的动 视图 态行为(交互图、 状态图、活动图)。 过程视图 配置视图 Process View 表示系统内 部的控制机制。常用类图描 述过程结构,用交互图描述 过程行为。 UML常用视图 Implementation View 表示系统 的实现特征,常 用构件图表示。 Deployment View 配置 视图描述系统的物理配置 特征。用配置图表示。
图(Diagrams) 图 UML语言定义了五种类型,9种不同的图,把它们 有机的结合起来就可以描述系统的所有视图。 用 例 图 (Use case diagram) 从用户角度描述系统功 能, 并指出各功能的操作者。 静 态 图 (Static diagram), 表示系统的静态结构。包 括类图、对象图、包图。 行为图(Behavior diagram),描述系统的动态模型和 组成对象间的交互关系。包括状态图、活动图。 交 互 图 (Interactive diagram), 描述对象间的交互关 系。包括顺序图、合作图。 实现图( Implementation diagram ) 用于描述系统的 物理实现。包括构件图、部件图。
模型元素(Model elements) 代表面向对象中的类,对象,关系和消息等概 念,是构成图的最基本的常用的元素。一个模型元 素可以用于多个不同的图中。 通用机制(general mechanism) 用于表示其他信息,比如注释,模型元素的语 义等。另外,为了适应用户的需求,它还提供了扩 展 机 制 (Extensibility mechanisms) , 包 括 构 造 型 (Stereotype)、 标 记 值 (Tagged value)和 约 束 (Constraint). 使用UML语言能够适应一个特殊的方 法(或过程),或扩充至一个组织或用户。
通用模型元素是UML构造系统的各种元素,是UML构建 模型的基本单位。分为以下两类: 1. 基元素 是由UML定义的模型元素。如:类、结点、构件、 注释、关联、依赖和泛化等。 2. 构造型元素 在基元素的基础上增加了新的定义而构造的新的模型 元素。如扩展基元素的语义(不能扩展语法结构), 也允 许用户自定义。 构造型元素用括在双尖括号<< >>中的字符串表示。 目前UML提供了40多个预定义的构造型元素。如包 含<<include>>、扩展<< Extend >>。
常用模型元素 可 以 在 图 中 使 用 的 概 念 统 称 为 模 型 元 素 。 模型元 素在图中用其相应的视图元素(符号)表示,图中给 出了常用的元素符号:类、对象、结点、包和组件等。 类 属性 操作 用例 对象 属性 操作 状态 接口 结点 组件 包 注释 常用的模型元素
模型元素与模型元素之间的连接关系也是模型元素,常见 的关系有关联(association)、泛化(generalization)、依赖 (dependency)和聚合(aggregation),其中聚合是关联的一种特殊 形式。这些关系的图示符号如图所示。 依赖 关联 泛化(继承) 组合 细化 聚合 连接关系 关联:连接(connect)模型元素及链接(link)实例。 依赖:表示一个元素以某种方式依赖于另一种元素。 泛 化 : 表 示 一 般 与 特 殊 的 关 系 , 即 “一 般 ”元 素 是 “特 殊 ” 关系的泛化。 聚合:表示整体与部分的关系。
9. 3 用例建模 UML的用例模型一直被推荐为识别和捕获需 求的首选 具!! 1992年由Jacobson提出了Use case 的概念及 可 视 化 的 表 示 方 法 —Use case图 , 并 加 入 由 他 所 倡 导 的 OOSE。 受 到 了 IT界 的 欢 迎 , 被 广 泛 应 用 到 了 面 向 对 象的系统分析中。用例驱动的系统分析与设计方法已 成为面向对象的系统分析与设计方法的主流。
9. 3. 1 用例建模概述 用例建模技术,用于描述系统的功能需求。在宏观 上 给 出 模 型 的 总 体 轮 廓 。 通过对典型用例的分析,使 开发者能够有效地了解用户的需求。 开/关防火墙 防火墙规则管理员 防火墙规则表管理 <<use>> TCP/IP协议栈(TCPIP. SYS) 网卡驱动程序(NIC Driver) 基于历史状态的包处理 网络中间层状态包检测防火墙系统
9. 3. 2 用例模型(Use case model) 用例模型描述外部执行者(Actor)所理解的系统 功能。即待开发系统的功能需求。 它驱动了需求分析之后各阶段的开发 作, 还被 用于验证和检测所开发的系统, 影响了 UML 的各 个模型。 用例模型由若干个用例图构成,用例图中主要描 述执行者和用例之间的关系。在UML中, 构成用例图 的主要元素是用例和执行者及其它们之间的联系。 创建用例模型的 作包括: 定义系统、确定执行者和用例、描述用例、定义 用例间的关系、确认模型。
如何建立用例模型 建立系统用例模型的过程就是对系统进行功能需 求分析的过程。 定义 系统 确定执行 者和用例 ●确定系 ●执行者通常是使 统范围; ●分析系 统功能。 用系统功能的外部 用户或系统。 ●用例是一个子系 统或系统的一个独 立、完整功能。 描述执行者 和用例关系 各模型元素 之间有:关 联、使用、 扩展及泛化 等关系。 确认 模型 确认用例模型 与用户需求的 一致性,通常 由用户与开发 者共同完成。
一、确定执行者(Actor) 执行者是指用户在系统中所扮演的角色, 执行者 用类似人的图形来表示, 但执行者可以是人,也可以 是一个外界系统。 一、执行者 如何确定执行者: 1、谁使用系统的主要功能(主执行者)? 2、谁需要从系统获得对日常 作的支 持和服务? 3、需要谁维护管理系统的日常运行( 、需要谁维护管理系统的日常运行 副执行者)? 副执行者 4、系统需要控制哪些硬件设备? 5、系统需要与其它哪些系统交互? 6、谁需要使用系统产生的结果(值)? 回例1 买饮料 客户 供货 供货人 取货款 收银员 自动售货系统
二、 用例 二、用例(use case) 从本质上讲, 一个用例是用户与计算机之间的一次典 二、用例 型交互作用。在UML中, 用例被定义成系统执行的一系列 动作(功能)。用例有以下特点: 用例实现一个具体的用户目标。 用例由执行者激活, 并将结果值反馈给执行者。 用例必须具有功能上的完整描述。 如何确定用例: 1、与系统实现有关的主要问题是什么? 2、系统需要哪些输入/输出?这些输入/输出从何而来? 到哪里去? 3、执行者需要系统提供哪些功能? 4、执行者是否需要对系统中的信息进行读、创建、修改、 删除或存储? 回例1
三、用例之间的关系 执行者与用例之间通常是一种关联。 自动售货机系统 用例之间的联系: <<Use>>表示一个用例使用另 一个用例。 <<Extend>>通过向被扩展的用 例添加动作来扩展用例。 <<include>>表示一个用例的 行为包含了另一个用例的行 为。 售货 顾客 <<扩展>> 售散装 饮料 <<使用>> 打开机器 供货 关闭机器 <<使用>> 供货人 <<使用>> 打开机器 取货款 收银员 <<使用>> 关闭机器 含有使用和扩展关系 的用例图 其中: <<Use>>, <<Extend>>是一种泛化关系。 <<include>>是一种依赖关系。
9. 3. 3用例图实例 例1 建立项目与资源管理系统的Use case图 系统的主要功能是:包括项目管理,资源管理 和系统管理三大管理功能。 1. 项目管理包括项目的增加、删除、更新。 2. 资源管理包括对资源和技能的添加、删除和 更新。 3. 系统管理包括系统的启动和关闭,数据的存 储和备份等功能。 说明:技能表示人力资源。
1. 分析确定系统的执行者(角色) 到确定 项目管理员、资源管理员、系统管 理员、备份数据系统。 到确定 2. 确定用例 项目管理,资源管理和系统管理。 3. 对用例进行分解,画出下层的Use case图 对上层的用例进行分解, 并将执行者 分配到各层次的Use case图中。 还应画出相应的执行者描述模板及 用例描述模板。 角色: 角色职责识别: 角色描述模板 用例名: 功能描述: 主要步骤: 相关用例: 相关信息:(优先级 性能, 频度…) 用例描述模板
例1 项目与资源管理系统(PRMS) 添加技能 资源管理 删除技能 资源管理员 项目管理员 更新技能 系统管理 备份系统 <<Use>> 查找技能 <<Use>> 添加资源 系统管理员 <<Use>> 资源管理员 PRMS高层Use Case图可以自顶而下不 Case 断精化,抽象出不同层次的Use Case图。 Case 查找资源 删除资源 更新资源 <<Extend>> 把技能指 定给资源 <<Use>> <<Extend>> 从资源中 清除技能 资源管理Use Case图 注:这里的“技能”是指人力资源。
例1 项目与资源管理系统(PRMS) 添加项目 <<Use>> 更新项目 存储数据 查找项目 删除项目 项目 <<Extend>> 管理员 <<Use>> 查找技能 添加技能 <<Use>> << Extend >> 启动系统 <<Extend>> 添加任务 添加活动 <<Extend>> 删除活动 关闭系统 系统管理员 删除任务 <<Extend>> 更新活动 <<Extend>> 分配资源 给任务 <<Extend >> 备份数据 <<Extend>> 更新任务 <<Extend>> 取消对任务 的资源分配 项目管理Use Case图 备份资 源数据 <<Use>> 备份项 目数据 系统管理Use Case图 备份系统
9. 4 静态建模 任何建模语言都以静态建模机制为基础, 标准建模语 言UML也不例外。 所 谓 静 态 建 模 是 指 对 象 之 间 通 过 属 性 互相联系,而这些关系不随时间而转移。 类和对象的建模,是UML建模的基础。我们认为, 熟 练掌握基本概念、区分不同抽象层次以及在实践中灵活运 用, 是三条最值得注意的建模基本原则。 UML的静态建模机制包括: 用例图(Use case diagram) 类图(Class diagram) 对象图(Object diagram ) 包图(Package diagram) 构件图(Component diagram) 配置图(Deployment diagram)
9. 4. 1 对象类与对象 UML中的对象类图(Class Diagram)与对象图(Object Diagram)表达了对象模型的静态结构,能够有效地建立专 业领域的计算机系统对象模型。 类名 类名 属性:类型 操作 对象名: 类名 属性 操作 图 6. 24 类与对象的描述 类图(Class diagram)由系统中使用的类以及它们之间的关 diagram) 系组成,分为长式和短式。 类及类型名均用英文大写字母开头,属性及操作名为小写 字母开头。常见类型有:Char, Boolean, Double, Float, Integer, Object, Short, String等。类图是构建其它图的基础。 对象是对象类的实例(instance), 用对象图来描述。对象图 亦分长式和短式。
(1)属性(attribute) 属性用来描述类的特征,表示需要处理的数据。 属性定义: visibility attribute-name : type = initial-value {property-string} 其中:可见性(visibility)表示该属性对类外的元素是否可访问。 分为: public(+) 公有的,即模型中的任何类都可以访问该属性。 private(-) 私有的,表示不能被别的类访问。 protected(#) 受保护的,表示该属性只能被该类及其子类访问。 如果可见性未申明,表示其可见性不确定。
类图的描述 (2) 操作 对数据的具体处理方法的描述则放在操作部分,操作说明了 该类能做些什么 作。操作通常称为函数,它是类的一个组成部 分,只能作用于该类的对象上。 操作定义: visibility operating-name(parameter-list): return-type {propertystring} 可见性 操作名(参数表);返回类型{约束特性} 其中:可见性同上。 参数表:参数名:类型,… Parameter-name : type =default-value 返回类型:操作返回的结果类型。
二、类的识别 是面向对象方法的一个难点,但又是建模的关键。 常用的方法有: 1. 名词识别法 2. 系统实体识别法 3. 从用例中识别类 4. 利用分解与抽象技术 关键是要定义类的“属性”及“操作”。
1. 名词识别法 描述过程应与领域专 家共同合作完成,并 识别问题域中的实体,实体的描述通常用名词、 遵循问题域中的概念 和命名。 名词短语、名词性代词的形式出现。 用指定语言对系统进行描述; 从系统描述中标识名词、名词短语、名词性代词; 识别确定(取、舍)类。
1. 名词识别法 识别问题域中的实体,实体的描述通常用名词、 名词短语、名词性代词的形式出现。 用指定语言对系统进行描述; 从系统描述中标识名词、名词短语、名词性代词; 识别确定(取、舍)类。 为了发现对象和类,开发人员要在系统需求和系 统分析的文档中查找名词和名词短语,包括:可感知 的事物、角色、事件、互相作用、人员、场所、组织、 设备和地点等。
1. 名词识别法 根据下述原则进一步确定类: ①去掉冗余类:如两个类表述 同一信息,应保留最具有描述 能力的类。 识别问题域中的实体,实体的描述通常用名词、 ② 去掉不相干的类:删除与问 名词短语、名词性代词的形式出现。 题无关或关系不大的类。 ③ 删除模糊的类或性质独立性 用指定语言对系统进行描述; 不强的类:有些初始类边界定 义不确切,或范围太广,应该 从系统描述中标识名词、名词短语、名词性代词; 删除。 识别确定(取、舍)类。⑤ 所描述的操作不适宜作为对 象类,并被其自身所操纵,所 描述的只是实现过程中的暂时 的对象,应删去。
2. 系统实体识别法 不关心系统的运作流程及实体之间的通信状态, 而只考虑系统中的人员、组织、地点、表格、报告等 实体,经过分析将他们识别为类(或对象)。 被标识的实体有: 系统需要存储、分析、处理的信息实体; 系统内部需要处理的设备; 与系统交互的外部系统; 系统相关人员; 系统的组织实体。
例1 有一个购物超市,顾客可在货架上自由挑选商品,由收款 机收款,收款机读取商品上的条型码标签,并计算商品价格。 收款机应保留所有交易的记录,以备帐务复查及汇总使用。 通过分析问题的陈述,确定以下几类实体: ⑴ 信息实体:交易记录、商品、税务信息、销售记录、货存 记录。 ⑵ 设备:收款机、条型码扫描器。 ⑶ 交互系统:信用卡付款系统。 ⑷ 人员职责:收款员、顾客、会计、经理。 ⑸ 系统的组织实体:本例不考虑。 以上列出的实体,都可以直接识别为类。
3. 从用例中识别类 根据用例的描述来识别类; 如用例的描述中出现哪 些实体? 用例执行过程中产生并存储哪些信息? 与用例 关 联 的 角 色 向 用 例 输 入 什 么 信 息 ? 用 例 又 向 该 角 色 输 出哪些信息?
在确定类时,常使用两类技术: ⑴ 分 解 技 术 将整体类和组合类分解。可控制 单个类的规模。 ⑵ 抽象技术 根据一些类的相似性建立抽象类, 并建立抽象类与这些类之间的继承关系。 抽象类实现了系统内部的重用,很好地控制了 复杂性,并为所有子类定义了一个公共的界面,使 设计局部化,提高系统的可修改性和可维护性。
9. 4. 2 UML中类之间的关系 UML中类的关系有关联(association) , 聚集(aggregation) , 泛化(generalization) , 依赖(depending)和细化 (refinement)。 公司 一、关联 0. . * 顾 佣 作于 关联是类之间的连结, 分为: 常规关联 1. 常规关联 2. 多元关联 3. 有序关联 保险公司 用户 * 授权 * 6. 关联类 * 保险合同 * {or} 人 授权 优先级 特权 开始一个时间片 关联类 * 作站 4. 受限关联 5. 或关联 老板 员 0. . 1 管理 1. . * 人 0. . * 或关联 公司
7、其它关联 递归关联(Recursive association) 即一个类到自身的关联。 * 医生 节点 * 治疗 人 病人 连接 递归关联 带有职责的递归关联
二、聚集(aggregation) 聚集是一种特殊的关联,它指出类间的“整体-部分”关系。 1、共享聚集(shared aggregation) 其“部分”对象可以是任意“整体”对象的一部分。当“整 体”端的重数不是 1时,称聚集是共享的。 整体类 项目 部分类 * * 人员 共享聚集 2、组合聚集(composition aggregation) 其“整体”(重数为 0、1)拥有它的“部分” 。部分仅属于同 一对象,整体与部分同时存在。 标题 整体类 部分类 窗口 窗口 具框 标题 具框 显示区 组合聚集
三、泛化 泛化指出类之间的“一般与特殊关系”,即继承关系。父类 与子类之间构成类的分层结构。 类的分层结构 教师 一般类 特殊 人员 学生 抽象类 指没有实例的类,定义一些抽象的操作,即不提供 实现方法的操作,只提供操作的特征。并附以{abstract}。 交叠泛化 在继承树中,若存在某种具有公共父类的多重继 承,称为是交叠(overlapping)的。否则是不交的(disjoint)。 不交 完全泛化 一般类特化出它所有的子类,称为完全泛化,记 为{complete}。 不完全泛化 即未特化出它所有的子类,称为是不完全泛化 的,表示为{incomplete}. 的,表示为
三、泛化 交通 具 Person 驾驶 交通 具 船 抽象操作 drive() {overlapping} 汽车 drive()是 {propulsion} 汽车 drive() 水陆两栖车 轮船 drive() 重叠泛化 人 性别 男人 drive()启动 轮子转动 螺旋浆 {complete} 女人 完全泛化 drive()启动 泛化中的多态性 及带识别名称的泛化
图 形{abstract} 颜 色 中心位置 笔的粗细 继承性的实例 移 动() 旋 转() 显 示(){abstract} 维数 1 维{abstract} 定位 缩放 0维 {abstract} 点 显示 线 端点 显示 弧 半径 起始角 弧度角 显示 样条 控制点 显示 继承树 2 维 {abstract} 定位 填充类型 缩放 填充 多边形 边数 顶点数 显示 园 直径 显示 旋转
Order data. Received is. Prepaid number: String dispatch() close() 1 * Customer name address Credit. Rating() Corporate Customer Personal Customer credit. Card contact. Name credit. Rating credit. Limit remind() bill. For. Month() 1 0. . 1 +Line. Item Employee * Order. Line Quantity: Integer is. Satisfied * 1 Product 具有泛化关系的类图
9. 4. 3 包图 1. 为什么要引入包? 引入包(Package)是为了降低系统的复杂性。 2. 什么是UML包? ●是将许多类集合成一个更高层次的单位, 形成一个高内聚、低耦合的 类的集合。 ●是一种分组机制,把各种各样的模型元素通过内在的语义连接为一 个整体。 ●构成包的模型元素称为包的内容,包通常用于对模型的组织管理, 因此有时又将包称为子系统(subsystem)。 ●包与包之间不能共用一个相同的模型元素,包的实例没有任何语义 (含义)。仅在模型执行期间包才有意义。
9. 5动态模型 9. 5 动态建模 动态模型主要描述系统的动态行为和控制结构。 动态行为包括系统中对象生存期内可能的状态及 事件发生时状态的转移,对象间动态合作关系,对象 之间的交互过程以及交互顺序,描述了为满足用例要 求所进行的活动及活动间的约束关系。 在动态模型中, 对象间的交互是通过对象间消息 的传递来完成的。 在其生命周期中根据通信的结果不断改变自身 的状态。
9. 5动态模型 包括 4类图:状态图、活动图、顺序图、合作图。 状态图(state diagram):描述某个对象,子系统,系 diagram) 统的生命周期。 活动图(activity diagram) :描述操作实现中完成的 作以及用例实例或对象中的活动,活动图是状态图的一个 变种。 顺序图(sequence diagram) :是一种交互图,描述对 象之间的动态合作关系以及合作过程中的行为次序,常用 来描述一个用例的行为。 合作图(collaboration diagram) :用于描述相互合作 的对象间的交互关系,它描述的交互关系是对象间的消息 连接关系。
UML中的消息 一、简单消息(simple) 表示控制流,描述控制如何从一个对象传递到另 一个对象,但不描述通信的细节。 二、同步消息(synchronous) 是一种嵌套的控制流,用操作调用实现。操作的 执行者要到消息相应操作执行完并回送一个简单消息 后,再继续执行。 三、异步消息(asynchronous) 是一种异步的控制流,消息的发送者在消息发送 后就继续执行,不等待消息的处理。
9. 5. 1 状态图(State Diagram)用来描述一个特定对象的所有可能的状态 及其引起状态转移的事件。一个状态图包括一系列的状态以及状态 之间的转移。 状态 所有对象都具有状态, 状态是对象执行了一系列活动的结 果。当某个事件发生后, 对象的状态将发生变化。状态图中定义的状 态有: 初态—状态图的起始点, 一个状态图只能有一个初态。 终态—是状态图的终点。而终态则可以有多个。 中间状态—包括三个区域: 名字域、状态变量与活动域。 复合状态—可以进一步细化的状态称作复合状态。
初态 状态名 终态 状态变量 活动 迁移 响应事件的内部动作或活动 的列表,定义为: 事件名 (参数表[条件])/动作表 达式 中间态 状态变量 是状态图所显示的类的属性。 活动 列出了在该状态时要执行的事件和动作。 3个标准事件: entry事件用于指明进入该状态时的特定动作。 exit事件用于指明退出该状态时的特定动作。 do事件用于指明在该状态中时执行的动作。 无 参数
举例—login 状态 login time=curent time entry/type “login” do/get use name do/get password help/display help exit/login(use_name. password) login 状态
状态图 状态迁移 一个对象的状态的变迁称为状态迁移。 通 常 是 由 事 件 触 发 的 , 此 时 应 标 出 触 发 转 移 的 事 件 表 达式。 在第一层 上行 向上移动 到达 到达 向第一层移动 到达 向下移动 下行 超时 电梯状态图 空闲 上行
状态图 嵌套状态图 状态图可能有嵌套的子状态图,且子状态图可以 是另一个状态图。子状态又可分为两种:“与”子状 态和“或”子状态, 运行 行使 向后 后退 低速 向前 前进 高速 或关系的子状态 与子状态及或子状态
细化的状态表示 状态名 UML给出了电梯细化的状态表示。 状态变量 活动 On arrived first floor Go up (floor) Moving up do/moving to floor Moving to first floor arrived Moving down do/moving to floor arrived Go down (floor) timer= timer-out 细化电梯状态图 Idle timer=0 do/increase timer Go up (floor)
事件 事件是激发状态迁移的条件或操作。 在UML中,有4类事件: 1. 某条件变为真;表示状态迁移的上的警戒条件。 2. 收到来自外部对象的信号 (signal) 表示为状态迁移 上的事件特征,也称为消息。 3. 收到来自外部对象的某个操作中的一个调用,表示 为状态迁移上的事件特征,也称为消息。 4. 状态迁移上的时间表达式。
状态图之间的消息发送 状态图之间可以发送消息,用虚箭头表示。 Remote Control off on( ) off( ) on off( ) play( ) CD player off stop( ) play( ) on/stop off( ) stop( ) on/play stop( ) off( )/stop( ) 消息发送状态图
9. 5. 2 顺序图 一、概述 顺 序 图 (Sequence Diagram)用来描述对象之 间动态的交互行为, 着重体现对象间消息传递的时间 顺序。 顺序图构成: 顺序图构成 一组对象(对象名和类名) 对象生命线(时间轴) 对象被激发 对象间的通信(消息) 对象 2 对象 1 消息 2
二、消息 消息延迟:用倾斜箭头表示。 消息串:包括消息和控制信号,控制信息位于信 息串的前部。 控制信息{ 条件控制信息 如:[x>0] 重复控制信息 如:*[I= 1. . n] 当收到消息时, 接收对象立即开始执行活动, 即 对象被激活了,通过在对象生命线上显示一个细长 矩形框来表示激活。
三、顺序图的形式 有两种使用顺序图的方式:一般格式和实例格式。 实例格式详细描述一次可能的交互。没有任何条件和分支或循 环,它仅仅显示选定情节(场景)的交互。 而一般格式则描述所有的情节。因此,包括了分支,条件和循 环。 : Customer Win 1: Chang Customer data) : Customer 2: Update Customer(Customer. Data) 3: 顺序图
Print(file) : Computer : Printer Server : Printer : Queue [Printer free] Print(file) [Printer busy] Store(file) 带分支的顺序图 Op( ) : C 1: c Send message op 2 until… : D 1: D 2: D Op 2( ) Op 3( ) 有循环标记的顺序图 Op 4( )
呼叫者 {B-A<1 S} {C-B<10 S} A B 交换 接受者 拿起话筒 响拨号声 拨号码 C 通过网络选 择通话路径 D {E-D<5 S} E 路由选择 鸣响音 响铃声 接电话 双方通话 停音 打电话的顺序图 停铃声
创建对象与对象的消亡 在顺序图中,还可以描述一个对象通过发送一 条消息来创建另一个对象。 New. Customer(Data) :Customer Windows Customer(Data) :Customer Delete. Customer() 创建或删除对象 当对象消亡(destroying)时,用符号 表示。
9. 5. 3 活动图 一、概述 活动图(Activity Diagram)的应用非常广泛, 它既 可用来描述操作(类的方法)的行为, 也可以描述用例 和对象内部的 作过程, 并可用于表示并行过程。 活动图是由状态图变化而来的, 它们各自用于不 同的目的。活动图描述了系统中各种活动的执行的 顺序。刻化一个方法中所要进行的各项活动的执行 流程。 活动图中一个活动结束后将立即进入下一个活 动(在状态图中状态的变迁可能需要事件的触发)。
二、活动图的模型元素 构成活动图的模型元素有:活动、转移、对象、 信号、泳道等。 1. 活动 是构成活动图的核心元素,是具有内部动作的状 态,由隐含的事件触发活动的转移。 在概念层描述中,活动表示要完成的一些任务; 在说明层和实现层中,活动表示类中的方法。 [条件 1] 活动的描述 活动名 [条件 2] 活动
二、活动图的模型元素 活动还有其它的图符:初态、终态、判断、同步。 初态 终态 [条件 1] [条件 2] 判断 活动图的模型元素 同步线 2. 转移 转移描述活动之间的关系,描述由于隐含事件引 起的活动变迁,即转移可以连接各活动。 转移用带箭头的直线表示,可标注执行该转移的 条件,无标注表示顺序执行。
活动图的模型元素: 3. 泳道 泳道进一步描述完成活动的对象, 并聚合一组活动。 泳道也是一种分组机制。 泳道可以直接显示动作在哪一个对象中执行,或 显示的是一项组织 作的哪部分。 顾 客 售 货 库 房 ● ● 请求服务 开订单 支付 取货 供货 有泳道的活动图 提货
4. 对象流 活动图中可以出现对象,对象作为活动的输入/输出, 用虚箭头表示。 开机器 测量 开动 测量值 显示 对象流 咖啡壶 调制咖啡 信号灯灭 倒咖啡 控制图符举例 5. 控制图符 活动图中可发送和接收信号,发送符号对应于与转移 联系在一起的发送短句。接收符号也同转移联系在一起。 接收信号 发送信号 控制图符
9. 5. 4 合作图(Collaboration Diagram), 也称为协 作图,用于描述相互合作的对象间的交互关系 和链接(Link)关系。虽然顺序图和合作图都用 来描述对象间的交互关系, 但侧重点不一样。 顺序图着重体现交互的时间顺序, 合作图则 着重体现交互对象间的静态链接关系。
一、 合作图中的模型元素 1. 对象 合作图中对象的外观与顺序图中的一样。如果 一个对象在消息的交互中被创建, 则可在对象名称之 后标以{new}。类似地, 如果一个对象在交互期间被 删除, 则可在对象名称之后标以{destroy}。 对象名{new} 对象名{destroy}
2. 链接(Link) 链 接 用 于 表 示 对 象 间 的 各 种 关 系 , 包括组成关系的链 接 (Composition Link)、 聚 集 关 系 的 链 接 (Aggregation Link)、 限 定 关 系 的 链 接 (Qualified Link)以 及 导 航 链 接 (Navigation Link)。各种链接关系与类图中的定义相同, 在 链接的端点位置可以显示对象的角色名和模板信息。 对象A 对象C 对象E 对象G 限定词 对象B 对象D 对象F 对象H 各种关系的链接 对于链接还可以加上“角色”与“约束”,在链角色 上附加的约束有global(全局),local(局部),parameter(参 数),self(自身) 。
3. 消息 在对象之间的静态链接关系上可标注消息,消息类 型有简单消息,同步消息和异步消息三种。用标号表示 消息执行的顺序。消息定义的格式如下: 消息类型 标号 控制信息:返回值:=消息名 参数表 标号有3种: 顺序执行:按整数大小执行。1, 2… 嵌套执行:标号中带小数点。1. 1,1. 2,1. 3,… 并行执行:标号中带小写字母。1. 1. 1 a,1. 1. 1 b,… 条件控制信息 如:[x>y] 控制信息{ 重复控制信息 如:*[I= 1. . n]
二、 合作图举例 Redisplay() 窗口 : 控制器 : 窗口 <<参数>>窗口 1. 1. 3. 1 add(self) 1: displaypositions(window) 1. 1*[i: = 1. . n]: drawsegment(i) <<自授>> <<局部>>直线 布线 : 布线 i-1 i 1. 1. 1 a: r 0: =position() 左: 端点 内容{new} : 直线{new} 1. 1. 2 Create(r 0, r 1) 1. 1. 3 display(window) 1. 1. 1 b: r 1: =position() 右: 端点 电路设计的合作图 在控制器控制下进行布线,找出左端点r 0和右端点r 1, 创建对象“直线”,并在窗口显示出来。
下图为一销售结果统计的合作图。 : Order 1: Show ( ) 1. 1. 1*[for all Sales. Person]: Ordersum=Get. Total. Orders( ) 1. 1: Create( ) : Sales Statistics Window : Statistics Summary {new} 1. 2*[while any Lines left] Get Resultline( ) 1. 1*[for all Orders]: Get Order. Amount( ) : Sales Person 1. 1. 2*[for all Sales persons]: Budget=Get Budget 1. 1. 2. 1: Get Budget Amount() : Budget Sales 统计销售结果的合作图
9. 6实现模型描述了系统实现时的一些特性,又称为 物理体系结构建模。实现模型包括: 构 件 图 (Component diagram) 显示代码本身的逻 辑结构,它描述系统中存在的软构件以及它们之间的 依赖关系。 配置图(Deployment diagram) 描述了系统中硬件 和软件的物理配置情况和系统体系结构。显示系统运 行时刻的结构.
6. 6. 1 构件图 构件(component), 又称组件, 可以看作逻辑上与包与类对 应的物理代码模块,实际上是对应一个文件。 一、构件的类型: 1) 源代码构件(Source Component); <<file>> 源代码文件 <<page>> WEB页 <<document>> 文档 2) 二进制构件(Binary Component) ; 3) 可执行构件(Executable Component) ;
6. 6. 1 构件图 二、构件图的元素 二、 1. 构件 常常表示软件模块。 图形库 (graphic. dll) 2. 界面 构件对外提供的可见操作和属性称为构件 的界面。界面的图符是一个小圆圈。用一条连线将构 件与圆圈连起来。 3. 依赖关系 构件之间的依赖关系是指结构之间在 编译,连接或执行时的依赖关系。用虚线箭头表示。
窗口控制 (whnd. cpp) 窗口控制 (whnd. obj) 关 系 通信控制 (comhnd. cpp) 主控模块 (main. cpp) 通讯控制 (comhnd. obj) 主控模块 (main. obj) 构件图实例 构件图 图形库 (graphic. dll) 客户程序 (client. exe) 构件
组件的依赖关系又分为:开发期的依赖和调用依赖。 • 开发期的依赖(Development –time Dependency) 是指在编译阶段和连接阶段,组件之间的依赖关系。 • 调用依赖(Call Dependency) 是指一个组件调用或使用另外一个组件服务。 业务 (源码) 系统管理 (对象) 资源管理 (源码) 项目管理 (源码) 资源管理 (对象) 项目管理 (对象) 系统管理 (执行码) 资源管理 (执行码) 项目管理 (执行码)
6. 6. 2 配置图用来描述系统硬件的物理拓扑结构以及在此结构 上执行的软件,即系统运行时的刻的结构。 配置图的元素: 结 点 代 表 某 种 计 算 机 构 件 , 通 常 是 某 种 硬 件 , 结 点 还 包 括在其上运行的软构件,软构件代表可执行的物理代码模块, 一个可执行程序。 连接 结点之间的连接关系及通信类型。连接的连线上要 标注通信类型。
配置图举例 保险服务器 客户PC 《TCP/IP》 配置 保险系统 保险单 填写界面 保险系统 配置 保险政策 保险数据库 保险系统的配置图 保险用户
医院诊疗系统的配置图 Heart Unit Server(心血管病服务器) TCP/IP Database Unit Server (数据库服务器) : Object Database 《Communication 》 : Health Care Domain Heart Unit Configuration : Heart Unit Server Application : Configure Knowledge TCP/IP a Windows PC(客户机) : Heart Unit UI : Configure users : Heart Unit Client Facade 医院诊疗系统的配置图(C/S)
6c5f961f7f7dbba1a68532b1a7fd2fa4.ppt