UML类图与顺序图

article/2025/8/29 17:51:47

UML的简单使用

(本文参考文献 《java多线程设计模式》--结城 浩 《java多线程编程实战指南》--黄文海)

一、综述

UML(Unified Modeling Language,统一建模语言)是软件工程领域一种标准化通用图形化建模语言,它被设计用于以可视化的方式来描述软件系统。它是站在可视化的观点来看待程序系统,将规格和重点写下来的表现形式。

UML定义的图形可以分为结构型(Structural UML Diagram)和行为型(Behavioral UML Diagram)

结构型UML包括:类图、组件图、复合结构图、部署图、对象图、包图、轮廓图。

行为型UML包括:活动图、通信图、交互概览图、序列图、状态图、时限图和用例图。

 

关于绘制UML图的方法:我只提供建议,白嫖党可以参考。1.免费的在线绘制网站(本人比较喜欢) firstblood - freedgo.com 2.亿图(体验了一下,还可) https://www.edrawsoft.cn/edrawmax/

二、常用部分UML使用说明

1.类图:用于描述类及类与类之间的关系。它是从静态的角度对系统进行描述。

1.1 基本类

                             (图1)

UML使用矩形框来表示类,矩形框的第一个方框中的文字表示类名,类名上方用书名号括起来的文字为立体型(如图3),它是用来对相应的类做出说明。

矩形的第二个方格表示类的属性列表,这个方格往往只是列出相应的类关键属性,而非全部属性。属性格式为:【属性的可见性】属性名【:属性值类型】【=属性的初始值】。

第二个方格文字前的“+ - #”表示的意义如下表:

                                                   (图2)

类的第三个方格表示类的方法列表。这个方格往往只列出类的关键方法而非全部方法。格式: 【方法的可见性】方法名(【参数列表】)【:返回值类型】

图1中,put方法参数类型是element 具体参数 T 返回值类型void,+ 表示public任意位置可访问。

方法名使用斜体表示,说明相应的方法为抽象方法。方法的可见性及其表示符合如图3所示。

 

1.2类与类之间的关系,包括泛化、实现、关联、依赖、组合和聚集。

泛化关系 表示类(接口)与类(接口)之间的集成关系,即一个类是另外一个类的子类,相当于extends予以。泛化用实线空三角箭头表示。如图1 ChildClass继承ParentClass类

                              (图3)

实现关系 表示某个类继承自那些接口,用虚线空心箭头表示。如图3 Light类继承Switch接口,一个开关控制灯的多种状态,Light是Switch的一种实现。+代表public

说明:在UML图中,箭头是从子类指向父类。大家可以这么理解:定义子类时,要用extends指向父类,所以子类一定知道父类是谁,但是父类不一定知道子类在哪,所以从子类指向父类。

在UML图中:所有抽象类与方法以斜体表示,所有static字段名称加下划线表示。

 

关联关系 一个类拥有某一属性,该属性的类型为另一个类,那么这两个类之间的关系即为关联关系。关联关系从代码的层次理解为一个类拥有一个实例变量,该变量的类型为另一个类。UML中类与类之间的关联关系用实线连接表示。如下图:

                                  (图4)

表示类与类之间的关联关系的连接线的两端可以带有数字,用于表示数量关系。连接线的两端还可以带有箭头。箭头表示可导航性,即通过一个类可以访问到另外一个类的可能性。存在关联的两个类之间的可导航性可以是双向的也可以是单向的。就上图而言,连接线两端都没有箭头可以理解为双向导航,这种课导航性意味着对于一个人我们可以知道他有多少部手机,对于一个手机我们可以知道它的主人是谁。

0..*表示任意个。


聚集关系它是一种更加具体的关系,表示“有一个(has a)”的关系。在UML中,聚集关系使用一段带宝石符号的连接线来表示。例如,大学里一个系拥有若干教师,这里系与教师之间的关联关系可以用下图表示:

 

组合关系 是一种特殊的聚集关系,有类似数据库的外键特性。在UML中,组合关系使用带实心宝石符号的箭头表示。它与聚集关系的区别具有这种关系的类的实例的生命周期的差别。聚集关系中,一个类的销毁不影响另一个类实例的存在。例如大学里一个系如果不存在了并不影响这个系拥有教师的存在情况(比如可以去其他系任教)。而组合关系定义,一个类的实例的消亡会导致与该类有组合关系的实例的消亡。例如,一个文件夹的删除意味着这个文件夹系下所有的文件也被删除了。如下图:

 

依赖关系 这是一种比较宽松的关系。通常用来表示类与类之间除上述(泛化、实现、关联)关系之外的关系。在UML中,依赖关系使用带箭头的虚线表示。如下图:

展示了木马生成器与密码之间的依赖关系。这里,类PasswordGenerator的newPassword方法会使用到类Password

 

 

2.顺序图

UML的顺序图是用来表示启动程序时,会按照怎样的顺序执行那些方法、那些现象会依什么顺序发生。类图表示“不因时间变化的部分(静态关系),二顺序图则表示”随时间变化的部分(动态行为)“。如下图:

 

上图出现了3个对象实例,分别对应为3个方框。在方框中,类名称写在冒号(:)后面,而且加上下划线,如:Client,意思是Client类的对象实例。如果需要命名,则必须写在冒号之前如server:Server

所有对象实例都有一条往下延伸的虚线,称为lifeline,所有时间顺序为从上而下,上面是过去,下面是未来。

lifeline中间有一个长方形方框,表示该对象正在操作中。

我们关注到标识为open的箭头,若线段为实线且箭头全黑表示调用方法。因为依成功调用出open方法,所以server对象实例是操作中状态。

open箭头下方虚线箭头表示返回方法,为open的return,可以省略。

因为控制又回到client,所以server对象实例操作中的长方条方框就要结束。继续以同样的方式调用print方法。直接在配套方法内调用device对象实例的write方法。

顺序图自上而下解读,出现箭头时要去确认实例间的协调操作。

 

先写这些,自认为描述的很清楚,所以没写代码。

 

 

 

 


http://chatgpt.dhexx.cn/article/ZuYeDKNh.shtml

相关文章

UML学习笔记——顺序图(时序图)

文章目录 顺序图(时序图)顺序图的引入顺序图的概念顺序图的组成①对象( Object)②生命线( Lifeline )③激活(Activation) (控制焦点focus of control)④消息(Message)消息的表示和分类调用消息(Procedure Call)异步消息(Asynchronous)返回消息(Return) 三…

软件设计中的顺序图

C程序开发过程中,程序的入口一般是main函数也是主函数,然后才会在main函数中调用其他的类对象使程序运行起来。 一个软件程序一般是由很多类对象组合而成的,程序运行过程中对象之间要相互通信,也就是互相调用,互相配合…

顺序图(Sequence Diagram)

先让我们了解一下交互图的有关概念: 交互图用来描述系统中的对象是如何进行相互作用的,即一组对象是如何进行消息传递的。交互主要用于描述协作的动态行为方面。当对交互建模时,通常既包括对象(每个对象都扮演某一特定的角色&…

银行ATM系统——顺序图及文档

一、图形文档 我为设计的ATM系统绘制了五张顺序图:验证密码、查询账户信息、存款、取款、转账。 验证密码: 查询账户信息: 存款: 取款: 转账: 二、文字说明 2.1 顺序图综述 顺序图描述了用…

UML-顺序图与协作图

实验目的 (1) 理解时序图的基本概念; (2) 理解协作图的基本概念; (3) 掌握在Rational Rose中绘制交互图的操作方法。 实验内容 一、概要描述交互场景(存款用例)。(文件名命名为存取款交互概要.mdl) 二、设计和绘制自动车锁系统类图&…

顺序图概述

顺序图(Sequence Diagram)是强调消息时间顺序的交互图,它描述了对象之间传送消息的时间顺序,用于表示用例中行为的顺序。顺序图将交互关系表示为一个二维图,横向轴代表了在协作中各独立对象的类元角色,纵向…

数值分析-龙格库塔法

龙格库塔法 数值分析中,龙格-库塔法(Runge-Kutta methods)是用于非线性常微分方程的解的重要的一类隐式或显式迭代法。 这些技术由数学家卡尔龙格和马丁威尔海姆库塔于1900年左右发明。 [1] 龙格-库塔(Runge-Kutta)方法是一种在工…

Matlab 四阶龙格库塔法求解二元常微分方程组

龙格库塔法是一种求解高阶常微分方程的常用方法,在工程当中应用广泛,例如求解物体的运动方程等。 这里我们通过matlab程序编写龙格库塔算法求解二元常微分方程组,假设有常微分方程组: { x − x ˙ 2 y y ˙ − 2 s i n t −…

四阶龙格库塔法求解微分方程【MATLAB||C】

四阶龙格库塔法求解微分方程 作者:PEZHANG 时间:2021.11.6 求解过程数学描述 四阶龙格库塔的求解过程可用如下数学公式描述: k 1 f ( t n , y n ) k_1f\left( t_n,y_n \right) k1​f(tn​,yn​) k 2 f ( t n h 2 , y n h 2 k 1 ) k_2f\…

算法-----龙格-库塔法(转)

数值分析中,龙格-库塔法(Runge-Kutta)是用于模拟常微分方程的解的重要的一类隐式或显式迭代法。这些技术由数学家卡尔龙格和马丁威尔海姆库塔于1900年左右发明。 龙格库塔法的家族中的一个成员如此常用,以至于经常被称…

隐式龙格库塔法举例说明

隐式龙格-库塔法 题目具体分析前期准备确定系数MATLAB求解 题目 用隐式中点公式求解常微分方程: { d y d x y , y ( 0 ) 1. \begin{cases} \dfrac{dy}{dx}y,\\ y(0)1. \end{cases} ⎩⎨⎧​dxdy​y,y(0)1.​ 具体分析 前期准备 首先对和在区间上进行离散化,然…

龙格库塔法求解微分方程

在https://blog.csdn.net/weixin_42141390/article/details/110184743一文中,我们曾经讨论了欧拉法,龙格-库塔法也跟欧拉法一样,是用梯形的面积去替代积分的面积的一种方法。 欧拉法简介 设有微分方程: d x ( t ) d t f ( x )…

数值计算大作业:常微分初值问题数值解法(欧拉法、改进欧拉法、四阶龙格库塔法程序在Matlab中的实现)

作为研究生的入门课,数值计算的大作业算是所有研究生开学的重要编程作业。 我把矩常微分初值问题用欧拉法、改进欧拉法、与四阶龙格库塔法分别在MATLAB中编程实现。具体的程序详细标注后放在文章最后了,每道题我只展示运算结果与结论,需要的同…

Matlab之四阶龙格—库塔法方法:解常微分初值问题

目录 1. 题目 2. 算法原理 3. 代码 4. 结果 4.1 运行结果 4.2 结果分析 【若觉文章质量良好且有用,请别忘了点赞收藏加关注,这将是我继续分享的动力,万分感谢!】 直接通过解题的方式进行学习,代入感更强 1. 题…

龙格库塔方法的原理和案例及MTATLAB编程

文章目录 龙格库塔法的原理利用四阶龙格库塔法求解一个案例用MATLAB编程 龙格库塔法的原理 在百度百科中是这么解释的:在各种龙格-库塔法当中有一个方法十分常用,以至于经常被称为“RK4”或者就是“龙格-库塔法”。该方法主要是在…

欧拉法、改进的欧拉法、龙格-库塔法求解初值问题

求解初值问题 简介前期准备欧拉法改进的欧拉法龙格-库塔法标准四阶显式Kutta公式三级三阶显式公式四级四阶显式Kutta公式四级四阶显式Gill公式 示例MATLAB代码结果 简介 通过求解简单的初值问题: { d u d x f ( x , u ) ( 1 ) u ( x 0 ) u 0 ( 2 ) \begin{cases…

6.2 龙格—库塔法

学习目标: 学习龙格-库塔法的具体明确的学习目标可以有以下几点: 理解龙格-库塔法的基本思想和原理:我们应该了解龙格-库塔法的数值求解思想和数值误差的概念,包括截断误差和稳定性等基本概念,并且要熟悉龙格-库塔法的…

四阶龙格库塔法求解一次常微分方程组(python实现)

四阶龙格库塔法求解一次常微分方程组 一、前言二、RK4求解方程组的要点1. 将方程组转化为RK4求解要求的标准形式2. 注意区分每个方程的独立性 三、python实现RK4求解一次常微分方程组1. 使用的方程组2. python代码3. 运行结果 一、前言 之前在博客发布了关于使用四阶龙格库塔方…

四阶龙格库塔算法及matlab代码

常微分方程 Ordinary differential equation,简称ODE,自变量只有一个的微分方程。 例子1: d y d x f ( x , y ) \dfrac {dy} {dx}f(x,y) dxdy​f(x,y) , f ( x , y ) f(x,y) f(x,y)是已知函数 偏微分方程 Partial differential equation…

经典四阶龙格库塔法

关注微信公众号“二进制小站”~~获取更多分析~~(文末二维码~~) 龙格-库塔(Runge-Kutta)方法是一种在工程上应用广泛的高精度单步算法,经常被称为“RK4”或者就是“龙格库塔法”。 令初值问题表述如下。 对于该问题的RK4由如下方程给出: 其中&…