当前位置: 首页 > news >正文

【UML】统一建模语言 UML 基础

【UML】统一建模语言UML 基础

文章目录

    • 一、概述
      • 1.1 - 什么是建模
      • 1.2 建模的原则
      • 1.3 软件建模的实现过程
    • 二、 UML
      • 2.1 UML中10种图
    • 三、用例图
      • 3.1 用例之间的关系 —— 泛化关系
      • 3.2 用例之间的关系 —— 包含关系
      • 3.3 用例之间的关系 —— 扩展关系
    • 四、类图
      • 4.1 类的表示方法
      • 4.2 类之间的关系 —— 泛化关系
      • 4.3 类之间的关系 —— 实现关系
      • 4.4 类之间的关系 —— 依赖关系
      • 4.5 类之间的关系 —— 关联关系
      • 4.6 关联关系的名称
      • 4.7 关联关系的角色
      • 4.8 关联关系的多重性
      • 4.9 类之间的关系 —— 关联 - 聚合
      • 4.10 类之间的关系 —— 关联 - 组合

一、概述

1.1 - 什么是建模

统一建模语言

开发之前 规划 骨架规划好,然后

什么是建模,

软件设计:把软件开发想清楚的过程
软件工程:对软件开发全过程进行建模和管理

互联网开发模式,敏捷开发。
比如12个功能,只做一个核心功能,投放市场看用户反馈,早早与用户需求完全靠拢,极限编程。

模型:对问题的书面上的无歧义文字或图形的描述。简而言之,模型是对现实的简化。通过模型,人们可以了解所研究事物的本质。

模型是对现实实际问题的简化,比如地图。

1.2 建模的原则

1)选择建立什么样的模型对如何发现和解决问题具有重要的影响。正确的模型有助于提高开发者的洞察力。

盖狗窝 和 盖高楼不一样,盖高楼需要考虑避雷,电梯规划等等的。

2)每个模型可以有多种表达方式。使用者的身份和使用的原因是评判模型好坏的关键
3)最好的模型总是能够切合实际。模型是现实的简化,必须保证简化过程不会掩盖任何重要的细节

1.3 软件建模的实现过程

软件建模的作用是把来源于现实世界的问题转化为计算机可以理解和实现的问题。

现实世界 —映射—> 计算机世界

软件建模的实现过程是从需求入手,用墨香表达分析设计过程,最终将模型映射程软件实现。

需求 --> 模型 --> 编码

二、 UML

  1. UML(United Modeling Language, 统一建模语言): 是一种基于面向对象可视化建模语言。
  2. UML采用了一组形象化的图形(如类图)符号作为建模语言,使用这些符号可以形象地描述系统地各个方面
  3. UML通过建立图形之间的各种关系(如类与类之间的关系)来描述模型。

2.1 UML中10种图

  • 类图
  • 对象图
  • 包图
  • 组件图
  • 部署图
  • 用例图
  • 时序图
  • 协作图
  • 状态图
  • 活动图

三、用例图

1 - 用例图(Use Case Diagram): 也称为用户模型图,是从软件需求分析到最终实现的第一步,它是从客户的角度来描述系统功能。
2 - 用例图包含 3 个基本组件:
参与者(Actor): 与系统打交道的人或其他系统即使用系统的人或事物。在 UML 种参与者用人形图标表示
用例(Use Case): 代表系统的某项完整功能。在 UML 种使用一个椭圆来表示
关系: 定义用例之间的关系 —— 泛化关系、扩展关系、包含关系
在这里插入图片描述

3.1 用例之间的关系 —— 泛化关系

泛化关系:表示同一业务的目的(父用例)的不同技术实现(各个子用例)。在UML中,用例泛化用一个三角箭头从子用例指向父用例。以下是某购物网站为用户提供不同的支付方式

在这里插入图片描述

3.2 用例之间的关系 —— 包含关系

一个用例可以包含其他用例具有的行为,并把它包含的用例行为作为自身行为的一部分。在 UML 中包含关系用虚线箭头加 "<<include>>",箭头执行被包含的用例。

在这里插入图片描述

3.3 用例之间的关系 —— 扩展关系

如果在完成某个功能的时候偶尔会执行另外一个功能,则用扩展关系表示,在UML中扩展关系用虚线箭头加<<extend>>, 箭头指向被扩展的用例。
在这里插入图片描述

四、类图

类图是面向对象系统建模中最常用的图,是定义其他图的基础。
类图主要是用来显示系统中的类,接口以及它们之间的关系。
类图包含的主要元素有类、接口和关系。其中关系有泛化关系、关联关系、依赖关系和实现关系。在类途中也可以包含注释和约束

4.1 类的表示方法

  1. 类是类图的主要组件,由三部分组成:类名、属性和方法。在UML中,类用矩形来表示,顶端部分存放类的名称,中间部分存放类的属性,属性的类型及值,底部部分存放类的方法,方法的参数和返回。
  2. 在UML中可以根据实际情况由选择的隐藏属性部分或方法部分或者两者都隐藏。
  3. 在UML中,公有类型由 + 表示,私有类型用 - 表示,保护类型用 # 表示,UML的工具开发上可以使用自己定义的符号表示不同的可见性

4.2 类之间的关系 —— 泛化关系

  1. 在UML中,泛化关系用来表示类与类,接口与接口之间的继承关系,泛化关系有时也称为“is a kind of” 关系
  2. 在UML中泛化关系用一条实线空心箭头由子类指向父类
    在这里插入图片描述

4.3 类之间的关系 —— 实现关系

在UML中,实现关系用来表示类与接口之间,实现关系用一条虚线空心箭头由子类指向父类。

4.4 类之间的关系 —— 依赖关系

对于两个相对独立的系统,当一个系统负责构造另一个系统的实例,或者依赖另一个系统的服务时,这两个系统之间体现为依赖关系。例如生产零件的机器和零件,机器负责构造零件对象,充电电池和充电器,充电电池通过充电器来充电。自行车Bicycle和打气筒Pump,自行车通过打气筒来充气
在这里插入图片描述

class Bicycle
{
public:void run();
};
// 如果说 Person类 有一个成员方法,将Bicycle当作一个形参来传递,并且Person没有 Bicycle成员
// 就说Person类依赖于 Bicycle
class Person
{
public:void goToWork(Bicycle* bcl){bcl->run();}
};

4.5 类之间的关系 —— 关联关系

对于两个相对独立的系统,当一个系统的实例与另一个系统的一些特定实例存在固定的对应关系时,这两个系统之间为关联关系。例如客户和订单,每个订单对应特定的客户,每一个客户对应一些特定的订单;公司和员工,每一个公司对应一些特定的员工,每个员工对应一特定的公司;自行车和主人,每辆自行车属于特定的主人,每个主任有特定的自行车。而充电电池和充电器之间就不存在固定的对应关系,同样自行车和打气筒之间也不存在固定的对应关系。
在这里插入图片描述

// 如果说 Person2 类 有一个成员方法,用到了另外一个 Bicycle类,并且还拥有Bicycle的成员
// 就说Person2 关联 Bicycle
class Person2
{
public:void goToWork(){bicycle->run();}
private:Bicycle bicycle;
};

关联关系比依赖关系更紧密一些

4.6 关联关系的名称

关联关系可以有一个名称,用于描述该关系的性质。此关联名称应该是动词短语,因为它表明源对象正在目标对象上执行动作。

在这里插入图片描述

4.7 关联关系的角色

当一个类处于关联的某一端时,该类就在这个关系中扮演一个特定的角色。具体来说,角色就是关联关系中一个类对另一个类所表现的职责。角色名称是名词或名词短语。
在这里插入图片描述

4.8 关联关系的多重性

指有多少对象可以参与该关联,多重性可以用来表达一个取值范围,特定值,无限定的范围

在这里插入图片描述
一个人拥有 1-n台自行车 一个自行车只能被1个人拥有

4.9 类之间的关系 —— 关联 - 聚合

  1. 聚合关系是关联关系的一种,是更强的关联关系。
  2. 聚合和整体和部分之间的关系,例如汽车由引擎、轮胎以及其他零件组成。
  3. 聚合关系也是通过成员变量来实现的。但是关联关系所设计的两个类处在同一个层次上,而聚合关系,两个类处于不同的层次上,一个代表整体,一个代表部分。 在这里插入图片描述

4.10 类之间的关系 —— 关联 - 组合

  1. UML类图关系中组合关系是关联关系的一种,是比聚合还要强的关系。
  2. 代表整体对象负责代表部分对象的生命周期

在这里插入图片描述

相关文章:

【UML】统一建模语言 UML 基础

【UML】统一建模语言UML 基础 文章目录 一、概述1.1 - 什么是建模1.2 建模的原则1.3 软件建模的实现过程 二、 UML2.1 UML中10种图 三、用例图3.1 用例之间的关系 —— 泛化关系3.2 用例之间的关系 —— 包含关系3.3 用例之间的关系 —— 扩展关系 四、类图4.1 类的表示方法4.2…...

AWS S3深度解析:十大核心应用场景与高可用架构设计实践

摘要&#xff1a;作为全球领先的对象存储服务&#xff0c;Amazon S3凭借其高扩展性、持久性和安全性&#xff0c;已成为企业云原生架构的核心组件。本文将深入探讨S3的典型技术场景&#xff0c;并揭秘其背后的架构设计逻辑。 一、AWS S3核心技术特性解析 Amazon Simple Storag…...

如何用Python 3自动打开exe程序

诸神缄默不语-个人CSDN博文目录 本文所说的exe程序特指那种双击直接就能打开的Windows软件。本文中给出的具体例子是C:\Users\user_name\AppData\Local\Postman\Postman.exe&#xff0c;这串字符串在示例代码中都用exe_path代替了&#xff0c;方便你用的时候直接换成自己的软件…...

计算机网络之路由协议(自治系统)

一、自治系统&#xff08;AS&#xff09; 自治系统是由同一个技术管理机构管理、使用统一选路策略的一些路由器的集合。它是网络的基本构成单位&#xff0c;每个自治系统是一个独立运营并自主决定与谁交换流量的实体。自治系统内部运行内部网关协议&#xff08;IGP&#xff09…...

MFC笔记:本专栏课件

专栏导航 上一篇&#xff1a;在VS2019里面&#xff0c;调整代码字体大小 回到目录 下一篇&#xff1a;无 本节前言 在之前的讲解里面&#xff0c;我讲解了 Visual Studio 软件的一些个基础操作步骤。从本节开始&#xff0c;我们进入预备章。 本节内容&#xff0c;属于是 …...

springboot集成jackson-dataformat-xml实现发送XML请求和XML响应参数处理

背景 最近在做发票相关的业务&#xff0c;需要对接第三方进行开发票等一系列操作&#xff0c;对方的系统是较老系统&#xff0c;需要采用XML的请求方式。 思路 一般来说&#xff0c;基于springboot的项目采用的都是JSON格式的请求参数和响应参数&#xff0c;因此需要做一个转…...

Spring Cloud Gateway 网关的使用

在之前的学习中&#xff0c;所有的微服务接口都是对外开放的&#xff0c;这就意味着用户可以直接访问&#xff0c;为了保证对外服务的安全性&#xff0c;服务端实现的微服务接口都带有一定的权限校验机制&#xff0c;但是由于使用了微服务&#xff0c;就需要每一个服务都进行一…...

超高速工业相机的应用

超高速工业相机一般安装在机器流水线上代替人眼来做测量和判断&#xff0c;通过数字图像摄取目标转换成图像信号&#xff0c;传送给专用的图像处理系统。图像处理系统对这些信号进行各种运算来抽取目标的特征&#xff0c;进而根据判别的结果来控制现场的设备动作。一般来说&…...

学习笔记--电磁兼容性EMC

一、基本概念 电磁兼容性&#xff08;Electromagnetic Compatibility&#xff0c;EMC&#xff09;是电子电气设备在特定电磁环境中正常工作的能力&#xff0c;同时不会对其他设备产生不可接受的电磁干扰。其核心目标是确保设备在共享的电磁环境中既能抵抗干扰&#xff0c;又能避…...

利用开源小智AI制作桌宠机器狗

本文主要介绍如何利用开源小智AI制作桌宠机器狗 1 源码下载 首先下载小智源码,下载地址, 下载源码后,使用vsCode打开,需要在vscode上安装esp-idf,安装方式请自己解决 2 源码修改 2.1添加机器狗控制代码 在目录main/iot/things下添加dog.cc文件,内容如下; #include…...

基于PSO-LSTM长短期记忆神经网络的多分类预测【MATLAB】

一、研究背景与意义 在时间序列分类、信号识别、故障诊断等领域&#xff0c;多分类预测任务对模型的时序特征捕捉能力提出了极高要求。传统LSTM网络虽能有效建模长程依赖关系&#xff0c;但其性能高度依赖超参数的选择&#xff0c;例如隐含层神经元数量、学习率、迭代次数等。…...

Qt中C++与QML交互从原理、方法与实践陷阱深度解析

在我们使用Qt开发中&#xff0c;现在以及普遍通过 C 与 QML 的交互&#xff0c;将 C 的强大功能与 QML 的界面设计优势相结合&#xff0c;既保证了应用程序的性能和稳定性&#xff0c;又能快速实现美观、易用的用户界面。接下来专门讲下C与QML交互原理、方法与实践中的一些陷阱…...

基于SpringBoot和Leaflet的邻省GDP可视化实战

目录 前言 一、技术实现路径 1、空间数据检索 2、数据展示检索流程 二、SpringBoot后台实现 1、模型层实现 2、控制层实现 三、WebGIS前端实现 1、控制面展示 2、成果展示 四、总结 前言 在数字化浪潮席卷全球的今天&#xff0c;数据已成为驱动社会经济发展、指导政策…...

esp工程报错:something went wrong when trying to build the project esp-idf 一种解决办法

最近上手了正点原子esp32s3板子&#xff0c;环境采用的是vscodeesp-idf插件。导入了正点原子的demo测试&#xff0c;每次都报这个错误无法建造。也不是网上说的ninja error&#xff0c;不是中文路径的问题。 在终端中查看&#xff0c;发现是缺少了git。&#xff08;我这里没有…...

Grouped-Query Attention(GQA)详解: Pytorch实现

Grouped-Query Attention&#xff08;GQA&#xff09;详解 Grouped-Query Attention&#xff08;GQA&#xff09; 是 Multi-Query Attention&#xff08;MQA&#xff09; 的改进版&#xff0c;它通过在 多个查询头&#xff08;Query Heads&#xff09;之间共享 Key 和 Value&am…...

DeepSeek AI人工智能该如何学习?

人工智能&#xff08;Artificial Intelligence, AI&#xff09;是当今科技领域的热门话题&#xff0c;它涵盖了机器学习、深度学习、自然语言处理、计算机视觉等多个子领域。 作为中国科技发展的核心方向之一&#xff0c;AI在国家战略规划中占据了重要地位&#xff0c;特别是在…...

【数据库】【MySQL】索引

MySQL中索引的概念 索引&#xff08;MySQL中也叫做"键&#xff08;key&#xff09;"&#xff09;是一种数据结构&#xff0c;用于存储引擎快速定找到记录。 简单来说&#xff0c;它类似于书籍的目录&#xff0c;通过索引可以快速找到对应的数据行&#xff0c;而无需…...

SprinBoot整合HTTP API:从零开始的实战指南

在现代 Web 开发中,HTTP API 是前后端交互的核心。Spring Boot 作为 Java 生态中备受欢迎的框架,提供了简洁而强大的方式来构建和整合 HTTP API。本文将带你从零开始,通过具体代码示例,展示如何在 Spring Boot 中整合 HTTP API,实现高效、稳定的前后端通信。 一、为什么选…...

可狱可囚的爬虫系列课程 13:Requests使用代理IP

一、什么是代理 IP 代理 IP&#xff08;Proxy IP&#xff09;是一个充当“中间人”的服务器IP地址&#xff0c;用于代替用户设备&#xff08;如电脑、手机等&#xff09;直接与目标网站或服务通信。用户通过代理IP访问互联网时&#xff0c;目标网站看到的是代理服务器的IP地址&…...

DBeaver下载安装及数据库连接(MySQL)

1. DBeaver下载 官网下载地址:Download | DBeaver Community 2. 安装 1. 双击下载的安装包&#xff0c;选择简体中文。 2. 点击下一步。 3. 点击我接受。 4. 如下勾选为所有用户安装&#xff0c;点击下一步。 5. 需重复做1~3 的步骤。 6. 选择组件&#xff0c;默认即可&…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

rnn判断string中第一次出现a的下标

# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...

五子棋测试用例

一.项目背景 1.1 项目简介 传统棋类文化的推广 五子棋是一种古老的棋类游戏&#xff0c;有着深厚的文化底蕴。通过将五子棋制作成网页游戏&#xff0c;可以让更多的人了解和接触到这一传统棋类文化。无论是国内还是国外的玩家&#xff0c;都可以通过网页五子棋感受到东方棋类…...

鸿蒙HarmonyOS 5军旗小游戏实现指南

1. 项目概述 本军旗小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;采用DevEco Studio实现&#xff0c;包含完整的游戏逻辑和UI界面。 2. 项目结构 /src/main/java/com/example/militarychess/├── MainAbilitySlice.java // 主界面├── GameView.java // 游戏核…...

JS红宝书笔记 - 3.3 变量

要定义变量&#xff0c;可以使用var操作符&#xff0c;后跟变量名 ES实现变量初始化&#xff0c;因此可以同时定义变量并设置它的值 使用var操作符定义的变量会成为包含它的函数的局部变量。 在函数内定义变量时省略var操作符&#xff0c;可以创建一个全局变量 如果需要定义…...

【深尚想】TPS54618CQRTERQ1汽车级同步降压转换器电源芯片全面解析

1. 元器件定义与技术特点 TPS54618CQRTERQ1 是德州仪器&#xff08;TI&#xff09;推出的一款 汽车级同步降压转换器&#xff08;DC-DC开关稳压器&#xff09;&#xff0c;属于高性能电源管理芯片。核心特性包括&#xff1a; 输入电压范围&#xff1a;2.95V–6V&#xff0c;输…...

CppCon 2015 学习:REFLECTION TECHNIQUES IN C++

关于 Reflection&#xff08;反射&#xff09; 这个概念&#xff0c;总结一下&#xff1a; Reflection&#xff08;反射&#xff09;是什么&#xff1f; 反射是对类型的自我检查能力&#xff08;Introspection&#xff09; 可以查看类的成员变量、成员函数等信息。反射允许枚…...

Redis上篇--知识点总结

Redis上篇–解析 本文大部分知识整理自网上&#xff0c;在正文结束后都会附上参考地址。如果想要深入或者详细学习可以通过文末链接跳转学习。 1. 基本介绍 Redis 是一个开源的、高性能的 内存键值数据库&#xff0c;Redis 的键值对中的 key 就是字符串对象&#xff0c;而 val…...

可下载旧版app屏蔽更新的app市场

软件介绍 手机用久了&#xff0c;app越来越臃肿&#xff0c;老手机卡顿成常态。这里给大家推荐个改善老手机使用体验的方法&#xff0c;还能帮我们卸载不需要的app。 手机现状 如今的app不断更新&#xff0c;看似在优化&#xff0c;实则内存占用越来越大&#xff0c;对手机性…...