UML类图符号 各种关系说明以及举例

UML 做棵大树 来源:小小猫钓小小鱼 7年前 (2017-10-12) 2084次浏览 0个评论
文章目录[隐藏]

UML 中描述对象和类之间相互关系的方式包括:依赖,关联,聚合,组合,泛化,实现等。

 

表示关系的强弱:组合>聚合>关联>依赖

相互间关系

聚合是表明对象之间的整体与部分关系的关联,而组合是表明整体与部分之间有相同生命周期关系的聚合。而关联与依赖的关系是,依赖描述了对象之间的调用关系,而关联描述了对象之间的结构关系。

依赖(Dependency):虚线箭头表示

依赖(Dependency):元素 A 的变化会影响元素 B,但反之不成立,那么 B 和 A 的关系是依赖关系,B 依赖 A;类属关系和实现关系在语义上讲也是依赖关系,但由于其有更特殊的用途,所以被单独描述。uml 中用带箭头的虚线表示,箭头指向被依赖元素。

1、依赖关系也是类与类之间的联结
2、依赖总是单向的。(#add 注意,要避免双向依赖。一般来说,不应该存在双向依赖。)
3、依赖关系在 Java 或 C++ 语言中体现为局部变量、方法的参数或者对静态方法的调用。

[java] view plain copy

 print ?  UML 类图符号 各种关系说明以及举例 派生到我的代码片

class Person{  
    void buy(Car car){};  
}  

UML 类图符号 各种关系说明以及举例

虚线加箭头

 

 

关联(Association):实线箭头表示

关联(Association):元素间的结构化关系,是一种弱关系,被关联的元素间通常可以被独立的考虑。uml 中用实线表示 Association 关系,箭头指向被依赖元素。

1、关联关系是类与类之间的联结,它使一个类知道另一个类的属性和方法。
2、关联可以是双向的,也可以是单向的(#add 还有自身关联)。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。
3、在 Java 或 c++ 中,关联关系是通过使用成员变量来实现的。

[java] view plain copy

 print?UML 类图符号 各种关系说明以及举例派生到我的代码片

 

class 徒弟{    
}  
class 唐僧{  
     private List<徒弟> tdlist;  
}  

UML 类图符号 各种关系说明以及举例

聚合(Aggregation):带空心菱形头表示

聚合(Aggregation):关联关系的一种特例,表示部分和整体(整体 has a 部分)的关系。uml 中用带空心菱形头的实线表示,菱形头指向整体。

1、聚合关系是关联关系的一种,是强的关联关系。
2、聚合是整体和部分之间的关系,例如汽车由引擎、轮胎以及其它零件组成。
3、聚合关系也是通过成员变量来实现的。但是,关联关系所涉及的两个类处在同一个层次上,而聚合关系中,两个类处于不同的层次上,一个代表整体,一个代表部分。
4、关联与聚合仅仅从 Java 或 C++ 语法上是无法分辨的,必须考察所涉及的类之间的逻辑关系。

[java] view plain copy

 print?UML 类图符号 各种关系说明以及举例派生到我的代码片

 

class 引擎{  
  
}  
class 轮胎{  
  
}  
class 汽车{  
       private 引擎 engine;  
       private 轮胎 tyre[4];  
}  

UML 类图符号 各种关系说明以及举例

组合(Composition):带实心菱形头的实线表示

组合(Composition):组合是聚合关系的变种,表示元素间更强的组合关系。如果是组合关系,如果整体被破坏则个体一定会被破坏,而聚合的个体则可能是被多个整体所共享的,不一定会随着某个整体的破坏而被破坏。uml 中用带实心菱形头的实线表示 Composition 关系,菱形头指向整体。

 

1、合成关系是关联关系的一种,是比聚合关系还要强的关系。

2、它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。

[java] view plain copy

 print?UML 类图符号 各种关系说明以及举例派生到我的代码片

 

class 肢{  
}  
class 人{  
     private 肢   limb[4];  
}  
 

UML 类图符号 各种关系说明以及举例

一般是实心菱形加实线箭头表示

 

 

一般化关系(泛化和实现):

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

UML 类图符号 各种关系说明以及举例

一般化关系

 

 

 泛化(Generalization):

泛化(Generalization):通常所说的继承(特殊个体 is kind of 一般个体)关系,不必多解释了。uml 中用带空心箭头的实线表示,箭头指向一般个体。

 

带空心箭头的实线线表示

泛化表示一个更泛化的元素和一个更具体的元素之间的关系。泛化是用于对继承进行建模的 UML 元素。在 Java 中,用extends关键字来直接表示这种关系。

泛化关系表示类与类之间的继承关系,接口与接口之间的继承关系。

UML 类图符号 各种关系说明以及举例

实现(Realization):空心箭头和虚线表示

实现(Realize):元素 A 定义一个约定,元素 B 实现这个约定,则 B 和 A 的关系是 Realize,B realize A。这个关系最常用于接口。uml 中用空心箭头和虚线表示,箭头指向定义约定的元素。

实现关系指定两个实体之间的一个合同。换言之,一个实体定义一个合同,而另一个实体保证履行该合同。对 Java 应用程序进行建模时,实现关系可直接用implements关键字来表示。

UML 类图符号 各种关系说明以及举例


做棵大树 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明UML 类图符号 各种关系说明以及举例
喜欢 (0)
[欢迎投币]
分享 (0)
关于作者:
一个整天无所事事的,有时候忽然热血的孩子
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址