小红叔de博客

计算机类岗位备考全记录

UML 用例图是软件需求分析中十分常用的工具,它主要用来表示参与者与系统功能之间的联系。本文将围绕用例图的基本元素、各类关系以及实际应用进行介绍,帮助我们快速掌握系统功能与交互逻辑。

阅读全文 »

本文梳理了软件概要设计的核心任务,重点讲解UML活动图的要素、作用、绘制要点及应用场景,帮你快速掌握流程建模与系统结构设计的关键知识。

📌 概要设计与活动图核心知识总结


一、概要设计的核心任务

概要设计的核心目标是将需求分析阶段的用例图,转化为软件结构数据结构

  • 软件结构设计:完成模块划分、建立模块层次与调用关系、定义模块接口及人机界面,同时描述用户操作序列(通过活动图实现)。
  • 数据结构设计:描述数据特征、确定数据结构特性,并完成数据库设计(通过E-R图实现)。

二、活动图的核心功能

活动图是UML中用于描述系统动态行为的图,主要特点包括:

  • ✅ 描述系统的动态行为,包含活动状态(ActionState),即业务用例的执行步骤或操作。
  • ✅ 适合描述无外部事件触发的系统内部逻辑流程(若存在外部事件,状态图更适用)。
  • ✅ 表现形式类似传统流程图,可用于业务建模(详述业务用例执行过程)和设计建模(描述操作流程)。

三、活动图的基本要素

要素 符号/形态 作用说明
动作(Activity) 圆角矩形 代表原子操作,如发送消息、数学运算、对象创建等(例:x=5
动作流(转移) 带箭头的直线 表示动作间的转换,箭头指向转入方向(例:下订单 → 生成订单)
开始/终止 实心圆/环形圆 标记业务流程的起点与终点
分叉与汇合 粗黑横线 分叉:将动作流拆分为多个并发分支;汇合:同步并发分支,共同完成事务
判断节点(分支) 菱形 进行逻辑判断,生成多个控制流,需在箭头上附加控制条件
泳道 垂直/水平分区 划分不同角色/对象的职责边界(例:学生、监考老师)

四、活动图示例解析

  1. 日常起床流程

    • 核心逻辑:看表 → 判断是否到起床时间 → 起床后并发执行洗脸、刷牙、热牛奶 → 汇合后吃早餐 → 出门。
    • 体现了判断节点分叉/汇合的应用。
         graph TD
      A[看表] --> B{时间到了吗?}
      B -- 否 --> C[继续睡觉]
      B -- 是 --> D[起床]
      D --> F[同时做]
      F --> G[洗脸]
      F --> H[刷牙]
      F --> I[热牛奶]
      G --> J[汇合]
      H --> J
      I --> J
      J --> K[吃早餐]
      K --> L[出门]
  2. 学生进场考试流程

    • 泳道划分:学生侧(进入考场、对号入座、开始答题)与监考老师侧(检查证件、发考卷)。
    • 体现了泳道并发流程的建模,清晰区分不同角色的操作。
            graph TD
         subgraph 学生
             A[进入考场]
             B[对号入座]
             C[等待试卷]
             D[开始答题]
         end
         subgraph 监考老师
             E[检查证件]
             F[发放试卷]
         end
         A --> B
         B --> E
         E --> F
         F --> C
         C --> D

五、关键注意事项

  • ⚠️ 活动图侧重流程与并发,状态图侧重对象状态变化,需根据场景选择。
  • ⚠️ 分叉与汇合必须成对使用,确保并发分支的同步。
  • ⚠️ 判断节点的每条导出流都必须附加明确的控制条件(如 x>0x=0)。

本文

classDiagram
    class 类A
    class 类B
    class 父类
    class 子类
    class 接口
    class 实现类
    class 整体
    class 部分
    class 班级
    class 学生
    class 人
    class 器官

    %% 1. 关联关系(长期持有)
    类A --> 类B : 单向关联

    %% 2. 依赖关系(临时使用)
    类A ..> 类B : 依赖

    %% 3. 泛化 / 继承
    父类 <|-- 子类 : 继承

    %% 4. 实现 / 接口
    接口 <|.. 实现类 : 实现

    %% 5. 聚合关系(可分离)
    整体 o-- 部分 : 聚合

    %% 6. 组合关系(不可分离)
    整体 *-- 部分 : 组合

    %% 真实案例
    班级 o-- 学生 : 聚合(可分离)
    人 *-- 器官 : 组合(不可分离)
阅读全文 »

状态图是描述单个对象生命周期内所有状态及触发状态转移的事件、动作的 UML 动态视图,通过初态、终态、普通状态与带条件的转移清晰展示对象行为变化。

stateDiagram-v2
    [*] --> 可出借 : 图书入库
    可出借 --> 预约 : 预定
    预约 --> 可出借 : 取消预定/预定过期
    可出借 --> 借出 : 借出
    借出 --> 可出借 : 归还
    可出借 --> 下架 : 破损/丢失
    下架 --> [*] : 出库
阅读全文 »

本文介绍程序流程图(程序框图)是用图形符号直观描述工作步骤与逻辑顺序的图示方法,涵盖开始 / 结束、处理、输入输出、判断、流向等基础符号及五种基本控制结构,并通过比较三数大小、登录系统实例说明其应用,能清晰表达逻辑、帮助理解。

一、流程图基础符号与控制结构 💡

这是程序设计的可视化基础,核心符号与结构如下:

符号形状 名称 作用描述
圆角矩形 开始/结束标志 表示流程的起点或终点,内部写“开始”或“结束”
矩形 活动/执行标志 表示一个具体的处理步骤,内部写操作说明(如“输入a,b,c”“输出a”)
平行四边形 输入/输出标志 表示数据的输入或输出操作(如“输入用户名和密码”)
菱形 判断标志 表示条件分支点,内部写判断条件(如“a>b且a>c?”),结果为“是/否”两条路径
箭头 流线标志 表示步骤的执行顺序和流程方向

五种基本控制结构

  1. 顺序型:步骤按线性顺序依次执行(如“输入→处理→输出”)
  2. 选择型:根据单一条件判断,选择两条分支之一执行
  3. 先判定型循环(DO-WHILE):先判断条件,条件成立则重复执行循环体
  4. 后判定型循环(DO-UNTIL):先执行一次循环体,再判断条件是否终止
  5. 多情况选择型(CASE):根据一个变量的多个取值,选择对应分支执行

二、案例1:比较a,b,c大小的流程图 📊

功能:输入三个数,输出其中的最大值。
逻辑步骤

  1. 开始 → 输入a,b,c
  2. 判断 a>b 且 a>c
    • 是 → 输出a
    • 否 → 进入下一步判断
  3. 判断 b>c
    • 是 → 输出b
    • 否 → 输出c
  4. 结束
flowchart TD
    A([开始]) --> B[输入a,b,c]
    B --> C{a > b 且 a > c?}
    C -- 是 --> D[输出最大值a]
    C -- 否 --> E{b > c?}
    E -- 是 --> F[输出最大值b]
    E -- 否 --> G[输出最大值c]
    D --> H([结束])
    F --> H
    G --> H

对应代码逻辑(伪代码)

1
2
3
4
5
6
7
input a, b, c
if a > b and a > c:
print(a)
elif b > c:
print(b)
else:
print(c)


三、案例2:登录系统流程图 🔐

功能:模拟用户登录验证流程。

flowchart TD
    A([开始]) --> B[输入用户名、密码]
    B --> C{用户是否存在?}
    C -- 否 --> D[提示:用户不存在,去注册]
    D --> B
    C -- 是 --> E{账号密码是否正确?}
    E -- 否 --> F[提示:用户名或密码错误]
    F --> B
    E -- 是 --> G[进入系统主界面]
    G --> H[执行操作/退出系统]
    H --> I([结束])

逻辑步骤

  1. 开始 → 输入用户名和密码
  2. 判断“是否存在该用户”:
    • 否 → 提示“用户不存在”并引导注册,跳转回开始状态
    • 是 → 验证用户名和密码
  3. 判断“用户名和密码是否正确”:
    • 否 → 提示“用户名或密码错误”,跳转回开始状态
    • 是 → 进入系统主界面
  4. 执行相关操作 → 退出系统 → 结束

核心特点

  • 包含循环跳转:错误时回到“开始”,允许用户重新尝试
  • 包含分支选择:根据用户存在性、密码正确性分路径处理
  • 符合实际登录系统的交互逻辑

四、流程图设计核心原则 ✅

  1. 清晰性:每个步骤只做一件事,判断条件明确无歧义
  2. 完整性:覆盖所有可能的分支情况(如登录失败、无最大值等边界)
  3. 可读性:箭头方向统一,符号使用规范,便于他人理解
  4. 可执行性:能直接转化为代码或实际操作步骤

0%