类图基本符号可拆分为虚线,箭头,实线,空心右三角,实心右三角,空心菱形和实心菱形。由这些基本的图形进行组合构成了类图的基本符号。这里要注意这几个符号的顺序,代表了类与类之间关系的耦合程度。越向右耦合度越高。

其中虚线+箭头是表示即依赖的关系

依赖关系: 是一种使用的关系,  即一个类的实现需要另一个类的协助, 所以要尽量不使用双向的互相依赖.

指C5可能要用到C6的一些方法,也可以这样说,要完成C5里的所有功能,一定要有C6的方法协助才行。C5依赖于C6的定义,一般是在C5类的头文件中包含了C6的头文件。ROSE对依赖关系不产生属性。

形式上一般是A中的某个方法把B的对象作为参数使用(假设A依赖于B)。

实线+箭头表示关联的关系

关联关系: 是一种拥有的关系, 可以分为双向关联, 单向关联和自身关联.
双向关联是指双方都拥有对方的引用, 都可以调用对方的公共属性和方法.

单向关联是指只有某一方拥有另一方的引用, 这样只有拥有对方者可以调用对方的公共属性和方法.

自身关联是指拥有一个自身的引用.

C3->C4:表示相识关系,指C3知道C4,C3可以调用C4的公共属性和方法。没有生命期的依赖。一般是表示为一种引用。

实线+空心右三角表示的是泛化,即类的继承关系。

如果两个类存在泛化的关系时就使用,例如父和子,动物和老虎,植物和花等。

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

实现(Realization)

实现关系: 是一种类与接口的关系, 表示类是接口所有特征和行为的实现

泛化和实现的区别就在于子类是否继承了父类的实现, 如有继承则关系为泛化, 反之为实现.

实线+空心菱形表示的是聚合的关系

聚合:表示C9聚合C10,但是C10可以离开C9而独立存在(独立存在的意思是在某个应用的问题域中这个类的存在有意义。)

实线+实心菱形则表示组合的关系

组合(也有人称为包容):一般是实心菱形加实线箭头表示,如上图所示,表示的是C8被C7包容,而且C8不能离开C7而独立存在。

但这是视问题域而定的,例如在关心汽车的领域里,轮胎是一定要组合在汽车类中的,因 为它离开了汽车就没有意义了。但是在卖轮胎的店铺业务里,就算轮胎离开了汽车,它也是有意义的, 这就可以用聚合了。在《敏捷开发》中还说到,A组合B,则A需要知道B的生存周期,即可能A负责生成或者释放B,或者A通过某种途径知道B的生成和释放。

代码和聚合是一样的。具体如何区别,可能就只能用语义来区分了。

那依赖和聚合\组合、关联等有什么不同呢?

关联是类之间的一种关系,例如老师教学生,老公和老婆,水壶装水等就是一种关系。这种关系是非常明显的,在问题领域中通过分析直接就能得出。

依赖是一种弱关联,只要一个类用到另一个类,但是和另一个类的关系不是太明显的时候(可以说是“uses”了那个类),就可以把这种关系看成是依 赖,依赖也可说是一种偶然的关系,而不是必然的关系,就是“我在某个方法中偶然用到了它,但在现实中我和它并没多大关系”。例如我和锤子,我和锤子本来是 没关系的, 但在有一次要钉钉子的时候,我用到了它,这就是一种依赖,依赖锤子完成钉钉子这件事情。

组合是一种整体-部分的关系,在问题域中这种关系很明显,直接分析就可以得出的。例如轮胎是车的一部分,树叶是树的一部分,手脚是身体的一部分这种的关系,非常明显的整体-部分关系。

上述的几种关系(关联、聚合/组合、依赖)在代码中可能以指针、引用、值等的方式在另一个类中出现,不拘于形式,但在逻辑上他们就有以上的区别。

这里还要说明一下,所谓的这些关系只是在某个问题域才有效,离开了这个问题域,可能这些关系就不成立了,例如可能在某个问题域中,我是一个木匠,需 要拿着锤 子去干活,可能整个问题的描述就是我拿着锤子怎么钉桌子,钉椅子,钉柜子;既然整个问题就是描述这个,我和锤子就不仅是偶然的依赖关系了,我和锤子的关系 变得非常的紧密,可能就上升为组合关系(让我突然想起武侠小说的剑不离身,剑亡人亡...)。这个例子可能有点荒谬,但也是为了说明一个道理,就是关系和 类一样,它们都是在一个问题领域中才成立的,离开了这个问题域,他们可能就不复存在了。

注释

注释表示为带有褶角的矩形,然后用虚线连接到UML的其他元素上,它是一种用于在图中附加文字注释的机制。

转载于:https://www.cnblogs.com/yuxiang204/archive/2013/03/30/2990558.html

UML类图各符号含义相关推荐

  1. UML 类图各符号含义速查

    链接:https://pan.baidu.com/s/1RePYipe_4hnW_EtCbD-r9Q 提取码:0000 概述 类图 类名 访问修饰符 变量名 : 返回类型(例:+ Username : ...

  2. UML类图中符号的含义

    UML类图中符号的含义 类图中的基本符号由虚线.箭头.实线.空心三角形.空心菱形.实心菱形组成,这些符号的组合构成类图的基本符号 实线+箭头 表示关联关系 关联关系分类 自身关联 表示自身拥有一个自身 ...

  3. UML类图中各种箭头和线条的含义和用法(转)

    UML类图中箭头和线条的含义和用法 1.UML中关系 本节向大家学习一下UML箭头.线条代表的意义,UML中关系主要有依赖,聚合,合成,泛化和实现等,下面就让我们来看一下这些关系如何用UML箭头和线条 ...

  4. Uml 类图 stereotype的值含义,该怎么解决

    2019独角兽企业重金招聘Python工程师标准>>> Uml 类图 stereotype的值含义 用rose画类图的时候,里面的stereotype 选项的entity和domai ...

  5. 用gif图展示UML中箭头和线条的含义,及搞懂UML类图、时序图和用例图

    前言 新进入一家公司,应对 日常的软件开发工作和交流,要能看懂别人写的代码各个类之间的关系,那就需要您能看懂类图uml中各个类之间的线条.箭头代表什么意思? UML的类图中,一共有以下六大关系: 泛化 ...

  6. 【Java基础】UML类图及各种线代表的关系含义总结

    文章目录 一.UML常见图 1.类图(Class Diagram) 2.对象图(Object Diagram) 3.时序图(Sequence Diagram) 二.UML类图线的概括 1.类(Clas ...

  7. 解析UML类图符号意义

    软件开发过程中经常会遇到UML建模,那么你对UML符号是否熟悉,这里向大家简单介绍一下UML类图符号,每种符号都有不同的意义,希望通过本节的学习你对UML类图符号会有一定的了解,下面就让我们一起来看一 ...

  8. UML类图符号标识符解释

    来自:http://liuchuxiong2003.blog.sohu.com/168088327.html 类图Class diagram通过显示出系统的类以及这些类之间的关系来表示系统.类图是静态 ...

  9. [转]UML类图中连接线与箭头的含义

    目录: 一些概念 关联 1.双向关联 2.单向关联 3.自身关联(反身关联) 2.依赖 1 单向依赖 2 双向依赖 组合/聚合 1 组合 2 聚合 泛化和实现 1 继承(Derived) 2 接口实现 ...

  10. UML类图中连接线与箭头的含义(转)

    UML类图是描述类之间的关系 概念 类(Class):使用三层矩形框表示. 第一层显示类的名称,如果是抽象类,则就用斜体显示. 第二层是字段和属性. 第三层是类的方法. 注意前面的符号,'+'表示pu ...

最新文章

  1. 结合自己造的轮子实践按需加载
  2. idea debug只断点当前线程,不阻塞其他线程
  3. java自学方法_JAVA自学 方法
  4. 域乎曹胜虎:传统互联网“生病”了
  5. 《计算机网络自顶向下》之重头戏迪杰斯特拉算法
  6. http协议中content-length 以及chunked编码分析
  7. POI--HSSFCell类
  8. CVI通过ODBC连接数据库的方法
  9. 基于MapGIS的GIS二次开发作业文档
  10. LeetCode题解-6. ZigZag Conversion
  11. gradient设置上下渐变_CSS3中渐变gradient详解
  12. jQuery AJAX回调函数this指向问题
  13. matlab最优轨迹规划,matlab机器人轨迹规划
  14. win10 ESP盘符问题(隐藏系统分区)
  15. 小米球ngrok 给你惊喜
  16. RRDTool和mrtg的比较
  17. “AI鉴黄师”数据采集标注方案上线
  18. 51nod1326 遥远的旅途(spfa+dp)
  19. 一句话给大家阐明 java中的方法签名!!!!Java中什么是方法签名
  20. c语言适用于大型的 复杂的软件系统开发,c语言是什么

热门文章

  1. centos下安装和卸载jdk
  2. MyBatis集合Spring(三)之mapper
  3. idea中mapper.xml的头文件配置
  4. Tensorflow官方文档学习理解 (三)-MNIST
  5. 基于用户的协同过滤推荐算法
  6. OSPF建立邻居、邻接关系 学习笔记
  7. SQL SERVER2017 安装程序无法与下载服务器联系。无法安装机器学习服务的问题解决方式...
  8. 【CC2640R2F】香瓜CC2640R2F之LED
  9. sublime设置代码缩进
  10. [转]几种图像处理类库的比较