开发规范 - UML图
依赖关系是用一套带箭头的虚线表示,他通常描述一个对象在运行期间会用到另一个对象的关系。如图为例码农只有在工作的时候才会用到 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
喜欢哪一个请自取!
回顾总结
到这里我们再次回顾一下开篇的图片是不是更加理解里面的连线了?所以我们在绘图过程中一定要非常注意这个线和箭。
不过话说回来,死记硬背这些东西确实很难,于是我自己想了一个打油诗,帮助自己来记忆,你也可以来试一下。
实箭泛化虚实现
虚线依赖实关联
空菱聚合实组合
项目沟通图常见
所以你学会了吗?
开发规范 - UML图的更多相关文章
- Java开发设计——UML类图
Java开发设计——UML类图 摘要:本文主要介绍了UML类图的相关知识. 简介 在UML中,类使用包含类名.属性和操作且带有分隔线的长方形来表示,类图分为三层. 第一层是类的名称,如果是抽象类或接口 ...
- java:ER图,Springmvc:Mapper代理开发规范,PB(PowerDesigner数据库建模)
1.ER图(Entity Relationship Diagram实体关系图): 工具: ER-win Viso 矩形:实体对象 椭圆:属性 菱形:关系 2.Mapper代理的开发规范: 1.mapp ...
- UML图快速入门
UML(Unified Modeling Language)统一建模语言的概念已经出现了近20年,虽然并不是所有的概念都非常有实践意义,但常见的用例图.类图.序列图和状态图却实实在在非常有效,是项目中 ...
- 团队项目之UML图设计---WeEdit
团队信息: 学号: 姓名: 本次博客链接: 041602209 黄毓明(临时队长) https://www.cnblogs.com/mingsonic/p/9820702.html 06160023 ...
- 团队项目之UML图设计
团队 学号 姓名 本次作业博客链接 031602428 苏路明(组长) https://www.cnblogs.com/Sulumer/p/9822854.html 031602401 陈瀚霖 htt ...
- Java设计模式(一):设计模式概述、UML图、设计原则
1 设计模式概述 1.1 软件设计模式的产生背景 "设计模式"最初并不是出现在软件设计中,而是被用于建筑领域的设计中. 1977年美国著名建筑大师.加利福尼亚大学伯克利分校环境结构 ...
- 【转】UML图与软件开发过程那点关系
首先,软工文档, 软工文档,也就是计划,设计,描述,使用软件的一些文件,它最大的特点就是固定不变,用来给不同的人和计算机来阅读.在期间,文档起到了桥梁的作用,看这张图很形象: 在这里在看一下国家统一规 ...
- 转载:移动web开发规范
本文来源:http://blog.csdn.net/joueu/article/details/44329825 以下是规范建议,均是日常在开发当中的的一些经验,仅供参考. 移动web开发规范 一.头 ...
- 软件开发与UML的关系
今天,我们上<统一建模语言UML>.课上老师给我们讲解了软件开发与UML之间的关系:UML常用于建立软件系统的模型,适用于系统开发的不同阶段.UML的应用贯穿于系统开发的不同阶段.1.需求 ...
随机推荐
- jupyter 快捷命令
-- https://www.jb51.net/article/199930.htm#:~:text=Jupyter notebook命令和编辑模式常用快捷键汇总 1 Enter %3A 转入编辑模式 ...
- 【vue】获取异步加载后的数据
异步请求的数据,对它做一些处理,需要怎么做呢?? axios 异步请求数据,得到返回的数据, 赋值给变量 info .如果要对 info 的数据做一些处理后再赋值给 hobby ,直接在 axios ...
- [RabbitMQ]Java客户端:源码概览
本文简要介绍RabbitMQ提供的Java客户端中最基本的功能性接口/类及相关源码. Mavan依赖: <dependency> <groupId>com.rabbitmq&l ...
- 获取HTML网页中option标签元素的值
在进行表单元素的操作时,难免会遇到对option元素的挑选,下面的示例代码能够很好的获取到你option元素选择的值,如果要传递给后端,可通过ajax或者其他方式传递即可. 示例代码 <!doc ...
- 14-Java锁的概述
14-锁的概述 乐观锁与悲观锁 乐观锁与悲观锁是数据库中引入的名词,但是在并发包里也引入了类似的思想,在这里我们还是有必要需要了解一下. 悲观锁指数据被外界修改持保守态度,认为数据会很容易被其 ...
- mysql8.0.20安装配置教程
mysql配置安装教程 1.下载mysql8.0.20安装包 下载地址: https://dev.mysql.com/downloads/mysql/.找到安装包后下载.(官网为英文,如果看不懂的小伙 ...
- jmx_prometheus_javaagent+prometheus+alertmanager+grafana完成容器化java监控告警(二)
一.拓扑图 二.收集数据 2.1前期准备 创建共享目录,即为了各节点都创建该目录,有两个文件,做数据共享 /home/target/prom-jvm-demo 1.下载文件 jmx_prometheu ...
- 数值分析:幂迭代和PageRank算法
1. 幂迭代算法(简称幂法) (1) 占优特征值和占优特征向量 已知方阵\(\bm{A} \in \R^{n \times n}\), \(\bm{A}\)的占优特征值是量级比\(\bm{A}\)所有 ...
- Java继承中父类和子类构造函数的问题
父类有无参构造函数时(显示或隐式),子类的有参和无参构造函数都是默认调用父类的无参构造函数:当父类只有有参构造函数时,子类可以有有参和无参构造函数,子类有参构造函数必须显式调用父类的有参构造函数,子类 ...
- Java:泛型小记
Java:泛型小记 对 Java 中的 泛型类,做一个微不足道的小小小小记 泛型实现 概述 开篇: List<String> l1 = new ArrayList<String> ...