知识点滴 - 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

相关文章

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Springboot项目构建时各种依赖详细介绍与依赖关系说明详解

《Springboot项目构建时各种依赖详细介绍与依赖关系说明详解》SpringBoot通过spring-boot-dependencies统一依赖版本管理,spring-boot-starter-w... 目录一、spring-boot-dependencies1.简介2. 内容概览3.核心内容结构4.

MySQL慢查询工具的使用小结

《MySQL慢查询工具的使用小结》使用MySQL的慢查询工具可以帮助开发者识别和优化性能不佳的SQL查询,本文就来介绍一下MySQL的慢查询工具,具有一定的参考价值,感兴趣的可以了解一下... 目录一、启用慢查询日志1.1 编辑mysql配置文件1.2 重启MySQL服务二、配置动态参数(可选)三、分析慢查

Java中数组与栈和堆之间的关系说明

《Java中数组与栈和堆之间的关系说明》文章讲解了Java数组的初始化方式、内存存储机制、引用传递特性及遍历、排序、拷贝技巧,强调引用数据类型方法调用时形参可能修改实参,但需注意引用指向单一对象的特性... 目录Java中数组与栈和堆的关系遍历数组接下来是一些编程小技巧总结Java中数组与栈和堆的关系关于

基于Python实现进阶版PDF合并/拆分工具

《基于Python实现进阶版PDF合并/拆分工具》在数字化时代,PDF文件已成为日常工作和学习中不可或缺的一部分,本文将详细介绍一款简单易用的PDF工具,帮助用户轻松完成PDF文件的合并与拆分操作... 目录工具概述环境准备界面说明合并PDF文件拆分PDF文件高级技巧常见问题完整源代码总结在数字化时代,PD

Python按照24个实用大方向精选的上千种工具库汇总整理

《Python按照24个实用大方向精选的上千种工具库汇总整理》本文整理了Python生态中近千个库,涵盖数据处理、图像处理、网络开发、Web框架、人工智能、科学计算、GUI工具、测试框架、环境管理等多... 目录1、数据处理文本处理特殊文本处理html/XML 解析文件处理配置文件处理文档相关日志管理日期和

使用Python开发一个Ditto剪贴板数据导出工具

《使用Python开发一个Ditto剪贴板数据导出工具》在日常工作中,我们经常需要处理大量的剪贴板数据,下面将介绍如何使用Python的wxPython库开发一个图形化工具,实现从Ditto数据库中读... 目录前言运行结果项目需求分析技术选型核心功能实现1. Ditto数据库结构分析2. 数据库自动定位3

基于Python实现简易视频剪辑工具

《基于Python实现简易视频剪辑工具》这篇文章主要为大家详细介绍了如何用Python打造一个功能完备的简易视频剪辑工具,包括视频文件导入与格式转换,基础剪辑操作,音频处理等功能,感兴趣的小伙伴可以了... 目录一、技术选型与环境搭建二、核心功能模块实现1. 视频基础操作2. 音频处理3. 特效与转场三、高

基于Python开发一个图像水印批量添加工具

《基于Python开发一个图像水印批量添加工具》在当今数字化内容爆炸式增长的时代,图像版权保护已成为创作者和企业的核心需求,本方案将详细介绍一个基于PythonPIL库的工业级图像水印解决方案,有需要... 目录一、系统架构设计1.1 整体处理流程1.2 类结构设计(扩展版本)二、核心算法深入解析2.1 自