UML学习备忘录
UML学习备忘录
UML 全称是 Unified Modeling Language(统一建模语言),它以图形的方式来描述软件的概念。它的特点是简单、统一、图形化、能表达软件设计中的动态与静态信息。UML的本质就是为了交流。
UML的概念包括了UML语义(Semantics)和UML表示符(Notation)两个部分。
UML语义定义了静态模型和动态模型。
UML表示符为开发者或开发工具使用这些图形符号和文本语法为系统建模提供了标准。
为什么需要 UML
一个软件项目要经历业务调研、立项、需求采集、架构设计、编码开发和测试验证等多个环节。
每个环节可能角色并不相同,同样的文档同样的话语越向后传递就越容易失真。因此就容易出现最终交付的产品不是客户真正想要的这种情况。
如何避免角色间信息传递的失真,保证信息能被准确的传达和准确的理解?一种好的办法就是大家使用标准化的语言。
统一建模语言(UML)就试图用标准化的语言来覆盖整个软件过程,让不同团队不同角色可以用相同的语言顺畅的沟通。
UML 的适用场景
UML 既可以描述某个问题领域,也可以表达构思中的软件设计,还可以描述已经完成的软件实现。
它适用于面向对象分析设计的整个过程。这个过程可以分为三个阶段,
第一个阶段是通过建模(modeling)将现实世界转为业务模型。
第二个阶段是对业务模型概念化,建立适合计算机理解和实现的模型,也就是概念(Conceptual)模型。
第三个阶段是对概念模型实例化,得到相对详细的设计(Design)模型。
参见下图:

第三个阶段的定位:是系统实施中一个或多个对象的抽象,由此映射到实现代码,依赖于实施语言。主要工作是设计类结构:
“type(类型)”是对对象某一方面特征的归纳和抽象,映射到Java的 class。“attribute(属性)” 代表Java的 “field(字段)” 指类的成员变量; “operation(操作)” 代表Java的 “method(方法)指类的成员方法
UML图具体分类较多,UML图具体分类较多,UML图有很多种,但是并非必须掌握所有的UML图,才能完整系统分析和设计工作。一般说来,在UML图中,只要掌握类图、用例图、时序图的使用,就能完成大部分的工作。也就是说,掌握UML的20%,就能做80%的事情。对于程序员来说,最频繁使用的莫过于类图。
下面先看看类图。
类图(class Diagram)类图是面向对象建模的主要组成部分。类图以反映类的结构(属性、操作)以及类之间的关系为主要目的,描述了软件系统的结构,是一种静态建模方法。类图中的“类”与面向对象语言中的“类”的概念是对应的,是对现实世界中的事物的抽象。

public class Employee {
private String name;
private int age;
private String email;
public void modifyInfo() {
......
}
}
类的关系(Relationship)有泛化(Generalization)、实现(Realization)、依赖(Dependency)和关联(Association)。其中关联又分为一般关联关系、聚合关系(Aggregation)和组合关系(Composition)。
【此外还有只用于用例中的关系:扩展(extends)和包含(include)】
泛化(Generalization):继承的关系,实线带三角形箭头,指向父类。
实现(Realization):实现的关系,虚线带三角形箭头,指向接口。
关联(Association):拥有的关系,实线带普通箭头,指向被拥有者。
聚合(Aggregation):整体与部分的关系。实线带空心菱形,指向整体。
组合(Composition):整体与部分的关系,但不能离开整体而单独存在。实线实心菱形,指向整体。
依赖(Dependency):使用的关系,即一个类的实线需要另一个类的协助。虚线普通箭头,指向被使用者。

附、ProcessOn在线绘图网址 https://www.processon.com/
进一步了解学习
什么是统一建模语言(UML)?
UML 入门指南 | 面向对象设计 | 类图 | 时序图 |(万字多图,非常干燥) - 知乎
一文掌握14种UML图 - 腾讯云开发者社区-腾讯云
UML Tutorial - Javatpoint
相关文章:
UML学习备忘录
UML学习备忘录 UML 全称是 Unified Modeling Language(统一建模语言),它以图形的方式来描述软件的概念。它的特点是简单、统一、图形化、能表达软件设计中的动态与静态信息。UML的本质就是为了交流。 UML的概念包括了UML语义(Se…...
Vue3手写分页在分页的基础上用到Pagination 分页组件
近期有个项目要用到分页组件,但是内容不是表格,所以自己就研究了一下在Pagination 分页组件的基础上手写了分页 效果图: 目录 一、先声明几个变量用来定义第几页,每页多少条,总页数。 二、然后封装一个函数方便以后…...
冥想第七百二十四天
1.今天感谢徐工的款待,请教了学习日语的一个方法就是把听力复述出来。 2.今天感觉运动量特别少,于是就下班跑了6公里,状态良好。 3.觉得出来出差真的好轻松,有点不适应了。感谢生活给我的奖励 好幸福呀。 4.感谢父母,感…...
Jenkins+Docker自动化部署项目
看到了一篇文章,实操一下自动部署的感觉。参看地址:原文 首先更新docker,我更新到了 [rootlocalhost springboot]# docker --version Docker version 23.0.1, build a5ee5b1跟新步骤: yum update#卸载旧版本 yum remove dock…...
TX2配置RealSense D455相机SDK和ros驱动
TX2配置RealSense D455相机SDK和ros驱动1 SDK安装2 RealSense-ros安装3 bug及解决3.1 realsense-viewer显示usb2.13.2 Could not found ddynamic_reconfigure折腾了两天终于把realsense的驱动装好了,尝试了命令安装,源码安装,前前后后搞了三遍…...
Sentinel架构篇 - 来源访问控制
来源访问控制(黑白名单) 概念 Sentinel 提供了黑白名单限制资源能否通过的功能。如果配置了白名单,则只有位于白名单的请求来源的对应的请求才能通过;如果配置了黑名单,则位于黑名单的请求来源对应的请求不能通过。 …...
多线程的Thread 类及方法
✨个人主页:bit me👇 ✨当前专栏:Java EE初阶👇 ✨每日一语:海压竹枝低复举,风吹山角晦还明。 目 录🌲一. 线程的复杂性🌴二. Thread 类及常见方法📕2.1 Thread 的常见构…...
QT入门Item Views之QTreeView
目录 一、QTreeView界面相关 1、布局介绍 二、基本属性功能 1、设置单元格不能编辑 2、一次选中一个item 3、去掉鼠标移动到单元格上的虚线框 4、最后一列自适应 三、代码展示 1、创建模型,导入模型 2、 右键菜单栏 3、双…...
Servlet | Servlet简单入门——构建第一个Servlet项目
本专栏主要是记录学习JavaWeb中的Servlet相关知识点,如果刚开始学习Java的小伙伴可以点击下方连接查看专栏 本专栏地址:🔥Servlet Java入门篇: 🔥Java基础学习篇 Java进阶学习篇(持续更新中)&am…...
Spring的IOC/DI,依赖注入的实现
Spring的IOC/DI,依赖注入的实现 https://download.csdn.net/download/weixin_41957626/87546826 资源地址 1.什么是Spring 1.1spring3 的体系结构图 图1 spring3的体系结构图 图2 spring4体系结构图 比较spring3的体系结构图,spring4去掉了spring3中的st…...
【tensorflow onnx】TensorFlow2导出ONNX及模型可视化教程
文章目录1 背景介绍2 实验环境3 tf2onnx工具介绍4 代码实操4.1 TensorFlow2与ONNX模型导出4.2 ONNX正确性验证4.3 TensorFlow2与ONNX的一致性检查4.4 多输入的情况4.5 设定输入/输出节点5 ONNX模型可视化6 ir_version和opset_version修改7 ONNX输入输出维度修改8 致谢原文来自于…...
天梯赛训练L1-013--L1-015
目录 1、L1-013 计算阶乘和 2、L1-014 简单题 3、L1-015 跟奥巴马一起画方块 1、L1-013 计算阶乘和 分数 10 题目详情 - L1-013 计算阶乘和 (pintia.cn) 对于给定的正整数N,需要你计算 S1!2!3!...N!。 输入格式: 输入在一行中给出一个不超过10的正…...
进程(操作系统408)
进程的概念和特征 概念: 进程的多个定义: 进程是程序的一次执行过程 进程是一个程序及其数据在处理机上顺序执行时所发生的活动 进程时具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位 上面所说…...
浅谈运维工程师的开发能力的培养
写在前面 本文已获得作者授权,作者的博客地址:https://www.cuiliangblog.cn/ 原文链接:浅谈运维工程师的开发能力的培养 一、运维工程师发展路线 1. 传统运维 侧重点是解决具体的问题。要求具备扎实的底层的知识储备,如网络、l…...
Netcode升级到1.2.0网络变量的变化的变化
Netcode升级到1.2.0网络变量的变化1 概述2 继承网络变量 NetworkVariable,派生类构造出错的问题2.1 代码描述2.2 问题记录2.3 解决办法:使用 NetworkVariable 即可3 网络变量 NetworkVariable 类的版本差异比较3.1 差异说明3.2 [1.0.2]版本的网络变量3.3…...
冥想第七百二十二天
1.周六去给朋友讲了一天的软件,给朋友带了2袋面包边,几袋方便面。感谢朋友的款待,做的蒸菜双拼,柠檬风爪,排骨汤,汤圆,牛肉,孜然回锅肉。 2.讲到下午五点,就回去了。感觉…...
AB测试——流程介绍(定义问题和指标选取)
前言: 作为AB测试的学习记录,本文主要介绍了AB测试的基本流程,以及指标类型和如何选取合适指标。 相关文章:AB测试——原理介绍 AB测试的基本流程是什么? AB测试(也称为分流测试)是一种常用的实…...
Linux(Centos)安装Minio集群
目录1:简介2:功能与集成3:架构4:搭建集群4.1:挂载磁盘4.1.1:要求4.1.2:创建挂载目录4.1.3:注意:需要将新建的目录挂在到对应的磁盘下,磁盘不挂载好,集群启动会…...
LeetCode 1662. 检查两个字符串数组是否相等 / 795. 区间子数组个数 / 剑指 Offer 47. 礼物的最大价值
1662. 检查两个字符串数组是否相等 2022.11.1 新的一月又开始了 题目描述 给你两个字符串数组 word1 和 word2 。如果两个数组表示的字符串相同,返回 true ;否则,返回 false 。 数组表示的字符串 是由数组中的所有元素 按顺序 连接形成的…...
【C++】缺省参数函数重载
🏖️作者:malloc不出对象 ⛺专栏:C的学习之路 👦个人简介:一名双非本科院校大二在读的科班编程菜鸟,努力编程只为赶上各位大佬的步伐🙈🙈 目录前言一、缺省参数1.1 缺省参数的概念1…...
手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...
深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...
SQL慢可能是触发了ring buffer
简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...
