UML之2——关系
上篇博客介绍了表示事物的UML的基本组成元素,本篇介绍反映事物之间的关系。
在UML中,定义的模型元素之间的关系,主要包括四种:
关联关系
泛化关系
实现关系
依赖关系
关联指事物之间存在的固有的牵连关系,在UML中,是对具有共同结构特征、关系和语义的对象之间的链接描述。关联关系提供了通信的路径,它是所有关系中最通用、语义最弱的关系。
在关联关系中,有两种比较特殊的关系,它们是聚合关系和组合关系。
关联关系是聚合关系和组合关系的统称,是比较抽象的关系;聚合关系和组合关系是更具体的关系。在UML中,使用一条实线来表示关联关系,如图1所示。
图1:关联关系
聚合(Aggregation)是一种特殊形式的关联。聚合表示类之间的关系是整体与部分的关系。
聚合关系是一种松散的对象间关系——计算机和它的外围设备就是一例。一台计算机和它的外设之间只是很松散地结合在一起。这些外设可有可无,可以与其他计算机共享,而且没有任何意义表明它由一台特定的计算机所“拥有”——这就是聚合。
聚合的表示如图2所示,棱形端表示事物的整体部分,另一端表示事物的部分。如计算机就是整体部分,外设就是部分。
图2:聚合关系和组合关系的表示方法
如果发现“部分”类的存在,是完全依赖于“整体”类的,那么就应该使用“组合”关系来描述。组合关系是一种非常强的对象间关系,例如,树和它的树叶之间的关系。树是和它的叶子紧密联系在一起,叶子完全属于这树,它们不能被其它的树所分享,并且当树死掉,叶子也会随之死去——这就是组合,组合是一种强的聚合关系。组合的表示如上图所示。
泛化关系描述了从特殊事物到一般事物之间的关系,也就是子类到父类之间的关系。从父类到子类的关系,则是特化关系。
图3:泛化关系的表示方法
实现关系是用来规定接口和实现接口的类或组件之间的关系。接口是操作的集合,这些操作用于规定类或组件提供的服务。实现关系是从类指向接口的带空心箭头的虚线表示。如图4所示。
图4:实现关系
有两个元素X、Y,如果修改元素X的定义可能会引起对另一个元素Y的定义的修改,则称元素Y依赖(Dependency)于元素X。
图5:依赖关系
PS:本质上说,关联和泛化以及实现关系都属于依赖关系的一种,但是它们有更特别的语义,因此定义了其自己的名字和详细的语义。