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

依赖(Dependency)

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmJveWZlaXl1/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

演示样例代码 : 
class B {
public void doSth() {
System.out.println("do sth in class b.");
}
} //
class A {
public void doSthInA(B b) {
b.doSth();
// others
}
}

泛化(Generalization)

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

// 形状
class Shape { } // 方形继承自Shape
class Square extends Shape{ }

实现(Realize)

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


演示样例代码  :
public interface Runnable {
public abstract void run();
} // 实现Runnable接口
public class Thread implements Runnable {
@Override
public void run() {
// do sth
}
}

关联(Association)

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




   每一个人都能够有书籍。可是书籍与人之间并不存在强关系,两者能够各自独立。

演示样例代码 : 
class Book {

}

//
class People {
// 学生能够独立于老师而存在
List<Book> mBooks = new ArrayList<Book>();
}

聚合(Aggregation)

聚合是关联关系的一种特例,是强的关联关系;关联和聚会在语义上无法区分,仅仅能依据考察详细的逻辑来加以区分。
聚合关系表示部分和总体的关系 (
关联仅仅是表示单纯的依赖 ),部分能够独立于总体而存在。

UML中用带空心菱形头的实线

表示Aggregation关系,菱形头指向总体。


watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmJveWZlaXl1/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

    车轮属于车的一部分。但车轮能够独立于车存在。

代码演示样例 :
class Wheel {
} class Car {
List<Wheel> mWheels = new ArrayList<Wheel>();
}

组合(Composition)

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

假设是组合关系,部分(个体)不能独立于总体而存在。

UML中用带实心菱形头的实线表示Composition关系。

菱形头指向总体。


   
   手是人体的一部分,可是手不能独立于人体而存在。
class Hand {

}

class People {
List<Hand> mHands = new ArrayList<Hand>();
}

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

各种关系的强弱顺序:

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

參考推荐:

UML类图几种关系的总结

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

UML建模免费工具


最新文章

  1. JS高级程序设计笔记一
  2. Extjs,Git,插件....学习网址
  3. 第四章 分治策略 4.2 矩阵乘法的Strassen算法
  4. word20161129
  5. Sqli-LABS通关笔录-16
  6. Python 开发轻量级爬虫03
  7. 菜鸟教程之工具使用(十一)——Eclipse去掉未使用的引用
  8. CXF之七 传输文件
  9. iMAC——全新重装Mac系统
  10. hdu 5014 Number Sequence
  11. 顶尖大数据挖掘实战平台(TipDM-H8)产品白皮书
  12. hdu 2757 Ocean Currents(优先队列+bfs)
  13. 摘记:IIS长时间任务超时处理
  14. spring mvc中的拦截器小结 .
  15. HTTP请求和MIME介绍
  16. zk个人入门学习总结(1)
  17. ubuntu 16.04 安装 vscode
  18. django中如何实现分页功能
  19. 使用Nginx+Uwsgi部署Python Flask项目
  20. qt 软件打包

热门文章

  1. bzoj1001: [BeiJing2006]狼抓兔子(初识是你最小割)
  2. 数据仓库 SSIS
  3. GridView 绑定 ObjectDataSource
  4. canvas为什么你指定一个比较小的宽高,但它实际占位却很多?
  5. Spring MVC模式示例(采用解耦控制器+校验器)
  6. 阿里云安装mysql数据库出现2002错误解决办法
  7. affe(8) solver 优化方法
  8. md5sum---文件校验和
  9. Maven 工程 POM.XML文件最全详解
  10. 编译impala、拓展impala语法解析模块