UML类图几种关系的总结

2023-11-17

在UML类图中,常见的有以下几种关系:泛化(Generalization),  实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)

 

1.泛化(Generalization)

【泛化关系】:是一种继承关系,它指定了子类如何特化父类的所有特征和行为例如:老虎是动物的一种.

【箭头指向】:带三角箭头的实线,箭头指向父类

2.实现(Realization)

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

【箭头指向】:带三角箭头的虚线,箭头指向接口

3.关联(Association)

关联关系】:是一种拥有的关系,它使一个类知道另一个类的属性和方法;如:老师与学生,丈夫与妻子

关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。

【代码体现】:成员变量

【箭头及指向】:带普通箭头的实心线,指向被拥有者

 

上图中,老师与学生是双向关联,老师有多名学生,学生也可能有多名老师。但学生与某课程间的关系为单向关联,一名学生可能要上多门课程,课程是个抽象的东西他不拥有学生。

 

上图为自身关联:

 

4. 聚合(Aggregation)

【聚合关系】:是整体与部分的关系.如车和轮胎是整体和部分的关系.

聚合关系是关联关系的一种,是强的关联关系;关联和聚合在语法上无法区分,必须考察具体的逻辑关系。

【代码体现】:成员变量

【箭头及指向】:带空心菱形的实心线,菱形指向整体

 

 

5. 组合(Composition)

【组合关系】:是整体与部分的关系.,没有公司就不存在部门      组合关系是关联关系的一种,是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期

【代码体现】:成员变量

【箭头及指向】:带实心菱形的实线,菱形指向整体

 

 

6. 依赖(Dependency)

【依赖关系】:是一种使用的关系,所以要尽量不使用双向的互相依赖

【代码表现】:局部变量、方法的参数或者对静态方法的调用

【箭头及指向】:带箭头的虚线,指向被使用者

 

 

 

各种关系的强弱顺序:

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

下面这张UML图,比较形象地展示了各种类图关系:





FROM: http://blog.csdn.net/tianhai110/article/details/6339565



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UML类图几种关系的总结 的相关文章

  • 自动生成我的 C++ 代码的 uml 图

    不久前 我担任 Java 编程入门课程的助教 我们使用了一个名为BlueJ http www bluej org 它有一个很好的功能 即开发文件的概述是一个轻量级的 UML 图 其中绘制了 使用 指针和继承指针 这使得可以轻松查看程序的结构
  • 这是实体关系图还是类图

    嘿 基本上我对类图和 ERD 的区别感到困惑 我创建了一个我认为是 ERD 的东西 但我的室友似乎认为它是一个类图 它是什么 与已接受的答案相反 xmojmr 也注意到这是NOTUML 图 而是实体关系图 ERD 最明显的区别是连接器末端的
  • “包含”、“扩展”和“使用”之间有什么区别?

    在用例图中 两者有什么区别 lt
  • 用例之间的 UML 关系(扩展/包含)

    我不太理解以下主题 因为它与我读到的内容有点含糊 Inlcude就像对下一部分的引用一样 没有它 用例就不完整 这部分应该从更多地方引用 否则它的使用没有意义 但我见过一个例子 其中 include 仅在某些 IF 语句中为真 例如 添加新
  • 类图转换为关系模型;继承和匹配表

    对于一个学校项目 我应该设计上学期项目的系统 我们使用 UML 创建一个极其简单的用例图 没有 lt
  • 如何快速理解任何产品的设计和代码流程? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 传统的基于代码的工程和模型驱动的工程方法有什么区别?

    我在文献中找到了这段话 但我不明白它的含义 设计实践正在从传统的基于代码的工程转向 在整个开发生命周期中进行严格的分工 模型驱动的工程方法 其中所有人员都参与设计 流程可以对模型有发言权 任何帮助将不胜感激 基于代码的工程意味着大部分工作是
  • 显示除“<>”或“<>”之外的 UML 用例图的依赖关系

    除了 扩展 或 包含 之外 我们如何显示用例之间的简单依赖关系 例如 我们想说用例 1 依赖于由用户 1 完成的用例 2 可以用一个简单的箭头来实现吗 向哪个方向 是的 还有其他依赖项 直接连接到用例的类的完整列表是 UML 2 5 标准的
  • 如何在 UML 中指定“一次一个”?

    我正在制作一个类图Classroom and a Course class 我怎样才能表明Classroom只能有一个Course一次在其中吗 我知道我可以使用多重性来指定教室可以只开设一门课程 但这并不能完全指定在不同时间可以有除该一门课
  • staruml 抽象类?

    有谁知道如何使用 StarUML 创建抽象类 我在文档中找不到任何提及 是否有某种反映抽象类的更一般的概念 从工具箱中选择类并将其添加到画布中 然后转到属性选择 isAbstract 复选框 然后类名显示为斜体
  • 用例可以没有参与者吗?

    我正在研究全自动系统的用例图 外部系统只会触发该系统的一个用例 大多数其他用例都是计划任务并由计时器调用 我有一个由计时器调用的用例 它包含并扩展了其他两个用例 当我编写用例描述时 谁将成为 UC 2 和 UC 3 的参与者 用例可以在没有
  • 如何在 UML 类图中表示“事件”?

    这是我的代码片段 public class Notation INotifyPropertyChanged public event PropertyChangedEventHandler PropertyChanged private N
  • Eclipse:如何安装 UML2 工具

    我想尝试 UML2 Tools for Eclipse 如图所示本教程 http www vogella de articles UML article html 我目前拥有面向 Java EE 开发人员的 Eclipse 3 6 Heli
  • XMI 2.1.1 的 XSD

    我必须使用 JAXB 解析 XMI 文件 xmi 版本 2 1 1 为此 我必须生成与 XMI 文件相对应的 Java 类 因此 我需要 xmi 文件的 shema 定义才能使用 jxc 工具执行此操作 我希望有人知道在哪里可以找到这个文件
  • 如何*真正*编写 UML 基数?

    我想一劳永逸地知道如何编写 UML 基数 因为我经常不得不争论它们 所以非常欢迎证明和来源 如果我想解释一下a Mother可以有几个Children but a Child有且仅有一个Mother 我应该写 Mother 1 Child
  • UML三元关联实现java代码[重复]

    这个问题在这里已经有答案了 三元关联是结构关系 指定一个事物的对象连接到其他两个事物的对象 我理解这种关系 但我不知道如何实现显示这三个类之间关联的方法 让我们考虑下面的例子 项目有许多使用特定编程的开发人员 语言促进发展 开发人员使用特定
  • IBM Rhapsody 中状态图终止连接器的理解

    在IBM Rhapsody中 如果我使用new创建了一个类的实例 那么我们是否必须通过调用delete来处理内存的释放 或者Termination Connector将在其状态图中通过内存释放来处理其销毁 如果您使用 C 和 OXF 对象执
  • 有没有办法在 Visual Studio 或 MATLAB 中“映射”程序执行顺序?

    我所说的 地图 是指我有一个 主 函数 它调用内部的许多其他程序 我希望能够看到哪个文件首先运行 第二个 第三个等等 基本上 我希望能够请参阅这个大型 OOP 设计程序 创建者没有为其制作 UML 类图 中的依赖项列表和顺序 以帮助破译代码
  • 有什么办法可以自动生成UML图吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有一个 MySQL 数据库 我想生成它的关系图 有没有一个工具可以连接到数据库并自动为我生成它 是的
  • UML:一对多关系表示?

    我是 UML 新手 还不太理解其表示法 这是我对图的理解 The system has many doctors Doctors can have many patients however patients can only have o

随机推荐

  • 机器学习中的多分类任务入门

    摘要 这篇文章主要是关于机器学习中多分类任务的一些基本知识 1 我先抛出一个问题 在LR 逻辑回归 中 如何进行多分类 一般下 我们所认识的lr模型是一个二分类的模型 但是 能否用lr进行多分类任务呢 答案当然是可以的 不过 我们需要注意的
  • VSCode运行Java报错No delegateCommandHandler for vscode.java.resolveMainMethod

    VSCode运行Java报错No delegateCommandHandler for vscode java resolveMainMethod 今天快气死了 平时vscode好好的 今天不知道怎么了 运行Java程序突然报错No del
  • Python: Decorator Pattern

    DuDecorator py 装饰模式 Decorator Pattern import six https pypi org project six from abc import ABCMeta six add metaclass AB
  • 中断和串口的介绍

    一 中断的介绍 1 什么是中断 中断是指计算机运行过程中 出现某些意外情况需要主机干预时 机器能自动停止正在运行的程序并转入处理新情况的程序 处理完毕后又返回原被暂停的程序继续运行 2 中断都有哪些 中断主要分为系统中断和外部中断 3 中断
  • GauGAN (SPADE) 水记 (seg2img)

    GauGAN SPADE 水记 seg2img 根据语义mask生成图像 论文 Semantic Image Synthesis with Spatially Adaptive Normalization https arxiv org p
  • rsa非对称加密

    RsaUtil 私钥加密 公钥解密 import lombok extern slf4j Slf4j import sun misc BASE64Decoder import sun misc BASE64Encoder import ja
  • 在python中输入10个整数并求出最大值_python练习题 :用户任意输入10个整数到列表中,然后由大到小排列并输出。...

    一 填空题 1 python是一种面向 对象 的高级语言 2 python可以在多种平台运行 这体现了python的 可移植 特性 3 python源代码被解释器转换后的格式为 pyc 4 python3 x默认使用的编码是 UTF 8 5
  • 对数和指数

    参考 https www zhihu com question 21453993 这就相当于先发明减法符号 再发明加法符号 1614年 纳皮尔发明了对数和对数表 1637年 法国数学家笛卡儿发明了指数 比对数晚了20多年 1770年 欧拉才
  • 判断设备联网状态(Python)

    判断设备联网状态 Python 在Python中利用socket来判断设备是否联网 通过ping命令来验证设备的网络状态 完整代码如下 import socket def isNetOK testserver s socket socket
  • zed双目摄像头 +yolo进行双目测距

    zed双目摄像头 yolo进行双目测距 首先根据你电脑或者jetson系列中的cuda版本下载对应的zed sdk 去安装zed api 安装过程可能会出现import pyzed sl as sl ImportError DLL load
  • b站黑马的Vue快速入门案例代码——计数器

    目录 目标效果 重点原理 1 创建Vue实例的时候 2 v on 为元素绑定事件 3 v text 解析文本用 设置标签的文本值 v text 简写 为 实现步骤 代码部分 1 计数器模板 html 全是重点 2 index css 辅助作
  • ubuntu下安装jdk

    ubuntu下的jdk 氛围open jdk和oracle jdk两种 前者是开源的 其实也行 不过大部分人使用的还是oracle jdk 有些博客推荐用ppa的方式安装 但这个安装的链接被墙了 所以经常会安装失败 现在介绍另一种 手动解压
  • 解决vscode远程安装插件不了、安装太慢问题

    一 问题描述 一直显示正在安装 几个小时也没动静 特别是那个c c 插件的安装 二 解决方法 1 采用手动安装插件的方式 步骤 先去这个网站找你要安装的插件 然后下载到本地电脑 All categories Extensions Visua
  • React 入门教程系列(三)——JSX 和 虚拟 DOM

    文章目录 1 JSX 2 虚拟 DOM 3 实例1 4 实例2 5 源码 1 JSX JSX的全称是 JacaScript XML 是 React 定义的第一种类似于 XML 的 JS 拓展语法 JSX 的语法大致遵循下面几条 标签名任意
  • C++中拷贝构造函数的四种调用方式

    代码 define CRT SECURE NO WARNINGS include
  • 分享一个iec104协议的资源,一个模拟iec104协议主站端的小工具

    最近编写的iec104协议的软件也基本稳定了 现在上传到资源上去留作备份 可实现功能 V1 005 2019 331 1 增加启动调用可执行文件目录下104 ini 调用遥信点表功能 增加显示SOE功能 2 增加显示SOE功能 根据读取的点
  • 数据库批量插入,存在则更新,不存在则插入

    INSERT ON DUPLICATE KEY UPDATE 语句 在并发量比较高的时候 可能两个线程都查询某个记录不存在 所以会执行两次插入 然后其中一条必然会因为主键 这里说的主键不是递增主键 冲突而失败 数据库层MySQL中INSER
  • Python中利用compileall将py项目打包成pyc项目

    在进行python项目开发的时候一定会涉及到项目打包这个环节 有时因为一些依赖的原因没法打包成一个大的可执行文件 但为了代码的安全性我们最起码需要打包成pyc的预编译格式 这样运行者 一般是测试和线上部署 在无法看到程序源码的同时也能顺利执
  • numpy.c_和numpy.r_的用法

    numpy c 将切片对象沿第二个轴 按列 连接 np c np array 1 2 3 np array 4 5 6 array 1 4 2 5 3 6 np c np array 1 2 3 0 0 np array 4 5 6 arr
  • UML类图几种关系的总结

    在UML类图中 常见的有以下几种关系 泛化 Generalization 实现 Realization 关联 Association 聚合 Aggregation 组合 Composition 依赖 Dependency 1 泛化 Gene