如何画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. Ubuntu Server安装telnet服务时"Unable to locate package telnetd"解决方法

    装好Ubuntu Server 12.04后,用apt-get安装telnetd报"E: Unable to locate package telnetd",解决方法如下: 虚拟机 ...

  2. Notes about "Exploring Expect"

    Chapter 3 Section "The expect Command": expect_out(0,string) can NOT be written as "e ...

  3. 不懂Ribbon原理的可以进来看看哦,分析SpringBoot自动装配完成了Ribbon哪些核心操作

      前面详细的给大家介绍了SpringBoot的核心内容,有了这部分的基础支持的话,我们再来分析SpringCloud中的相关组件就很容器了,本文我们来给大家开始介绍Ribbon的相关内容,首先来介绍 ...

  4. 【笔记】初探KNN算法(2)

    KNN算法(2) 机器学习算法封装 scikit-learn中的机器学习算法封装 在python chame中将算法写好 import numpy as np from math import sqr ...

  5. vivo商城计价中心 - 从容应对复杂场景价格计算

    一.背景 随着vivo商城的业务架构不断升级,整个商城较为复杂多变的营销玩法被拆分到独立的促销系统中. 拆分后的促销系统初期只是负责了营销活动玩法的维护,促销中最为重要的计价业务仍然遗留在商城主站业务 ...

  6. 题解 P3322 [SDOI2015]排序

    题解 仔细审题,我们会发现 小 \(A\) 认为两个操作序列不同,当且仅当操作个数不同,或者至少一个操作不同(种类不同或者操作位置不同). 所以,对于一种操作,不管是交换哪两段,都算作同一种操作,只会 ...

  7. 题解 marshland

    传送门 是个最大费用可行流 这题的建边很毒瘤 首先有危险度的点肯定要拆点 关键在于其它点怎么办 如果拆了不好保证每个点只经过一次 不拆连网络流都跑不了 但仔细观察题面,不能不难(???)发现一个L中那 ...

  8. 关于Eclipse中使用Maven进行Install安装时候报错Perhaps you are running on a JRE rather than a JDK?解决办法

    所遇到的问题: 详情报错: 英文描述: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3. ...

  9. Docker是简介

    Docker是什么  使用最广泛的开源容器引擎 一种操作系统级的虚拟化技术 依赖于Linux内核特性:Namespace(资源隔离)和Cgroups(资源限制) 一个简单的应用程序打包工具 D ...

  10. 简陋的Excel到MYSQL的数据传输JAVA实现

    实现从excel读取数据,使用的是jxl.jar(到处都有,请大家随意下载),其中封装好了通过excel提供的接口,对excel中的数据库进行读取的实现: 先为了熟悉其中的方法使用,做了以下的测试: ...