uml——活动图和状态图

            活动图很类似于流程图,不同之处在于它支持并行活动。活动图的应用非常广泛,它既可用来描述类的操作,也可以描述用例和对象内部的工作过程。

            活动图的目的,描述一个操作的执行过程中所完成的工作或动作,这是活动图最主要的用途。描述用例的执行过程。说明某个商务活动的人员、工作流、组织和对象是如何工作的。处理多线程应用。

             下图是我画的,活动图。操作员删除一个用户。




      状态图主要用来描述一个特定对象的所有可能状态以及由于各种事件的发生而引起状态之间的转移。状态图适用于描述跨越多个用例的单个对象的行为。

每个对象在其生命周期中都有状态的变化,可以使用 状态图对有多个复杂状态的对象进行描述。

      在 状态图中,状态的转移由事件引起的这样的事件称为触发事件。如果是对象本身完成了,这种类型的转移称为无触发转移。

      状态图主要反映了动作对于系统产生的影响,反映了系统中类和对象的实际变化,对于设计和和实现人员理解系统有很大的作用。




区别:状态图侧重行为的结果,活动图侧重行为的动作描述。

      活动图描述一个并行的过程或行为,一个算法的过程,一个跨越多个用例的活动。

      状态图很好的描述了一个对象的状态变化。


问题似乎涉及两个不同的主题:一个是关于 `NULL` 的概念,另一个是 Rose UML 中的状态图活动图的建模技术。以下是针对这两个部分的详细解答。 ### 关于 NULL 的概念 在 C 语言中,`NULL` 是一种特殊值,通常被用来表示指针不指向任何有效的内存地址。其本质是一个宏定义,值为 `(void *)0` 或简单的 `0`,具体实现依赖于编译器[^2]。这意味着 `NULL` 并不是一个普通的整数零,而是一个特殊的指针值,用于标记未初始化或无效的指针状态。通过将指针显式赋值为 `NULL`,可以有效避免所谓的“野指针”问题,即试图访问未正确初始化的指针所引发的不可预测行为[^1]。 ```c #include <stdio.h> #include <stdlib.h> int main() { int* ptr = NULL; // 初始化为空指针 if (ptr == NULL) { printf("Pointer is null.\n"); } return 0; } ``` 上述代码展示了如何安全地初始化并检测一个空指针。 --- ### Rose UML 中的状态图活动图的建模技术 #### 状态图的核心要素 状态图(State Diagram)是一种描述对象在其生命周期内的动态行为的方式。它主要关注系统的不同状态以及这些状态之间的转换条件。以下是构建状态图的关键组件: - **初始状态**:用实心圆圈表示,表明系统启动时进入的第一个状态。 - **终止状态**:用带有边界的实心圆圈表示,标志着某个流程结束的位置。 - **中间状态**:矩形框内写有状态名称的部分,展示当前可能存在的各种情况。 - **转移路径**:箭头连接各个状态节点,并标注触发该转变的具体事件或者守卫条件[^3]。 例如,在设计自动售货机模型时,可以从“待机”到“接收硬币”,再到“提供商品”的一系列变化过程绘制出来。 #### 活动图的主要特点 活动图(Activity Diagram)则更侧重于描绘工作流中的操作序列及其逻辑控制结构。它可以看作是对业务处理步骤的一种图形化说明工具。常见的组成部分如下所示: - **动作节点**:椭圆形图标代表执行的实际任务单元。 - **决策点/分支结点**:菱形符号决定后续走向依据某些判断准则分岔出去多条路线之一。 - **同步栏杆**:细长水平线段确保并发子进程间协调一致完成之后才能继续向前推进。 - **泳道划分**:垂直分区帮助区分哪些行动归属于哪个责任主体负责实施[^4]。 下面给出一段伪代码对应简单银行账户转账场景下的简化版活动图示意片段: ```plaintext start -> checkBalance(balance >= amount?) yes --> deductAmount(account -= amount) --> sendConfirmation(email) no --> displayError(insufficient funds message) end ``` --- ### 结合两者的关系分析 尽管二者都属于 UML 建模家族成员,但它们侧重点各有千秋——如果希望聚焦单一实体内部随着时间推移发生形态改变,则选用状态图;要是想全面把握整个事务运作机制下各个环节相互作用关系的话,那么活动图会更加合适一些[^5]。 ---
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值