类(Class)

类(图A)是对象的蓝图,其中包含3个组成部分。第一个是Java中定义的类名。第二个是属性(attributes)。第三个是该类提供的方法。

属性和操作之前可附加一个可见性修饰符。加号(+)表示具有公共可见性。减号(-)表示私有可见性。#号表示受保护的可见性。省略这些修饰符表示具有package(包)级别的可见性。如果属性或操作具有下划线,表明它是静态的。在操作中,可同时列出它接受的参数,以及返回类型,如图A的“Java”区域所示。

图A

 

包(Package)

包(图B)是一种常规用途的组合机制。UML中的一个包直接对应于Java中的一个包。在Java中,一个包可能含有其他包、类或者同时含有这两者。进行建模时,你通常拥有逻辑性的包,它主要用于对你的模型进行组织。你还会拥有物理性的包,它直接转换成系统中的Java包。每个包的名称对这个包进行了惟一性的标识。

图B

接口(Interface)

接口(图C)是一系列操作的集合,它指定了一个类所提供的服务。它直接对应于Java中的一个接口类型。接口既可用图C的那个图标来表示,也可由附加了<<interface>>的一个标准类来表示。通常,根据接口在类图上的样子,就能知道与其他类的关系。

图C

关系

后面的例子将针对某个具体目的来独立地展示各种关系。虽然语法无误,但这些例子可进一步精炼,在它们的有效范围内包括更多的语义。

依赖(Dependency)

实体之间一个“使用”关系暗示一个实体的规范发生变化后,可能影响依赖于它的其他实例(图D)。更具体地说,它可转换为对不在实例作用域内的一个类或对象的任何类型的引用。其中包括一个局部变量,对通过方法调用而获得的一个对象的引用(如下例所示),或者对一个类的静态方法的引用(同时不存在那个类的一个实例)。也可利用“依赖”来表示包和包之间的关系。由于包中含有类,所以你可根据那些包中的各个类之间的关系,表示出包和包的关系。

图D

关联(Association)

实体之间的一个结构化关系表明对象是相互连接的。箭头是可选的,它用于指定导航能力。如果没有箭头,暗示是一种双向的导航能力。在Java中,关联(图E)转换为一个实例作用域的变量,就像图E的“Java”区域所展示的代码那样。可为一个关联附加其他修饰符。多重性(Multiplicity)修饰符暗示着实例之间的关系。在示范代码中,Employee可以有0个或更多的TimeCard对象。但是,每个TimeCard只从属于单独一个Employee。

图E

聚合(Aggregation)

聚合(图F)是关联的一种形式,代表两个类之间的整体/局部关系。聚合暗示着整体在概念上处于比局部更高的一个级别,而关联暗示两个类在概念上位于相同的级别。聚合也转换成Java中的一个实例作用域变量。

关联和聚合的区别纯粹是概念上的,而且严格反映在语义上。聚合还暗示着实例图中不存在回路。换言之,只能是一种单向关系。

图F

合成(Composition)

合成 (图G)是聚合的一种特殊形式,暗示“局部”在“整体”内部的生存期职责。合成也是非共享的。所以,虽然局部不一定要随整体的销毁而被销毁,但整体要么负责保持局部的存活状态,要么负责将其销毁。局部不可与其他整体共享。但是,整体可将所有权转交给另一个对象,后者随即将承担生存期职责。

Employee和TimeCard的关系或许更适合表示成“合成”,而不是表示成“关联”。

图G

泛化(Generalization)

泛化(图H)表示一个更泛化的元素和一个更具体的元素之间的关系。泛化是用于对继承进行建模的UML元素。在Java中,用extends关键字来直接表示这种关系。

图H

实现(Realization)

实例(图I)关系指定两个实体之间的一个合同。换言之,一个实体定义一个合同,而另一个实体保证履行该合同。对Java应用程序进行建模时,实现关系可直接用implements关键字来表示。

图I

uml 符号关系示意相关推荐

  1. UML各种关系,图的介绍(附加案例)

    本篇文章系我总结了网上好多片文章外加自己做图编辑而成,留作自用.主要参考如下博客: UML的九种图例详解 UML各种图总结-精华 UML视图(四)状态图 另附UML教学课件,学校上课用的,挺不错的.点 ...

  2. UML对象关系与箭头对应表

    对象和类 类是构造对象的模板 封装是与对象有关的一个重要的概念,从形式上来看,封装不过是将数据和行为组合在一个包中,并对对象的使用者隐藏了数据的实现方式.对象中的数据称为实例域,操作数据的过程称为方法 ...

  3. 认识 UML 类关系——依赖、关联、聚合、组合、泛化

    文章目录 1.依赖(Dependency) 2.关联(Association) 3.聚合(Aggregation) 4.组合(复合,Composition) 5.泛化(Generalization) ...

  4. 转载:认识UML类关系——依赖、关联、聚合、组合、泛化

    文章目录 1.依赖(Dependency) 2.关联(Association) 3.聚合(Aggregation) 4.组合(复合,Composition) 5.泛化(Generalization) ...

  5. 软件设计师备考(三)——UML(关系和UML图)

    软件设计师备考(三)--UML 一.事物 二.关系 三.UML中的图 1.类图 2.对象图 3.用例图 4.交互图 (1)序列图 (2)通信图 5.状态图 6.活动图 7.构件图 8.部署图 9.包图 ...

  6. 面向对象UML中类关系

    2019独角兽企业重金招聘Python工程师标准>>> 如果你确定两件对象之间是is-a的关系,那么此时你应该使用继承:比如菱形.圆形和方形都是形状的一种,那么他们都应该从形状类继承 ...

  7. 我所理解的OOP——UML六种关系

    最近由于经常给公司的小伙伴儿们讲一些OOP的基本东西,每次草纸都被我弄的很尴尬,画来画去自己都乱了,有时候也会尝试使用UML表示类之间的关系,但UML从毕业后就再也没接触过了,经常会被小伙伴儿们指出继 ...

  8. UML 中关系详解以及在visio中的表示

    http://www.cnblogs.com/kittywei/archive/2013/05/15/3079536.html Uml 关系主要有四大类: 依赖,关联,泛化,实现. 其中 依赖和关联是 ...

  9. Java成神之路——UML类关系图

    UML使用 类图分为三层 ,第一层显示类的名称,如果是抽象类斜体显示.第二层类的属性.第三层类的操作.方法属性前面的 " + " 代表public修饰," - " ...

最新文章

  1. es6结构赋值--数组
  2. 前缀列表---Prefix-List
  3. # POJ-1979(BFS)
  4. Address localhost:8080 is already in used
  5. Mysql循环语句,死循环解决办法
  6. 触发键盘_雷蛇这款光轴机械键盘开箱评测,光速触发,颜值爆表
  7. selenium的页面等待
  8. 浅谈C# XML WebServer数据序列化及数据压缩
  9. list 查找_趣味图解算法之二分查找
  10. Dual display on msm8937
  11. 支教日记软件测试,教学实习每周工作计划精选 .doc
  12. 【NLP】第 1 章 语言处理和 Python
  13. 深入理解Java内存模型(五)——锁
  14. 电脑问题处理篇4:解决华硕电脑“ASUS Battery Health Charging”软件界面呈现灰色不能选择充电模式的问题
  15. 计算机辅助技术英语,电子计算机辅助技术(CAD)
  16. python pickle and json
  17. P2P终结者---控制整个局域网网络的管理软件
  18. 一本价值不太大的书——《正在爆发的互联网革命》读后的印象
  19. 简单的Swing入门
  20. 虚拟机中安装win10系统

热门文章

  1. 日本电视制造商起诉惠普 最高索赔1亿美元
  2. 浅谈云计算,大数据和人工智能
  3. CelebA数据集下载|HTTPSConnectionPool(host=‘drive.google.com‘, port=443)|RuntimeError:Dataset not found
  4. CSDN博客看不到评论?CSDN博客怎么看评论?(已解决)
  5. obsidian之快速拆分文件的插件note-refactor操作手册
  6. Uni-app 课程详情页 获取课程详情 + 收藏 + 加入购物车
  7. Bandicam FPS 帧率模式 VFR(可变帧率) 和 CFR (恒定帧率) 到底是什么鬼?
  8. xcode以及mac常用快捷键
  9. 关于割接9000W数据的一些事
  10. vb、java、python那个与c一眼相近_vb c语言 python 哪个好点