UML统一建模语言

UML包含3种构造块:事物、关系、图。

  • 事物:模型中代表性成分的抽象
  • 关系:把事物结合在一起
  • 图:聚集了相关的事物

事物

结构事务:模型的静态部分,包括类、接口、协作、用例、主动类、构件、制品、结点
行为事物:模型的动态部分,包括交互、状态、活动
分组事物:模型的组织部分,包括包
注释事物:模型的解释部分

关系

依赖:A变化会影响B
关联:描述了一组链,链是对象之间的连接。两个类之间可以有多个不同角色标识的关联。

  • 聚集:部分和整体生命周期不一致。整体消失了,部分仍然存在
  • 组合:部分和整体生命周期一致。整体消失了,部分也要消失

泛化:子元素共享父元素的结构和行为,父类泛化子类,子类继承父类
实现:一个类元指定由另一个类元保证执行的契约
关联的多重度:一个类的实例能够与另一个类的多少个实例相关联

  • 静态建模:类图、对象图、用例图
  • 动态建模:序列图、通信图、状态图、活动图
  • 物理建模:构件图、部署图

序列图、通信图被称为交互图。
类图:一组对象、接口、协作和它们之间的关系
用例图:一组用例、参与者已经它们之间的关系
对象图:某一时刻一组对象以及它们之间的关系
序列图(顺序图):以时间顺序组织对象之间的交互活动

类图

描述一组对象、接口、协作和它们之间的关系。
类图包括:

  • 接口
  • 协作
  • 依赖、泛化和关联关系

类中权限修饰符包括:

  • +:public公有的
  • -:private私有的
  • #:protected受保护的
  • ~:package包的


类图用于对系统的静态设计视图建模,支持系统的功能需求。以下三种方式使用类图:

  • 对系统的词汇建模
  • 对简单的协作建模
  • 对逻辑数据库模式建模

对象图

展示某一时刻一组对象以及它们之间的关系。
给出系统的静态设计视图和静态进程视图。
描述对象的静态快照。对象是类图中所建立事物的实例。
对象图包括对象和链。

用例图

用例图用于对系统的静态用例视图建模,支持系统的行为。两种使用方式:

  • 对系统的语境建模
  • 对系统的需求建模

展现一组用例、参与者以及它们之间的关系。
参与者:系统交互的外部实体,包括使用者、与系统交互的外部系统、基础设备。
用例:一个类,代表一类功能而不是使用该功能的某一具体实例。
关联:参与者和参与者之间。
包含、扩展:用例和用例之间。
扩展:一个用例执行的时候,可能会发生一些特殊的情况或可选的情况,这种情况就是这个用例的扩展用例。
泛化:子类继承父类,父类泛化子类。

交互图

对系统的动态方面建模。
有一组对象和它们之间的关系组成,包含它们之间可能传递的消息。
表现为序列图、通信图、交互概览图和计时图

  • 序列图:强调消息时间顺序
  • 通信图:强调接收和发送消息的对象的结构组织

一般包含对象、链和消息

序列(顺序)图

强调对象之间信息的时间顺序,用于展示系统中一个用例和多个对象的行为。
是场景的图形化表示,描述以时间顺序组织的对象之间的交互活动。

  • 参加交互的对象放在图的上方,水平排列
  • 通常,发起交互的对象放在左边,下级对象依次放在右边
  • 1.2.1:create():发送消息调用SR的create()方法,该方法须在SR中实现。

序列图有对象生命线:垂直的虚线,表示对象在一段时间内存在。
序列图有控制焦点:瘦高的矩形,表示一个对象执行一个动作所经历的时间段。

通信(协作)图

强调收发消息的对象的结构组织。展现对象之间的消息流及其顺序。

  • 通信图有路径:链的末端附上一个路径构造型。
  • 通信图有顺序号:消息前加数字前缀。

序列图和通信图是同构的,可以相互转换。
image.png

状态图

展现一个状态机:由状态、转换、事件和活动组成。
关注系统的动态视图。对反应型对象建模。描述一个对象在多个用例之间的行为。
状态:系统的行为模式,规定系统对事件的响应方式。

  • 响应包括:做动作、改变状态

状态图定义的状态有:初态、终态、中间状态

  • 初态:·黑圆点
  • 终态:黑圆点外加一个圆,可以没有,也可以有多个。
  • 状态:圆角四边形,必有状态名,可选状态变量、可选活动。

状态中活动表的语法格式:事件名(参数表)/动作表达式
事件:引起系统做动作或转换状态的控制信息:事件(监护信息)/动作

  • 事件触发转换(迁移)
  • 如果没有事件名,则会自动触发转换。
  • 转换包括两个状态:源状态、目标状态。

动作可以在状态内执行,也可以在状态转换时执行。
三种标准事件:entryexitdo

  • entry:进入状态,立即执行
  • exit:退出状态、立即执行
  • do:内部活动、占有限时间、可以中断

活动图

特殊的状态图:展示系统内从一个活动到另一个活动的流程。
专注于系统的动态视图,强调对象间的控制流程。
包括:活动状态、动作状态、转换、对象。
常用方式:

  • 对操作流建模
  • 对操作建模

构件图


展现了一组构件之间的组织和依赖。
构件图专注于系统的静态实现视图。
将构件映射为一个或多个类、接口和协作。
image.png

部署图

面向对象系统的物理方面建模,展现制品的配置。
对静态部署视图建模,与构件图相关。
展现系统的软件和硬件的关系,在实施阶段使用。

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

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

相关文章

ubuntu 解决pip/pip3安装库各种报错问题

诸如下面类似的报错: 都是由于pip损坏导致 File “/usr/local/bin/pip3”, line 7, in from pip._internal.cli.main import main File “/usr/local/lib/python3.5/dist-packages/pip/_internal/cli/main.py”, line 57 sys.stderr.write(f"ERROR: {exc}") 解绝办法…

py split 用法

在Python中,split()函数用于将字符串按照指定的分隔符进行分割,并返回一个字符串列表。它的基本用法如下: string "Hello, World!" split_string string.split(",") print(split_string)输出结果为: [Hel…

节点导纳矩阵

节点导纳矩阵(Node Admittance Matrix)是电力系统分析中的关键工具,它用于描述电力系统中不同节点之间的电导和电纳参数。这个矩阵为电力工程师提供了深入了解电力系统运行和分析所需的数学工具。 节点导纳矩阵是一个复数矩阵,通常…

Shell判断:模式匹配:case(一)

一、前言 shell编程中if和case都是用来做流控的。 二、case语法结构 case 变量 in 模式1) 命令序列1 ;; 模式2) 命令序列2 ;; 模式3) 命令序列3 ;; *) 无匹配…

如何科学的进行Android包体积优化

这篇文章会分享小厂如何做包体积优化相关主题,涉及内容包括:1) Android包体积优化的一种可能是比较标准的推进做法,2) 大致流程的心路历程和思考方式,3) 如何去总结和分享你们进行过的包体积优化项目。本文不仅仅是一篇分享&#…

Android Binder 是怎么实现进程间通信

文章目录 Android Binder 是怎么实现进程间通信 Android Binder 是怎么实现进程间通信 Android Binder 机制的实现基于 Linux 内核中的 Inter-Process Communication(IPC)机制,具体来说,它是通过进程间共享内存和进程间调用&…

SpringCloud--分布式锁实现

一、简介 分布式锁其实就是控制分布式系统中不同进程共同访问共享资源的一种锁的实现。在分布式系统中各个微服务都是独立部署在不同的服务器上,如果多个服务同时操作同一个共享资源的话,就不能像单体服务那样通过synchronized或者Lock等同步机制保证一…

深入探索 PaddlePaddle 中的计算图

**引言** 计算图是深度学习平台 PaddlePaddle 的核心组件之一,它提供了一种图形化的方式来表示和执行深度学习模型。通过了解和理解 PaddlePaddle 中的计算图,我们可以更好地理解深度学习的工作原理,并且能够更加灵活和高效地构建和训练复杂…

stable diffusion十七种controlnet详细使用方法总结

个人网站:https://tianfeng.space 前言 最近不知道发点什么,做个controlnet 使用方法总结好了,如果你们对所有controlnet用法,可能了解但是有点模糊,希望能对你们有用。 一、SD controlnet 我统一下其他参数&#…

PLC梯形图实操——风扇正反转

文章目录 1.项目内创建函数块(FB)2.项目内创建数据块(DB)2.1去除优化块访问2.2去除优化块的访问后对数据块进行编译 3.在函数块(FB)内实现正转反转的自锁与互锁3.1在函数块内实现电机正反转的梯形图 4.主函…

2 Redis的高级数据结构

1、Bitmaps 首先,最经典的应用场景就是用户日活的统计,比如说签到等。 字段串:“dbydc”,根据对应的ASCII表,最后可以得到对应的二进制,如图所示 一个字符占8位(bit),…

解决SpringBoot中的MyBatis驼峰命名映射报错column不匹配问题

使用MyBatis-Plus映射出现与数据库column匹配不上的报错 Cause: java.sql.SQLSyntaxErrorException: Unknown column ‘register_time’ in ‘field list’ 源代码: Data TableName("db_account") public class Account {TableId(type IdType.AUTO)Inte…

Java的包,import

包名定义: (1)名字全部小写 (2)中间用.隔开 (3)一般都是公司域名倒着写 : com.jd com.msb (4)加上模块名字: com.jd.login com.jd.re…

mysql mvcc介绍

一、什么是mvcc MVCC,即Multi-Version Concurrency Control (多版本并发控制)。它是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问,在编程语言中实现事务内存。 二、什么时候会出现…

HTTP1.1升级HTTP2.0

HTTP1.1升级HTTP2.0 一,前言介绍 1.为什么要升级http2.0 HTTP2.0相比于HTTP1.x有以下几个优点: 二进制分帧:HTTP2.0将所有传输的信息分割为更小的消息和帧,并采用二进制格式对它们进行编码,这样可以更好地对数据进行…

【Rust】快速教程——模块mod与跨文件

前言 道尊:没有办法,你的法力已经消失,我的法力所剩无几,除非咱们重新修行,在这个世界里取得更多法力之后,或许有办法下降。——《拔魔》 \;\\\;\\\; 目录 前言跨文件mod多文件mod 跨文件mod //my_mod.rs…

单机版-redis(手动部署)

单机版-redis部署 部署模式:单机版-redis部署 Redis版本:redis-4.0.1 部署redis方式:手动部署 解决GCC问题 linux升级gcc版本详细教程_gcc升级-CSDN博客 在完成第三步时已完成配置,后续为操作命令以及注意事项; 在进行操作数…

一文彻底搞懂 JS 闭包

闭包 定义 闭包是指一个引用了另一个函数作用域中变量的函数,由于 JS 中作用域的特性,闭包常用于嵌套函数。 特性 保存性保护性 保存性 保存性是指闭包函数所访问的那些变量不会立即被清除,这是由于 IE6、7 所使用的内存回收机制导致的…

单例模式(饱汉式和饿汉式)

饱汉式 在真正需要使用的时候才进行构建,而不是在一开始就创建。如果要保证线程安全,需要使用一个mutex来保证。 饿汉式 类加载时即创建对象,线程安全优点:执行效率高缺点:类加载时就初始化,浪费内存资源…

【数据结构】——双链表(增删查改)

目录 前言: 一:双链表的定义 ​编辑 二:双向链表的实现 2.1:链表的构造 2.2:创建头节点 2.3:创建节点 2.4:链表的尾插 2.5:链表的打印 2.6:链表的尾删 2.7&a…