UML类图语法介绍

news2025/4/3 13:32:10

UML类图语法介绍

  • 一 官方定义
    • 基本介绍
    • UML 图分类
    • 建模工具
  • 二 六大关系
    • 2.1 依赖关系
      • 代码体现
      • UML图示
    • 2.2 泛化关系
      • 代码体现
      • UML图示
    • 2.3 实现关系
      • 代码体现
      • UML图示
    • 2.4 关联关系
      • 代码体现
      • UML图示
    • 2.5 聚合关系
      • 代码体现
      • UML图示
    • 2.6 组合关系
      • 代码体现
      • UML图示

一 官方定义

UML - Unified modeling language UML (统一建模语言),是一种用于软件系统分析和设计的语言工具,
用于帮助软件开发人员进行思考和记录思路的结果

基本介绍

UML图:通过不同的图形和符号,来描述软件模型以及各个元素之间的关系
在这里插入图片描述
依赖关系 :一条虚线加箭头的形式
泛化关系:一条实线加三角箭头,箭头要指向父类
实现关系:一条虚线加三角箭头 箭头方向指向接口
关联关系

单向关联: 一条实线加一个箭头
双向关联: 一条实线 (一条实线加两个箭头)

聚合关系: 一条实线加上空心菱形来表示聚合关系
组合关系: 一条实线加上实心菱形来表示组合关系

UML 图分类

  • 用例图(use case)
  • 静态结构图:类图、对象图、包图、组件图、部署图
  • 动态行为图:交互图(时序图与协作图)、状态图、活动图

UML类图:描述类之间的关系

建模工具

  • word,利用word工具可以绘制简单的UML图,但是这是一种非专业的手段,而且绘制起来比较麻烦
  • 利用VISIO工具进行UML图的绘制
  • 利用PowerDesigner工具绘制UML图形,PowerDesigner支持标准数据建模UML
  • IDEA中可以使用PlantUML插件来画类图,也可以下载安装UML Support插件 附录图

二 六大关系

2.1 依赖关系

是一种使用关系,一个类的实现,需要另一个类的协助,逻辑上 use a 表示
只要在类中使用到了对方,是依赖关系,是一种最基本的关系

其他的五种关系,都是依赖关系的特例

代码体现

  • 类中使用到了对方
  • 类的成员属性
  • 方法的接受的参数类型
  • 方法的返回值类型
  • 方法内部使用到了
//案例演示 - 依赖关系的形式
public class PersonServiceBean {
    //类的成员属性
    private PersonDao personDao; 
    //方法的接收参数类型
    public void save(Person person) {  
    }
    //方法的返回值类型
    public IDCard getIDCard() {  
        return new IDCard();
    }
    //方法内部使用到
    public void modify() {
        //违反了迪米特法则 可以这样写,
        Department department = new Department(); 
    }
    
}

class PersonDao {
}

class IDCard {
}

class Person {
}

class Department {
}

UML图示

UML符号:一条虚线加箭头的形式在这里插入图片描述

2.2 泛化关系

泛化关系指的就是继承关系 (语法)

代码体现

class PersonBean{

    public void save(){
        //TODO...
    }

    public void delete(){
        //TODO...
    }
}

public class PersonServiceBean extends PersonBean{


}

UML图示

UML符号:一条实线加三角箭头,箭头要指向父类
在这里插入图片描述

2.3 实现关系

实现关系实际上 A类实现了B接口,A,B存在实现关系 (语法层面)

代码体现

//案例演示 - 实现关系

interface PersonService{
    void delete();
}

public class PersonServiceBean implements PersonService{
    
    @Override
    public void delete() {
        System.out.println("true = " + true);
    }
}

UML图示

UML符号:一条虚线加三角箭头 箭头方向指向接口
在这里插入图片描述

2.4 关联关系

关联关系体现的是业务逻辑上的关系
关联关系具有导航性:单向关联,双向关联 (代码层面上)
关联关系还具有多重性:一对一,一对多,多对多 (业务逻辑上)

代码体现

//单向一对一 
class Person{
   public IDCard idCard; 
}
class IDCard{
   //并没有使用到Person类 
}

//双向一对一 
class Person{
   public IDCard idCard; 
}
class IDCard{
   public Person person; 
}

UML图示

UML符号
单向关联 一条实线加一个箭头
双向关联 一条实线 (一条实线加两个箭头)
在这里插入图片描述

2.5 聚合关系

聚合关系,是关联关系的一个特例
具有导航性
具有多重性

聚合关系描述的是业务逻辑上整体和部分的关系
整体和部分如果可以分开就构成聚合关系,分不开就是组合关系

代码体现

//案例演示    - 聚合关系
public class Computer {
   public Monitor monitor;
   public Mouse mouse;
}
class Monitor{ 
}
class Mouse{ 
}

UML图示

UML符号:一条实线加上空心菱形来表示聚合关系在这里插入图片描述

2.6 组合关系

聚合关系描述的是业务逻辑上整体和部分的关系
整体和部分如果可以分开就构成聚合关系,分不开就是组合关系

代码体现

业务逻辑上人和身份证是可以分开单独存在的,但是人和头是不可以分开的。

//案例演示 - 组合关系
class Person{
    public IDCard idCard; //聚合关系
    public Head head = new Head(); //组合关系
}

class IDCard{
}
class Head{
}

UML图示

UML符号:一条实线加上实心菱形来表示组合关系
在这里插入图片描述

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

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

相关文章

设置开机自动启动jupyter notebook及远程访问的方式

jupyter notebook远程访问设置 1.安装 conda activate abc #激活虚拟环境[不在虚拟环境中可以省略此步骤] pip install jupyter #安装 jupyter notebook --generate-config #生成配置文件备注:配置文件的所在路径一般为 ~/.jupyter/jupyter_notebook_config.py 注…

四、ArrayList底层源码详解

文章目录特点底层源码分析创建无参构造器有参构造器传入集合的有参构造器扩容注意new ArrayList(0)菜鸟教程ArrayList讲解特点 可以加入控制null(可加入多个)底层是数组实现的ArrayList基本等同于Vector,除了ArrayList是线程不安全(执行效率高)看源码(没有synchron…

“消费盲返”就像一盒巧克力,你永远不知道下一颗是什么味道

如今电商平台竞争越来越激烈,传统电商直播短视频带货拼团带货内卷严重,我就经常刷抖音某多多看见各种优惠,感觉以前在实体店上面买东西都是冤大头,但是随之而来的是商家引流成本越来越高。 这些年来,互联网迅猛发展&am…

Allegro如何批量添加丝印文字操作指导

Allegro如何批量添加丝印文字操作指导 当需要在PCB上需要大量添加丝印文字的时候,是个较大的工作量,Allegro支持批量添加丝印文字到PCB上,如下图 具体操作如下 新建一个文本文档在文本文档中添加好需要的文字

红黑树详解

1.概念 红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,因而是接近…

漏洞丨cve2010-3333

作者:黑蛋 一、漏洞简介 cve-2010-3333是一个Office 2003 的栈溢出漏洞,其原因是在文档中读取一个属性值的时候,没有对其长度验证,导致了一个溢出,看着很简单的一个漏洞,却又有点恶心人。 二、漏洞环境 …

Python学习基础笔记五十五——接口类和抽象类

# 设计模式: 《设计模式》 接口类:Python原生不支持; 抽象类:Python原生支持的。 例: from abc import abstractmethod, ABCMetaclass Payment(metaclassABCMeta): # 元类 默认的元类是 type 规范类abstract…

MyBatis学习 | 全局配置文件

文章目录一、简介二、各个标签2.1 properties(属性)2.2 settings(设置)2.3 typeAliases(类型命名)2.4 typeHandlers(类型处理器)2.5 plugins(插件)2.6 enviro…

电容这段走线影响这么大?

公众号:高速先生 作者:李远恒 一日,来了一个电源仿真项目,雷工像往常一样熟练的打开了PCB文件,先是例行查板。不查不要紧,一查还真有问题,话不多说直接上图: 定睛一看,这…

星火计划学习笔记——参考线平滑算法解析及实现(以U型弯道场景仿真调试为例)

文章目录1. Apollo参考线介绍1.1 参考线的作用1.2 导航规划的路线1.3 为什么需要重新生成参考线1.4 ReferenceLine数据结构1.5 ReferencePoint数据结构1.6 参考线处理流程1.7 参考线生成2. 参考线平滑算法2.1 参考线平滑算法总览2.2 参考线平滑算法流程2.2.1 设置中间点anchor …

康希通信冲刺科创板上市:上半年收入2亿元,计划募资约8亿元

12月21日,格兰康希通信科技(上海)股份有限公司(下称“康希通信”)在上海证券交易所递交招股书,准备在科创板上市。本次冲刺科创板上市,康希通信计划募资7.82亿元。 据贝多财经了解,康…

Word处理控件Aspose.Words功能演示:在 Java 中将 DOC 或 DOCX 转换为 PNG

aspose.words是一种高级Word文档处理API,用于执行各种文档管理和操作任务。API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word。此外, Aspose API支持流行文件格式处…

【C++入门基础(上)】

Cross the stars over the moon to meet your better-self. 目录 1 命名空间 1.1 命名空间定义 1.2 命名空间使用 1.2.1 加命名空间名称及作用域限定符 1.2.2 使用using将命名空间中成员引入 1.2.3 使用using namespace 命名空间名称引入 2 C输入&&输出 3 缺省参数…

Mentor-dft 学习笔记 day47-On-Chip Clock Controller Design Description

On-Chip Clock Controller Design Description有三种类型的片上控制器设计:standard, parent, and child。可以根据设计要求选择它们。使用OCC时,必须考虑本节中讨论的设计元素。The Standard OCC 标准OCC为快速捕获提供快速时钟,为换档和慢速…

Java字节流的使用:字节输入/输出流、文件输入/输出流、字节数组输入/输出流

InputStream 是 Java 所有字节输入流类的父类,OutputStream 是 Java 所有字节输出流类的父类,它们都是一个抽象类,因此继承它们的子类要重新定义父类中的抽象方法。 这里首先介绍上述两个父类提供的常用方法,然后介绍如何使用它们…

springboot整合shiro + jwt + redis实现权限认证(上手即用)

目录前言项目结构依赖导入建数据库表建表语句使用插件生成增删改查添加MyRealm添加ShiroConfig添加JwtFilterJWT相关得类JwtTokenJwtAudienceJwtHelper添加BeanFactory只贴出主要得类,具体得可以看我的gitee,接口都自测过的。前言 最近项目中涉及到使用…

NEST.JS使用心得

最近部门分享了nest.js技术,旨在前端人员通过项目积累将可重复使用的数据或者自己需要的数据通过nest设计出接口方便快速开发,不需要等待后端开发人员的数据。学习了两天发现nest很有意思,所以来分享下最近两天的学习心得。 nest中文文档&am…

linux下使用命令TC进行网络限流 —— 筑梦之路

Linux 下的流量控制原理 通过对包的排队,我们可以控制数据包的发送方式。这种控制,称之为数据整形,shape the data,包括对数据的以下操作: 增加延时 丢包 重新排列 重复、损坏 速率控制 在 qdisc-class-filter 结构下&#x…

ADI Blackfin DSP处理器-BF533的开发详解64:电子相册的设计(含源码)

硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 代码实现功能 代码实现了将 SD 卡根目录下的所有文件进行文件列表,然后将 480*272 尺寸的 JPEG 文件进行 JPEG 解码,将解…

校园跳蚤市场平台/校园二手交易系统

摘 要 本文论述了校园跳蚤市场平台的设计和实现,该网站从实际运用的角度出发,运用了计算机网站设计、数据库等相关知识,网络和Mysql数据库设计来实现的,网站主要包括学生注册、学生登录、浏览商品、搜索商品、查看商品并进行购买…