如何画UML,几种简单的模型分析
如何画UML
前言
最近在学习设计模式,其中不免涉及到 UML,这里来复习下 UML 是如何画的。
UML
这里根据【大话设计模式中】中动物和鸟关系的例子,重新画了这个关系的 uml 类图

这里根据上面的这个例子,我们一一来展开分析
类
类是具有相似结构、行为和关系的一组对象的描述符,是面向对象系统中最重要的构造块

上面的图片,从第一格往下面分析
第一层 显示类的名称,如果是抽象类就用斜体表示
第二层 类的特性,通常是字段和属性
第三层 类的操作,通常是方法和行为
前面的符号需要我们特殊注意
- "+" 表示public
- "-" 表示private
- "#" 表示protected
类的关系
1、依赖关系
依赖关系,就是构造这个类的时候需要依赖其他的类,比如:动物,动物有新陈代谢,新陈代谢就需要依赖水,食物,氧气,所以动物依赖水和氧气,他们之间及时依赖关系。

2、继承关系
继承(泛化)关系,它指定了子类如何特化父类的所有特征和行为。用带空心三角形的实线表示。
图中的动物,鸟,鸭,唐老鸭之前的关系就是继承的关系

3、实现关系
一种类与接口的关系,表示类是接口所有特征和行为的实现。
用带空心三角形的虚线表示
例如:大雁实现了飞行的接口

棒棒糖表示法
接口还有另一种的表示方法俗称棒棒糖表示法

4、关联关系
所谓关联关系,就是这个类有一个属性是其他类。
用实箭线表示
例子:比如企鹅,在每年特定的季节才会下蛋,所以需要知道气候的变化。

5、聚合关系
聚合关系表示的是一种弱的'拥有'关系,是强的关联关系;
用带空心菱形的实线表示
特点: 部分对象的生命周期并不由整体对象来管理。也就是说,当整体对象已经不存在的时候,部分的对象还是可能继续存在的。比如:一只大雁脱离了雁群,依然是可以继续存活的。

6、组合关系
组合关系是一种强的'拥有'关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样。
用带实心菱形的实线表示,线头的两端会有数字1和2,这被成为基数。表明这一端的类可以有几个实例。比如鸟有两个翅膀。

总结
这里通过动物这个例子,对 uml 中几种经常用到的模型做了简单的分析,总体看下来也不是很难
这里主要是参考【大话设计模式】,有时间的话建议花时间阅读下
参考
【大话设计模式】一本关于设计模式不错的书籍
如何画UML,几种简单的模型分析的更多相关文章
- [UML]转:浅谈UML的概念和模型之UML九种图
转自:http://blog.csdn.net/jiuqiyuliang/article/details/8552956 目录: UML的视图 UML的九种图 UML中类间的关系 上文我们介绍了,UM ...
- 讨论UML概念和模型UML九种图。
文件夹: UML的视图 UML的九种图 UML中类间的关系 上文我们介绍了,UML的视图.在每一种视图中都包括一个或多种图. 本文我们重点解说UML每种图的细节问题: 1.用例图(use case d ...
- 【转】浅谈UML的概念和模型之UML九种图
原文地址:浅谈UML的概念和模型之UML九种图 目录: UML的视图 UML的九种图 UML中类间的关系 上文我们介绍了,UML的视图,在每一种视图中都包含一个或多种图.本文我们重点讲解UML每种图的 ...
- [转]浅谈UML的概念和模型之UML九种图
目录: UML的视图 UML的九种图 UML中类间的关系 上文我们介绍了,UML的视图,在每一种视图中都包含一个或多种图.本文我们重点讲解UML每种图的细节问题: 1.用例图(use case dia ...
- UML_2_浅谈UML的概念和模型之UML九种图
转载:https://my.oschina.net/zhumenzhongren/blog/667353 上文我们介绍了,UML的视图,在每一种视图中都包含一个或多种图.本文我们重点讲解UML每种图的 ...
- 四步轻松实现用Visio画UML类图
本节和大家一起学习一下用Visio画UML类图的方法,主要有四个步骤,这里和大家分享一下,相信通过本节的学习,你对Visio画UML类图的步骤一定会有所了解. 用Visio画UML类图 对于画类图的工 ...
- UML九种图-包图、类图
UML九种图-包图.类图 一.包 (一)相关概念: 1.包: 一个包=一层=一个命名空间=一个文件夹 2.包的命名: 简单名:王老二 路径名:中国.河北省.廊坊市.廊坊师范学院.信息技术提高班.九期班 ...
- Visio画UML类图、序列图 for Java
参考文档: 1.百度搜索: 怎样用Visio 2007画C++类图 连接 https://jingyan.baidu.com/article/9f7e7ec07286e16f281554f7.html ...
- 论证与测试 + 用EA画uml
论证与测试,谁才是真正的不二法门 第十三次作业的时候,我们开始使用Junit对代码进行测试,主要是测试代码的覆盖率,以及分支的覆盖率.(主要是检查JSF写的是否是符合规范,……). 这里我给出我测试的 ...
随机推荐
- 移动端 CPU 的深度学习模型推理性能优化——NCHW44 和 Record 原理方法详解
用户实践系列,将收录 MegEngine 用户在框架实践过程中的心得体会文章,希望能够帮助有同样使用场景的小伙伴,更好地了解和使用 MegEngine ~ 作者:王雷 | 旷视科技 研发工程师 背景 ...
- gcc limits.h的bug定位看include_next和默认搜索路径
手编的交叉编译工具链经常报一堆宏未定义,例如下面是编译gtest的时候报_POSIX_PATH_MAX宏未定义,有时还会上报SSIZE_MAX等宏未定义: googletest/src/gtest-f ...
- NB-IoT四大关键特性及实现告诉你,为啥NB
摘要:NB- IoT 网络是基于4G网络演进过来的,所以它在上行和下行的复用技术上还是沿用了4G的OFDMA和SC-FDMA. 本文分享自华为云社区<一文了解NB-IoT四大关键特性以及实现技术 ...
- 【阿菜Writeup】Security Innovation Smart Contract CTF
赛题地址:https://blockchain-ctf.securityinnovation.com/#/dashboard Donation 源码解析 我们只需要用外部账户调用 withdrawDo ...
- 【Azure 应用服务】App Service For Container 配置Nginx,设置/home/site/wwwroot/目录为启动目录,并配置反向代理
问题描述 通过Docker Desktop for Linux,配置Nginx镜像后,自定义nginx.conf文件,修改启动目录和对 /out 路径的反向代理到博客园的博文地址 (https://w ...
- java使用wol远程开机
param类 package com.meeno.framework.wol.params; import lombok.Getter; import lombok.NoArgsConstructor ...
- Centos7上yum安装redis
下载tar包 wget http://download.redis.io/releases/redis-6.0.5.tar.gz 解压tar包 tar -zxvf redis-6.0.5.tar.gz ...
- Javascript - Vue - 在vscode里使用webpack
cnpm(node package manager)和webpack模块 npm是运行在node.js环境下的包管理工具,使用npm可以很快速的安装前端文件里需要依赖的那些项目文件,比如js.css文 ...
- javacc在stanfordnlp中的应用
总结: 这个javacc感觉比较复杂,在于stanfordnlp中 p.p1 { margin: 0; font: 11px Monaco } CoreMapExpressionExtractor这个 ...
- Go版本管理--go.sum
目录 1. 简介 2. go.sum文件记录 3. 生成 4.校验 5.校验和数据库 1. 简介 为了确保一致性构建,Go引入了go.mod文件来标记每个依赖包的版本,在构建过程中go命令会下载go. ...