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

一、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的实现:

 1 /**
 2  * 参考Java7-HashMap源码内部实现
 3  */
 4 class Entry<K,V> implements Map.Entry<K,V> {
 5         final K key;
 6         V value;
 7         Entry<K,V> next;
 8         int hash;
 9         //...
10 }

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类图(下):关联、聚合、组合、依赖

转载于:https://www.cnblogs.com/wpbxin/p/8831162.html

StarUML类图相关——关联、聚合、组合、泛化、依赖、实现相关推荐

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

    转:UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现 原文:https://www.cnblogs.com/firstcsharp/p/5327659.html 类与类图 1) 类(Clas ...

  2. java 正则表达式 组合_java基础:5.1 面向对象、类的关联 聚合 组合、正则表达式...

    上一个礼拜太忙了,今天开始恢复java的学习~ 目录 1.面向过程--面向对象的区别 传统的面向过程式编程是动作驱动的,数据和动作是分离的.面向对象编程的范式重点在于对象,动作和数据一起定义在对象中. ...

  3. 【UML关系(泛化、实现、依赖、关联(聚合,组合))】

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

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

    类与类图 1) 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性.操作.关系的对象集合的总称. 2) 在系统中,每个类具有一定的职责,职责指的是类所担任的任务,即类要完成什 ...

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

    在UML中,类使用包含类名.属性和操作且带有分隔线的长方形来表示,如定义一个Employee类,它包含属性name.age和email,以及操作modifyInfo() public class Em ...

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

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

  7. 软件设计-UML类图详解说明

    一. UML类图思维导图 二. 详细分析和介绍 下面就从上面的思维导图开始,详细的介绍UML类图! 1. 什么是UML,概念是什么? UML(Unified Modeling Language)中文统 ...

  8. UML类图介绍及画法

    FROM:http://uule.iteye.com/blog/2078935 箭头: 指向父类或接口. 指向依赖物. 指向子元素. 继承.实现是三角型箭头,其他都为箭头 组合.聚合都有一个菱形端,且 ...

  9. Java 大黑话讲解设计模式 -- UML类图

    前言 关于UML类图的这篇文章,我觉得把它放在设计模式专栏的篇首最为合适,因为在学习设计模式的时候,经常会遇到有关UML类图,没有去专门学过的童鞋肯定会感觉很复杂.学到后面,发现不掌握UML类图,对设 ...

最新文章

  1. .net 4.0下载
  2. 不要成为自己讨厌的那种程序员
  3. PMCAFF微课堂 「已结束」| 京东核心团队揭秘:业务增长10倍背后的敏捷开发秘籍
  4. 第五章 初始jQuery
  5. [redis数据结构]之 hash类型
  6. linux脚本生成数字写入文本,4.2 编写Shell脚本(P80-85)——《Linux就该这么学》学习笔记16...
  7. 杭电2531Catch him
  8. Android中ContentProvider组件详解
  9. JavaScript文档对象模型DOM节点操作之创建和添加节点(5)
  10. Python 字典(Dictionary) 基本操作
  11. 访问webservice,导入xml至本地数据集
  12. 软件项目经理应具备的素质和条件_软件企业项目经理应具备的基本能力
  13. vba 涉及合并取消合并单元格
  14. 星星之火-38:LTE物理层无线资源与帧结构快速入门
  15. 同城双活与异地多活架构分析
  16. Python数据分析与挖掘实战学习12
  17. 亲测-分享最新微信付费进群收费进群系统源码-附带搭建教
  18. c++数据结构小助手 : 可视化树与图工具
  19. C语言删除字符串的所有尾部空格
  20. 从数据到知识,爱数告诉你总共需要几步

热门文章

  1. 机器学习的数学基础(5):最小均方误差的回归问题
  2. Weblogic漏洞 CVE-2021-2109 处理
  3. uni-app浏览器、iPhone手机显示轮播图,微信、支付宝小程序中不显示的错误原因及解决办法
  4. 小辣鸡之——淘宝首屏静态页面的编写
  5. 【§极品网游之我叫mt online电脑版免费中文版§】
  6. 命令行中 python -v 和 python -V 详解
  7. 爱立信简介及中国2005校园招聘
  8. 工序流转二维码的应用和制作方法
  9. 巴菲特 投资“金”定律
  10. 企业微信:私域营销黄金组合玩法