UML--状态图

article/2025/10/2 0:05:13

一、 概述

状态图(State Diagram)用来描述一个特定对象在其生命周期中的各种状态以及状态之间的转换。这些对象可以是类、接口等等

二、作用

-状态图清晰地描述了状态之间的转换顺序,通过状态的转换顺序可以清晰看出事件的执行顺序。如果没有状态图就不可避免的要使用大量的文字来描述外部事件的合法顺序。
-清晰的事件顺序有利于程序员在开发程序时避免出现事件错序的情况,例如对于一个网上销售系统,在用户处于登录状态前是不允许购买商品的,这就需要程序员在开发程序的过程中加以限制。
-状态图清晰地描述了状态转换时所必须触发的事件、监护条件和动作等影响转换的因素,有利于程序员避免程序中非法事件的进入,例如当飞机起飞前半小时不允许售票,在状态图中就可以清晰的看到,可以提醒程序员不要遗漏这些限制条件。

三、常用元素

名称解释
初始状态状态图用初始状态(Initial State)表示对象创建时的状态,每一个状态图都要有且只有一个初始状态,用实心的圆点表示
终止状态每一个状态图可能有多个终止状态或者没有(Final State),用一个实心圆外加一个圆圈表示
状态框指在对象的生命周期中的某个条件或者状况,在此期间对象将满足某些条件、执行某些活动或等待某些事件。所有对象都有状态,状态是对象执行了一系列活动的结果,当某个事件发生后,对象的状态将发生变化。状态用圆角矩形表示,每个状态框中有两格:上格放置状态名称,下格说明处于该状态时,系统或对象要进行的活动(Action)
转移从一个状态到另一个状态之间的连线称为转移(Transition)转移上标出触发转移的事件表达式。如果转移上未标明事件,则表示在源状态的内部活动执行完毕后自动触发,用带有标记事件的箭头表示。

没有终止状态的例子

               

四、状态图简单状态与高级技巧

 

状态:不包含其他状态的状态称为简单状态。

        

内部行为与状态:

输入:   表示进入该状态时执行的动作。

执行:  表示处于该状态时执行的动作。

退出:  表示退出该状态时执行的动作。

              

 

 

复合状态:又称为组合状态,可以将若干状态组织在一起可以得到一个复合状态,包含在一个复合状态中的状态称为子状态。

          

 

并发状态+子状态 :

          

 

五、案例

1、某信用卡系统账户具有使用状态和冻结状态,其中使用状态又包括正常状态和透支状态两种子状态。如果账户余额小于零则进入透支状态,透支状态时既可以存款又可以取款,但是透支金额不能超过5000元;如果余额大于零则进入正常状态,正常状态时既可以存款又可以取款;如果连续透支100天,则进入冻结状态,冻结状态下既不能存款又不能取款,必须要求银行工作人员解冻。用户可以在使用状态或冻结状态下请求注销账户。根据上述要求,绘制账户类的状态图。

                

 

2、画出ATM取款过程的完整的ATM机的状态机图。

(1)插卡登录:客户登陆ATM系统,入口动作为输入密码,密码错误时,重新输入密码。

(2)业务选择界面:客户登陆ATM系统后系统显示的主界面,以供选择操作类型,入口动作为选择业务操作。

(3)存款:存款动作,入口动作为输入密码,密码错误时,重新输入密码,中间动作为放入现金,出口动作为发送存款交易记录。

(4)取款:取款动作,入口动作为输入密码,密码错误时,重新输入密码,中间动作为取出现金,出口动作为发送取款交易记录。

(5)转账:转账动作,入口动作为输入密码,密码错误时,重新输入密码,中间动作为转账,出口动作为发送转账交易记录。

(6)修改密码:修改密码动作,入口动作为输入旧密码,密码错误时,重新输入密码,中间动作为验证密码,出口动作为发送修改账户信息。

(7)打印凭条:打印凭条动作,入口动作为打印,出口动作为生成凭条。

(8)查询账户信息:查询账户信息动作,入口动作为显示余额。

(9)退卡:退卡动作,入口动作为退卡。

                           


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

相关文章

DBSCAN聚类算法(商场数据分析)

DBSCAN聚类算法(商场数据分析) 引入库邻域半径,最少点数目参数数据最佳参数分析选择最佳参数,查看结果 引入库 from sklearn.cluster import DBSCAN邻域半径,最少点数目参数 from itertools import producteps_value…

机器学习-DBSCAN聚类算法

文章目录 DBSCAN算法原理DBSCAN算法流程DBSCAN的参数选择DBSCAN优缺点总结 K-Means算法和Mean Shift算法都是基于距离的聚类算法,基于距离的聚类算法的聚类结果是球状的簇,当数据集中的聚类结果是非球状结构时,基于距离的聚类算法的聚类效果并…

DBSCAN聚类算法实例

1.实验目标 算法:DBScan,基于密度的聚类算法 输入: D:一个包含n个数据的数据集 r:半径参数 minPts:领域密度阈值 输出:基于密度的聚类集合 2.实验步骤 标记D中所…

DBSCAN聚类算法原理和伪代码

1.DBSCAN算法 K-means聚类算法基于距离的聚类算法,其中的局限性在于,在凸集中进行聚类,但是在非凸集聚类效果不佳。如图: 对于下图,进行聚类,传统的聚类算法效果不佳,使用DBSCAN则效果更佳。 D…

Python学习2——DBSCAN聚类算法

一、原理 参考博文: DBSCAN聚类算法Python实现_徐奕的专栏-CSDN博客_dbscan pythonhttps://blog.csdn.net/xyisv/article/details/88918448DBSCAN是一种基于密度的聚类算法,这类密度聚类算法一般假定类别可以通过样本分布的紧密程度决定。同一类别的样…

DBSCAN聚类算法——MATLAB实现

声明:本文修改自《数学建模清风》老师的代码 DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一个比较有代表性的基于密度的聚类算法。与划分和层次聚类方法不同,它将簇定义为密度相连的点的最大集合,能够把具有足够…

DBSCAN聚类算法实用案例

目录 1、DBSCAN算法介绍4、DBSCAN 的参数选择5、Scikit-learn中的DBSCAN的使用核心参数:属性:1、DBSCAN算法介绍 下图中,左边的图形可以使用K-Means算法进行聚类,右边两个有交叉部分【噪音】,故需要使用密度聚类(DBSCAN)算法 K-Means和层次聚类算法,是基于对象之间的距…

DBSCAN 聚类算法详解

参考: https://www.cnblogs.com/zhengxingpeng/p/6670486.htmlhttps://www.cnblogs.com/chaosimple/p/3164775.htmlhttps://www.jianshu.com/p/e8dd62bec026 1. DBSCAN简介: DBSCAN(Density-Based Spatial Clustering of Applications with …

数据挖掘(七) DBSCAN聚类算法

数据挖掘(七) DBSCAN聚类算法 DBSCAN是一种非常著名的基于密度的聚类算法。其英文全称是 Density-Based Spatial Clustering of Applications with Noise,意即:一种基于密度,对噪声鲁棒的空间聚类算法。直观效果上看&…

DBSCAN聚类算法的实现

DBSCAN聚类算法的实现 1. 作者介绍2.关于理论方面的知识介绍2.1 DBSCAN算法介绍2.2 鸢尾花数据集介绍 3.实验过程3.1 实验代码3.2 实现过程3.3 实验结果 4.参考文献 1. 作者介绍 刘鹏程,男,西安工程大学电子信息学院,…

毫米波雷达点云 DBSCAN聚类算法

毫米雷达点云 DBSCAN聚类算法 聚类的目的聚类算法分类原型聚类层次聚类密度聚类 DBSCAN聚类算法原理相关定义算法流程以及伪代码DBSCAN算法优缺点DBSCAN参数选择聚类衡量指标 DBSCAN算法仿真DBSCAN代码DBSCAN算法对毫米波雷达点云数据进行聚类 聚类的目的 聚类的目的是将一组数…

使用Python实现DBSCAN聚类算法及可视化

目录 实战过程 数据准备 DBSCAN模型 聚类结果评估 可视化展示 运行结果 总结 DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一种基于密度的聚类算法,可以发现任意形状的簇,并且能够在噪声数据的…

聚类及DBSCAN 聚类算法

聚类及DBSCAN 聚类算法 一、聚类 1.概念 聚类就是按照某个特定标准把一个数据集分割成不同的类或簇,使得同一个簇内的数据对象的相似性尽可能大,同时不在同一个簇中的数据对象的差异性也尽可能地大。 2.聚类与分类的区别 聚类时,我们并不…

python DBSCAN聚类算法

文章目录 DBSCAN聚类算法基本思想基本概念工作流程参数选择DBSCAN的优劣势 代码分析Matplotlib Pyplotmake_blobsStandardScaleraxes类使用plt.cm.Spectral颜色分配python numpy 中linspace函数enumerate()函数plt.scatter()绘制散点图整体代码 DBSCAN聚…

聚类方法:DBSCAN算法研究(1)--DBSCAN原理、流程、参数设置、优缺点以及算法

DBSCAN聚类算法三部分: 1、 DBSCAN原理、流程、参数设置、优缺点以及算法; http://blog.csdn.net/zhouxianen1987/article/details/68945844 2、 matlab代码实现; blog:http://blog.csdn.net/zhouxianen1987/…

聚类算法--DBSCAN算法

一、DBSCAN算法 简介 DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一个基于密度的聚类算法。算法把簇看作数据空间中由低密度区域分割开的高密度对象区域;将足够高密度的区域划为簇,可以在有噪音的数据集中发现任意形状的聚类…

DBSCAN聚类算法

DBSCAN是一种基于密度的聚类算法 首先,DBSCAN算法会以任何尚未访问过的任意起始数据点为核心点,并对该核心点进行扩充。这时我们给定一个半径/距离ε,任何和核心点的距离小于ε的点都是它的相邻点。如果核心点附近有足够数量的点&#xff0…

DBSCAN 聚类算法

DBSCAN 聚类算法 DBSCAN 算法是一种基于密度的聚类算法,它能够发现任意形状的类别 (database 2),而 k k k-means 只能发现凸 (convex) 的形状 (database 1),同时 DBSCAN 还有很强的抗噪性 (database 3),在具有噪声的数据中发现任…

基于密度的聚类算法(1)——DBSCAN详解

基于密度的聚类算法(1)——DBSCAN详解 基于密度的聚类算法(2)——OPTICS详解 基于密度的聚类算法(3)——DPC详解 1. DBSCAN简介 DBSCAN(Density-Based Spatial Clustering of Applications wit…

聚类算法之DBSCAN

DBSCAN聚类算法 1. DBSCAN算法基本概念 DBSCAN是一种典型的基于密度的聚类算法,基于一组邻域 ( ϵ , M i n P t s ) (\epsilon, MinPts) (ϵ,MinPts)来描述样本集的紧密程度。其中 ϵ \epsilon ϵ描述了某一样本的邻域距离阈值, M i n P t s MinPts Mi…