您的位置:首页 > 其它

UML中的图~

2008-10-09 12:03 155 查看
UML包括九种图:使用案例图、类图、对象图、构件图、部署图、活动图、协作图、状态图、序列图。在这些图中使用案例图、类图、序列图是最有用的。

根据其用意,可以将其划分为结构型图和行为型图两种。

结构型图:描述系统的静态结构。在显示系统中类及类之间的关系时最有用。

行为型图:描述系统的动态性质。在显示系统中元素如何协作产生满足要求的系统行为方面是最有用。

结构型图



显然,要描述一个设计模式的静态结构,使用类图和对象图是很合适的。

行为型图



显然,要描述一个设计模式的行为特征,使用状态图和时序图是很合适的。

应当指出的是,一个使用UML的系统设计,往往是从使用案例图开始的,而且是一个设计应当是使用案例驱动的。

UML中的关系

在UML中有4种关系:

(1)依赖关系

  依赖(dependency)是两个模型元素间的语义关系,其中一个元素(独立元素)发生变化会影响另一个元素(依赖元素)的语义(也就是说“独立元素”中引用了“依赖元素”)。在图形上,把依赖画成一条可能有方向的虚线,偶尔在其上还带有一个标记如图2-14所示。
(独立元素)

(依赖元素)

图2-14 依赖关系

(2)关联关系

  关联(association)是类之间的结构关系,它描述了一组链,链是对象(类的实例)之间的连接。聚合是一种特殊类型的关联,它描述了整体和部分间的结构关系。在图形上,把关联画成一条实线,它可能有方向,偶尔在其上还带有一个标记,而且它还经常含有诸如多重性和端名这样的修饰,如图2-15所示。关于关联我们将在下面进一步详述。



图2-15 关联

(3)泛化关系

  泛化(generalization)是一种特殊/一般关系,在其中特殊元素(子元素)基于一般元素(父元素)而建立。用这种方法,子元素共享了父元素的结构和行为(也就是说“子元素”继承了“父元素”)。在图形上,把泛化关系画成一条带有空心箭头的实线,该实线指向父元素,如图2-16所示。

(子元素)

(父元素)

图2-16 泛化关系

(4)实现关系

  实现(realization)是类目之间的语义关系,其中的一个类目指定了由另一个类目保证执行的合约。在两种地方会遇到实现关系:一种是在接口和实现它们的类或构件之间;另一种是在用况和实现它们的协作之间。在图形上,把实现关系画成一条带有空心箭头的虚线,它是泛化和依赖关系两种图形的结合,如图2-17所示。

(实现)

(接口)

图2-17 实现关系

关于UML图中的关联
[align=center][/align]

包含种关系:

一般化关系:表示类与类之间的继承关系,接口与接口之间的继承关系,或类对接口的实现关系。一般化关系是子类指向父类的,或从实现接口的类指向被实现的接口,与继承或实现的方向相反。如下图所示:



图:一般化关系

[align=center][/align]
关联关系:是类与类之间的联接,它使一个类知道另一个类的属性和方法。关联关系包括单向关联、双向关联、聚合关联、合成关联、反射关联关系。

可能的多重值描述
表示含义
0..10个或1个
1只能1个
0..*0个或多个
*0个或多个
1..*1个或我个
3只能3个
0..50到5个
m..nm到n个
表:多重值和它们的表示

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

[align=center] [/align]



[align=center]图7 :单向关联的透支财务报告[/align]

双向关联:两个类彼此知道它们间的联系,除非你限定一些其它类型的关联。图 6 显示了在Flight类和Plane类之间的的双向关联。
[align=center][/align]
[align=center] [/align]



图 6 在Flight类和Plane类之间的双向关联

聚合关联:有聚合关系的关联指出,某个类是另外某个类的一部分。在一个聚合关系中,子类实例可以比父类存在更长的时间。为了表现一个聚合关系,画一条从父类到部分类的实线,并在父类的关联末端画一个未填充棱形。图12 显示车和轮胎间的聚合关系的例子。

[align=center][/align]
[align=center] [/align]



[align=center]图12 车和轮胎间的聚合关系[/align]
[align=left][/align]

合成关联(组合聚合关系):组合聚合关系是聚合关系的另一种形式,但是子类实例的生命周期依赖于父类实例的生命周期。在图13中,显示了Company类和Department类之间的组合关系,注意组合关系如聚合关系一样绘制,不过这次菱形是被填充的。

[align=center][/align]
[align=center] [/align]



[align=center]图13:Company类和Department类之间的组合关系[/align]
[align=left][/align]

反射关联:类也可以使用反射关联与它本身相关联。起先,这可能没有意义,但是记住,类是抽象的。图14 显示一个Employee类如何通过manager / manages角色与它本身相关。当一个类关联到它本身时,这并不意味着类的实例与它本身相关,而是类的一个实例与类的另一个实例相关。
[align=left][/align]
[align=center][/align]



图14 :Employee类通过manager / manages角色与它本身相关

[align=left][/align]
[align=left][/align]

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

标志可见性类型
+Public
#Protected
-Private
~Package
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: