知识点滴 - UML类关系图及描画工具drawio

2023-10-20 04:20

本文主要是介绍知识点滴 - UML类关系图及描画工具drawio,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

UML Class Diagram Relationships / UML类图中的各种关系

这篇文章解释了如何正确确定和实现适用于面向对象建模的不同类图关系。

This article explains how to correctly determine and implement the different class diagram relationships that are applicable in object-oriented modeling.

        Relationships in UML class diagrams / UML类图中的各种关系 

什么是类图?

类图是面向对象建模的主要构建模块。它们被用来显示系统中的不同对象、它们的属性、它们的操作以及它们之间的关系。

下图是一个简单类的例子。

带有属性和操作的简单类图 / Simple class diagram with attributes and operations

在这个例子中,描述了一个名为 "贷款账户 "的类。类图中的类用一个矩形表示,分成三部分:

- 最上面的部分包含了类的名称。

- 中间部分包含该类的属性。

- 底部的分区显示了与该类相关的可能操作。

这个例子显示了一个类是如何以一种非常系统和清晰的方式来封装某个特定对象的所有相关数据的。类图是一个类似于上面的类的集合。

类图中的关系

类是以特定的方式相互关联的。特别是,类图中的关系包括不同类型的逻辑连接。以下是UML中规定的逻辑关联类型:

* Association

* Directed Association

* Reflexive Association

* Multiplicity

* Aggregation

* Composition

* Inheritance/Generalization

* Realization

Association 关联

这是一个广义的术语,包括了类之间的任何逻辑联系或关系(logical connection or relationship)。例如,乘客和飞机可以像上面那样联系起来。

表示有关系的两个类,并且关系是双向的。

Directed Association 直接关联

这个指的是用带箭头的线表示的方向关系。箭头描绘了一个包含和被包含(container-contained)的有方向性的关系。

和普通的关联不同,这里体现了关系的方向性。根据一架飞机,可以找到里面的乘客,飞机负责运送乘客,飞机是主动的一方,而反过来乘客就比较被动,不会对飞机造成什么影响。

Reflexive Association 反身关系

当一个类可能有多种职能或责任时,就会出现这种情况。例如,一个在机场工作的工作人员可能是飞行员、航空工程师、售票员、保安或维修人员。如果维修人员是由航空工程师管理的,那么在同一类别的两个实例中就可能存在管理的关系。

Multiplicity 集群关系

这是在描述一个类作为一个集合与另一个类作为集合元素的主动型的逻辑关联。例如,一个机群可能包括多架飞机,而一架商业飞机可能包含零到许多乘客。图中的符号0...*意味着 "零到多个"。

Aggregation 聚合  (has a 关系)

是指一个特定类的形成是由另一个类聚集而成或看成另一个类的集合。例如,"图书馆 "这个类是由一本或多本书籍以及其他部分组成的。在聚合中,所包含的类并不强烈依赖于容器的生命周期。在同一个例子中,即使图书馆解散了,书籍也会一直存在。为了在图中显示聚合关系,在父类附近画一条从父类到子类的线,并在父类附近画一个菱形。

Composition 组合

组合关系与聚合关系非常相似。唯一的区别是它的关键目的是强调所包含的类对容器类的生命周期的依赖性。也就是说,当容器类被破坏时,包含的类将被抹去。例如,一个双肩包的侧袋在双肩包被破坏后也将不复存在。

为了在UML图中显示组合关系,使用一条连接两个类的方向线,在容器类旁边有一个填充的菱形,方向箭头指向包含的类。

Inheritance / Generalization 继承和泛化 (is a 关系)

指的是一种关系,其中一个相关的类改写了父类的相同功能。换句话说,子类是父类的一个特定类型。为了在UML图中显示继承性,用一个未填充的箭头画出一条从子类到父类的实线。

Realization 实现



表示一个类中定义的功能由另一个类来实现。为了在UML中显示这种关系,从定义功能的类到实现功能的类,要画一条带有未填实心箭头的断线。在这个例子中,打印机类实现了一个Printer Setup接口,这个接口是用来进行打印机设置用的。

------------------------------------------------ 

可以使用Draw.io来描画UML图。Draw.io和diagrams.net是同一个,后者是新名字。

使用Draw.io可以使用网页版,也可以下载安装到本地。

使用截图如下:

参考:

Class Diagram Relationships in UML Explained with Examples

这篇关于知识点滴 - UML类关系图及描画工具drawio的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

SQLite3命令行工具最佳实践指南

《SQLite3命令行工具最佳实践指南》SQLite3是轻量级嵌入式数据库,无需服务器支持,具备ACID事务与跨平台特性,适用于小型项目和学习,sqlite3.exe作为命令行工具,支持SQL执行、数... 目录1. SQLite3简介和特点2. sqlite3.exe使用概述2.1 sqlite3.exe

基于Python实现一个Windows Tree命令工具

《基于Python实现一个WindowsTree命令工具》今天想要在Windows平台的CMD命令终端窗口中使用像Linux下的tree命令,打印一下目录结构层级树,然而还真有tree命令,但是发现... 目录引言实现代码使用说明可用选项示例用法功能特点添加到环境变量方法一:创建批处理文件并添加到PATH1

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

CnPlugin是PL/SQL Developer工具插件使用教程

《CnPlugin是PL/SQLDeveloper工具插件使用教程》:本文主要介绍CnPlugin是PL/SQLDeveloper工具插件使用教程,具有很好的参考价值,希望对大家有所帮助,如有错... 目录PL/SQL Developer工具插件使用安装拷贝文件配置总结PL/SQL Developer工具插

Python使用FFmpeg实现高效音频格式转换工具

《Python使用FFmpeg实现高效音频格式转换工具》在数字音频处理领域,音频格式转换是一项基础但至关重要的功能,本文主要为大家介绍了Python如何使用FFmpeg实现强大功能的图形化音频转换工具... 目录概述功能详解软件效果展示主界面布局转换过程截图完成提示开发步骤详解1. 环境准备2. 项目功能结

Linux系统之stress-ng测压工具的使用

《Linux系统之stress-ng测压工具的使用》:本文主要介绍Linux系统之stress-ng测压工具的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、理论1.stress工具简介与安装2.语法及参数3.具体安装二、实验1.运行8 cpu, 4 fo

Maven项目中集成数据库文档生成工具的操作步骤

《Maven项目中集成数据库文档生成工具的操作步骤》在Maven项目中,可以通过集成数据库文档生成工具来自动生成数据库文档,本文为大家整理了使用screw-maven-plugin(推荐)的完... 目录1. 添加插件配置到 pom.XML2. 配置数据库信息3. 执行生成命令4. 高级配置选项5. 注意事

Python使用pynput模拟实现键盘自动输入工具

《Python使用pynput模拟实现键盘自动输入工具》在日常办公和软件开发中,我们经常需要处理大量重复的文本输入工作,所以本文就来和大家介绍一款使用Python的PyQt5库结合pynput键盘控制... 目录概述:当自动化遇上可视化功能全景图核心功能矩阵技术栈深度效果展示使用教程四步操作指南核心代码解析

如何基于Python开发一个微信自动化工具

《如何基于Python开发一个微信自动化工具》在当今数字化办公场景中,自动化工具已成为提升工作效率的利器,本文将深入剖析一个基于Python的微信自动化工具开发全过程,有需要的小伙伴可以了解下... 目录概述功能全景1. 核心功能模块2. 特色功能效果展示1. 主界面概览2. 定时任务配置3. 操作日志演示