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

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

 

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

相互间关系spa

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

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

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

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

 

[java]  view plain  copy
 
 print?在CODE上查看代码片派生到个人代码片
  1. class Person{  
  2.     void buy(Car car){};  
  3. }  

虚线加箭头对象

 

 

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

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

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

[java]  view plain  copy
 
 print?在CODE上查看代码片派生到个人代码片
  1. class 徒弟{    
  2. }  
  3. class 唐僧{  
  4.      private List<徒弟> tdlist;  
  5. }  

 

 

 

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

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

一、聚合关系是关联关系的一种,是强的关联关系。
二、聚合是总体和部分之间的关系,例如汽车由引擎、轮胎以及其它零件组成。
三、聚合关系也是经过成员变量来实现的。可是,关联关系所涉及的两个类处在同一个层次上,而聚合关系中,两个类处于不一样的层次上,一个表明总体,一个表明部分。
四、关联与聚合仅仅从 Java 或 C++ 语法上是没法分辨的,必须考察所涉及的类之间的逻辑关系。生命周期

[java]  view plain  copy
 
 print?在CODE上查看代码片派生到个人代码片
  1. class 引擎{  
  2.   
  3. }  
  4. class 轮胎{  
  5.   
  6. }  
  7. class 汽车{  
  8.        private 引擎 engine;  
  9.        private 轮胎 tyre[4];  
  10. }  

 

 

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

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

 

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

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

 

[java]  view plain  copy
 
 print?在CODE上查看代码片派生到个人代码片
  1. class 肢{  
  2. }  
  3. class 人{  
  4.      private 肢   limb[4];  
  5. }  

 

通常是实心菱形加实线箭头表示

 

 

通常化关系(泛化和实现):

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

通常化关系

 

 

 泛化(Generalization):

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

 

带空心箭头的实线线表示

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

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

 

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

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

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

相关文章
相关标签/搜索