uml类图浅录

uml类图

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

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()函数,可以看作是实现,但是我觉得应该也是继承。猴子类与马类继承了哺乳动物类,身体类作为猴子类和马类的一部分,当猴子类与马类不存在时身体类也就不存在,故而时一种组合关系,毛发类作为马类的一部分,当马类结束生命,毛发类依旧可以单独生存,为聚合关系。
以上若是存在理解不到位的地方,望指出。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/523634.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

03_SpringCloud整合Ribbon实现负载均衡

采用随机负载均衡策略,四线服务之间的调用 2个用户中心,1个内容中心,内容中心调用用户中心服务 package com.itmuch.contentcenter.service.impl;import com.itmuch.contentcenter.dao.content.ShareMapper; import com.itmuch.contentcent…

容器精华问答 | 我们为什么需要容器?

戳蓝字“CSDN云计算”关注我们哦!容器技术是这两年热门的话题,因为容器技术给我们带来了很多方便的地方,节约了不少成本,不管是在运维还是开发上。今天,就让我们来看看关于容器更加有深度的问题吧。1Q:什么…

C++11继承构造函数在类中的使用

继承构造函数概念衍生问题使用示例注意扩展使用(函数)示例代码输出结果注意概念 继承构造函数在C11特性中随之提及,其大概可以理解为: 解决了派生类无法直接使用基类中的构造函数的这一问题。 正常情况下,基类定义了自…

grep从文件末尾开始找_新人自学前端到什么程度才能找工作?

这个问题打我记事起到现在,问过我的人,没有1000也有800了。足以见得这个问题是多么的不得人心。自学前端开发,不管他在网上百度了多少资料,看了多少教程,你总得先做个网页出来。所以,很多人都是从html标签开…

Spring Tool Suite 4安装Lombok

Lombok官网:https://www.projectlombok.org/download 文章目录一、下载jar包二、lombok.jar复制三、运行lombok.jar四、安装lombok4.1 点击确定4.2 找到SpringToolSuite4.exe五、以管理员运行Spring Tool Suite 4六、引入lombok依赖6.1 maven项目6.2 普通web项目七、…

base昆明,腾讯云在合作伙伴的阵营中@了TA

戳蓝字“CSDN云计算”关注我们哦!技术头条:干货、简洁、多维全面。更多云计算精华知识尽在眼前,get要点、solve难题,统统不在话下!在今年的腾讯“三合一”大会上,阿晶得到了这样一则数据:截至目…

IntelliJ IDEA 2019 安装lombok

文章目录一、安装插件二、添加lombok依赖三、重启IntelliJ IDEA四、效果图五、如果不生效一、安装插件 二、添加lombok依赖 <!--Lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version&g…

记录C++类中的一次函数调用

引用 之前遇到一次函数调用结果的问题&#xff0c;今天在这里做一下记录。 一个基类&#xff0c;一个派生类&#xff0c;两个类中都有一个函数名相同&#xff0c;参数相同&#xff0c;参数不同的函数&#xff0c;创建基类指针指向派生类对象&#xff0c;调用相应的函数&#x…

bootstrap table移动端_bootstrap介绍

简介bootstrap是一款前端开发自适应页面的js库&#xff0c;可以让你在开发网页的时候轻松实现网站的PC与移动端兼容&#xff0c;避免在移动端上面出现样式错位等。原理bootstrap的原理是媒体查询CSS3的media&#xff0c;用于检测屏幕&#xff0c;从而改变样式的百分比。结构boo…

Spring Tool Suite 4 自动提示功能

文章目录一、java文件 自动提示二、JavaScript文件 自动提示三、HTML文件 自动提示四、导出配置文件五、编辑导出的配置文件5.1 java提示规则替换5.2 html提示规则替换六、导入配置好的文件一、java文件 自动提示 打开STS→Windows→Preferences→Java→Editor→Content Assis…

中立安全、赋能产业,UCloud优刻得凭差异化路线进军产业互联

2019年5月28日&#xff0c; 国内领先的中立云计算服务商UCloud优刻得&#xff08;以下简称UCloud&#xff09;在北京召开以“中立安全、赋能产业”为主题的UCloud用户大会暨Think in Cloud北京大会。面对走向纵深的产业互联网&#xff0c;UCloud强调做“不和用户竞争的云”&…

Spring Tool Suite 4 添加反编译插件

文章目录一、进入商店市场二、查找插件&#xff0c;输入jad搜索三、点击安装四、接收协议、安装五、重启Spring Tool Suite 4六、效果图一、进入商店市场 二、查找插件&#xff0c;输入jad搜索 三、点击安装 四、接收协议、安装 五、重启Spring Tool Suite 4 六、效果图

Hadoop精华问答 | NameNode是什么?

戳蓝字“CSDN云计算”关注我们哦&#xff01;2006年项目成立的一开始,“Hadoop”这个单词只代表了两个组件——HDFS和MapReduce。到现在的13个年头,这个单词代表的是“核心”&#xff0c;今天我们就来看看关于Hadoop的精华问答。1Q&#xff1a;NameNode是什么&#xff1f;A&…

01_SpringCoud 整合SpringCoud alibaba Nacos

SpringCoud 核心 整合SpringCoud alibaba Nacos 文章目录一、快速构建一个SpringBoot项目二、添加依赖2.1 SpringMVC2.2 nacos客户端2.3 lombok(可以省略)2.4 actuator监控(图形化)2.5 SpringCloud和spring-cloud-alibaba三、添加注解(无)四、写配置信息五、下载和运行nacos5.1…

C++线程处理函数的返回值

引言 关于线程处理函数&#xff0c;常见的可能是返回值为void类型&#xff0c;那线程处理函数是否能定义自己想要的返回值类型呢&#xff0c;这里请看下面的说明。 C线程返回值 应用环境1、传统的方式获取线程返回值2、使用C Promise和future方式3、promise和future介绍 应…

华为在欧注册HUAWEI ARK OS商标或为海外版操作系统命名;联通电信正探索合并?汽车共享品牌car2go近宣布退出中国……...

关注并标星星CSDN云计算极客头条&#xff1a;速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go 一加 7 Pro &#xff…

ip访问次数统计 nginx_PHP实现IP访问限制及提交次数的方法详解

一、原理提交次数是肯定要往数据库里写次数这个数据的&#xff0c;比如用户登陆&#xff0c;当用户出错时就忘数据库写入出错次数1&#xff0c;并且出错时间&#xff0c;再出错写2&#xff0c;当满比如5次时提示不允许再登陆&#xff0c;请明天再试&#xff0c;然后用DateDiff计…

C++容器deque的用法

目录 1.deque容器概念 2.deque对象的构造 2.1deque对象的默认构造 2.2deque对象的带参数构造 3.deque头部和末尾的添加移除操作 4.deque的数据存取 5.deque与迭代器 6.deque的赋值 7.deque的大小 8.deque的插入 9.deque的删除 1.deque容器概念 deque容器概念 deque是…

AI时代,中国技术创新如何弯道超车?

2019 年 5 月 26 日 - 27 日&#xff0c;杭州国际博览中心&#xff0c;由工信部人才交流中心指导&#xff0c;CSDN 和数字经济人才发展中心主办的 CTA 核心技术及应用峰会圆满落下帷幕。本次大会聚焦机器学习、知识图谱等 AI 领域的热门技术&#xff0c;关注技术在行业中的实践…

JBOSS7启动与关闭

1.启动 进入Jboss的bin目录下 通过以下命令启动jboss ./standalone.sh启动没有问题&#xff0c;但是当你按你ctrl C退出后&#xff0c;jboss服务也关闭了&#xff0c;所以我们要使用后台启动方式&#xff1a; nohup ./standalone.sh&查看Jboss启动进程&#xff1a; tai…