《用况图、类图应用举例》由会员分享,可在线阅读,更多相关《用况图、类图应用举例(22页珍藏版)》请在金锄头文库上搜索。
1、 UML 系列图 -用例图 UML-Unified Model Language 统一建模语言 ,又称标准建模语言。是用来对软件密集系统进行可视化建模的一种语言。 在 UML 系统开发中有三个主要的模型: 功能模型 : 从用户的角度展示系统的功能,包括用例图。 对象模型 : 采用对象,属性,操作,关联等概念展示系统的结构和基础,包括类图、对象图、包图。 动态模型 : 展现系统的内部行为。 包括序列图,活动图,状态图。 UML 的重要内容可以由以下五种类图定义 用例图 :从用户角度描述系统功能,并指各功能的操作者。 静态图 :包括类图,包图,对象图。 类图:描述系统中类的静态结构 包 图:是包和
2、类组成的,表示包与包之间的关系,包图描述系统的分层结构 对象图:是类图的实例 行为图 :描述系统动态模型和对象组成的交换关系。包括状态图和活动图 活动图:描述了业务实现用例的工作流程 状态图:是描述状态到状态控制流,常用于动态特性建模 交互图: 描述对象之间的交互关系 顺序图:对象之间的动态合作关系,强调对象发送消息的顺序,同时显示对象之间的交互 合作图:描述对象之间的协助关系 实现图: 配置图:定义系统中软硬件的物理体系结构 UML 包括用例图、类图、构件图、部署图、顺序图、协作图、状态图、活动图 各个图简介: 用例图从外部用户的角度捕获系统的行为。他将系统功能划分为对活动者具有意义的事务。
3、 类图描述类、接口、写作以及它们之间的关系的图顺序图描述了随时间安排的一系列消息。每个分类角色显示为一条生命线,代表整个交互期间的角色。消息则显示为生命线之间的箭头。 协作图对交互中存在意义的对象和链建模 状态图用来描述一个特定对象所有可能的状态 以及由于各种事件的发 生而引起的状态之间的转移和变化。用例图主要用来描述 “用户、需求、系统功能单元 ”之间 的关系。它展示了一个外部用户能够观察到的系统功能模型图。 【用途】:帮助开发团队以一种可视化的方式理解 系统的功能需求 。 用例图所包含的元素如下: 1. 参与者 (Actor) 表示与您的应用程序或系统进行交互的用户、组织或外部系统。用一个
4、小人表示。 2. 用例 (Use Case) 用例就是外部可见的系统功能,对系统提供的服务进行描述。用椭圆表示。 3. 子系统 (Subsystem) 用来展示系统的一部分功能,这部分功能联系紧密。 4. 关系 用例图中涉及的关系有:关联、泛化、包含、扩展。 如下表所示: a. 关联 (Association) 表示参与者与用例之间的通信,任何一方都可发送或接受消息。 【箭头指向】:指向消息接收方 b. 泛化 (Inheritance) 就是通常理解的继承关系,子用例和父用例相似,但表现出更特别的行为;子用例将继承父用例的所有结构、行为和关系。子用例可以使用父用例的一段行为,也可以重载它。父用
5、例通常是抽象的。 【箭头指向】:指向父用例 c. 包含 (Include) 包含关系用来把一个较复杂用例所表示的功能分解成较小的步骤。 【箭头指向】:指向分解出来的功能用例 d. 扩展 (Extend) 扩展关系是指用例功能的延伸,相当于为基础用例提供一个附加功能。 【箭头指向】:指向基础用例 e. 依赖 (Dependency) 以上 4 种关系,是 UML 定义的标准关系。但 VS2010 的用例模型图中,添加了依赖关系,用带箭头的虚线表示,表示源用例依赖于目标用例。 【箭头指向】:指向被依赖项 5. 项目 (Artifact) 用例图虽然是用来帮助 人们形象地理解功能需求,但却没多少人能
6、够通看懂它。很多时候跟用户交流甚至用 Excel 都比用例图强, VS2010 中引入了 “项目 ”这样一个元素,以便让开发人员能够在用例图中链接一个普通文档。 用依赖关系把某个用例依赖到项目上: 然后把项目 -属性 的 Hyperlink 设置到你的文档上; 这样当你在用例图上双击项目时,就会打开相关联的文档。 6. 注释 (Comment) 包含 (include)、扩展 (extend)、泛化 (Inheritance) 的区别: 条件性:泛化中的子用例和 include 中的被包含的用例会无条件发生,而extend 中的延伸用例的发生是有条件的; 直接性:泛化中的子用例和 extend
7、 中的延伸用例为参与者提供直接服务,而 include 中被包含的用例为参与者提供间接服务。 对 extend 而言,延伸用例并不包含基础用例的内容,基础用例也不包含延伸用例的内容。 对 Inheritance 而言,子用例包含基础用例的所有内容及其和其他用例或参与者之间的关系; 一个用例图示例: 类与类之间的几种关系 一、 继承关系 继承指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力。在 Java 中继承关系通过关键字 extends 明确标识,在设计时一般没有争议性。在 UML 类图设计中,继承用一条带空心三角箭头的实线表示,从子
8、类指向父类,或者子接口指向父接口。 二、实现关系 实现指的是一个 class 类实现 interface 接口(可以是多个)的功能,实现是类与接口之间最常见的关系。在 Java 中此类关系通过关键字 implements 明确标识,在设计时一般没有争议性。在 UML 类图设计中,实现用一条带空心三角箭头的虚线表示,从类指向实现的接口。 三、依赖关系 简单的理解,依赖就是一个类 A 使用到了另一个类 B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是类 B 的变化会影响到类 A。比如某人要过河,需要借用一条船,此时人与船之间的关系就是依赖。表现在代码层面,为类 B 作为参数被类 A 在某
9、个 method 方法中使用。在 UML 类图设计中,依赖关系用由类 A 指向类 B 的带箭头虚线表示。 四、关联关系 关联 体现的是两个类之间语义级别的一种强依赖关系,比如我和我的朋友,这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的。关联可以是单向、双向的。表现在代码层面,为被关联类 B 以类的属性形式出现在关联类 A 中,也可能是关联类 A 引用了一个类型为被关联类 B 的全局变量。在 UML 类图设计中,关联关系用由关联类 A 指向被关联类 B 的带箭头实线表示,在关联的两端可以标注关联双方的角色和多重性标记。 五、聚合关系 聚
10、合是关联关系的一种特例,它体现的是整体与部分的关系,即 has-a 的关系。此时整体与部分之间是可分离的,它们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享。比如计算机与 CPU、公司与员工的关系等,比如一个航母编队包括海空母舰、驱护舰艇、舰载飞机及核动力攻击潜艇等。表现在代码层面,和关联关系是一致的,只能从语义级别来区分。在 UML类图设计中,聚合关系以空心菱形加实线箭头表示。 六、组合关系 组合也是关联关系的一种特例,它体现的是一种 contains-a 的关系,这种关系比聚合更强,也称为强聚合。它同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生
11、命周期结束也就意味着部分的生命周期结束,比如人和人的大脑。表现在代码层面,和关联关系是一致的,只能从语义级别来区分。在 UML类图设计中,组合关系以实心菱形加实线箭头表示。 七、总结 对于继承、实现这两种关系没多少疑问,它们体现的是一种类和类、或者类与接口间的纵向关系。其他的四种关系体现的是类和类、或者类与接口间的引用、横向关系,是比较难区分的,有很多事物间的关系要想准确定位是很难的。前面也提到,这四种关系都是语义级别的,所以从代码层面并不能完全区分各种关系,但总的来说,后几种关系所表现的强弱程度依次为:组合 聚合 关联 依赖。 类图 1、什么是类图 类图 (Class diagram)主要用
12、于描述系统的结构化设计。类图也是最常用的UML 图,用类图可以显示出类、接口以及它们之间的静态结构和关系。 2、类图的元素 在类图中一共包含了以下几种模型元素,分别是:类( Class)、接口( Interface)、依赖( Dependency)关系、泛化( Generalization)关系、关联( Association)关系、聚合关系( Aggregation)、组合关系( Composition)和实现( Realization)关系。 2.1 类( Class) 在面向对象( OO) 编程中,类是对现实世界中一组具有相同特征的物体的抽象。 2.2 接 口( Interface) 接
13、口是一种特殊的类,具有类的结构但不可被实例化,只可以被实现(继承)。在 UML 中,接口使用一个带有名称的小圆圈来进行表示。 2.3 依赖( Dependency)关系 依赖关系是指两个或多个类之间的依存关系,如植物类依赖于土壤类。 依赖关系还可以再细分为 5 种类型,分别是绑定( Binding)依赖、实现( Realization)依赖、使用( Usage)依赖、抽象( Abstraction)依赖和授权( Permission)依赖。 依赖关系用虚线箭头来表示,箭头指向为依赖 的方向。 2.4 泛化( Generalization)关系 简单的讲就是类之间的继承关系。在 UML 中,泛化
14、关系用空心三角形 +实线来表示,箭头指向为父类。 2.5 聚合( Association)关系 聚合关系是类之间的一种较弱的耦合关系,如一个字符串数组和一个字符串就是一种聚合关系。在 UML 中类图中,聚合关系用空心的菱形 +实线箭头来表示,箭头指向为被聚合的类。 2.6 组合( Aggregation)关系 组合关系是类之间一种整体与部分之间的关系,如一只青蛙有四条腿,青蛙类与 青蛙腿类之间的关系就是组合关系。在 UML 类图中,组合关系用实心的菱形 +实线箭头来表示,箭头指向为被组合的类。 2.7 关联( Composition)关系 关联关系是类之间一种相互影响的关系,影响的方向就是关联
15、的方向。在UML 类图中,组合关系用实线箭头来表示。 2.8 实现( Realization)关系 一般来讲实现关系是针对类与接口之间的关系而言的。在 UML 类图中,实现关系用空心三角形 +虚线来表示。 3、简单的类图示例 在 UML 类图中,常见的有以下几种关系 : 泛化( Generalization) , 实现( Realization),关联( Association),聚合( Aggregation),组合(Composition),依赖 (Dependency) 1. 泛化( Generalization) 【泛化关系】:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。例如:老虎是动物的一种,即有老虎的特性也有动物的共性。 【箭头指向】:带三角箭头的实 线,箭头指向父类 2. 实现( Realization) 【实现关系】:是一种类与接口的关系,表示类是接口所有特征和行为的实现 . 【箭头指向】:带三角箭头的虚线,箭头指向接口 3. 关联( Association) 【关联关系】:是一种拥有的关系,它使一个类知道另一个类的属性和方法;如:老师与学生,丈夫与妻子关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有