UML--用例图

来源:互联网 发布:手机淘宝怎样修改好评 编辑:程序博客网 时间:2024/06/05 20:57

回想面试阿里的时候,面试官问了一个问题,有关UML的,菜鸟君自诩学过UML并且很熟悉,结果第一个问题就挂掉了,刷刷刷的打脸撒*……*

所以要好好的重新学习一下UML

一、UML简介

UML统一建模语言,我们都知道,面向对象的程序设计要经过OOA(面向对象分析)、OOD(面向对象设计)和OOP(面向对象编程)三个步骤,其中OOA对目标系统进行分析,建立分析模型,并将其文档化,而OOD用面向对象的思想对OOA的结果进行细化,得出设计模型。OOA和OOD的分析、设计结果需要统一的符号来描述、交流并记录,这个符号的表示法就是UML来实现的。

UML在发展史上有两个里程碑,一个是UML1.1,是发布的第一个正式版本,另一个是UML2.0,它是目前最稳定,最成熟的版本。

UML2.0组成图如下:


上面用橙色标注的是常用的7中图,也是我重点介绍的,本篇主要介绍用例图。

二、用例图

用于描述系统提供的功能,每个用例代表一个功能模块。

用例图主要包括用例(椭圆表示),角色(人形),角色和用例之间的关系(简单的线段)和用例之间的关系。

下面就引用之前一个博客里的论述,挺清晰。

用例图所包含的元素如下:

  1. 参与者(Actor)

  表示与您的应用程序或系统进行交互的用户、组织或外部系统。用一个小人表示。

  2. 用例(Use Case)

  用例就是外部可见的系统功能,对系统提供的服务进行描述。用椭圆表示。

  3. 子系统(Subsystem)

  用来展示系统的一部分功能,这部分功能联系紧密。

  4. 关系

  用例图中涉及的关系有:关联、泛化、包含、扩展。

  如下表所示:

  a. 关联(Association)

  表示参与者与用例之间的通信,任何一方都可发送或接受消息。

  【箭头指向】:指向消息接收方

  b. 泛化(Inheritance)

  就是通常理解的继承关系,子用例和父用例相似,但表现出更特别的行为;子用例将继承父用例的所有结构、行为和关系。子用例可以使用父用例的一段行为,也可以重载它。父用例通常是抽象的。

  【箭头指向】:指向父用例

  c. 包含(Include)

  包含关系用来把一个较复杂用例所表示的功能分解成较小的步骤。

  【箭头指向】:指向分解出来的功能用例

  d. 扩展(Extend)

  扩展关系是指用例功能的延伸,相当于为基础用例提供一个附加功能。

  【箭头指向】:指向基础用例

  e. 依赖(Dependency)

  以上4种关系,是UML定义的标准关系。但VS2010的用例模型图中,添加了依赖关系,用带箭头的虚线表示,表示源用例依赖于目标用例。

  【箭头指向】:指向被依赖项

  5. 项目(Artifact)

  用例图虽然是用来帮助人们形象地理解功能需求,但却没多少人能够通看懂它。很多时候跟用户交流甚至用Excel都比用例图强,VS2010中引入了“项目”这样一个元素,以便让开发人员能够在用例图中链接一个普通文档。

  用依赖关系把某个用例依赖到项目上:

  然后把项目-》属性 的Hyperlink设置到你的文档上;

  这样当你在用例图上双击项目时,就会打开相关联的文档。

  6. 注释(Comment)

  包含(include)、扩展(extend)、泛化(Inheritance) 的区别:

  条件性:泛化中的子用例和include中的被包含的用例会无条件发生,而extend中的延伸用例的发生是有条件的;

  直接性:泛化中的子用例和extend中的延伸用例为参与者提供直接服务,而include中被包含的用例为参与者提供间接服务。

  对extend而言,延伸用例并不包含基础用例的内容,基础用例也不包含延伸用例的内容。

  对Inheritance而言,子用例包含基础用例的所有内容及其和其他用例或参与者之间的关系;

  一个用例图示例:


0 0
原创粉丝点击