在阅读设计模式相关的书籍,或者其他一些项目、相关博客等等,经常会遇到类图,它对于一个类的信息,如变量、方法及其可见性,类与类(接口)之间的继承关系、依赖关系、聚合关系、组合关系等,都可以比较形象得当地描述出来。这样有用的工具,还是需要稍微掌握了解下,也方便自己的应用和描述。因此就有了这篇搬运工文档

一、StarUML下载和入手

1、先捧出StarUML官网StarUML——The Open Source UML/MDA Platform

2、入手简单的UML开发可以参考:使用StarUML创建类图 ,这个教程可以满足平时记录的一些基本类图开发。

二、关联、聚合、组合、泛化、依赖、实现——概念介绍

在StarUML中有几个常见的概念

Association

DirectedAssociation

关联
Aggregation 聚合
Composition 组合
Generalization 泛化(继承)
Dependency 依赖
Realization 实现

如下是在StarUML中的样子。

1、关联——Association或者DirectedAssociation

参考UML Association

Association is a relationship between classifiers which is used to show that instances of classifiers could be either linked to each other or combined logically or physically into some aggregation.

关联用于描述类之间的一种关系,表示类之间有联系,或者在逻辑上、物理上有组合、聚合的关系。关联关系是一种比较宽泛的描述。对于聚合和组合,其实也是属于关联,只是从不同角度出发而已。

简单一点描述,把关联看成是has-a的泛化。从实际的场景来考虑,关联关系,可以有单向关联、双向关联、自关联等。

单向关联

单向关联表现为单向的关系,比如说,装13 has-a 爱疯X

双向关联

关联关系是双向的,常见的例子:顾客与(即购买)商品,学生与老师,课程与学生

  1. 顾客与(即购买)商品:顾客可以购买很多商品,而卖出去的商品可以关联到对应的顾客
  2. 学生与老师:一个学生可以有很多老师,一个老师也可以找到所教的学生
  3. 课程与学生:一门课程可以有多个学生选修,一个学生也可以选修多门课程。如下是栗子:

自关联

简单理解,就是内部持有该类本身的一个引用,常见的就是链表的结点

这里参考Java7——HashMap内部结点Entry的实现:

 /**
* 参考Java7-HashMap源码内部实现
*/
class Entry<K,V> implements Map.Entry<K,V> {
final K key;
V value;
Entry<K,V> next;
int hash;
//...
}

2、聚合——Aggregation

体现的是整体与个体之间的关联关系,两者是可以分离的。没有强制的生死关系。例如:图书馆与书;电脑与键盘、鼠标;汽车与轮胎、发动机。个体是可以脱离整体单独存在的。

3、组合——Composition

在聚合关系之上的一种关联关系,是最强的关联关系,代表的是整体与部分的关系,具有统一的生存期,是不可分割一个整体存在。以人为例子,头部、心脏、手、脚等,都必须放在一起,共存亡。

4、泛化或者继承——Generalization

类的继承或者接口与接口之间的继承关系,常见到的概念就是“is-a”

5、依赖——Dependency

类的定义,包括其行为等,会受到另一个(些)类的影响。

  1. 作为(方法的)局部变量,
  2. 作为方法的形参
  3. 静态方法调用

例子1:以常见的Controller、Servie、DAO为例,请求转发到Controller时,依赖与具体的Servie实现,而Servie则是依赖DAO层实现数据库交互。

例子2:Maven的pom.xml依赖配置,就是常见的Dependency

6、实现——Realization

Java中常见的就是实现接口。例如,List接口的几个常见实现类:ArrayList、LinkedList、Vector。

以上uml类图参考我的github链接:wpbxin-github

参考1:使用StarUML创建类图

参考2:类与类之间的关系-依赖,关联,聚合,组合,继承泛化的区别

参考3:UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现

参考4:关联、组合、聚合、依赖关系比较

参考5:UML类图(上):类、继承和实现

参考6:UML类图(下):关联、聚合、组合、依赖

StarUML类图相关——关联、聚合、组合、泛化、依赖、实现的更多相关文章

  1. UML的类图关系分为: 关联、聚合/组合、依赖、泛化(继承)

    UML的类图关系分为: 关联.聚合/组合.依赖.泛化(继承).而其中关联又分为双向关联.单向关联.自身关联:下面就让我们一起来看看这些关系究竟是什么,以及它们的区别在哪里. 1.关联 双向关联:C1- ...

  2. UML类图及依赖,泛化,关联,聚合,组合,实现

    UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现 类与类图 1) 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性.操作.关系的对象集合的总称. 2) 在系统中, ...

  3. UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现

    UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现 类与类图 1) 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性.操作.关系的对象集合的总称. 2) 在系统中, ...

  4. UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现(转)

    UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现   类与类图 1) 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性.操作.关系的对象集合的总称. 2) 在系统 ...

  5. UML关系(泛化,实现,依赖,关联(聚合,组合))

    http://www.cnblogs.com/olvo/archive/2012/05/03/2481014.html UML类图关系(泛化 .继承.实现.依赖.关联.聚合.组合) 继承.实现.依赖. ...

  6. UML 类关系图(泛化,实现,依赖,关联(聚合,组合))

    UML的构造快包含3种:  (1) 事物(4种):结构事物,行为事物,分组事物,注释事物 (2) 关系(4种):泛化关系,实现关系,依赖关系,关联关系 (3) 图(10种):用例图,类图,对象图,包图 ...

  7. UML 图中类之间的关系:依赖,泛化,关联,聚合,组合,实现

    http://www.uml.org.cn/oobject/201211231.asp 1. 关联 一个类作为另外一个类的变量:在UML类图中,用实线连接有关联关系的对象所对应的类 2.聚合 表示整体 ...

  8. 分分钟弄明白UML中泛化 , 实现 , 关联, 聚合, 组合, 依赖

    在UML类图中,常见的有以下几种关系: 泛化(Generalization),  实现(Realization), 关联(Association), 聚合(Aggregation), 组合(Compo ...

  9. UML类图相关实践

    最近看了下设计模式,其中无可避免会设计很多类图,UML类图对于学习设计模式很重要,关于设计模式,我也会在这里写上一写,这一篇关于UML类图的就先当个铺垫. 1.先上一个简单的类图来简单说明下: 1). ...

随机推荐

  1. CVE-2019-0708 漏洞分析及相关测试

    在CVE-2019-0708公布后几天就已经尝试过复现该漏洞,但借助当时exp并没能成功复现反弹shell的过程遂放弃,故借助这次漏洞复现报告再来尝试复现该漏洞,因为还在大三学习中,有很多知识还没有掌 ...

  2. 结题报告:luogu P2014

    题目链接:P2014 选课 简单的树形\(dp\),借助\(dfs\)实现. 一般的树形\(dp\)数组是需要二维的,其中一维记录节点(编号或父/子节点的状态(有时三维)),另一维记录权值或计数. 重 ...

  3. 023、MySQL取文本长度取字符串长度

    #取文本长度,一个文字算1长度 SELECT CHAR_LENGTH('田攀520'); #UTF-8的数据库,值为5 #取文本长度,汉字算多个字符,数字和英文算一个字符 SELECT LENGTH( ...

  4. [转]SparkSQL – 有必要坐下来聊聊Join

    转载自网易范欣欣http://hbasefly.com Join背景介绍 Join是数据库查询永远绕不开的话题,传统查询SQL技术总体可以分为简单操作(过滤操作-where.排序操作-limit等), ...

  5. python matplotlib绘图大全(散点图、柱状图、饼图、极坐标图、热量图、三维图以及热图)

    //2019.7.14晚matplotlib七种常见图像输出编程大全 七种图形汇总输出如下: import numpy as np #导入数据结构nmupy模块import matplotlib.py ...

  6. 51nod:天堂里的游戏

    天堂里的游戏 李陶冶 (命题人) System Message (测试) 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 多年后,每当Noder看到吉普赛人,就会想起那个遥远的下午. ...

  7. C# OBJ模型解析的封装(网上看到的保留一份)

    /// <author>Lukas Eibensteiner</author> /// <date>19.02.2013</date> /// < ...

  8. MongoDB 初始化数据同步

    MongoDB初始化数据同步: 副本集中的成员启动之后,就会检查自身的状态,确定是否可以从某个成员那里进行同步.如果不行的话,尝试从其他成员那里进行完整的数据复制. 这个过程就是初始化同步(initi ...

  9. tornado5.0+async+await

    不使用数据库的情况下实现异步 使用gen.sleep()模拟阻塞 使用gen.sleep(time) 而不是time.sleep(),time.sleep()阻塞整个进程,看gen.sleep()源码 ...

  10. C# 基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系。

    今天写程序的时候调用到一个第三方的DLL文件,本机调试一切都正常,但是程序不是到服务器以后一直提示一个BUG:"基础连接已经关闭: 未能为SSL/TLS 安全通道建立信任关系". ...