UML常见类图关系看这一篇就够了,浅显易懂

2024-04-29 17:32

本文主要是介绍UML常见类图关系看这一篇就够了,浅显易懂,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 1、UML类图关系
    • 1.1、泛化
    • 1.2、实现
    • 1.3、关联
    • 1.4、聚合
    • 1.5、组合
    • 1.6、依赖
  • 2、UML类图总结
  • 3、UML类图绘制工具
    • 3.1、[ProcessOn](https://www.processon.com/)
    • 3.2、[StarUML](http://staruml.io/)

1、UML类图关系

1.1、泛化

【泛化】表示是一般与特殊的关系,是is a 的关系,表示的是一种继承关系。
【比如】狗和动物,狗属于动物,狗和动物是一种继承关系,是泛化关系
【代码】java中 A extends B,A和B就是泛化关系
【UML画法示例】(带三角箭头的实线,箭头指向父类)
这里写图片描述

1.2、实现

【实现】是一种类与接口的关系,表示类是接口特征和行为的实现
【比如】通常我们编写代码的时候都会先写一个接口,然后实现类去实现接口。实现类和接口之间是一种实现关系。
【代码】java中 A implement B ,A和B是泛化关系
【UML画法示例】(带三角箭头的虚线,箭头指向接口)
这里写图片描述

1.3、关联

【关联】它描述了不同类的对象之间的结构关系,使一个类知道另一个类的属性和行为。关联关系有单向关联、双向关联、自关联。
【比如】老师和学生,老师知道班里的学生信息,学生不知道老师信息,老师和学生是一种单向关联关系;老师知道学生信息,学生也知道老师的信息,老师和学生是双向关联关系;老师知道同行老师的信息,老师和老师是自关联关系。
【代码】成员变量;类A持有类B的引用作为成员变量,类A和B就是关联关系,箭头指向B
【UML画法示例】
这里写图片描述

1.4、聚合

【聚合】聚合是一种特殊的关联关系,是一个整体和部分的关系,部分可以离开整体而单独存在。聚合是一种语义关系,需要分析逻辑关系。
【比如】一个部门和人员的关系,部门不存在了,人员照样可以单独存在。部门和人员在语义上就是聚合关系
【代码】成员变量;比如部门类(Department)持有人员类(Person)作为成员变量,部门类和人员类是聚合关系
【UML画法示例】(空心菱形指向整体)
这里写图片描述

1.5、组合

【组合】组合是一种特殊的关联关系,是一个整体和部分的关系,但是部分不能离开整体单独存在。组合和聚合一样,也是一种语义关系,需要分析逻辑关系
【比如】公司和部门的关系,公司都不存在了,部门自然也不存在了。所以公司和部门就是一个组合关系
【代码】成员变量;公司类(Company)持有部门类(Department)作为成员变量,公司类和部门类是组合关系
【UML画法示例】(实心菱形指向整体)
这里写图片描述

1.6、依赖

【依赖】一个类A使用到了另一个类B,而这种使用关系是具有偶然性、临时性、非常弱的,但是B类的变化会影响到A,是一种使用关系
【代码】局部变量、方法的参数
【UML画法示例】(一条虚线,箭头执行被依赖的类)
这里写图片描述

2、UML类图总结

  • 聚合和组合是特殊的关联关系
  • 关系强弱顺序:泛化=实现>组合>聚合>关联>依赖

3、UML类图绘制工具

3.1、ProcessOn

非常强大的在线工具,可以画流程图、UML、原型图等,完全免费。
这里写图片描述

3.2、StarUML

UML绘制的客户端软件,Mac、Windows、Linux都有,可一直免费试用。
这里写图片描述

这篇关于UML常见类图关系看这一篇就够了,浅显易懂的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/946706

相关文章

嵌入式软件常见的笔试题(c)

找工作的事情告一段落,现在把一些公司常见的笔试题型整理一下,本人主要是找嵌入式软件方面的工作,笔试的也主要是C语言、数据结构,大体上都比较基础,但是得早作准备,才会占得先机。   1:整型数求反 2:字符串求反,字符串加密,越界问题 3:字符串逆序,两端对调;字符串逆序,指针法 4:递归求n! 5:不用库函数,比较两个字符串的大小 6:求0-3000中含有9和2的全部数之和 7

vscode-创建vue3项目-修改暗黑主题-常见错误-element插件标签-用法涉及问题

文章目录 1.vscode创建运行编译vue3项目2.添加项目资源3.添加element-plus元素4.修改为暗黑主题4.1.在main.js主文件中引入暗黑样式4.2.添加自定义样式文件4.3.html页面html标签添加样式 5.常见错误5.1.未使用变量5.2.关闭typescript检查5.3.调试器支持5.4.允许未到达代码和未定义代码 6.element常用标签6.1.下拉列表

在 Java 中,JDK、JRE、JVM 分别代表什么,有何关系和区别?

在Java开发的世界中,我们会经常听到JDK、JRE和JVM这三个词。它们都与Java的运行环境以及Java程序的编译和运行有关,它们之间也存在一些关联性和区别。 什么是JDK、JRE和JVM 我们来看它们分别是什么。 JDK,全称Java Development Kit,即Java开发工具包。顾名思义,JDK是用于Java开发的一套工具包,里面包含了Java的编译器javac、

1_CString char* string之间的关系

CString转char*,string string转char*,CString char* 转CString,string 一、CString转char*,string //字串转换测试 CString CString1; std::string string1; CHAR* char1=NULL; //1string1=CString1.GetBuffer();CStri

Linux - 探秘 Linux 的 /proc/sys/vm 常见核心配置

文章目录 PreLinux 的 /proc/sys/vm 简述什么是 /proc/sys/vm?主要的配置文件及其用途参数调整对系统的影响dirty_background_ratio 和 dirty_ratioswappinessovercommit_memory 和 overcommit_ratiomin_free_kbytes 实例与使用建议调整 swappiness设置 min_fr

[最全]设计模式实战(一)UML六大原则

UML类图 UML类图是学习设计模式的基础,学习设计模式,主要关注六种关系。即:继承、实现、组合、聚合、依赖和关联。 UML类图基本用法 继承关系用空心三角形+实线来表示。实现接口用空心三角形+虚线来表示。eg:大雁是最能飞的,它实现了飞翔接口。 关联关系用实线箭头来表示。当一个类"知道"另一个类时,可以用关联。eg:企鹅需要"知道"气候的变化,需要"了解"气候规律。 聚合关

C语言常见面试题3 之 基础知识

(1)i++和++i哪个效率更高? 对于内建数据类型,二者效率差别不大(去除编译器优化的影响) 对于自定义数据类型(主要是类),因为前缀式(++i)可以返回对象的引用;而后缀式(i++)必须返回对象的值,所以导致在大对象时产生了较大的复制开销,引起效率降低。 (2)不使用任何中间变量如何交换a b的值? void swap(int& a, int& b)//采用引用传参的方式{a^=

常见兼容性问题集合

* png24位的图片在iE6浏览器上出现背景,解决方案是做成PNG8.也可以引用一段脚本处理.* 浏览器默认的margin和padding不同。解决方案是加一个全局的*{margin:0;padding:0;}来统一。* IE6双边距bug:块属性标签float后,又有横行的margin情况下,在ie6显示margin比设置的大。 * 浮动ie产生的双倍距离(IE6双边距问题:在IE6下,如果对

Android中常见的内存泄露

内存泄漏是指无用对象(不再使用的对象)持续占有内存或无用对象的内存得不到及时释放,从而造成内存空间的浪费称为内存泄漏。内存泄露有时不严重且不易察觉,这样开发者就不知道存在内存泄露,但有时也会很严重,会提示你Out of memory。 Android中常见的内存泄露如下: 1.集合类泄漏 集合类如果仅仅有添加元素的方法,而没有相应的删除机制,导致内存被占用。如果这个集合类是全局性的变量 (比

一篇文章带你快速入门java

文章目录 一、一个简单的java代码1.1 Java程序的结构由三个不成组成:1.2 运行java程序1.3 JDK,JRE,JVM之间的关系?(面试题)1.4 标识符1.5 注释1.6 关键字 一、一个简单的java代码 public class HelloJava {public static void main(String[] args) {System.out.