如何画UML

前言

最近在学习设计模式,其中不免涉及到 UML,这里来复习下 UML 是如何画的。

UML

这里根据【大话设计模式中】中动物和鸟关系的例子,重新画了这个关系的 uml 类图

这里根据上面的这个例子,我们一一来展开分析

类是具有相似结构、行为和关系的一组对象的描述符,是面向对象系统中最重要的构造块

上面的图片,从第一格往下面分析

  • 第一层 显示类的名称,如果是抽象类就用斜体表示

  • 第二层 类的特性,通常是字段和属性

  • 第三层 类的操作,通常是方法和行为

前面的符号需要我们特殊注意

  • "+" 表示public
  • "-" 表示private
  • "#" 表示protected

类的关系

1、依赖关系

依赖关系,就是构造这个类的时候需要依赖其他的类,比如:动物,动物有新陈代谢,新陈代谢就需要依赖水,食物,氧气,所以动物依赖水和氧气,他们之间及时依赖关系。

2、继承关系

继承(泛化)关系,它指定了子类如何特化父类的所有特征和行为。用带空心三角形的实线表示。

图中的动物,鸟,鸭,唐老鸭之前的关系就是继承的关系

3、实现关系

一种类与接口的关系,表示类是接口所有特征和行为的实现。

用带空心三角形的虚线表示

例如:大雁实现了飞行的接口

棒棒糖表示法

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

4、关联关系

所谓关联关系,就是这个类有一个属性是其他类。

用实箭线表示

例子:比如企鹅,在每年特定的季节才会下蛋,所以需要知道气候的变化。

5、聚合关系

聚合关系表示的是一种弱的'拥有'关系,是强的关联关系;

用带空心菱形的实线表示

特点: 部分对象的生命周期并不由整体对象来管理。也就是说,当整体对象已经不存在的时候,部分的对象还是可能继续存在的。比如:一只大雁脱离了雁群,依然是可以继续存活的。

6、组合关系

组合关系是一种强的'拥有'关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样。

用带实心菱形的实线表示,线头的两端会有数字1和2,这被成为基数。表明这一端的类可以有几个实例。比如鸟有两个翅膀。

总结

这里通过动物这个例子,对 uml 中几种经常用到的模型做了简单的分析,总体看下来也不是很难

这里主要是参考【大话设计模式】,有时间的话建议花时间阅读下

参考

【大话设计模式】一本关于设计模式不错的书籍

如何画UML,几种简单的模型分析的更多相关文章

  1. [UML]转:浅谈UML的概念和模型之UML九种图

    转自:http://blog.csdn.net/jiuqiyuliang/article/details/8552956 目录: UML的视图 UML的九种图 UML中类间的关系 上文我们介绍了,UM ...

  2. 讨论UML概念和模型UML九种图。

    文件夹: UML的视图 UML的九种图 UML中类间的关系 上文我们介绍了,UML的视图.在每一种视图中都包括一个或多种图. 本文我们重点解说UML每种图的细节问题: 1.用例图(use case d ...

  3. 【转】浅谈UML的概念和模型之UML九种图

    原文地址:浅谈UML的概念和模型之UML九种图 目录: UML的视图 UML的九种图 UML中类间的关系 上文我们介绍了,UML的视图,在每一种视图中都包含一个或多种图.本文我们重点讲解UML每种图的 ...

  4. [转]浅谈UML的概念和模型之UML九种图

    目录: UML的视图 UML的九种图 UML中类间的关系 上文我们介绍了,UML的视图,在每一种视图中都包含一个或多种图.本文我们重点讲解UML每种图的细节问题: 1.用例图(use case dia ...

  5. UML_2_浅谈UML的概念和模型之UML九种图

    转载:https://my.oschina.net/zhumenzhongren/blog/667353 上文我们介绍了,UML的视图,在每一种视图中都包含一个或多种图.本文我们重点讲解UML每种图的 ...

  6. 四步轻松实现用Visio画UML类图

    本节和大家一起学习一下用Visio画UML类图的方法,主要有四个步骤,这里和大家分享一下,相信通过本节的学习,你对Visio画UML类图的步骤一定会有所了解. 用Visio画UML类图 对于画类图的工 ...

  7. UML九种图-包图、类图

    UML九种图-包图.类图 一.包 (一)相关概念: 1.包: 一个包=一层=一个命名空间=一个文件夹 2.包的命名: 简单名:王老二 路径名:中国.河北省.廊坊市.廊坊师范学院.信息技术提高班.九期班 ...

  8. Visio画UML类图、序列图 for Java

    参考文档: 1.百度搜索: 怎样用Visio 2007画C++类图 连接 https://jingyan.baidu.com/article/9f7e7ec07286e16f281554f7.html ...

  9. 论证与测试 + 用EA画uml

    论证与测试,谁才是真正的不二法门 第十三次作业的时候,我们开始使用Junit对代码进行测试,主要是测试代码的覆盖率,以及分支的覆盖率.(主要是检查JSF写的是否是符合规范,……). 这里我给出我测试的 ...

随机推荐

  1. 《Python Cookbook v3.0.0》Chapter1 数据结构和算法

    感谢: https://github.com/yidao620c/python3-cookbook 如有侵权,请联系我整改. 本文章节会严格按照原书(以便和原书对照,章节标题可能会略有修改),内容会有 ...

  2. MyBatis学习05(多对一和一对多)

    8.多对一的处理 多对一的理解: 多个学生对应一个老师 如果对于学生这边,就是一个多对一的现象,即从学生这边关联一个老师! 数据库设计 CREATE TABLE `teacher` ( `id` IN ...

  3. Windows10 + Chrome 触发蓝屏

    姿势一: 打开Chrome,输入路径:\\.\globalroot\device\condrv\kernelconnect 姿势二: 将代码 <iframe src="\\.\glob ...

  4. BUUCTF刷题系列(2)5.27日记

    CTF-Bugku-安卓篇1signin Writeup Bugku安卓部分第一题,第七届山东省大学生网络安全技能大赛的题目,属于Android逆向分析.(常用工具:安卓模拟器.JEB.Cyberch ...

  5. DAY04 与用户交 互格式化输出与运算符

    与用户交互 输入: input # python2与python3的区别 # python3 res = input('please in put your username>>>& ...

  6. NOIP 模拟 $26\; \rm 幻魔皇$

    题解 \(by\;zj\varphi\) 观察可发现一个点向它的子树走能到的白点,黑点数是一个斐波那契数列. 对于白色点对,可以分成两种情况: 两个白点的 \(lca\) 是其中一个白点 两个白点的 ...

  7. 题解 big

    传送门 题面里那个式子 考场上我推了半天那个式子代表什么意思,但就是没想到位运算 \(\lfloor \frac{2x}{2x^n} \rfloor \iff x\gg(n-1)\), 即将x的第n位 ...

  8. log4j.properties配置文件及详解

    log4j配置文件有三个主要的组件:Logger,Appender和Layout,分别为日志类型,日志输出目的地,日志输出格式. 1. 配置日志级别及appenderName log4j.rootLo ...

  9. WPF日积月累之TreeView动态绑定

    一.概述 本文演示了如何递归生成数据,用于绑定TreeView以及TreeItem的双击事件. 二.参考代码 1 using System; 2 using System.Collections.Ge ...

  10. 【java虚拟机】类加载机制

    作者:平凡希 原文地址:https://www.cnblogs.com/xiaoxi/p/6959615.html 一.什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中, ...