博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
StarUML类图相关——关联、聚合、组合、泛化、依赖、实现
阅读量:6969 次
发布时间:2019-06-27

本文共 1886 字,大约阅读时间需要 6 分钟。

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

 

一、StarUML下载和入手

        1、先捧出StarUML官网

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

 

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

在StarUML中有几个常见的概念

Association

DirectedAssociation

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

如下是在StarUML中的样子。

1、关联——Association或者DirectedAssociation

       参考

Association is a between which is used to show that instances of classifiers could be either to each other or 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
implements Map.Entry
{ 5 final K key; 6 V value; 7 Entry
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链接:

 

参考1: 

参考2:

参考3:

参考4:

参考5:

参考6:

 

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

你可能感兴趣的文章
很好的DP思路,字符串比较次数
查看>>
delegate和event的区别 (zz)
查看>>
ActiveMQ HelloWorld入门
查看>>
江西理工大学南昌校区cool code竞赛
查看>>
使用Java开发微信公众平台(二)——消息的接收与响应
查看>>
tomcat和nginx的使用
查看>>
预处理素数(个人模版)
查看>>
[转]Oracle ROWNUM用法和分页查询总结
查看>>
zset类型以及其操作
查看>>
MUI --- h.js无效
查看>>
【Java面试题】24 sleep() 和 wait() 有什么区别? 详细解析!!!!
查看>>
如何使用指向类的成员函数的指针(详解!)
查看>>
Win10系列:JavaScript多媒体
查看>>
https配置
查看>>
C/C++产生随机数
查看>>
iOS:基于RTMP的视频推流
查看>>
html学习笔记
查看>>
linux下getrlimit与sysconf函数
查看>>
使用NPOI生成Excel级联列表
查看>>
Python 集成开发环境(IDE)
查看>>