UML类图几种关系的总结

     UML类图,描述对象和类之间相互关系的方式包括:依赖(Dependency)、关联(Association)、聚合(Aggregation)、组合(Composition)、泛化(Generalization)、实现(Realization)等。

依赖(Dependency)

A依赖B,表示A会使用B的行为或属性,但B不能使用A的行为、属性,那么A和B的关系是依赖关系。
uml中用带箭头的虚线表示Dependency关系,箭头指向被依赖元素

UML类图几种关系的总结_第1张图片
示例代码 : 
[java]  view plain  copy
 
  1. class B {  
  2.     public void doSth() {  
  3.         System.out.println("do sth in class b.");  
  4.     }  
  5. }  
  6.   
  7. //  
  8. class A {  
  9.     public void doSthInA(B b) {  
  10.         b.doSth();  
  11.         // others  
  12.     }  
  13. }  

泛化(Generalization)

就是通常所说的继承关系,不必多解释了。uml中用带空心箭头的实线线表示Generalization关系,箭头指向被继承的类。   

UML类图几种关系的总结_第2张图片
[java]  view plain  copy
 
  1. // 形状  
  2. class Shape {  
  3.       
  4. }  
  5.   
  6. // 方形继承自Shape  
  7. class Square extends Shape{  
  8.       
  9. }  

实现(Realize)

A定义一个约定,B实现这个约定,则B和A的关系是实现,B实现A。这个关系最常用于接口,因此A代表接口,
B代表实现接口A的具体类。uml中用空心箭头和虚线表示Realize关系,箭头指向定义约定(A)的元素。
UML类图几种关系的总结_第3张图片


示例代码  :
[java]  view plain  copy
 
  1. public interface Runnable {  
  2.     public abstract void run();  
  3. }  
  4.   
  5. // 实现Runnable接口  
  6. public class Thread implements Runnable {  
  7.         @Override  
  8.     public void run() {  
  9.         // do sth  
  10.     }  
  11. }  

关联(Association)

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


UML类图几种关系的总结_第4张图片

   每个人都可以有书籍,但是书籍与人之间并不存在强关系,两者可以各自独立。
示例代码 : 

[java]  view plain  copy
 
  1. class Book {  
  2.       
  3. }  
  4.   
  5. //   
  6. class People {  
  7.     // 学生可以独立于老师而存在  
  8.     List mBooks = new ArrayList();  
  9. }  

聚合(Aggregation)

聚合是关联关系的一种特例,是强的关联关系;关联和聚会在语义上无法区分,只能根据考察具体的逻辑来加以区分。
聚合关系表示部分和整体的关系 ( 关联只是表示单纯的依赖 ),部分可以独立于整体而存在。UML中用带空心菱形头的实线
表示Aggregation关系,菱形头指向整体


UML类图几种关系的总结_第5张图片
    车轮属于车的一部分,但车轮可以独立于车存在。
代码示例 :
[java]  view plain  copy
 
  1. class Wheel {  
  2. }  
  3.   
  4. class Car {  
  5.     List mWheels = new ArrayList();  
  6. }  

组合(Composition)

组合是聚合关系的变种,表示元两者之间具有更强的聚合关系,它通常要求整体代表部分的生命周期

如果是组合关系,部分(个体)不能独立于整体而存在。UML中用带实心菱形头的实线表示Composition关系,

菱形头指向整体


   UML类图几种关系的总结_第6张图片
   手是人体的一部分,但是手不能独立于人体而存在。
[java]  view plain  copy
 
  1. class Hand {  
  2.   
  3. }  
  4.   
  5. class People {  
  6.     List mHands = new ArrayList();  
  7. }  

    其中依赖(Dependency)的关系最弱,而关联(Association),聚合(Aggregation),组合(Composition)表示的关系依次增强。换言之关联,聚合,组合都是依赖关系的一种,聚合是表明对象之间的整体与部分关系的关联,而组合是表明整体与部分之间有相同生命周期关系的聚合。

各种关系的强弱顺序:

        泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖 


参考推荐:

UML类图几种关系的总结

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

UML建模免费工具

你可能感兴趣的:(设计模式)