StarUML类图相关——关联、聚合、组合、泛化、依赖、实现
? ? ? ? 在阅读设计模式相关的书籍,或者其他一些项目、相关博客等等,经常会遇到类图,它对于一个类的信息,如变量、方法及其可见性,类与类(接口)之间的继承关系、依赖关系、聚合关系、组合关系等,都可以比较形象得当地描述出来。这样有用的工具,还是需要稍微掌握了解下,也方便自己的应用和描述。因此就有了这篇搬运工文档 ? 一、StarUML下载和入手? ? ? ? 1、先捧出StarUML官网StarUML——The Open Source UML/MDA Platform。 ? ? ? ? 2、入手简单的UML开发可以参考:使用StarUML创建类图?,这个教程可以满足平时记录的一些基本类图开发。 ? 二、关联、聚合、组合、泛化、依赖、实现——概念介绍在StarUML中有几个常见的概念
如下是在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 双向关联 ? ? ? ?关联关系是双向的,常见的例子:顾客与(即购买)商品,学生与老师,课程与学生
自关联 ? ? ? ?简单理解,就是内部持有该类本身的一个引用,常见的就是链表的结点 这里参考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:以常见的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类图(下):关联、聚合、组合、依赖 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |