概述

    在画图的过程中,发现自己还是有好多不懂的地方,对于四大关系理解的不是特别透彻,所以画图的过程中总是“剪不断,理还乱!”再一次整理四大关系,再回首必然丰收~~~

1、实现(Realization)

    表示类是接口所有特征和行为的实现。

    【表示】UML图中实现常常用一条带有空心三角箭头的虚线指向接口如下:

                                   

2、泛化(Generalization)

    是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。

    【表示】一个带三角的箭头的实线,箭头指向父类。

                                 

3、依赖(Dependency)

    是一种使用关系,即一个类的实现需要另以一个类的协助,所以尽量不使用类的双向依赖。表现为函数中的参数,是类与类之间的连接,表示一个类依赖于另一个类的定义,其中一个类的变化将影响另一个类。例如A依赖于B,则B体现为局部变量,方法的参数、静态方法的调用。

    形式:

       类B以参数的形式传入类A的方法中。

       类B以局部变量的形式存在于类A的方法中。

       类A调用类B的静态方法。

    【表示】在UML图中实现使用一条带有箭头的虚线表示。箭头指向被使用者,如下:

                               

4、关联:(Association)

    表现为变量,类与类之间的联接,它使一个类知道另一个类的属性和方法。普通关联关系使类处于同一层次上。

    关联分为:

        单向关联:只有一个类知道另一个类的公共属性和操作;

        双向关联:两个类都知道另一个类的公共属性和操作。

        大多数关联应该是单向的,单向的关联更容易建立和维护。

    【表示】图中关联用一条实线来联接两个类。

                              

4.1聚合:

    是关联关系的一种,较弱的关联关系。聚合关系是整体和个体的关系。使类处于不同的层次关系上。一个是整体一个是部分。同时,是一种弱的“拥有关系”。聚合关系中,整体和部分是独立存在的,各自有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享;

    【表示】带空心菱形的实心线,菱形指向整体。

                                       

4.2组合:

    也是关联关系的一种,比聚合关系强的一种关联关系。整体和部分不可分开,整体的生命周期结束就代表着部分的生命周期结束。

    【表示】带实心的菱形的实心线,菱形指向整体。

                                       

总结

    各种关系的强弱:

    泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖 



若安好,便是晴!

UML——再回首的更多相关文章

  1. 再回首UML之下篇

    接着我们上篇博客再回首UML之上篇说,在类图中有四种关系,关联.依赖.泛化.实现,接下来,我们来看看依赖,依赖--描述的是一种使用关系,她说明一个事物的规格说明的变化可能影响到他使用的另一个事物,反之 ...

  2. 再回首UML之上篇

    UML,统一建模语言,是一种用来对真实世界物体进行建模的标准标记,这个建模的过程是开发面向对象设计方法的第一步,UML不是一种方法学,不需要任何正式的工作产品. UML提供多种类型的模型描述图,当在某 ...

  3. 再回首,Java温故知新——开篇说明

    不知不觉在IT界从业2年了,两年时间足够一个人成长很多,当然也会改变很多事.在这两年时间里,随着对技术的深入了解,知识面的拓展以及工作难度的增大,渐渐的感觉自己技术方面根基不稳,多数问题也只是做到知其 ...

  4. JAVA基础再回首(二十五)——Lock锁的使用、死锁问题、多线程生产者和消费者、线程池、匿名内部类使用多线程、定时器、面试题

    JAVA基础再回首(二十五)--Lock锁的使用.死锁问题.多线程生产者和消费者.线程池.匿名内部类使用多线程.定时器.面试题 版权声明:转载必须注明本文转自程序猿杜鹏程的博客:http://blog ...

  5. 再回首,Java温故知新(一):Java概述

    Java发展历程 Java的发展要追溯到1991年,Patrick Naughton(帕特里克·诺顿)和James Gosling(詹姆斯·高斯林)带领Sun公司的工程师打算为有线电视转换盒之类的消费 ...

  6. 再回首,Java温故知新(八):Java基础之字符串

    字符串是Java中使用频率最高的类,但是它却不属于基本类型,而是预定义了String类来表示.从String类的源码可以看到,String是基于char[]实现的,而且Java中的String是不可变 ...

  7. 再回首,Java温故知新(七):Java基础之运算符

    常规算数运算符 包括+.-.*./.%分别对应着加.减.乘.除.取余,算数运算符所处理的两个数字必须为同种类型,如果是不同类型且无法进行自动类型转换的话必须进行强制类型转换,不过强制类型转换可能会丢失 ...

  8. [二十六]JavaIO之再回首恍然(如梦? 大悟?)

    流分类回顾 本文是JavaIO告一段落的总结帖 希望对JavaIO做一个基础性的总结(不涉及NIO) 从实现的角度进行简单的介绍 下面的这两个表格,之前出现过 数据源形式 InputStream Ou ...

  9. MySQL数据库再回首

    前言: 数据库是程序员的数据源泉,加上近期 要开发DB可视化.性能分析的功能 重新回顾一下MySQL知识,以下是笔记: MySQL架构 MySQL基础理论 1.什么是关系型数据库? 关系型数据库,这个 ...

随机推荐

  1. SetOperations

    无序集合,add的顺序不是存储顺序 1.add(K key, V value) 2.difference(K key, otherK[s]) :差集,返回Set 3.differenceAndStor ...

  2. ES索引瘦身 压缩——_source _all 均disable filed store为no,引入第三方DB存储原始数据,去掉pos倒排和doc_values,强制定期merge segments,将所有fileds合并为一个field big string

    原始数据:835MB ES 设置了_source _all disabled 且设置了仅仅存docs倒排Wed Feb 22 11:58:27 CST 2017Before size:1 /home/ ...

  3. Android简单数据存储SharedPreferences

    SharedPreferences是Android中存储简单数据的一个工具类.可以想象它是一个小小的Cookie,它通过用键值对的方式把简单数据类型(boolean.int.float.long和St ...

  4. C语言小程序(八)、统计字母个数

    这么简单的程序本不应贴在这里,但每写一篇博客,积分涨10分,距离摆脱千里之外的排名又进一步,相当于刷榜了,哈哈! #include <stdio.h> #include <strin ...

  5. hdu 3537 Daizhenyang's Coin(博弈-翻硬币游戏)

    题意:每次可以翻动一个.二个或三个硬币.(Mock Turtles游戏) 初始编号从0开始. 当N==1时,硬币为:正,先手必胜,所以sg[0]=1. 当N==2时,硬币为:反正,先手必赢,先手操作后 ...

  6. Gym 101142 I.Integral Polygons(计算几何)

    题意:给定一个凸包,现在让你连接凸包上两点,把凸包变为两个多边形,满足两个多边形的面积都是整数. 思路:我们知道整点的三角形面积S=叉积/2,则S要么是整数,要么是整数+0.5.那么多边形有多个三角形 ...

  7. ACM学习历程—CSU 1216 异或最大值(xor && 贪心 && 字典树)

    题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1216 题目大意是给了n个数,然后取出两个数,使得xor值最大. 首先暴力枚举是C(n,  ...

  8. HDOJ1059(多重背包)

    1.解法一:多重背包 #include<iostream> #include<cstdio> using namespace std; #define MAX(a,b) (a& ...

  9. Linux如何打开执行脚本

    命令行下例如要打开startmysql.sh就直接 sh /目录/目录当前界面下就简单了在这个SH文件目录下打开终端 输入 sh startmysql.sh 回车或者对这个文件右键 打开 选择“在终端 ...

  10. java报表开发之报表总述

    转自:https://blog.csdn.net/u011659172/article/details/40504271?utm_source=blogxgwz6