几分钟几张图教你学会如何使用UML
很多初次接触UML的朋友们可能会感觉它各种各样的线条、关系、描述等晦涩难懂。本篇文章简单介绍了一下其中几个图,用最朴实的语言结合上图片来让你一眼就能理解他们,如果您在阅读的过程种发现错误之处恳请您在评论区指点。
1.类图、对象图、接口
这三种图是uml中最简单的图了,我想看了下方三张图片你就明白了:

在类中存在几种关系,是我们必须要掌握的:
- 一般化关系:表示类与类的继承、接口与接口之间的继承、类对接口的实现。

- 关联关系:类与类之间的关系,一个类持有另一个类的属性和方法,他可以是单向的也可以是双向的,但是不推荐使用双向的。
关联关系还包括一个属性:基数。基数就表明这一段的类可以有几个实例,就比如说唐僧肯定只有一个,但是徒弟就可以有很多。我们就可以使用下图来表示
- 聚合关系:它属于关联关系的一种,它表示的整体和个体的关系。例如电脑是由屏幕、键盘、鼠标等组成的

- 合成关系:它也是关联关系的一种,不过它的关系表示的是最强的,例如人是由大脑、心脏、四肢组成的(区分聚合和合成关系时可以想象类似于人体的不可分割的是合成关系,类似于机器的坏了可以换的是聚合)

- 依赖关系:依赖关系与一般化关系不同的是一般话关系是一个类持有另一个类的属性或方法,而依赖关系类中的方法参数为另一个类

2.组件图
组件图可以简单理解为在一个系统中的物理组件。例如程序包、类文件、配置文件、样式文件等。学习组件图请看下图:

3.部署图
部署图可以简单理解为硬件的配置及其软件是如何在网络结构中部署的(例如一个程序中一共有多少个tomcat、多少个mysql、多少个redis、他们分别部署在哪台服务器上)一起来看下图学习一下:

4.用例图
用例图主要作用是来收集系统的要求,包括内部和外部的影响(例如此系统的用户分为n种角色,每一个角色所能干的事)下图以一个用户所能使用的功能为例

5.时序图
时序图是用来描述对象之间的消息的流动顺序的,下面以一个简单的的注册流程为例分析:
在这个图片中,垂直的虚线叫做生命线,代表一个对象的存在时间。每一个箭头都是一个调用,生命线上白色的条叫做激活条,激活条代表的就是这次调用持续的时间

6.状态图
状态图描述对象从开始到结束的状态改变流程,下面同样以上方注册流程为例分析:

几分钟几张图教你学会如何使用UML的更多相关文章
- 三张图教你生成一个Android jar 库。
我看到非常多教人使用第三方开源组件的Android教程.都是在教基于源代码project的库导入,个人觉得非常不妥,觉得最恰当的方式是把源代码project生成一个jar再导入到目标project上使 ...
- 一张图让你学会Python
有编程基础的人一看就可以了解 Python 的用法了.真正的 30 分钟上手.国外一高手画的,现把它翻译成中文,入门超简单python入门神图 *单击放大
- 一张图教你搞定Mac App Store 应用安装包存储路径
还在为找不到App Store 更新应用的安装文件发愁吗?是否有过多个人同时需要更新Xcode,都自己下载一次的痛苦经历? 大家都知道通过苹果服务器下载东西,确实难耐!AppStore 甚至都经常提示 ...
- 一张图让你学会Python【转】
转自:http://blog.csdn.net/qq_30845505/article/details/51588423 有编程基础的人一看就可以了解 Python 的用法了.真正的 30 分钟上手. ...
- 一张图让你学会LVM
导读 随着科技的进步,人们不知不觉的就进入了大数据的时代,数据的不断增加我们发现我们的磁盘越来越不够用了,接下来就是令人头疼的事情--加硬盘,数据的备份与还原.LVM就是Linux下专门针对我们数据的 ...
- 一张图11招学会Python网络黑客
全部学起来: 第一招:搭建Python防范环境 第二招:扫描漏洞 第三招:暴力破解的秘密 第四招:防SQL注入 第五招:防命令注入 第六招:看清文件上传木马 第七招:看清Web攻击 第八招:利用Pyt ...
- 一张图教你读懂AI简史
- 一张图教你弄清楚linux虚拟机的静态IP设置原理 VMnet8
- 一张图让你快速学会UML(聚合、组合、依赖、继承、接口、类)
有朋友反映,一上来直接讲设计模式就算理解了,也不知道如何画出类图,那么我们就通过一张图,来图解如何应用UML正确表示类与类之间的关系. 这张图完整讲述了鸟类的生存. 首先是类:在UML中,我们用分成三 ...
随机推荐
- c#Dapper mysql按时间段查询和过滤
#endregion /// <summary> /// 根据条件获取集合 /// </summary> /// <param name="id"&g ...
- docker 删除所有退出的容器
方法一: #显示所有的容器,过滤出Exited状态的容器,取出这些容器的ID, sudo docker ps -a|grep Exited|awk '{print $1}' #查询所有的容器,过滤出E ...
- jquery 上下文菜单实现
话不多说,直接贴上官方demo演示: https://swisnl.github.io/jQuery-contextMenu//demo
- 将bean转换成XML字符串
package com.sinoservices.bms.bbl.rest.bean; import javax.xml.bind.annotation.XmlAccessType; import j ...
- Python中的迭代器、生成器
from collections import Iterable, Iterator 1. 可迭代(iterable)对象 参考官网链接 class I: def __init__(self, v): ...
- 通过HashSet达到对象集去重的实现(jdk1.8)
通过HashSet达到对象集去重的实现(jdk1.8) public class Contract { private String contractId; private String contra ...
- C++实现对文件中各单词词频的统计及其代码优化
先给出github上的代码链接以及项目需求 1.项目概述 这个项目的需求可以概括为:对记事本(txt)文件进行单词的词频统计和排序,排序结果以指定格式输出到默认文件中,并要求能够快速地完成整个统计和结 ...
- VS环境下C++如何检查是否内存泄漏
c++如何检查是否内存泄漏 今天在做OpenGL引擎的时候,突然想到检查一下内存泄漏.具体是我做了一个渲染类Render,将所有世界中存在的物体的指针都存放在这个类中.于是我不免担心,在Render中 ...
- pandas库的学习笔记
Environment pandas 0.21.0 python 3.6 jupyter notebook 开始 习惯上,我们导入如下: import pandas as pd import nump ...
- rocket-mq windows下载安装
内容来源:https://www.jianshu.com/p/4a275e779afa 1环境 JDK1.8.Maven.Git 2安装部署 1.下载 1.1地址:http://rocketmq ...

