文档章节

UML类图知识整理

Yomut
 Yomut
发布于 2016/07/27 10:15
字数 743
阅读 49
收藏 2

 

UML类图

UML,进阶必备专业技能,看不懂UML就会看不懂那些优秀的资料。

这里简单整理

类之间的关系

泛化关系(generalization)

  1. 泛化(generalize): 一条带空心箭头的线表示
  2. 实现(realize) : 一条带空心箭头的虚线表示

泛化在Java中表现为继承(extends) ,is-a的关系

实现在Android中表现为implements 接口,或者extends抽象类

依赖关系(dependency)

用一条带箭头的虚线表示;箭头的指向为调用关系

简单来说,类A用到了类B,就可以说A依赖于B

依赖关系是一种临时性的偶然性的关系,通常在运行期间产生,并且随着运行时的变化; 依赖关系也可能发生变化

代码中的表现:比如方法的入参,构造方法的参数

关联关系(association)

一条直线表示

它描述不同类的对象之间的结构关系;体现的是两个类、或者类与接口之间语义级别的一种强依赖关系

代码中的表现:关联对象通常是以成员变量的形式实现的

聚合关系(aggregation)

一条带空心菱形箭头的直线表示

聚合关系是关联关系的特例,它用于表示实体对象之间的关系,表示整体由部分构成的语义;是has-a的关系;

例如一个部门由多个员工组成;

与组合关系不同的是,整体和部分不是强依赖的整体与部分之间是可分离的,即使整体不存在了,部分仍然存在;

例如, 部门撤销了,人员不会消失,他们依然存在

组合关系(composition)

用一条带实心菱形箭头直线表示

组合关系是一种强依赖的特殊聚合关系,是contains-a的关系,比聚合更强,也称为强聚合,如果整体不存在了,则部分也不存在

注意点

  1. 聚合跟组合其实都属于关联
  2. 关系强度:组合>聚合>关联>依赖

类的方法与属性

类可以拥有多个方法和属性

属性的表达方式:可见性 名称:类型 [ = 缺省值 ]
方法的表达方式:可见性 名称(参数列表) [ : 返回类型]

可见性:

  • + public
  • - private
  • # protected
  • ~ package

示例

另外:UML图中的斜体表示抽象

示例

释义:
ViewGroup是一个View,也是一个ViewParent,依赖于MotionEvent(在onTouch(MotionEvent)等方法)

释义:

员工与工号相关联,员工聚合成部门,部门组成公司。

部门解散了员工依然存在(所以是聚合),而公司倒闭,部门也就不存在了(所以是组成)。

资料

看懂UML类图和时序图
UML类图关系
深入浅出UML类图

© 著作权归作者所有

Yomut
粉丝 19
博文 191
码字总数 167789
作品 0
厦门
后端工程师
私信 提问
实用UML知识——如何看懂UML传递的软件架构信息

前公司的技术交流大体是靠口授, 个人会采用一些简单的架构文档+ 口述的方式, 描述一个软件产品的整体架构. 并且, 大多数情况是, 先有代码, 后有文档的方式, 这样做有以下优点: 1. 关注软件结...

晨曦之光
2012/03/09
730
0
UML类图符号理论

前言 相信大家在学习UML类图的时候,最大的困难可能来自两个方面: 类图中各种关系的区别; 多种关系的符号记忆容易混淆; 本着"Do one thing and do it well."的原则,本文不介绍UML类图中各...

算法与编程之美
2016/02/18
276
3
Concurrent包学习(一)

java.util.concurrent包下面提供了很多多并发编程的工具和框架,locks 下面提供了锁相关的工具,例如ReentrantLock(可重入锁)、condition等在其他的类中经常有使用,提供了HashMap、Queue...

alvaDing
2016/09/24
27
0
UML学习笔记(一)【概论】

UML的使用范围:概念视角 和 软件视角 UML的使用方式:蓝图 和 草图 表示法:你在模型中看到的图形,建模语言的图形语法,通常只是为了设计讨论 元模型:一张定义语言概念的图,通常为了把图...

jason_wu_2
2016/12/13
16
0
系统架构师-基础到企业应用架构-系统建模[上篇]

一、摘要 本文主要从系统架构中的建模开始讲解,本文讲述的内容主要是我在工作和学习过程中的总结和经验,不足之处还请大家多多批评指出,有更好的建议也可以留言 说明。本意主旨是为不熟悉系...

wbf961127
2017/11/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

为什么说优秀架构师往往是一个悲观主义者?

阿里妹导读:18年前,200家企业由于在事故中信息系统遭到严重破坏而永远地关闭了。这样的事故引发了后人深思,对于工程师而言,不仅要求设计的系统足够强壮,还需要具备考虑失败的能力,当失...

阿里云云栖社区
22分钟前
1
0
时延敏感业务低概率超时问题分析

前言 作为阿里云底层提供的基础设施,内部的物理网络和许多网络产品在数据平面给客户的可操作性并不高,从一定程度上来说是个黑盒。当然,在传统的IDC环境,业务和物理网络之间也存在同样的隔...

阿里云官方博客
32分钟前
0
0
ServletContextListener在Tomcat中的配置问题

在带有监听器的servlet中,执行的顺序是这样的,首先建立servletListerner,然后运行,初始化ServletContext,然后监听ServletContext的变化,最后ServletContext被销毁,加ServletListener...

花漾年华
39分钟前
0
0
安全防护工具之:ClamAV

安全防护工具之:ClamAV 2018年10月02日 00:49:35 neo_will_mvp 阅读数 359 版权声明:精心研究,潜心学习,本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_3346885...

linjin200
40分钟前
2
0
InnoDB索引

如果我们要去一本书中翻看某部分的内容,最简单的方法就是先翻到目录也就是“索引”部分,找到对应的页码,数据库也是如此。 本文以mysql为例来表述InnoDB 索引基础 在mysql中存储引擎先使用...

周慕云
48分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部