UML建模

UML中的图

UML包括九种图:使用案例图、类图、对象图、构件图、部署图、活动图、协作图、状态图、序列图。在这些图中使用案例图、类图、序列图是最有用的。
根据其用意,可以将其划分为结构型图和行为型图两种。
结构型图:描述系统的静态结构。在显示系统中类及类之间的关系时最有用。
行为型图:描述系统的动态性质。在显示系统中元素如何协作产生满足要求的系统行为方面是最有用。

结构型图

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

行为型图

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

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

UML中的关系

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

(独立元素)(依赖元素)

图2-14      依赖关系


(2)关联关系

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

                                                                                  

图2-15      关联


(3)泛化关系

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

(子元素)(父元素)

图2-16      泛化关系

(4)实现关系

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

(实现)(接口)

图2-17      实现关系

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

 


图:一般化关系

关于UML图中的关联
 

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

可能的多重值描述
表示 含义
0..1 0个或1个
1 只能1个
0..* 0个或多个
* 0个或多个
1..* 1个或我个
3 只能3个
0..5 0到5个
m..n m到n个

表:多重值和它们的表示


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

 

图7 :单向关联的透支财务报告


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

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


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

 
图12      车和轮胎间的聚合关系
 

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

 
图13:Company类和Department类之间的组合关系
 

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

标志

可见性类型

+

Public

#

Protected

-

Private

~

Package


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

 

posted on 2012-06-20 13:25  duanxz  阅读(707)  评论(0编辑  收藏  举报