首先推荐在线绘制UML的网址:https://www.processon.com/,很好用.

在软件开发过程中,开发人员往往需要通过绘制类图来理清业务的实现思路,从而方便代码实现,也便于后期的代码维护,下面是学习记录:

参考资料:http://www.jianshu.com/p/4cd95d4ddb59

在类图主要元素包括:类,接口,类接口之间关系

一,类:对于面向对象编程而言,类是对具有共同特征的物体的抽象;

在类图中一般的画法是:

说明:

“+”表示public;

“-”表示private;

"#"表示protected;

类的名称如果用抽象类,名称用斜体表示;

二,接口是一种特殊的类,具有类的结构但是不可以被实例化,只可以被继承(实现),在UML中,接口使用带有名称的小圆圈表示:

类图中关系:

常见的关系由如下几种:泛化(Generalization),实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)

泛化:一种继承关系,表示一般与特殊的关系,制定了子类如何特化父类的特征和行为,其中箭头方向:带三角箭头的实线,箭头指向父类:

实现:是一种类与接口的关系,表示类是接口所有特征和行为的实现,其中带三角箭头的虚线,箭头指向接口:

3.关联关系:是一种拥有的关系,即一个类知道另一个类的属性和方法,如:老师与学生,关联关系可以是单项的也可以是双向的;

其中带普通箭头的实心线,指向被拥有者;

4.聚合关系:是整体和部分的关系,且部分可以离开整体而单独存在,如轮胎和车是部分和整体的关系,但是轮胎可以离开车而独立存在:

聚合关系是关联关系的一种,是强的关联关系,关联和聚合在语法上无法区分,必须考虑具体的逻辑关系:

其中:带空心菱形的实心线,菱形指向整体:

组合:是整体和部分的关系,但是部分不能脱离整体而单独存在;

如公司和部门是整体和部分的关系,但是没有公司就不存在部门;

组合关系是关联关系的一种,是比聚合关系还要强的关系;

6.依赖关系:是一种使用关系,即一个类的实现需要另一个类的协助,所以尽量不要使用双向的依赖关系;

其中带箭头的虚线,指向被使用者;

各种关系的强弱:

泛化=实现 > 组合  > 聚合 > 关联 > 依赖

如何绘制UML图?的更多相关文章

  1. Markdown 绘制 UML 图 -- PlantUML + Gravizo(转)

    原文地址:Markdown 绘制 UML 图 -- PlantUML + Gravizo

  2. 在VSCode使用Markdown绘制UML图

    在VSCode使用Markdown绘制UML图 需要插件 Markdown All in One Markdown Preview Enhanced PlantUML markdownlint Mar ...

  3. 绘制UML图的工具

    目前在用processOn网站进行绘制:https://www.processon.com/ 学习其简单的入门教程: https://www.processon.com/support https:/ ...

  4. Eclipse自动生成UML图(转载)

    *ModelGoon是什么? 它是一个Eclipse插件,用于基于UML图的模型设计,以及逆向工程(即从已有源代码生成类图等,以作为代码分析或者文档使用). *适用条件 ModelGoon目前最新的版 ...

  5. eclipse下生成Java类图和时序图,生成UML图

    1.安装和使用AmaterasUML 安装AmaterasUML前,需要先安装GEF采用eclipse在线安装方式安装就好.eclipse在线安装GEF的地址:http://download.ecli ...

  6. 【UML九种图系列】之如何利用三层来绘制类图、时序图?

    UML并发视图:实体之间行为的交互,是动态.分为:时序图.协作图.状态图.活动图 一.时序图简述: 时序图(Sequence Diagram):描述对象之间的交互行为,按照时间顺序排列. 元素: 角色 ...

  7. CentO7-使用plantuml绘制UML类图

    准备工作 到PlantUml官网(http://plantuml.com/download)下载plantuml.jar.官网上还有一个在线的demof服务.plantuml的官网真的很挫! 到官网下 ...

  8. 10分钟学会使用Markdown绘制UML时序图

    1.1 什么是Markdown? Markdown是一种语法特别少.特别简单的标记语言,用来编写文档.用Markdown编写的文档是纯文本格式,经过编辑器的渲染,就会形成排 版优美的文档,本文就是用M ...

  9. 使用工厂方法模式设计能够实现包含加法(+)、减法(-)、乘法(*)、除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果。要求使用相关的工具绘制UML类图并严格按照类图的设计编写程序实

    2.使用工厂方法模式设计能够实现包含加法(+).减法(-).乘法(*).除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果.要求使用相关的工具绘制UML类图并严格按照类图的设计编写程 ...

随机推荐

  1. Cannot uninstall 'html5lib'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.

    如标题,安装Tensorflow-gpu时遇到的完整问题 Cannot uninstall 'html5lib'. It is a distutils installed project and th ...

  2. 正则re模块

    正则表达式的特殊字符: 语法: re.match(正则语法,字符串) # re.match() 为关键字 group(1) # 取出第一个匹配 括号中的值,1位第一个括号内的值 1. 特殊字符 1 . ...

  3. epoll(二)

    epoll概念 epoll对文件描述符的操作方式有两种工作模式:LT模式(Level Trigger,水平触发) 和ET模式(Edge Trigger,边缘触发). LT模式:当epoll_wait检 ...

  4. 一脸懵逼学习KafKa集群的安装搭建--(一种高吞吐量的分布式发布订阅消息系统)

    kafka的前言知识: :Kafka是什么? 在流式计算中,Kafka一般用来缓存数据,Storm通过消费Kafka的数据进行计算.kafka是一个生产-消费模型. Producer:生产者,只负责数 ...

  5. (原创)C# 压缩解压那些事儿

    吐槽: 搜狗推广API的报告服务太坑爹了!!! 搜狗推广API的报告服务太坑爹了!!! 搜狗推广API的报告服务太坑爹了!!! 搜狗的太垃圾了,获取下来的压缩包使用正常方式无法解压!!没有专门的API ...

  6. jquery源码中noConflict(防止$和jQuery的命名冲突)的实现原理

    jquery源码中noConflict(防止$和jQuery的命名冲突)的实现原理 最近在看jquery源码分析的视频教学,希望将视频中学到的知识用博客记录下来,更希望对有同样对jquery源码有困惑 ...

  7. [bzoj3522][bzoj4543][POI2014]HOTEL

    题解: 比较难的一道题目 首先考虑暴力dp 我们会发现构成这种形状只有三种情况 1.三个点的lca相同 2.两个点lca相同,第三个点是lca的祖先 3.两个点lca相同,第三个点是lca祖先的子树中 ...

  8. 3998: [TJOI2015]弦论

    题解: 每个点的size值就是这个从根-它出现的次数 如果相同只算一次就全部赋值为1就可以了 代码: #include <bits/stdc++.h> #define ll long lo ...

  9. 在CentOS 7+ 安装Kubernetes入门(单Master)

    TL;DR; ***,***,***,重要的事情说三次.如果不会***,这篇文章就没有看下去的意义.作为一个技术人员如果不愿意折腾,很难有所作为.作为一个单纯的技术人员,最好把心思放在技术上,做到真正 ...

  10. python全栈开发day58-mysql存储过程,权限,索引,慢日志,执行计划,分页优化处理

    1.存储过程 delimiter // create procedure insert_data(in rows int) begin DECLARE n INT DEFAULT 1; drop ta ...