uml类图浅录

2023-10-30

UML中类图的绘制

UML中类图包含类名,属性,方法,访问权限,类与类之间的关系。

单个类图的绘制

若下面代码:

class Person{
public:
    void work(){...}
private:
	string m_name;
	int m_age;
};

则其UML类图表示:
在这里插入图片描述

类图中的成员访问属性

符号 访问属性
- 私有访问
+ 共有访问
# 保护访问
~ package或default

UML类图中类与类的几种关系

下面介绍uml中类与类之间的6种关系。

关联

一个类类型对象作为另一个类的属性。其可以分为单向关联,双向关联,重数关联。单向关联指一个类类型的对象作为另一个类的属性。双向关联是指两个类互相作为对方类的属性。重数关联是指一个类类型的多个对象做为另一个类的属性。

代码示例解释

下面是单向关联示例代码:

class Test{.....};
class Demo{
 Test m_test;
 ....
};

双向关联示例代码:

class Demo;

class Test{
Demo m_demo;
.....
};
class Demo{
 Test m_test;
 ....
};

重数关联示例代码:

class Test{
.....
};
class Demo{
 Test m_test;
 Test m_test1;
 Test m_test2;
 ....
};

UML类图表示

在这里插入图片描述

多重性说明

文本 代表含义
1.1 一个类对象只与该类一个对象有关系
1…* 一个类对象与该类多个对象有关系
0…* 一个类对象与该类有0个或者多个对象有关系
0…1 一个类对象与该类有0个或者1个对象有关系
m…n 一个类对象与该类至少m,至多n个对象有关系

依赖

一个类类型的对象作为另一个类的成员函数的参数传入。

代码示例解释

class Test{....};

class Demo{
	void SetTest(Test & test){...}
};

uml类图表示

在这里插入图片描述

继承

又叫泛化,同C++中的继承是一个意思。

示例代码解释

class Base{....};
class Demo:public Basse
{
....
};

UML类图表示

在这里插入图片描述

实现

抽象类中的函数的实现,即类中接口函数在另一个类中被实现,一般父类为抽象类。

示例代码解释

class Base{
virtual void paly() = 0;
virtual void eat() = 0;
};

class Herio:public Base{
	void play(){...}
	void eat(){...}
};

UML类图表示

在这里插入图片描述

聚合

整体与部分的关系,部分与整体脱离后可以独立存在。

示例代码

省,这里只需理解其两个类对象可以独立存在,但是一个类对象又是另一个类的一部分。

class Hair{
....
};

class People{
private:
static Hair m_hair;
};

UML类图表示

在这里插入图片描述

组合

整体与部分的关系,整体与部分之间有相同的生命周期,两者同生共死。

示例代码解释

class Battery;

class ElectricCar{
Battery m_battery;
...};

class Battery{...};

UML类图表示

在这里插入图片描述

绘制UML类图示例

下面是几个小例子,来理解uml绘图类图。

示例一

在这里插入图片描述
此图讲述运动员类,衣服类,与球类的关系。运动员类中含有衣服类的成员变量。故而关系为关联,运动员类的成员函数使用球类的对象做函数的参数,故而与球类之间是依赖关系。

示例二

在这里插入图片描述
桌子是房子的组成部分,房子没有了桌子依旧可以存在,桌子没有了房子还是房子。故而桌子类与房子类之间是一种聚合关系。而房子与房子的墙壁是一种同生共死的关系,房子没有了,房子的墙壁自然就不存在了,为组合关系。

示例三

在这里插入图片描述
动物类是一个抽象类,哺乳动物类实现了动物类中的setName()与setAge()函数,可以看作是实现,但是我觉得应该也是继承。猴子类与马类继承了哺乳动物类,身体类作为猴子类和马类的一部分,当猴子类与马类不存在时身体类也就不存在,故而时一种组合关系,毛发类作为马类的一部分,当马类结束生命,毛发类依旧可以单独生存,为聚合关系。
以上若是存在理解不到位的地方,望指出。

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

uml类图浅录 的相关文章

  • 是否有必要为每个用例都包含登录信息?

    我将设计一个具有登录功能的系统 登录后 登录的用户可以执行几项操作 因此是否需要包括login用例由那几个用例组成 在大多数情况下 它只会让你的图表变得混乱 登录既不复杂 也不会给您带来太多附加值作为用例 在包含用例和描述的文本文档中 包含
  • UML 的高效替代方案

    我发现 UML 很难快速创建 我想更快地表达我的想法 特别是对于小型开源项目 如果它足够大 我会费心使用 UML 但是这个项目对于这种事情来说太小了 我不想要另一个让我觉得 不 我稍后再做 的工具 有什么建议么 UML 不是一种工具 而是一
  • 在线求职门户系统用例图

    我想要一个在线求职门户系统的正确用例图 这是我的尝试 我有些疑惑 我看不出在哪里制作 登录 用例 这是该系统的一个重要用例 该用例图没有显示简单访问者和注册访问者之间的区别 前者可以查看职位空缺 查看建议 而无需拥有帐户 后者可以查看职位空
  • 如何在 UML 中将属性显示为“只读”?

    我想用图表描述 API 的一些模型 是否有标准如何将属性标记为readonly 这些属性由系统设置 API 使用者无法修改 目前我滥用类图符号private and public属性 但我对此并不满意 谢谢你的想法 通常 当您进行接口编码时
  • 关联类的正确使用

    我是 UML 的新手 我不确定我的图表是否正确 我希望得到比我更有经验的人的建议 我的问题的陈述说 学生学习课程 每个学生可以选修几门课程 每门课程 学习 任何课程都可以有多个学生学习 学生由数字代码识别 有姓名 出生日期和一个或多个国籍
  • 子集约束在 UML 类图中意味着什么

    有subset在部门类和人员类之间 但我不知道比是什么意思 家庭作业机会 查看由子集约束链接的两个关系 每个部门有多名成员 每个部门设经理一名 子集表示这两者之间的约束 如果后一个关系的元素是第一个关系的子集 那么你会如何描述其含义 EDI
  • “包含”、“扩展”和“使用”之间有什么区别?

    在用例图中 两者有什么区别 lt
  • 模板继承的 UML 图

    在我的库的文件中 我有一个继承自模板的类 我的代码示例 class data class dataA public data class dataB public data inheritance from a template templ
  • 多个参与者,相同的用例 [用例]

    我试图描述一个用例 其中系统内的多个参与者可以执行相同的活动 例如 假设 作为示例 我想要使用 更新客户端 用例 但几个已确定的参与者可以执行此操作 Manager Chief Executive Customer Service Repr
  • 关联注入还是依赖注入?

    我正在研究依赖注入模式 我看过很多例子 其中一个典型的例子就是以XxxService XxxRepository为例 但我认为 根据UML概念 类XxxRepository应该是类XxxService的关联 为什么不称这种情况为关联注入 但
  • Dia:图表编辑器:盒子对象的限制?

    如标题所示 我尝试为 hte 3d 图形引擎 ogre3d 开发尽可能少的方案 问题是大图方案 Ogre Root 类需要相当多的从它下降的箭头 用关系箭头连接框的模型是它们只能通过边界周围的特定点 称为 关节 或其他东西 进入 退出 但现
  • 如何在 UML 序列图中显示实例化?

    如何显示 Web 服务器实例化视图并重新获得流的控制权 也许我没有使用正确的图表类型 非常感谢 Ruben 的答案中的图表是正确的 但缺少一般的 UML 答案 当 创建 线 在本例中为虚线 连接到所创建生命线的框 标签 顶部时 它会创建另一
  • 如何*真正*编写 UML 基数?

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

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

    在IBM Rhapsody中 如果我使用new创建了一个类的实例 那么我们是否必须通过调用delete来处理内存的释放 或者Termination Connector将在其状态图中通过内存释放来处理其销毁 如果您使用 C 和 OXF 对象执
  • 如何表示类的实例与将其作为输入的类之间的关系?

    我有一堂课叫House 这个类的实例是house class House def init self height length self height height self length length def housePlan hou
  • 如何使组合键唯一?

    I am making a database of students in one school Here is what I have so far 如果您不喜欢阅读 请跳至 简而言之 部分 问题是我对这个设计并不满意 我想要的组合gra
  • 用例 - 帮助 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我是编写用例的新手 我听说用例是非技术表达 我有以下任务 我必须为其编写用例 我降低了对你理解的要求 ABC公司的注册客户使用凭据登录系统以检索
  • 是否可以在 UML 中可视化一堆函数

    我正在改进一个使用类和函数文件 只是包含各种函数的 php 文件 的内容管理系统 例如 我有一堂课叫Admin以及一个功能文件 其功能包括显示管理员概述 创建新管理员 编辑现有管理员 删除管理员 函数文件使用类并执行 mvc 概念的可视化部
  • 有什么办法可以自动生成UML图吗? [关闭]

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

随机推荐

  • CV计算机视觉核心09-图像分割FCN(Penn-Fudan Database数据集)

    CV计算机视觉核心09 图像分割FCN Penn Fudan Database数据集 Penn Fudan Database数据集下载地址 https www cis upenn edu jshi ped html 1 首先读取数据 Pen
  • 【错误解决】git报错:you are not allowed to push code to protected branches on this project

    场景回忆 本地修改需要退回到之前的版本 打算强制push本地版本覆盖远程版本 但是在git push force后出现了以下的错误 Fix GitLab error you are not allowed to push code to p
  • [556]python实现神经网络

    神经网络 人工神经网络的洋文是Neural Network 这个计算模型在上世纪40年代就出现了 但是直到2011 2012年由于大数据和深度学习的兴起 神经网络才得到广泛应用 参看wiki神经网络 https en wikipedia o
  • SSM(ssm)心得体会之一原理理解

    最近在中软学习ssm框架的知识在这里总结一下 以前开发BS架构的web项目时 像笔者这种菜鸟就是用html js css ajax写前台 servlet作为后台接收请求 再用jdbc操作数据库 用这样的方式实现 1 前台发送请求 gt 2
  • clock gate cell 时钟门控单元

    1 结构图 锁存器 与门 D触发器 latch或reg 用于同步使能信号 防止出现亚稳态和毛刺 与门 使能信号无效时 关断模块输入时钟 D触发器 简化的reg 2 为什么需要clk gate 模块不工作时 clk翻转浪费功耗 模块 reg相
  • rsync: mkstemp ... failed: Operation not permitted

    今天在整理文件时遇到了下面的错误 rsync mkstemp abc def txt dm1u5x failed Operation not permitted 1 说说我的情况 我的 abc 目录是一个独立的 mount point 只有
  • 【通览一百个大模型】FLAN(Google)

    通览一百个大模型 FLAN Google 作者 王嘉宁 本文章内容为原创 仓库链接 https github com wjn1996 LLMs NLP Algo 订阅专栏 大模型 NLP 算法 可获得博主多年积累的全部NLP 大模型和算法干
  • [NSSCTF 2nd]

    文章目录 NSSCTF 2nd MISC gift in qrcode WEB php签到 MyBox MyBox rev MyHurricane MyJS NSSCTF 2nd MISC gift in qrcode import qrc
  • 关于Realtek 8821ce wireless lan 802.11ac网络适配器无法使用

    关于网络适配器realtek 8821ce wireless lan 802 11ac无法使用的问题 提示 并不适用于所有出现该问题的电脑 本次针对的电脑是win10系统 其他系统并没有测试过 参考1 https blog csdn net
  • 【Shell牛客刷题系列】SHELL15 去掉不需要的单词:总结awk命令中的内置函数

    该系列是基于牛客Shell题库 针对具体题目进行查漏补缺 学习相应的命令 刷题链接 牛客题霸 Shell篇 该系列文章都放到专栏下 专栏链接为 专栏 Linux 欢迎关注专栏 本文知识预告 本文首先总结了awk命令中的各个内置函数的用法 然
  • 【VC】【全局修改windows系统环境变量】 实现和原理详解

    文章目录 导读 开发环境 实现 通过procexp打开1836进程的环境变量列表 修改注册表 手动 编码实现 广播WM SETTINGCHANGE消息 再次通过procexp打开1836进程的环境变量列表 也可以通过 系统属性 gt 环境变
  • 数据和C学习

    第三章 数据和C 3 1 示例程序 include
  • Linux:冯诺伊曼体系结构

    文章目录 冯诺依曼 主板 显卡 外设 数据流的流向 操作系统OS 系统调用接口和库函数 参考 全文约 1600 字 阅读时长预计 5分钟 冯诺依曼 我们所认识的计算机 都是有一个个的硬件组件组成 冯 诺依曼结构的核心思想 一 确定了 计算机
  • Nginx教程(小白必看,看了必会,不看血亏),

    Notice 测试请打开浏览器禁止缓存 Notice 再使用前 请打开浏览器 F12 然后网络 然后点禁用缓存 避免nginx配置后磁盘缓存的情况 而且 请确认host没问题 备注 你本地设置的host对服务器反向代理后的就没用了 一 介绍
  • 还没毕业,我就进了HR的黑名单!

    今天小红书上的一则热搜 原文求助如下 马赛克的地方是之前的实习单位 这封邮件是发到我的工作邮箱 工作邮箱写在了简历里 因为最近一直在投简历 所以给我发邮箱的人应该是hr 不是什么恶作剧 现在正在疯狂找工作 所以看到这个邮件太害怕了 实在是不
  • idea无法创建servlet

    问题引入 new里面没有servlet项目 自己创建后也无法继承HttpServlet类 整篇代码爆红参考如下博客 IntelliJ IDEA关于 cannot resolve symbol servlet 的解决 进阶中的非主流坛子的博客
  • 2020美赛C题翻译

    翻译 问题C 数据的财富 在其创建的在线市场中 亚马逊为客户提供了对购买进行评分和评价的机会 个人评级 称为 星级 使购买者可以使用1 低评级 低满意度 到5 高评级 高满意度 的等级来表示他们对产品的满意度 此外 客户可以提交基于文本的消
  • JAVA基础之理解JNI原理及应用

    java 以其跨平台的特性深受人们喜爱 而又正由于它的跨平台的目的 使得它和本地机器的各种内部联系变得很少 约束了它的功能 解决JAVA对本地操作的一种方法就是JNI JAVA通过JNI调用本地方法 而本地方法是以库文件的形式存放的 在WI
  • Java 变量

    局部变量 局部变量声明在方法 构造方法或者语句块中 局部变量在方法 构造方法 或者语句块被执行的时候创建 当它们执行完成后 变量将会被销毁 访问修饰符不能用于局部变量 局部变量只在声明它的方法 构造方法或者语句块中可见 局部变量是在栈上分配
  • uml类图浅录

    uml类图 UML中类图的绘制 单个类图的绘制 类图中的成员访问属性 UML类图中类与类的几种关系 关联 代码示例解释 UML类图表示 多重性说明 依赖 代码示例解释 uml类图表示 继承 示例代码解释 UML类图表示 实现 示例代码解释