依赖关系是用一套带箭头的虚线表示,他通常描述一个对象在运行期间会用到另一个对象的关系。如图为例码农只有在工作的时候才会用到 Mac 电脑,所以这种依赖关系是依赖于运行状态的。通常情况下是在程序里面通过构造函数、形参等体现。

上图是我模拟出来的一个场景和大家具体说一下类图究竟应该怎么画才对。图中讲的是这样一个「故事」:

一个公司下面有很多部门,公司和部门是不可分割的。

码农属于一个部门,但是如果部门解散了,码农依然依然是码农。

码农无时无刻在用手机,只有工作时间才会使用 Mac。

Mac 是一种电脑,电脑是“可计算处理器”的一种实现。

下面我们就逐一介绍下这些关系。

泛化关系(generalization)

泛化关系为 is-a 的关系;两个对象之间如果可以用 is-a 来表示,就是泛化关系。

泛化关系用一条带空心箭头的直接表示。如图为例, Mac 和电脑就是泛化关系,通常在程序里面泛化表现为继承于非抽象类。

实现关系(realization)

实现关系用一条带空心箭头的虚线表示。如图为例,电脑和可计算处理器就是实现关系,通常程序里面实现关系表现为继承抽象类。比如我们平时写的 Readable,Printable等接口的实现。

聚合关系(aggregation)

聚合关系用一条带空心菱形箭头的直线表示,如图码农和部门就是聚合关系。与组合关系不同的是,整体和部分不是强依赖的,即使整体不存在了,部分仍然存在。如图为例, 部门撤销了,码农换一个工作还是码农嘛。

组合关系(composition)

组合关系用一条带实心菱形箭头直线表示,与聚合关系一样,组合关系同样表示整体由部分构成的关系,不同之处在于整体和部分是强依赖关系,如果整体不存在了,部分也不复存在。如图为例,如果公司倒闭了,那么何来部门呢?

关联关系(association)

关联关系通常用一条直线表示,当然如果需要标明方向可以添加箭头。它是描书不同的类对象之间的关系,通常不会随着状态的变化而变化,可以理解为被关联者属于关联者的一部分。如图为例,手机就是码农的一部分,不会因为他上班与否而变化所属关系。通常情况在程序里面以类变量的方式表现。

依赖关系(dependency)

依赖关系是用一套带箭头的虚线表示,他通常描述一个对象在运行期间会用到另一个对象的关系。如图为例码农只有在工作的时候才会用到 Mac 电脑,所以这种依赖关系是依赖于运行状态的。通常情况下是在程序里面通过构造函数、形参等体现。

推荐几个UML工具

PlantUML、starUML2.0、JUDE-Community

ProcessOn、STARUML、VISIO

Enterprise Architect、LucidChart

Draw.io、百度脑图、Astah

喜欢哪一个请自取!

回顾总结

到这里我们再次回顾一下开篇的图片是不是更加理解里面的连线了?所以我们在绘图过程中一定要非常注意这个线和箭。

不过话说回来,死记硬背这些东西确实很难,于是我自己想了一个打油诗,帮助自己来记忆,你也可以来试一下。

  实箭泛化虚实现

  虚线依赖实关联

  空菱聚合实组合

  项目沟通图常见

所以你学会了吗?

转载于:https://www.cnblogs.com/JiangWJ/p/10843442.html

开发规范 - UML图相关推荐

  1. Andoird+Java开发规范脑图

  2. UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现

    类与类图 1) 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性.操作.关系的对象集合的总称. 2) 在系统中,每个类具有一定的职责,职责指的是类所担任的任务,即类要完成什 ...

  3. 如何在博客插入UML图

    文章目录 如何在博客插入UML图 一.UML是什么? 二.在博客插入UML图 如何在博客插入UML图 提示:点击右上角的帮助打开帮助文档,可以看到插入UML图的例子. 一.UML是什么? Unifie ...

  4. 大话设计模式——UML图

    一.前言 很多博客里面都会涉及到UML图,主要快速反映出程序的设计结构,类与类之间的依赖关系等,所以这个技能还是需要掌握的.以后自己也要多画一些,这样熟能生巧,便于掌握. 什么是UML Unified ...

  5. 设计模式01 UML图,软件设计原则,创建型模式

    概述 "设计模式"最初并不是出现在软件设计中,而是被用于建筑领域的设计中. 1995年,由 Erich Gamma.Richard Helm.Ralph Johnson 和 Joh ...

  6. 这7种UML图的画法每个程序员都应该掌握~

    大家好,我是飘渺.今天我们来探讨几种常见UML图的画法. 众所周知,软件开发是一个分阶段进行的过程.不同的开发阶段需要使用不同的模型图来描述业务场景和设计思路,在不同的阶段输出不同的设计文档也是必不可 ...

  7. 转:UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现

    转:UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现 原文:https://www.cnblogs.com/firstcsharp/p/5327659.html 类与类图 1) 类(Clas ...

  8. UML图和软件设计原则

    笔记来源于黑马程序员但不仅仅是黑马 UML图和软件设计原则 UML图 2.1 类图概述 2.2 类图的作用 2.3 类图表示法 2.3.1 类的表示方式 2.3.2 类与类之间关系的表示方式 2.3. ...

  9. UML图及软件设计原则详解

    1.UML图 统一建模语言(Unified Modeling Language,UML)是用设计软件的可视化建模语言.它的特点是简单.统一.图形化.能表达软件设计中的动态与静态信息. UML从目标系统 ...

最新文章

  1. influxdb入门——和mongodb一样可以动态增加字段
  2. php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法
  3. FPGA的Veilog HDL语法、框架总结
  4. 【HDOJ】1150 Machine Schedule
  5. java 最大矩形_Java实现 LeetCode 85 最大矩形
  6. 以串结构存储c语言版,数据结构C语言版 串的块链存储表示和实现
  7. webpack4.0各个击破(3)—— Assets篇
  8. 无法连接NVIDIA驱动:NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver
  9. 基于JAVA+SpringMVC+MYSQL的学生成绩管理系统
  10. man services时“没有services的手册页条目”→Centos 安装man帮助文档包
  11. 自动驾驶 8-1: 平方误差准则和最小二乘法 (上) Squared Error Criterion and the Method of Least Squares (Part 1)
  12. Spring IOC容器启动整体流程
  13. Microsoft Office/visio/Project 2013 with SP1 简体中文零售版
  14. 洗衣机也时尚?UDE展上你不能错过的家电好物!
  15. 【线代】《线性代数的几何意义》——摘录笔记(一)
  16. 好好说话之hijack retaddr
  17. VSCode连接远程服务器
  18. 淮北职业技术学院计算机官网,淮北职业技术学院
  19. netfilter_queue
  20. Nowcoder java-二维数组中的查找

热门文章

  1. 第一次做项目经理的感触和启发
  2. 【原/转】UITableview性能优化总结
  3. Swift基础一(代码)
  4. RP2836 板卡信息标识
  5. Shell awk 求标准差
  6. Python学习之使用Python发送邮件
  7. LeetCode 647. Palindromic Substrings
  8. L2-010. 排座位-PAT团体程序设计天梯赛GPLT(并查集)
  9. python程序封装成exe_如何将python脚本封装成exe程序?
  10. 手把手教你用Spring Cloud和Docker构建微服务