当前位置:文档之家› UML的9种图例的定义、用途、画法总结

UML的9种图例的定义、用途、画法总结

UML的9种图例的定义、用途、画法总结
UML的9种图例的定义、用途、画法总结

UML的9种图例的总结

一、用例图

1、定义

用例定义:

用例是对包括变量在内的一组动作序列的描述,系统执行这些动作,并产生传递特定参与者的价值的可观察结果。(这是UML对用例的正式定义,可以这样去理解,用例是参与者想要系统做的事情,用例在画图中用椭圆来表示,椭圆下面附上用例名称)。

用例图定义:

由参与者(Actor)、用例(Use Case)以及它们之间的关系构成的用于描述系统功能的动态视图称为用例图。

2、用途

用例图(User Case)是被称为参与者的外部用户所能观察到的系统功能的模型图,呈现了一些参与者和一些用例,以及它们之间的关系,主要用于对系统、子系统或类的功能行为进行建模。

用例图主要的作用有三个:(1)获取需求;(2)指导测试;(3)还可在整个过程中的其它工作流起到指导作用。

3、组成元素以及元素之间的关系说明

用例图由参与者(Actor)、用例(Use Case)、系统边界(用矩形表示—注明系统名称)、箭头组成,用画图的方法来完成。

参与者不是特指人,是指系统以外的,在使用系统或与系统交互中所扮演的角色。

因此参与者可以是人,可以是事物,也可以是时间或其他系统等等。还有一点要注意的是,参与者不是指人或事物本身,而是表示人或事物当时所扮演的角色。

系统边界是用来表示正在建模系统的边界。边界内表示系统的组成部分,边界外表示系统外部。系统边界在画图中用方框来表示,同时附上系统的名称,参与者画在边界的外面,用例画在边界里面。因为系统边界的作用有时候不是很明显,所以我个人理解,在画图时可省略。

箭头用来表示参与者和系统通过相互发送信号或消息进行交互的关联关系。箭头尾部用来表示启动交互的一方,箭头头部用来表示被启动的一方,其中用例总是要由参与者来启动。

元素之间的关系:

用例图中包含的元素除了系统边界、角色和用例,另外就是关系。关系包括用例之间的关系,角色之间的关系,用例和角色之间的关系。

角色之间的关系:

角色之间的关系。由于角色实质上也是类,所以它拥有与类相同的关系描述,即角色之间存在泛化关系(泛化关系可以先简单理解为继承),泛化关系的含义是把某些角色的共同行为提取出来表示为通用的行为。

用例之间的关系:

包含关系:

基本用例的行为包含了另一个用例的行为。基本用例描述在多个用例中都有的公共行为。包含关系本质上是比较特殊的依赖关系。它比一般的依赖关系多了一些语义。在包含关系中箭头的方向是从基本用例到包含用例。在中用例之间是使用和扩展这两种关系,这两种关系都是泛化关系的版型。在以后的版本中用例之间是包含和扩展这两种关系。

泛化关系:

它的意思和面向对象程序设计中的继承的概念是类似的。不同的是继承使用在实施阶段,泛化使用在分析、设计阶段。在泛化关系中子用例继承了父用例的行为和含义,子用例也可以增加新的行为和含义或者覆盖父用例中的行为和含义。

扩展关系

扩展关系的基本含义和泛化关系类似,但在扩展关系中,对于扩展用例有更多的规则限制,基本用例必须声明扩展点,而扩展用例只能在扩展点上增加新的行为和含义。与包含关系一样,扩展关系也是依赖关系的版型。在扩展关系中,箭头的方向是从扩展用例到基本用例,这与包含关系是不同的。

用例的泛化、包含、扩展关系的比较。一般来说可以使用“is a”和“has a”来判断使用那种关系。泛化和扩展关系表示用例之间是“is a”关系,包含关系表示用例之间是“has a”关系。扩展与泛化相比多了扩展点,扩展用例只能在基本用例的扩展点上进行扩展。在扩展关系中基本用例是独立存在。在包含关系中执行基本用例的时候一定会执行包含用例。(1)如果需要重复处理两个或多个用例时可以考虑使用包含关系,实现一个基本用例对另一个的引用。(2)当处理正常行为的变形是偶尔描述时可以考虑只用泛化关系。(3)当描述正常行为的变形希望采用更多的控制方式时,可以在基本用例中设置扩展点,使用扩展关系。扩展关系比较难理解,如果把扩展关系看作是带有更多规则限制的泛化关系,可以帮助理解。通常先获得基本用例,针对这个用例中的每一个行为提问:该步骤会出什么差错?该步骤有不同的情况吗?该步骤的工作怎样以不同的方式进行等,把所有的变化情况都标识为扩展。通常基本用例很容易构造,而扩展用例需要反复分析、验证。当我们发现已经存在的两个用例间具有某种相似性时,可以把相似的部分从两个用例中抽象出来单独作为一个用例,该用例被这两个用例同时使用,这个抽象出的用例和另外两个用例形成包含关系。

用例之间的关系举例:

包含:业务中,总是存在着维护某某信息的功能,如果将它作为一个用例,那新建、

编辑以及修改都要在用例详述中描述,过于复杂;如果分成新建用例、编辑用例和删除用例,则划分太细。这时包含关系可以用来理清关系。

扩展:系统中允许用户对查询的结果进行导出、打印。对于查询而言,能不能导出、打印查询都是一样的,导出、打印是不可见的。导入、打印和查询相对独立,而且为查询添加了新行为。

泛化:子用例将继承父用例的所有结构、行为和关系。子用例可以使用父用例的一段行为,也可以重载它。父用例通常是抽象的。

4、画法例子

二、类图

1、定义

类图Class diagram通过显示出系统的类以及这些类之间的关系来表示系统。类图是静态的-它们显示出什么可以产生影响但不会告诉你什么时候产生影响。在系统分析阶段将类分成三种类型:实体类、边界类、控制类

边界类用于描述外部参与者与系统之间的交互。识别边界类可以帮助开发人员识别出用户对界面的需求。

实体类主要是作为数据管理和业务逻辑处理层面上存在的类别;它们主要在分析阶段区分。实体类的主要职责是存储和管理系统内部的信息,它也可以有行为,甚至很复杂的行为,但这些行为必须与它所代表的实体对象密切相关。

控制类用于描述一个用例所具有的事件流控制行为,控制一个用例中的事件

顺序。

2、用途

类图的目的是显示建模系统的类型,描述组成系统的对象内容与对象之间的关系。

3、组成元素以及元素之间的关系说明

类名

类的 UML 表示是一个长方形,垂直地分为三个区,如图 1 所示。顶部区域显示类的名字。中间的区域列出类的属性。底部的区域列出类的操作。当在一个类图上画一个类元素时,你必须要有顶端的区域,下面的二个区域是可选择的(当图描述仅仅用于显示分类器间关系的高层细节时,下面的两个区域是不必要的)。图 1 显示一个航线班机如何作为 UML 类建模。正如我们所能见到的,名字是Flight,我们可以在中间区域看到Flight类的3个属性:flightNumber,departureTime 和

flightDuration。在底部区域中我们可以看到Flight类有两个操作:delayFlight 和getArrivalTime。

图 1: Flight类的类图

类属性列表

类的属性节(中部区域)在分隔线上列出每一个类的属性。属性节是可选择的,要是一用它,就包含类的列表显示的每个属性。如下格式:

name : attribute type

flightNumber : Integer

继续我们的Flight类的例子,我们可以使用属性类型信息来描述类的属性,如表 1 所示。

表 1:具有关联类型的Flight类的属性名字

属性名称属性类型flightNumber Integer

departureTime Date

flightDuration Minutes

在业务类图中,属性类型通常与单位相符,这对于图的可能读者是有意义的(例如,分钟,美元,等等)。然而,用于生成代码的类图,要求类的属性类型必须限制在由程序语言提供的类型之中,或包含于在系统中实现的、模型的类型之中。

在类图上显示具有默认值的特定属性,有时是有用的(例如,在银行账户应用程序中,一个新的银行账户会以零为初始值)。UML 规范允许在属性列表节中,通过使用如下的记号作为默认值的标识:

name : attribute type = default value

举例来说:

balance : Dollars = 0

显示属性默认值是可选择的;图 2 显示一个银行账户类具有一个名为balance的类型,它的默认值为0。

图 2:显示默认为0美元的balance属性值的银行账户类图。

类操作列表

类操作记录在类图长方形的第三个(最低的)区域中,它也是可选择的。和属性一样,类的操作以列表格式显示,每个操作在它自己线上。操作使用下列记号表现:name(parameter list) : type of value returned

图3显示,delayFlight 操作有一个Minutes类型的输入参数 -- numberOfMinutes。然而,delayFlight 操作没有返回值。1当一个操作有参数时,参数被放在操作的括号内;每个参数都使用这样的格式:“参数名:参数类型”。

图 3:Flight类操作参数,包括可选择的“in”标识。

当文档化操作参数时,你可能使用一个可选择的指示器,以显示参数到操作的输入参数、或输出参数。这个可选择的指示器以“in”或“out”出现,如图3中的操作区域所示。一般来说,除非将使用一种早期的程序编程语言,如Fortran ,这些指示器可能会有所帮助,否则它们是不必要的。然而,在 C++和Java中,所有的参数是“in”参数,而且按照UML规范,既然“in”是参数的默认类型,大多数人将会遗漏输入/输出指示器。

继承

在面向对象的设计中一个非常重要的概念,继承,指的是一个类(子类)继承另外的一个类(超类)的同一功能,并增加它自己的新功能(一个非技术性的比喻,想象我继承了我母亲的一般的音乐能力,但是在我的家里,我是唯一一个玩电吉他的人)的能力。为了在一个类图上建模继承,从子类(要继承行为的类)拉出一条闭合的,单键头(或三角形)的实线指向超类。考虑银行账户的类型:图 4 显示 CheckingAccount 和 SavingsAccount 类如何从 BankAccount 类继承而来。

图 4: 继承通过指向超类的一条闭合的,单箭头的实线表示。

在图 4 中,继承关系由每个超类的单独的线画出,这是在IBM Rational Rose和IBM Rational XDE中使用的方法。然而,有一种称为树标记的备选方法可以画出继承关系。当存在两个或更多子类时,如图 4 中所示,除了继承线象树枝一样混在一起外,你可以使用树形记号。图 5 是重绘的与图 4 一样的继承,但是这次使用了树形记号。

图 5: 一个使用树形记号的继承实例

抽象类及操作

细心的读者会注意到,在图 4 和图5 中的图中,类名BankAccount和withdrawal 操作使用斜体。这表示,BankAccount 类是一个抽象类,而withdrawal方法是抽象的操作。换句话说,BankAccount 类使用withdrawal规定抽象操作,并且CheckingAccount 和 SavingsAccount 两个子类都分别地执行它们各自版本的操作。然而,超类(父类)不一定要是抽象类。标准类作为超类是正常的。

关联

当你系统建模时,特定的对象间将会彼此关联,而且这些关联本身需要被清晰地建模。有五种关联。在这一部分中,我将会讨论它们中的两个 -- 双向的关联和单向的关联,而且我将会在Beyond the basics部分讨论剩下的三种关联类型。请注意,关于何时该使用每种类型关联的详细讨论,不属于本文的范围。相反的,我将会把重点集中在每种关联的用途,并说明如何在类图上画出关联。

双向(标准)的关联

关联是两个类间的联接。关联总是被假定是双向的;这意味着,两个类彼此知道它们

间的联系,除非你限定一些其它类型的关联。回顾一下Flight 的例子,图 6 显示了在Flight类和Plane类之间的一个标准类型的关联。

图 6:在一个Flight类和Plane类之间的双向关联的实例

一个双向关联用两个类间的实线表示。在线的任一端,你放置一个角色名和多重值。图 6 显示Flight与一个特定的Plane相关联,而且Flight类知道这个关联。因为角色名以Plane类表示,所以Plane承担关联中的“assignedPlane”角色。紧接于Plane类后面的多重值描述0...1表示,当一个Flight实体存在时,可以有一个或没有Plane与之关联(也就是,Plane可能还没有被分配)。图 6 也显示Plane知道它与Flight类的关联。在这个关联中,Flight承担“assignedFlights”角色;图 6 的图告诉我们,Plane实体可以不与flight关联(例如,它是一架全新的飞机)或与没有上限的flight(例如,一架已经服役5年的飞机)关联。

由于对那些在关联尾部可能出现的多重值描述感到疑惑,下面的表3列出了一些多重值及它们含义的例子。

表 3: 多重值和它们的表示

表示含义

0..1 0个或1个

1只能1个

0..*0个或多个

* 0个或多个

1..*1个或多个

3只能3个

0..50到5个

5..15 5到15个

单向关联

在一个单向关联中,两个类是相关的,但是只有一个类知道这种联系的存在。图 7 显示单向关联的透支财务报告的一个实例。

图 7: 单向关联一个实例:OverdrawnAccountsReport 类 BankAccount 类,而BankAccount 类则对关联一无所知。

一个单向的关联,表示为一条带有指向已知类的开放箭头(不关闭的箭头或三角形,用于标志继承)的实线。如同标准关联,单向关联包括一个角色名和一个多重值描述,但是与标准的双向关联不同的时,单向关联只包含已知类的角色名和多重值描述。在图 7 中的例子中,OverdrawnAccountsReport 知道 BankAccount 类,而且知道BankAccount 类扮演“overdrawnAccounts”的角色。然而,和标准关联不同,BankAccount 类并不知道它与 OverdrawnAccountsReport 相关联。2

软件包

不可避免,如果你正在为一个大的系统或大的业务领域建模,在你的模型中将会有许多不同的分类器。管理所有的类将是一件令人生畏的任务;所以,UML 提供一个称为软件包的组织元素。软件包使建模者能够组织模型分类器到名字空间中,这有些象文件系统中的文件夹。把一个系统分为多个软件包使系统变成容易理解,尤其是在每个软件包都表现系统的一个特定部分时。3

在图中存在两种方法表示软件包。并没有规则要求使用哪种标记,除了用你个人的判断:哪种更便于阅读你画的类图。两种方法都是由一个较小的长方形(用于定位)

嵌套在一个大的长方形中开始的,如图 8 所示。但是建模者必须决定包的成员如何表示,如下:

如果建模者决定在大长方形中显示软件包的成员,则所有的那些成员4需要

被放置在长方形里面。另外,所有软件包的名字需要放在软件包的较小长方

形之内(如图 8 的显示)。

如果建模者决定在大的长方形之外显示软件包成员,则所有将会在图上显示的

成员都需要被置于长方形之外。为了显示属于软件包的分类器,从每个分类

器画一条线到里面有加号的圆周,这些圆周粘附在软件包之上(图9)。

图 8:在软件包的长方形内显示软件包成员的软件包元素例子

图 9:一个通过连接线表现软件包成员的软件包例子

在 UML 2 中,了解类图的基础更为重要。这是因为类图为所有的其他结构图提供基本的构建块。如组件或对象图(仅仅是举了些例子)。

在下面的部分中,会使用的类图的更重要的方面。这些包括UML 2 规范中的接口,其它的三种关联类型,可见性和其他补充。

接口

在本文的前面,我建议你以类来考虑分类器。事实上,分类器是一个更为一般的概念,它包括数据类型和接口。

关于何时、以及如何高效地在系统结构图中使用数据类型和接口的完整讨论,不在本文的讨论范围之内。既然这样,我为什么要在这里提及数据类型和接口呢?你可能想在结构图上模仿这些分类器类型,在这个时候,使用正确的记号来表示,或者至少知

道这些分类器类型是重要的。不正确地绘制这些分类器,很有可能将使你的结构图读者感到混乱,以后的系统将不能适应需求。

一个类和一个接口不同:一个类可以有它形态的真实实例,然而一个接口必须至少有一个类来实现它。在 UML 2 中,一个接口被认为是类建模元素的特殊化。因此,接口就象类那样绘制,但是长方形的顶部区域也有文本“interface”,如图 10 所示。5

图 10:Professor类和Student类实现Person接口的类图实例

在图 10 中显示的图中,Professor和Student类都实现了Person的接口,但并不从它继承。我们知道这一点是由于下面两个原因:1) Person对象作为接口被定义 -- 它在对象的名字区域中有“interface”文本,而且我们看到由于Professor和Student 对象根据画类对象的规则(在它们的名字区域中没有额外的分类器文本)标示,所以它们是类对象。 2) 我们知道继承在这里没有被显示,因为与带箭头的线是点线而不是实线。如图 10 所示,一条带有闭合的单向箭头的点线意味着实现(或实施);正如我们在图 4 中所见到的,一条带有闭合单向箭头的实线表示继承。

更多的关联

在上面,我讨论了双向关联和单向关联。现在,我将会介绍剩下的三种类型的关联。(1)关联类

在关联建模中,存在一些情况下,你需要包括其它类,因为它包含了关于关联的有价值的信息。对于这种情况,你会使用关联类来绑定你的基本关联。关联类和一般类一样表示。不同的是,主类和关联类之间用一条相交的点线连接。图 11 显示一个航空工业实例的关联类。

图 11:增加关联类 MileageCredit

在图 11 中显示的类图中,在Flight类和 FrequentFlyer 类之间的关联,产生了称为 MileageCredit的关联类。这意味当Flight类的一个实例关联到 FrequentFlyer 类的一个实例时,将会产生 MileageCredit 类的一个实例。

(2)聚合

聚合是一种特别类型的关联,用于描述“总体到局部”的关系。在基本的聚合关系中,部分类的生命周期独立于整体类的生命周期。

举例来说,我们可以想象,车是一个整体实体,而车轮轮胎是整辆车的一部分。轮胎可以在安置到车时的前几个星期被制造,并放置于仓库中。在这个实例中,Wheel 类实例清楚地独立地Car类实例而存在。然而,有些情况下,部分类的生命周期并不独立于整体类的生命周期 -- 这称为合成聚合。举例来说,考虑公司与部门的关系。公司和部门都建模成类,在公司存在之前,部门不能存在。这里Department 类的实例依赖于Company类的实例而存在。

让我们更进一步探讨基本聚合和组合聚合。

基本聚合

有聚合关系的关联指出,某个类是另外某个类的一部分。在一个聚合关系

中,子类实例可以比父类存在更长的时间。为了表现一个聚合关系,你画

一条从父类到部分类的实线,并在父类的关联末端画一个未填充棱形。图

12 显示车和轮胎间的聚合关系的例子。

图 12: 一个聚合关联的例子

组合聚合

组合聚合关系是聚合关系的另一种形式,但是子类实例的生命周期依赖于

父类实例的生命周期。在图13中,显示了Company类和Department类之

间的组合关系,注意组合关系如聚合关系一样绘制,不过这次菱形是被填

充的。

图 13: 一个组合关系的例子

在图 13 中的关系建模中,一个Company类实例至少总有一个Department类实例。因为关系是组合关系,当Company实例被移除/销毁时,Department实例也将自动地被移除/销毁。组合聚合的另一个重要功能是部分类只能与父类的实例相关(举例来说,我们例子中的Company类)。

(3)反射关联

现在我们已经讨论了所有的关联类型。就如你可能注意到的,我们的所有例子已经显示了两个不同类之间的关系。然而,类也可以使用反射关联与它本身相关联。起先,这可能没有意义,但是记住,类是抽象的。图 14 显示一个Employee类如何通过manager / manages角色与它本身相关。当一个类关联到它本身时,这并不意味着类的实例与它本身相关,而是类的一个实例与类的另一个实例相关。

图 14:一个反射关联关系的实例

图 14 描绘的关系说明一个Employee实例可能是另外一个Employee实例的经理。然而,因为“manages”的关系角色有 0..*的多重性描述;一个雇员可能不受任何其他雇员管理。

可见性

在面向对象的设计中,存在属性及操作可见性的记号。UML 识别四种类型的可见性:public,protected,private及package。

UML 规范并不要求属性及操作可见性必须显示在类图上,但是它要求为每个属性及操作定义可见性。为了在类图上的显示可见性,放置可见性标志于属性或操作的名字之前。虽然 UML 指定四种可见性类型,但是实际的编程语言可能增加额外的可见性,或不支持 UML 定义的可见性。表4显示了 UML 支持的可见性类型的不同标志。

表 4:UML 支持的可见性类型的标志

可见性类型

标志

+Public

# Protected

- Private

~Package

现在,让我们看一个类,以说明属性及操作的可见性类型。在图 15 中,所有的属性及操作都是public,除了 updateBalance 操作。updateBalance 操作是protected。

图 15:一个 BankAccount 类说明它的属性及操作的可见性

UML 2 补充

既然我们已经覆盖了基础和高级主题,我们将覆盖一些由UML 1. x增加的类图的新记号。

(1)实例(具体对象)……是一个具体的对象

当一个系统结构建模时,显示例子类实例有时候是有用的。为了这种结构建模,UML 2 提供实例规范元素,它显示在系统中使用例子(或现实)实例的值得注意的信息。实例的记号和类一样,但是取代顶端区域中仅有的类名,它的名字是经过拼接的: Instance Name : Class Name

举例来说(有下划线):

Donald : Person

因为显示实例的目的是显示值得注意的或相关的信息,没必要在你的模型中包含整个实体属性及操作。相反地,仅仅显示感兴趣的属性及其值是完全恰当的。如图16所描述。

图 16:Plane类的一个实例例子(只显示感兴趣的属性值)

然而,仅仅表现一些实例而没有它们的关系不太实用;因此,UML 2 也允许在实体层的关系/关联建模。绘制关联与一般的类关系的规则一样,除了在建模关联时有一个附加的要求。附加的限制是,关联关系必须与类图的关系相一致,而且关联的角色名字也必须与类图相一致。它的一个例子显示于图 17 中。在这个例子中,实例是图 6 中类图的例子实例。

图 17:图 6 中用实例代替类的例子

图 17 有Flight类的二个实例,因为类图指出了在Plane类和Flight类之间的关系是0或多。因此,我们的例子给出了两个与NX0337 Plane实例相关的Flight实例。(2)角色

建模类的实例有时比期望的更为详细。有时,你可能仅仅想要在一个较多的一般层次做类关系的模型。在这种情况下,你应该使用角色记号。角色记号类似于实例记号。为了建立类的角色模型,你画一个方格,并在内部放置类的角色名及类名,作为实体记号,但是在这情况你不能加下划线。图 18 显示一个由图 14 中图描述的雇员类扮演的角色实例。在图 18 中,我们可以认为,即使雇员类与它本身相关,关系确实是关于雇员之间扮演经理及团队成员的角色。

图 18:一个类图显示图14中扮演不同角色的类

注意:你不能在纯粹类图中做类角色的建模,即使图 18显示你可以这么做。为了使用角色记号,你将会需要使用下面讨论的内部结构记号。

(3)内部的结构

UML 2 结构图的更有用的功能之一是新的内部结构记号。它允许你显示一个类或另外的一个分类器如何在内部构成。这在 UML 1. x 中是不可能的,因为记号限制你只能显示一个类所拥有的聚合关系。现在,在 UML 2 中,内部的结构记号让你更清楚地显示类的各个部分如何保持关系。

让我们看一个实例。在图 18 中我们有一个类图以表现一个Plane类如何由四个引擎和两个控制软件对象组成。从这个图中省略的东西是显示关于飞机部件如何被装配的一些信息。从图 18 无法说明,是每个控制软件对象控制两个引擎,还是一个控制软件对象控制三个引擎,而另一个控制一个引擎。

图 18: 只显示对象之间关系的类图

绘制类的内在结构将会改善这种状态。开始时,你通过用二个区域画一个方格。最顶端的区域包含类名字,而较低的区域包含类的内部结构,显示在它们父类中承担不同角色的部分类,角色中的每个部分类也关系到其它类。图 19 显示了Plane类的内部结构;注意内部结构如何澄清混乱性。

图 20:Plane类的内部结构例子。

在图 20 中Plane有两个 ControlSoftware 对象,而且每个控制二个引擎。在图左边上的 ControlSoftware(control1)控制引擎 1 和 2 。在图右边的

ControlSoftware(control2)控制引擎 3 和 4 。

结论:

至少存在两个了解类图的重要理由。第一个是它显示系统分类器的静态结构;

第二个理由是类图为UML描述的其他结构图提供了基本记号。开发者将会认为类图是为他们特别建立的;但是其他的团队成员将发现它们也是有用的。业务分析师可以用类图,为系统的业务远景建模。

4、画法例子

三、对象图

1、定义

对象图好像ROSE中没有单独说明。大概是觉得用途不大,类图足够表达了。

对象图(Object Diagram) 是显示了一组对象和他们之间的关系。使用对象图来说明数据结构,类图中的类或组件等的实例的静态快照。对象图和类图一样反映系统的静态过程,但它是从实际的或原型化的情景来表达的。

对象图是类图的实例,几乎使用与类图完全相同的标识。他们的不同点在于对象图显示类的多个对象实例,而不是实际的类。一个对象图是类图的一个实例。

由于对象存在生命周期,因此对象图只能在系统某一时间段存在。

2、用途

对象图显示某时刻对象和对象之间的关系。一个对象图可看成一个类图的特殊用例,实例和类可在其中显示。对象也和合作图相联系,合作图显示处于语境中的对象原型(类元角色)。对象图的用途如下:

?捕获实例和连接

?在分析和设计阶段创建

?捕获交互的静态部分

?举例说明数据/对象结构

?详细描述瞬态图

?由分析人员、设计人员和代码实现人员开发

3、组成元素以及元素之间的关系说明

表示法: 对于对象图来说无需提供单独的形式。类图中就包含了对象,所以只有对象而无类的类图就是一个"对象图"。然而,"对象图"这条短语在刻画各方面特定使用时非常有用。

对象图显示对象集及其联系,代表了系统某时刻的状态。它包含带有值的对象,而非描述符,当然,在许多情况下对象可以是原型。用合作图可显示一个可多次实例化的对象及其联系的总体模型,合作图包含对象和链的描述符(类元角色和联系角色)。如果合作图实例化,则产生了对象图。

对象图不显示系统的演化过程。为此目的,可用带消息的合作图,或用顺序图表示一次交互。

4、画法例子

四、组件图

1、定义

我们可以使用组件图来描述系统整体的分系统与子系统的关系构成,因为从建模的观点看,组件图与子系统图有时感到没有区别。

在UML 中一个组件表现了实施项目,如文件和可运行的程序。不幸地,这与组件这个术语更为普遍的用法、指象COM组件这样的东西相冲突。随着时间的推移及UML 的连续版本发布, UML 组件已经失去了最初的绝大部分含义。UML 2 正式改变了组件概念的本质意思;在 UML 2 中,组件被认为是独立的,在一个系统或子系统中的封装单位,提供一个或多个接口。虽然 UML 2 规范没有严格地声明它,但是组件是呈现事物的更大的设计单元,这些事物一般将使用可更换的组件来实现。但是,并不象在 UML

1. x中,现在,组件必须有严格的逻辑,设计时构造。主要思想是,你能容易地在你

的设计中重用及/或替换一个不同的组件实现,因为一个组件封装了行为,实现了特定接口(可以理解为将接口的定义与实现封装在一起的明确使用范围的组合)。

UML的种图例的定义用途、画法总结

UML的9种图例的总结 一、用例图 1、定义 用例定义: 用例是对包括变量在内的一组动作序列的描述,系统执行这些动作,并产生传递特定参与者的价值的可观察结果。(这是UML对用例的正式定义,可以这样去理解,用例是参与者想要系统做的事情,用例在画图中用椭圆来表示,椭圆下面附上用例名称)。 用例图定义: 由参与者(Actor)、用例(Use Case)以及它们之间的关系构成的用于描述系统功能的动态视图称为用例图。 2、用途 用例图(User Case)是被称为参与者的外部用户所能观察到的系统功能的模型图,呈现了一些参与者和一些用例,以及它们之间的关系,主要用于对系统、子系统或类的功能行为进行建模。 用例图主要的作用有三个:(1)获取需求;(2)指导测试;(3)还可在整个过程中的其它工作流起到指导作用。 3、组成元素以及元素之间的关系说明 用例图由参与者(Actor)、用例(Use Case)、系统边界(用矩形表示—注明系统名称)、箭头组成,用画图的方法来完成。 参与者不是特指人,是指系统以外的,在使用系统或与系统交互中所扮演的角色。 因此参与者可以是人,可以是事物,也可以是时间或其他系统等等。还有一点要注意的是,参与者不是指人或事物本身,而是表示人或事物当时所扮演的角色。 系统边界是用来表示正在建模系统的边界。边界内表示系统的组成部分,边界外表示系统外部。系统边界在画图中用方框来表示,同时附上系统的名称,参与者画在边界的外面,用例画在边界里面。因为系统边界的作用有时候不是很明显,所以我个人理解,在画图时可省略。

箭头用来表示参与者和系统通过相互发送信号或消息进行交互的关联关系。箭头尾部用来表示启动交互的一方,箭头头部用来表示被启动的一方,其中用例总是要由参与者来启动。 元素之间的关系: 用例图中包含的元素除了系统边界、角色和用例,另外就是关系。关系包括用例之间的关系,角色之间的关系,用例和角色之间的关系。 角色之间的关系: 角色之间的关系。由于角色实质上也是类,所以它拥有与类相同的关系描述,即角色之间存在泛化关系(泛化关系可以先简单理解为继承),泛化关系的含义是把某些角色的共同行为提取出来表示为通用的行为。 用例之间的关系: ●包含关系: 基本用例的行为包含了另一个用例的行为。基本用例描述在多个用例中都有的公共行为。包含关系本质上是比较特殊的依赖关系。它比一般的依赖关系多了一些语义。在包含关系中箭头的方向是从基本用例到包含用例。在UML1.1中用例之间是使用和扩展这两种关系,这两种关系都是泛化关系的版型。在UML1.3以后的版本中用例之间是包含和扩展这两种关系。 ●泛化关系: 它的意思和面向对象程序设计中的继承的概念是类似的。不同的是继承使用在实施阶段,泛化使用在分析、设计阶段。在泛化关系中子用例继承了父用例的行为和含义,子用例也可以增加新的行为和含义或者覆盖父用例中的行为和含义。 ●扩展关系 扩展关系的基本含义和泛化关系类似,但在扩展关系中,对于扩展用例有更多的规则限制,基本用例必须声明扩展点,而扩展用例只能在扩展点上增加新的行为和含义。与包含关系一样,扩展关系也是依赖关系的版型。在扩展关系中,箭头的方向是从扩展用例到基本用例,这与包含关系是不同的。 用例的泛化、包含、扩展关系的比较。一般来说可以使用“is a”和“has a”来判断使用那种关系。泛化和扩展关系表示用例之间是“is a”关系,包含关系表示用例之间是“has a”关系。扩展与泛化相比多了扩展点,扩展用例只能在基本用例的扩展点上进行扩展。在扩展关系中基本用例是独立存在。在包含关系中执行基本用例的时候一定会执行包含用例。(1)如果需要重复处理两个或多个用例时可以考虑使用包含关系,实现一个基本用例对另一个的引用。(2)当处理正常行为的变形是偶尔描述时可以考虑只用泛化关系。(3)当描述正常行为的变形希望采用更多的控制方式时,可以在基本用例中设置扩展点,使用扩展关系。扩展关系比较难理解,如果把扩展关系看作是带有更多规则限制的泛化关系,可以帮助理解。通常先获得基本用例,针对这个用例中的每一个行为提问:该步骤会出什么差错?该步骤有不同的情况吗?该步骤的工作怎样以不同的方式进行等,把所有的变化情况都标识为扩展。通常基本用例很容易构造,而扩展用例需要反复分析、验证。当我们发现已经存在的两个用例间具有某种相似性时,可以把相似的部分从两个用例中抽象出来单独作为一个用例,该用例被这两个

UML复习整理

期中试卷 1、作为项目管理者角色,你认为UML的应用有什么意义 2、作为程序开发者角色,你认为UML有什么价值 3、UseCase图有什么用处,它在UML体系中的价值 4、类图有什么用处? 5、说说在项目分析过程中你怎么找到和规划类 6、谈谈三层构架的概念 7、以餐厅消费为场景,用序列图绘制各种角色的交互 课本内容(红色加粗一定要掌握) 第一章 1、UML支撑软件整个生命周期 2、对象:面向对象系统的基本构造块,是一些相关的变量和方法的软件集 3、事件:指一种由系统预先定义而由用户或系统发出的动作 4、面向对象的基本特征:抽象,封装,继承,多态 5、模型:对现实客观世界的形状或状态的抽象模拟和简化 6、UML定义:是对软件密集系统进行可视化建模的一种语言,也是为面向对象开发系统的产品进行说明、可视化、构造和编制问的一种标准语言 7、UML可贯穿软件开发周期的每一阶段,最适用于数据建模、业务建模、对象建模、组件建模 填空题 1、统一建模语言UML是绘制软件蓝图的标准工具语言,可以对软件系统产品进行 说明、可视化、构造和编制文档 2、UML在实际软件项目中,可以用于构造各种类型系统的业务模型和软件模型。 3、软件的开发模式有瀑布模型、喷泉模型、基于构件的开发模型和XP方法。 4、面向对象程序的三大要素是多态、封装和继承。 5、瀑布模型的缺点是缺乏灵活性,特别是无法解决软件需求不明确或不准确的问 题。 选择题 1、对象程序的基本特征是:抽象、封装、继承、多态 2、类包含的要素有:名字、属性、操作 3、下列关于类与对象的关系说法不正确的是:有些对象是不能被抽象类的 4、面向对象方法中的继承机制是子类可以自动地拥有(复制)父类全部属性和操 作 5、建立对象的动态模型一般包含的步骤有:准备脚本、确定事件、准备事件跟踪 表、构造状态图 第二章 1、UML的概念和模型分为静态结构、动态行为、实现构造、模型组织和扩展机制这几个机制 2、面向对象的事物分为:结构事物、行为事物、分组事物、注释事物

UML状态图编写规范

UML状态图规范说明 一、状态图简介 状态图(Statechart Diagram)是描述一个实体基于事件反应的动态行为,显示了该实体如何根据当前所处的状态对不同的时间做出反应的。通常我们创建一个UML状态图是为了以下的研究目的:研究类、角色、子系统、或组件的复杂行为。 状态图用于显示状态机(它指定对象所在的状态序列)、使对象达到这些状态的事件和条件、以及达到这些状态时所发生的操作。 状态机用于对模型元素的动态行为进行建模,更具体地说,就是对系统行为中受事件驱动的方面进行建模(请参见概念:事件与信号)。状态机专门用于定义依赖于状态的行为(即根据模型元素所处的状态而有所变化的行为)。其行为不会随着其元素状态发生变化的模型元素不需要用状态机来描述其行为(这些元素通常是主要负载管理数据的被动类)。 状态是对象执行某项活动或等待某个事件时的条件。对象可能会在有限 长度内保持某一状态。状态具有以下几项特征: 二、状态图内容 2.1 转移 转移是两个状态之间的关系,它表示当发生指定事件并且满足指定条件时,第一个状态中的对象将执行某些操作并进入第二个状态。当发生这种状态变更

时,即“触发”了转移。在触发转移之前,可认为对象处于“源”状态;在触发转移之后,可认为对象处于“目标”状态。转移具有以下几项特征: 一个转移可能有多个源状态,在这种情况下,它将呈现为一个从多个并行状态出发的结合点;一个转移也可能有多个目标状态,在这种情况下,它将呈现为一个到多个并发状态的叉形图。 2.2 事件触发器 在状态机环境中,事件是指可触发状态转移的激励的发生。事件可能包括信号、调用、时间推移或状态变更。信号或调用可能具有其值可用于转移的参数,其中包括警戒条件和操作的表达式。也可能会有无触发器的转移,这样的转移没有事件触发器。这种转移也被称为完成转移,它们在源状态完成其活动后将被隐含触发。 2.3 警戒条件 当转移的触发事件发生时,将对警戒条件进行求值。只要警戒条件不重叠,就可能会有来自同一源状态并具有同一事件触发器的多个转移。在事件发生时,只为转移进行一次警戒条件求值。该布尔表达式可能会引用对象的状态。 2.4 操作

网上购物系统详细精炼版(UML-类图-时序图-数据流图)

附件一 说明书编号:XXXXXX-01 网上商城购物系统需求说明 书 某某软件学院毕业论文精炼版 2011 年7 月20 日

目录 目录 (2) 1引言 (1) 1.1项目背景 (1) 1.2项目意义 (1) 1.3文档目的 (2) 1.4定义 (3) 2任务概述 (4) 2.1系统目标 (4) 2.2用户特点 (4) 2.3应用范围 (4) 2.4假定和约束 (4) 2.5关键性技术 (4) 3需求分析 (4) 3.1业务描述 (6) 3.2用例分析 (9) 3.3系统功能概述 . (15) 5 运行环境规定 (15) 5.1 设备 (23) 5.2支持软件 (23) 5.3控制 (24) 用户确认函 (25)

1引言 1.1项目背景 信息化是当今世界发展的大趋势,是推动经济社会发展和变革的重要力量。随着信息化时代的到来,信息传播发生了深刻的变革,人们的工作方式、生活方式乃至思维方式都发生了前所未有的改变,各行各业都在顺应这一时代变革加强信息化建设。谁能在信息化变革时期先人一步,就能获得先机,抢占鳌头。传统的销售方式是商家把商品放在店铺里供顾客挑选,店铺的规模、位置等客观因素影响着商店的客流量,并且商品的存放与销售需要人力进行管理,雇员的工资、店面的租金等又增加了成本,顾客也不能迅速找到所需要的商品,而开一个网上商店只需要一个可以存放商品的仓库,比租一个店面能节省很多,也不需要太多的人力来管理,不会因为商店的面积影响客流量,客户足不出户就能买东西,并且很容易就能找到所需要的商品。 近年来,随着Internet 的迅速崛起,互联网已日益成为收集提供信息的最 佳渠道并逐步进入传统的流通领域。于是电子商务开始流行起来,越来越多的商家在网上建起在线商店,向消费者展示出一种新颖的购物理念。 网上购物系统作为B2B,B2C(Business to Customer ,即企业对消费者),C2C(Customer to Customer ,即消费者对消费者)电子商务的前端商务平台,在其商务活动全过程中起着举足轻重的作用。本文主要考虑的是如何建设B2C 的网上购物系统。 网上购物是一种具有交互功能的商业信息系统,它向用户提供静态和动态两类信息资源。所谓静态信息是指那些比经常变动或更新的资源,如公司简介、管理规范和公司制度等等;动态信息是指随时变化的信息,如商品报价,会议安排和培训信息等。网上购物系统具有强大的交互功能,可使商家和用户方便的传递信息,完成电子贸易或EDI 交易,这种全新的交易方式实现了公司间文档与资 金的无纸化交换【1】。 可行性研究 建设Web平台系统的必要性取决于需求的迫切性和实现的可能性。可行性并不

UML各种图画法总结

一.用例图 用例模型是把应满足用户需求的基本功能(集) 聚合起来表示的强大工具。 用例模型的基本组成部件是用例角色和系统。 引入用例的主要目的是: 确定系统应具备哪些功能这些功能是否满足系统的需求开发者与用户协商达成共识的东西 为系统的功能提供清晰一致的描述,以便为后续的开发工作打下良好的交流基础,方便开发人员传递需求的功能 为系统验证工作打下基础通过验证最终实现的系统能够执行的功能是否与最初需求的功能相一致保证系统的实用性 从需求的功能用例出发提供跟踪进入系统中具体实现的类和方法检查其是否正确的能力特别是为复杂系统建模时常用用例模型构造系统的简化版本(也就是精化系统的变化和扩展能力使系统不要过于复杂)然后利用该用例模型跟踪对系统的设计和实现有影响的用例简化版本构造正确之后通过扩展完成复杂系统的建模 图示用例图时既要画出三种模型元素,同时还要画出元素之间的各种关系(通用化关联依赖) 用例代表的是一个完整的功能。 如何发现用例 实际上从识别角色起发现用例的过程就已经已开始了对于已识别的角色通过询问下列问题就可发现用例 ●角色需要从系统中获得哪种功能角色需要做什么 ●角色需要读取产生删除修改或存储系统中的某种信息吗 ●系统中发生的事件需要通知角色吗或者角色需要通知系统某件事吗这 些事件功能能干些什么 ●如果用系统的新功能处理角色的日常工作是简单化了还是提高了工作效 率 ●还有一些与当前角色可能无关的问题也能帮助建模者发现用例例如 ●系统需要的输入/输出是什么信息这些输入/输出信息从哪儿来到哪儿去 ●系统当前的这种实现方法要解决的问题是什么也许是用自动系统代替手 工操作 UML 中的用例 UML 中的用例用椭圆形表示用例的名字写在椭圆的内部或下方用例位于系统边界的内部 角色与用例之间的关联关系或通信关联关系用一条直线表示

UML中各种图的画法(全)

UML中各种图的画法(全) 一、UML中基本的图范畴: 在 UML 2 中有二种基本的图范畴:结构图和行为图。每个 UML 图都属于这二个图范畴。结构图的目的是显示建模系统的静态结构。它们包括类,组件和(或)对象图。另一方面,行为图显示系统中的对象的动态行为,包括如对象的方法,协作和活动之类的内容。行为图的实例是活动图,用例图和序列图。 二、UML中的类图: 1.类图的表示: 类的 UML 表示是一个长方形,垂直地分为三个区,如图 1 所示。顶部区域显示类的名字。中间的区域列出类的属性。底部的区域列出类的操作。在一个类图上画一个类元素时,你必须要有顶端的区域,下面的二个区域是可选择的(当图描述仅仅用于显示分类器间关系的高层细节时,下面的两个区域是不必要的)。 描述: 顶部区域显示类的名字。中间的区域列出类的属性。底部的区域列出类的操作。当在一个类图上画一个类元素时,你必须要有顶端的区域,下面的二个区域是可选择的(当图描述仅仅用于显示分类器间关系的高层细节时,下面的两个区域是不必要的)。 ·类名:如果是抽象类,则采用斜体 ·类属性列表:name : attribute type 如 flightNumber : Integer,这是最常见的表达形式 n ame : attribute type = default value 如balance : Dollars = 0,这是带有默认值的表达形式 ·类方法列表:name(parameter list) : type of value returned

注意: 在业务类图中,属性类型通常与单位相符,这对于图的可能读者是有意义的(例如,分钟,美元,等等)。然而,用于生成代码的类图,要求类的属性类型必须限制在由程序语言提供的类型之中,或包含于在系统中实现的、模型的类型之中。 2.继承的表示: 为了在一个类图上建模继承,从子类(要继承行为的类)拉出一条闭合的,单键头(或三角形)的实线指向超类。 类名BankAccount和withdrawal操作使用斜体。这表示,BankAccount 类是一个抽象类,而withdrawal方法是抽象的操作。换句话说,BankAccount 类使用withdrawal规定抽象操作,并且CheckingAccount 和 SavingsAccount 两个子类都分别地执行它们各自版本的操作。 3.接口的表示: 一个类和一个接口不同:一个类可以有它形态的真实实例,然而一个接口必须至少有一个类来实现它。在 UML 2 中,一个接口被认为是类建模元素的特殊化。因此,接口就象类那样绘制,但是长方形的顶部区域也有文本“interface”。

UML各种图详解

UML用例图 用例图主要用来图示化系统的主事件流程,它主要用来描述客户的需求,即用户希望系统具备的完成一定功能的动作,通俗地理解用例就是软件的功能模块。展示了一个外部用户能够观察到的系统功能模型图。 用例图中涉及的关系: 1》泛化(Inheritance) 就是通常理解的继承关系,子用例和父用例相似,但表现出更特别的行为;子用例将继承父用例的所有结构、行为和关系。子用例可以使用父用例的一段行为,也可以重载它。父用例通常是抽象的。 2》包含(Include) 包含关系用来把一个较复杂用例所表示的功能分解成较小的步骤。 3》扩展(Extend) 扩展关系是指用例功能的延伸,相当于为基础用例提供一个附加功能。

1 一个类和一个接口不同:一个类可以有它形态的真实实例,然而一个接口必须至少有一个类来实现它。在 UML 2 中,一个接口被认为是类建模元素的特殊化。因此,接口就象类那样绘制,但是长方形的顶部区域也有文本“interface”。 2》UML 支持的可见性类型的标志 3》多重值和它们的表示 4》类图之间的关系有:泛化(继承),依赖,关联,聚合/组合。 1.聚合/组合

聚合是一种特别类型的关联,用于描述“总体到局部”的关系。在基本的聚合关系中,部分类的生命周期独立于整体类的生命周期。 举例来说,我们可以想象,车是一个整体实体,而车轮轮胎是整辆车的一部分。轮胎可以在安置到车时的前几个星期被制造,并放置于仓库中。在这个实例中,Wheel类实例清楚地独立地Car类实例而存在。然而,有些情况下,部分类的生命周期并不独立于整体类的生命周期 -- 这称为合成聚合。举例来说,考虑公司与部门的关系。公司和部门都建模成类,在公司存在之前,部门不能存在。这里Department类的实例依赖于pany类的实例而存在。 ·基本聚合(聚合) 有聚合关系的关联指出,某个类是另外某个类的一部分。在一个聚合关系中,子类实例可以比父类存在更长的时间。为了表现一个聚合关系,你画一条从父类到部分类的实线,并在父类的关联末端画一个未填充棱形。 图中清楚的表明了类Car对象包含了另一类Wheel的4个实例,这两者在概念上是密不可分的,其中的一个类是另一个类的构成成分。菱形表示“包含”,箭头表示被包含的对象,数字4表示包含的数目。 ·组合聚合(组合) 组合聚合关系是聚合关系的另一种形式,但是子类实例的生命周期依赖于父类实例的生命周期。 注意:组合关系如聚合关系一样绘制,不过这次菱形是被填充的。 2.依赖 依赖可以说是要完成C5里的所有功能,一定要有C6的方法协助才行 3.关联 可以分为单向关联,双向关联 双向关联: C1-C2:指双方都知道对方的存在,都可以调用对方的公共属性和方法。 单向关联:

UML状态图文档

UML状态图文档 题目要求: 题目一: (1)Windows的图形用户界面(GUI)有多种状态,请画一张GUI的状态图。(不需要很详尽,只需画出状态和之间的转换关系) (2)在GUI工作时,它不仅仅是等待、识别、显示用户输入,还可能要监视系统的时钟或者定期更新应用程序的界面显示。请据此画出GUI工作状态的详细状态图。 题目二: 电梯系统有如下几个状态:空闲状态(Idle),运行状态(Run),上升状态(Moving Up),下降状态(Moving Down),停止状态(Stop),开门状态(Door Open),关门状态(Door Close)。请根据这几个状态,画一张状态图。 题目一(1) 状态分析: 1、状态类型:开机状态(Start)、睡眠状态(Sleep)、工作状态(Run)、关机状态(Colse) 2、初始状态:开机状态 3、状态装换 从开机状态开始,在电脑启动后,WINDOWS GUI进入工作状态。 在工作状态下如果用户选择SLEEP选项或者电脑长期没有得到请求,WINDOWS进入睡眠状态。 睡眠之后如果得到启动电脑进入工作状态。 在睡眠状态下如果电脑电力不足将直接进入关机状态。 在工作状态下选择关机选项或者电脑电力不足电脑进入关机状态。 状态图: 题目一(2) 状态分析: 1、状态类型:等待状态(Waiting)、识别状态(Chceking)、显示状态(Printing)、监视状

态(Overlooking)、更新状态(Updating) 2、初始状态:等待状态 3、状态转换 在等待状态下,接受用户输入即进入识别状态。 在识别成功后进入显示状态。 显示结束后系统进入等待状态。 在等待识别显示状态过程中,经过一段时间GUI都将进入监视状态或者更新状态检查系统时钟。 在显示状态中,经过一段时间系统可以进入更新状态,定期更新应用程序的显示界面。 无论是监视状态还是更新状态,在工作结束后都将回到原来进入的状态,即等待识别显示状态或者显示状态。 状态图: 题目二 状态分析: 1、状态类型:空闲状态(Idle),运行状态(Run),上升状态(Moving Up),下降状态(Moving Down),停止状态(Stop),开门状态(Door Open),关门状态(Door Close) 2、初始状态:空闲状态(Idle) 3、状态装换 从空闲状态开始,如果电梯被请求了,电梯进入运行状态。 运行过程中,如果期望楼层大于当前楼层,电梯上升,反之电梯下降。 在上升或者下降过程中,当期望楼层等于当前楼层时,电梯停止。 在经历一段时间等待后,电梯门开。 电梯门打开一段时间后,电梯门关闭。 若电梯没有任何请求,电梯进入空闲状态,有请求继续进入运行状态。 状态图:

怎么画uml状态图

怎么画uml状态图 导语: UML状态图是描述一个实体基于事件反应的动态行为,在软件开发行业运用的较为广泛。作为行业的基础图示,我们很有必要学习这类图形该如何绘制。 免费获取免费UML建模软件:https://www.doczj.com/doc/4f10055447.html,/software-diagram-tool/umldiagramsoftware/ 可以轻松绘制UML状态图的软件 亿图图示软件可以轻松绘制理想的uml状态图。UML状态图本质是一种连接线、图框与少量文字构成的图表,但绘制过程需要使用特殊的符号。亿图作为一款专业的图形图表设计软件,配有齐全的绘图符号,能够满足广大绘图用户的需求。即使是零基础的绘图者,也能够快速入门,并绘出具有专业水准的状态图。

系统要求 Windows 2000, Windows XP, Windows 2003, Windows Vista, Windows 7,Windows 8, Windows 10 Mac OS X 10.10 + Linux Debian, Ubuntu, Fedora, CentOS, OpenSUSE, Mint, Knoppix, RedHat, Gentoo及更多 亿图图示绘制“UML状态图”的特点 ●例子供参考:软件提供相关的例子,供用户参考学习,也可以直接使用模板 进行修改。 ●更多绘图功能:软件不仅仅可以回绘制UML所有类型的图示,还可以绘制 流程图、思维导图等。 ●独特的中文软件:这是一款仅有的国产图形图表设计软件,比国外软件更懂 国人的操作习惯。 ●便捷的操作:简单的拖拽式操作,让零基础的绘图者也能够享受软件带来的 便利。

UML课后题答案

第6章用例图 3. 简答题 (1)试述识别用例的方法。 答:识别用例的最好方法就是从分析系统参与者开始,在这个过程中往往会发现新的参与者。 当找到参与者之后,我们就可以根据参与者来确定系统的用例,主要是看各参与者如何使用系统,需要系统提供什么样的服务。 对于这个被选出的用例模型,不仅要做到易于理解,还要做到不同的涉众对于它的理解是一致的 (4)请简述为何在系统设计时要使用用例图及其对用户有什么帮助? 答:用例图是从软件需求分析到最终实现的第一步,它显示了系统的用户和用户希望提供的功能,有利于用户和软件开发人员之间的沟通。 借助于用例图,系统用户、系统分析人员、系统设计人员、领域专家能够以可视化的方式对问题进行探讨,减少了大量交流上的障碍,便于对问题达成共识。 第7章类图与对象图 3. 简答题 (3)简述使用类图和对象图的原因。 答:在面向对象分析方法中,类和对象的图形表示法是关键的建模技术之一。它们能够有效的对业务领域和软件系统建立可视化的对象模型,使用强大的表达能力来表示出面向对象模型的主要概念。 UML中的类图和对象图显示了系统的静态结构,其中的类、对象是图形元素的基础。(4)请简要说明类图和对象图的关系和异同。 答:在类中包含三个部分,分别是类名、类的属性和类的操作。类的名称栏只包含类名。类的属性栏定义了所有属性的特征。类中列出了操作类中使用了关联连接,关联中使用名称、角色以及约束等特征定义。类是一类的对象的抽象,类不存在多重性。 对象包含两个部分:对象的名称和对象的属性。对象的名称栏包含“对象名:类名”。对象的属性栏定义了属性的当前值。对象图中不包含操作内容,因为对属于同一个类的对象,其操作是相同的。对象使用链进行连接,链中包含名称、角色。对象可以具有多重性。 类与类之间的主要关系有几种?它们的含义是什么? 答: a.泛化关系:泛化是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。 b.实现关系:用于规定规格说明与其实现之间的关系,换句话说,就是指定两个实体之间的一个合同,一个实体定义一个合同,而另一个实体保证履行该合同。 c..关联关系:对象之间的关系准则。 聚合关系:它是一种特殊的关联关系,它表示整体与部分的关系,且部分可以离开整体而单独存在。

UML实例图讲解

UML实践----用例图、顺序图、状态图、类图、包图、协作图 2009-01-20 作者:Randy Miller 来源:网络 面向对象的问题的处理的关键是建模问题。建模可以把在复杂世界的许多重要的细节给抽象出。许多建模工具封装了UML(也就是Unified Modeling Language?),这篇课程的目的是展示出UML的精彩之处。 UML中有九种建模的图标,即: ?用例图 ?类图 ?对象图 ?顺序图 ?协作图 ?状态图 ?活动图 ?组件图 ?配置图 本课程中的某些部分包含了这些图的细节信息的页面链接。而且每个部分都有一个小问题,测试一下你对这个部分的理解。 为什么UML很重要? 为了回答这个问题,我们看看建筑行业。设计师设计出房子。施工人员使用这个设计来建造房子。建筑越复杂,设计师和施工人员之间的交流就越重要。蓝图就成为了这个行业中的设计师和施工人员的必修课。 写软件就好像建造建筑物一样。系统越复杂,参与编写与配置软件的人员之间的交流也就越重要。在过去十年里UML就成为分析师,设计师和程序员之间的“建筑蓝图”。现在它已经成为了软件行业的一部分了。UML提供了分析师,设计师和程序员之间在软件设计时的通用语言。 UML被应用到面向对象的问题的解决上。想要学习UML必须熟悉面向对象解决问题的根本原则――都是从模型的建造开始的。一个模型model就是根本问题的抽象。域domain就是问题所处的真实世界。 模型是由对象objects组成的,它们之间通过相互发送消息messages来相互作用的。记住把一个对象想象成“活着的”。对象有他们知道的事(属性attributes)和他们可以做的事(行为或操作behaviors or operations)。对象的属性的值决定了它的状态state。 类Classes是对象的“蓝图”。一个类在一个单独的实体中封装了属性(数据)和行为(方法或函数)。对象是类的实例instances。 用例图 用例图Use case diagrams描述了作为一个外部的观察者的视角对系统的印象。强调这个系统是什么而不是这个系统怎么工作。 用例图与情节紧紧相关的。情节scenario是指当某个人与系统进行互动时发生的情况。下面是一个医院门诊部的情节。 “一个病人打电话给门诊部预约一年一次的身体检查。接待员找出在预约记录本上找出最近的没有预约过的时间,并记上那个时间的预约记录。”

UML状态机图介绍

UML状态机图 1.状态机图的作用 状态机图是用来为对象的状态及造成状态改变的事件建模。UML的状态机图主要用于建立对象类或对象的动态行为模型,表现一个对象所经历的状态序列,引起状态或活动转移的事件,以及因状态或活动转移而伴随的动作。状态机图也可用于描述Use Case,以及全系统的动态行为。 状态机图表示一个模型元素在其生命期间的情况:从该模型元素的开始状态起,响应事件,执行某些动作,引起转移到新状态,又在新状态下响应事件,执行动作,引起转移到另一个状态,如此继续,直到终结状态。 2.状态机图的基本元素 状态机图的基本元素包括:状态、转移、事件、伪状态和复合状态。 状态图由状态(state,圆角矩形)与转换(transition,连接状态的箭头)组成。引起状态改变的触发器(trigger)或者事件(event)沿着转换箭头标示。如图所示灯光有2个状态:off与on。当lift switch或者lower switch事件被触发时,灯光状态会改变。 图表1 状态图的基本元素 状态图通常有初始伪状态(initial pseudostate)和最终状态(final state),分别表示状态机的开始和结束。初始状态用实心圆表示,终止状态用牛眼表示。

图表2状态图中的初始伪状态与最终状态 2.1状态(state) 状态是指在对象生命周期中满足某些条件、执行某些活动或等待某些事件的一个条件和状况。一个状态通常包括名称、进入/退出活动、内部转换、子状态和延迟事件等五个部分组成。 图表3 带分栏的状态 在状态图的下面部分可以标识内部活动,包括事件和动作(event/action)。Entry和exit事件是标准的,任何一个进入状态的转换都将会调用entry动作,任何一个退出状态的转换都将会调用exit动作,而且也可以添加自己的事件。与do行为不同,进入和退出行为是无法被中断的。 图表4状态的内部行为 例如,咖啡机正在煮咖啡的状态(Brewing),并且可以把行为写在状态内。

UML中数据流图介绍

·单向关联 在一个单向关联中,两个类是相关的,但是只有一个类知道这种联系的存在。 一个单向的关联,表示为一条带有指向已知类的开放箭头(不关闭的箭头或三角形,用于标志继承)的实线。如同标准关联,单向关联包括一个角色名和一个多重值描述,但是与标准的双向关联不同的时,单向关联只包含已知类的角色名和多重值描述。 简单的说就是OverdrawAccountReport中包含了BankAccount属性,而BankAccount中不需要包含OverdrawnAccountsReport对象 6.聚合的表示: 聚合是一种特别类型的关联,用于描述“总体到局部”的关系。在基本的聚合关系中,部分类的生命周期独立于整体类的生命周期。 举例来说,我们可以想象,车是一个整体实体,而车轮轮胎是整辆车的一部分。轮胎可以在安置到车时的前几个星期被制造,并放置于仓库中。在这个实例中,Wheel类实例清楚地独立于Car类实例而存在。然而,有些情况下,部分类的生命周期并不独立于整体类的生命周期 -- 这称为合成聚合。举例来说,考虑公司与部门的关系。公司和部门都建模成类,在公司存在之前,部门不能存在。这里Department类的实例依赖于Company类的实例而存在。 让我们更进一步探讨基本聚合和组合聚合。 注意:聚合与普通的关联的区别在于:普通的关联可能只是一个简单的“包含、引用”关系,关联和被关联类之间在逻辑概念上不一定有紧密的联系,而聚合则不同,它表示的是一种内在关系紧密,相互依存,相互包含的概念,其中的一部分是构成另外一部分的不可或缺的成分。 ·基本聚合 有聚合关系的关联指出,某个类是另外某个类的一部分。在一个聚合关系中,子类实例可以比父类存在更长的时间。为了表现一个聚合关系,你画一条从父类到部分类的实线,并在父类的关联末端画一个未填充棱形。

UML各种图例齐全—用例图、类图、状态图、包图、协作图、顺序图详细说明书画法和功能

UML各种图例 面向对象的问题的处理的关键是建模问题.建模可以把在复杂世界的许多重要的细节给抽象出.许多建模工具封装了UML(也就是Unified Modeling Language ?),这篇课程的目的是展示出UML的精彩之处. UML中有九种建模的图标,即: ?用例图 ?类图 ?对象图 ?顺序图 ?协作图 ?状态图 ?活动图 ?组件图 ?配置图 本课程中的某些部分包含了这些图的细节信息的页面链接.而且每个部分都有一个小问题,测试一下你对这个部分的理解. 标准文档

为什么UML很重要? 为了回答这个问题,我们看看建筑行业.设计师设计出房子.施工人员使用这个设计来建造房子.建筑越复杂,设计师和施工人员之间的交流就越重要.蓝图就成为了这个行业中的设计师和施工人员的必修课. 写软件就好像建造建筑物一样.系统越复杂,参与编写与配置软件的人员之间的交流也就越重要.在过去十年里UML就成为分析师,设计师和程序员之间的“建筑蓝图”.现在它已经成为了软件行业的一部分了.UML提供了分析师,设计师和程序员之间在软件设计时的通用语言. UML被应用到面向对象的问题的解决上.想要学习UML必须熟悉面向对象解决问题的根本原则――都是从模型的建造开始的.一个模型model就是根本问题的抽象.域domain就是问题所处的真实世界. 模型是由对象objects组成的,它们之间通过相互发送消息messages来相互作用的.记住把一个对象想象成“活着的”.对象有他们知道的事(属性attributes)和他们可以做的事(行为或操作behaviors or operations).对象的属性的值决定了它的状态state. 类Classes是对象的“蓝图”.一个类在一个单独的实体中封装了属性(数据)和行为(方法或函数).对象是类的实例instances. 用例图 用例图Use case diagrams描述了作为一个外部的观察者的视角对系统的印象.强调这个系统是什么而不是这个系统怎么工作. 用例图与情节紧紧相关的.情节scenario是指当某个人与系统进行互动时发生的情况.下面是一个医院门诊部的情节. “一个病人打电话给门诊部预约一年一次的身体检查.接待员找出在预约记录本上找出最近的没有预约过的时间,并记上那个时间的预约记录.” 用例Use case是为了完成一个工作或者达到一个目的的一系列情节的总和.角色actor是发动与这个工作有关的事件的人或者事情.角色简单的扮演着人或者对标准文档

《UML类图图示样例》说明

一、类图

类图分三层: 第一层显示类的名称。如果是抽象类,则就用斜体显示。 第二层是类的特性,通常就是字段和属性。 第三层是类的操作,通常是方法或行为。 注意前面的符号,“+”表示 public ,“-”表示private ,“#”表示protected 。 二、接口图 接口的两种表示方法 —— “飞翔”,它表示一个接口图,与类图的区别主要是顶端有<>显示。第一 行是接口名称,第二行是接口方法。 接口还有另一种表示方法,俗称棒棒糖表示法,就是唐老鸭类实现了“讲人话”的 接口。圆圈旁边有接口名称,接口方法在实现类中出现。 接口实现—— 用 空心三角形 + 虚线 来表示 接口实现 空三虚线

三、关系 1、继承关系(Generalization):也称泛化关系。 用 空心三角形 + 实线 来表示 说明:和“接口实现”为一对,两者都用空心三角形。但继承关系比实现接口关系耦合性强,所以继承用实线,实现接口用虚线 2、合成关系(Composition): 用 实心的菱形 + 实线箭头 来表示。 也有翻译成“组合、复合”的。是一种强的“拥有”关系。 它体现了严格的部分和整体的关系,部分和整体的生命周期一样。 比如鸟和翅膀就是组合关系,因为他们是部分和整体的关系,并且翅膀和鸟的生命 周期是相同的。 另外,合成关系的连线两端还有一个数字“1”和数字“2”,这被称为基数。表明这一端的类可以有几个实例。 例如鸟有两个翅膀,两条腿,一个头等。如果一个类可以有无数个实例就用“n”来 表示,例如鸟可以有“n”个羽毛。 关联关系、聚合关系也可以有基数。 继承泛化 空三实线合成耦强 实菱实乮线乯箭 继承接口 合成聚合 关联依赖

解析UML活动图和状态图的作用和区别

本文和大家重点讨论一下UML活动图和状态图的概念,这两种图都有各自的特点和作用,那么他们之间有什么区别和联系呢,请看本文详细介绍。 UML活动图和状态图 一、UML活动图: ◆流程图常被用来建立算法模型 ◆UML活动图与流程图类似,不同在于它支持并行活动. ◆缺点:不能清楚的表示 二、作用: 1、描述一个操作的执行过程中所完成的工作或者动作 2、描述对象内部的工作 3、描述用例的执行 4、处理多线程 5、显示如何执行一组相关的动作,以及这些动作如何影响周围对象 三、以下情况不用UML活动图 1、显示对象之间的合作 2、显示对象在其生命周期内的运转情况。 这两点是通过序列图和协作图完成的。 四、UML活动图的基本要素: ◆活动状态 ◆活动状态之间的转移(箭头) ◆判断(决策点) ◆保证条件 ◆同步条:活动之间的同步 ◆起点和终点 --起点有且只有一个,终点可以有n个。 五、泳道: 用于对UML活动图中的活动进行分组,用于描述对象之间的合作关系。 ----所谓泳道技术,就是将活动用线分成一些纵向区域,这些纵向区域称为泳道。 UML状态图 一、状态图: ◆描述一个特定对象的所有可能状态以及由于各种事件的发生而引起的状态之间的转换。例如呼叫中心系统。

◆状态图符 --状态:矩形(四角圆弧) --转移 --起点 --终点 1、状态机: ◆一种行为:描述了一个对象或一个交互在生命周期内响应事件所经历的状态序列。 ◆单个类或者一组类之间协作的行为可以用状态机来描述 ◆一个状态机涉及到一些其他元素,包括状态、转换、事件 2、状态: 在对象的生命周期中满足某些条件、执行某些活动或等待某些事件的一个条件活状况。1)名称 2)进入协作和退出动作 3)内部转换 4)子状态 5)延迟事件 3、转换:两个状态之间的一种关系,表示对象将在第一个状态中执行一定的动作并在某个特定事件发生而某个特定条件满足时进入第二个状态。 1)源状态 2)事件触发 3)监护条件 4)动作 5)目标状态 例子:电话机状态图 二、UML活动图与状态图的区别: 状态:行为的结果 活动:行为的动作 在uml中图符不一样。 注意:实际项目中,UML活动图不是必须的。 用到UML活动图的情况: --描述并行的过程或这行为 --描述一个算法 --描述一个跨越多个用例的活动 状态图描述了一个具体对象的可能状态以及他们之间的转换。 单独的说UML活动图很抽象,但是当把UML活动图与流程图进行简单的比较之后就

uml语言各种图形的建立步骤

UML语言各种图形的建立步骤 1.用例图的建立步骤: 1〉找出系统外部的活动者和外部系统,确定系统的边界和范围。 2〉确定每一个活动者所希望的系统行为。 3〉把这些系统行为命名为用例。 4〉把一些公共的系统行为分解为一批新的用例,供其它的用例引用。把一些变更的行为分解为扩展用例。 5〉编制每一个用例的剧本。 6〉绘制用例图。 7〉区分主业务流和例外情况的事件流。可以把表达例外的情况的事件流的用例图画成一个单独的子用例图。 8〉精化用例图,解决用例见得重复与冲入问题,简化用例中的对话序列,用力图可以有不同的层次,高层次系统的用例可以分解为若干个下属子系统中的子用例。 2.对象类图的建立步骤: 1〉研究分析问题领域,确定系统的需求。 2〉发现对象和对象类,明确他们的含义和责任,确定属性和操作。 3〉发现类之间的静态联系。着重分析找出对象类之间的一般和特殊关系,部分与整体关系,研究类的继承性和多态性,把类之间的静态联系用关联、泛化、聚合、组合、依赖等联系表达出来,虽然对象类图表达的是系统的静态结构特征,但是应当把对 系统的静态分析与动态分析结合起来,更能准确地了解系统的静态结构特征。 4〉设计类与联系。调整和精化已得到的对象类和类之间的联系,解决诸如命名冲突、功能重复等问题。 5〉绘制对象类图并编制相应的说明。上述做法是直接从领域分析抽取对象和对象类开始的,这是常规的面向对象的系统分析与设计的做法。Rational统一过程主张采用 用例驱动的系统分析与设计方法。从业务领域的分析中先抽取活动者和用例,建立 业务模型。业务模型包括业务用例模型、设计模型、实现模型和测试模型。 3.系统中的例外情况建模: 1〉对于每一个对象类和接口,找出可能发生的例外情况和出现例外情况的条件。 2〉把每一个例外情况用一个信号类描述,类名前冠有构造型《exception》。 3〉建立例外情况的层次结构,把一般性的例外情况置于高层,把特殊性的例外情况置于低层。 4〉对于每一个操作确定可能发生的例外情况。在操作和他的例外情况的信号图表之间有一条虚箭线连接,其上标出构造型《send》,表示从操作到他的例外情况的send 依赖。 4.顺序图的建立步骤: 1〉确定交互的上下文。 2〉找出参与交互的对象类角色,把他们横向排列在顺序图的顶部,最重要的对象安置在最左边,交互密切的对象尽可能相邻。在交互中创建的对象在垂直方向应安置在

uml各种图例及说明

1、用例图 描述角色以及角色与用例之间的连接关系。说明的是谁要使用系统,以及他们使用该系统可以做些什么。一个用例图包含了多个模型元素,如系统、参与者和用例,并且显示了这些元素之间的各种关系,如泛化、关联和依赖。 2、类图 类图是描述系统中的类,以及各个类之间的关系的静态视图。能够让我们在正确编写代码以前对系统有一个全面的认识。类图是一种模型类型,确切的说,是一种静态模型类型。3、对象图 与类图极为相似,它是类图的实例,对象图显示类的多个对象实例,而不是实际的类。它描述的不是类之间的关系,而是对象之间的关系。 4、活动图 描述用例要求所要进行的活动,以及活动间的约束关系,有利于识别并行活动。能够演示出系统中哪些地方存在功能,以及这些功能和系统中其他组件的功能如何共同满足前面使用用例图建模的商务需求。 5、状态图 描述类的对象所有可能的状态,以及事件发生时状态的转移条件。可以捕获对象、子系统和系统的生命周期。他们可以告知一个对象可以拥有的状态,并且事件(如消息的接收、时间的流逝、错误、条件变为真等)会怎么随着时间的推移来影响这些状态。一个状态图应该连接到所有具有清晰的可标识状态和复杂行为的类;该图可以确定类的行为,以及该行为如何根据当前的状态变化,也可以展示哪些事件将会改变类的对象的状态。状态图是对类图的补充。 6、序列图(顺序图) 序列图是用来显示你的参与者如何以一系列顺序的步骤与系统的对象交互的模型。顺序图可以用来展示对象之间是如何进行交互的。顺序图将显示的重点放在消息序列上,即强调消息是如何在对象之间被发送和接收的。 7、协作图 和序列图相似,显示对象间的动态合作关系。可以看成是类图和顺序图的交集,协作图建模对象或者角色,以及它们彼此之间是如何通信的。如果强调时间和顺序,则使用序列图;如果强调上下级关系,则选择协作图;这两种图合称为交互图。 8、构件图(组件图) 描述代码构件的物理结构以及各种构建之间的依赖关系。用来建模软件的组件及其相互之间的关系,这些图由构件标记符和构件之间的关系构成。在组件图中,构件时软件单个组成部分,它可以是一个文件,产品、可执行文件和脚本等。 9、部署图(配置图) 是用来建模系统的物理部署。例如计算机和设备,以及它们之间是如何连接的。部署图的使用者是开发人员、系统集成人员和测试人员。 ------------------------------------------------------------------------------------------------------------- 一:这九种模型图各有侧重, 1:用例图侧重描述用户需求, 2:类图侧重描述系统具体实现; 二:描述的方面都不相同,

相关主题
文本预览
相关文档 最新文档