概述

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

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. java_面试_01_一个月的面试总结(java)

    重点知识 由于我面试的JAVA开发工程师,针对于JAVA,需要理解的重点内容有: JVM内存管理机制和垃圾回收机制(基本每次面试都会问,一定要搞得透彻) JVM内存调优(了解是怎么回事,一般做项目过程 ...

  2. Java企业微信开发_03_自定义菜单

    一.本节要点 1.菜单相关实体类的封装 参考官方文档中的请求包的内容,对菜单相关实体类进行封装. 这里需要格外注意的是,企业微信中请求包的数据是Json字符串格式的,而不是xml格式.关于json序列 ...

  3. Gym - 100513B:Colored Blankets (构造)(存疑)

    题意:给定N的棒棒,K种颜色,每个棒棒的两端可以涂色.现在已知所有的线段要么有一端涂色,要么两端都没有涂色,现在要求把所有的没涂色的部分涂色,使得我们可以把涂色后的棒棒分为N/K组,每组的涂色情况相同 ...

  4. bzoj 1069: [SCOI2007]最大土地面积 凸包+旋转卡壳

    题目大意: 二维平面有N个点,选择其中的任意四个点使这四个点围成的多边形面积最大 题解: 很容易发现这四个点一定在凸包上 所以我们枚举一条边再旋转卡壳确定另外的两个点即可 旋(xuan2)转(zhua ...

  5. [转]HTTP Header 详解

    HTTP Header 详解 HTTP(HyperTextTransferProtocol) 即超文本传输协议,目前网页传输的的通用协议.HTTP协议采用了请求/响应模 型,浏览器或其他客户端发出请求 ...

  6. JavaScript下的进制转换

    JavaScript下的进制转换 //十进制转其他进制 var num = 99; console.log('十进制: ', num); console.log('八进制:', (num).toStr ...

  7. Python 写文件时的Unicode设置

    今天在把Evenote的笔记内容写为文件时出错:     f.write(content) UnicodeEncodeError: 'gbk' codec can& ...

  8. IIS应用池保持激活工具开发

    之前的 开源一个定时任务调度器 webscheduler 中涉及的定时调用应用已经开始在正式环境中启用,发布到IIS下进行测试,发现一旦应用长时间没有访问(大约半个多小时)就会引发 Applicati ...

  9. 洛谷-铺地毯-NOIP2011提高组复赛

    题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有 n 张地毯,编号从 1 到n .现在将这些地毯按照编号从小到大的顺序平行于 ...

  10. 2017清北学堂(提高组精英班)集训笔记——动态规划Part3

    现在是晚上十二点半,好累(无奈脸),接着给各位——也是给自己,更新笔记吧~ 序列型状态划分: 经典例题:乘积最大(Luogu 1018) * 设有一个长度为 N 的数字串,要求选手使用 K 个乘号将它 ...