面向对象分析与设计Python版 活动图与类图

文章目录

  • 一、活动图
  • 二、类图


一、活动图

活动图

  • 活动图用于描述业务流程、工作流程或算法中的控制流。活动图强调的是流程中的各个步骤的先后顺序,它可以帮助系统分析师、设计师和程序员更好地理解系统的动态行为

  • 活动图与用例模型互为补充,主要用于需求分析阶段

  • 活动图的功能

    • 描述一项任务执行过程中所完成的工作(动作)

    • 描述对象内部的工作

    • 显示如何执行一组相关的动作,以及这些动作如何影响它们周围的对象

    • 显示用例的实例如何执行动作以及如何改变对象状态

    • 说明一次业务流程中的人(参与者)和对象是如何工作的

活动图的基本组成部分

  • 开始节点(Start Node):用一个实心圆表示,是活动图的起点。

  • 结束节点(End Node):用一个实心圆外加一个圆环表示,是活动图的终点。

  • 活动(Activity):用一个圆角矩形表示,代表过程中的一个步骤或动作。

  • 决策节点(Decision Node):用一个菱形表示,表示流程中的分支点,通常与条件语句对应。

  • 分支和合并(Fork and Join)

    • 分支用水平线分割成两个或多个方向,表示并发执行的动作。

    • 合并则是分支的逆过程,表示并发流程的同步。

    • 同步棒是一条水平或垂直的粗线条

  • 泳道(Swimlane):水平或垂直的矩形,用于将活动图中的活动按照职责分组成不同的部分,通常代表参与流程的不同角色或对象。

  • 对象节点(Object Node):用一个矩形表示,代表流程中创建或消耗的信息。

  • 控制流(Control Flow):用带箭头的直线表示,指出活动的顺序。

  • 数据流(Data Flow):带箭头的虚线,表示数据在活动间的流动。

活动图示例

在这里插入图片描述

二、类图

类图 Class Diagram

  • 类图是一种静态结构图,用于描述系统中类的结构以及类之间的关系

  • 类图的元素包括

    • 类(Class):类是具有相同属性、操作、关系和语义的对象的集合。在类图中,类通常由一个矩形表示,矩形分为三个部分:类名、属性和操作。

    • 属性(Attribute):属性定义了类的特性,通常包含可见性、属性名、类型等信息。例如:-name: String

    • 操作(Operation):操作定义了类可以执行的行为,通常包含可见性、操作名、参数类型和返回类型等信息。例如:+display(): void

  • 接口(Interface):接口定义了一组操作,这些操作没有具体的实现。在类图中,接口通常用带有名称和操作列表的矩形框表示,其名称上方标有<<interface>>

  • 类的规约(Class Specification):是类的详细描述,它定义了类的属性、操作(方法)、职责以及与其他类的关系。

在这里插入图片描述

类与类之间的关系

  • 继承(Inheritance):用空心箭头表示,箭头指向基类。
  • 关联(Association):表示不同类的对象之间的连接。关联可以有方向,也可以是双向的。
  • 聚合(Aggregation):表示整体与部分的关系,是一种特殊的关联关系,用空心菱形加实线表示,菱形指向整体。
  • 组合(Composition):是聚合关系的一种特例,表示部分和整体的生命周期相同,用实心菱形加实线表示,菱形指向整体。
  • 依赖(Dependency):表示一个类使用另一个类的方法或资源,用带箭头的虚线表示。
  • 关系的修饰:包括名称及其方向、角色和多重性,这些修饰提供了关于类之间如何交互的额外信息。

类图的作用

  • 类图不仅用于软件设计和开发过程中的需求分析和系统设计阶段,也可以用于软件文档化,帮助开发人员理解系统的结构和设计。
  • 通过类图,可以清晰地表达系统中的数据模型,为软件开发提供了一种标准化的视觉表示方法。
  • 类是面向对象分析设计的核心概念,也是难点。用面向对象的思维方式去思考,去发现类、定义类、定义类之间的关系、定义每个类应该承担的职责

类图示例

在这里插入图片描述

参考资料:Mermaid画类图


您正在阅读的是《面向对象分析与设计Python版》专栏!关注不迷路~

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

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

相关文章

51单片机——步进电机模块

直流电机没有正负之分&#xff0c;在两端加上直流电就能工作 P1.0-P1.3都可以控制电机&#xff0c;例如&#xff1a;使用P1.0&#xff0c;则需要把线接在J47的1&#xff08;VCC&#xff09;和2&#xff08;OUT1&#xff09;上 1、直流电机实验 要实现的功能是&#xff1a;直…

2024AAAI SCTNet论文阅读笔记

文章目录 SCTNet: Single-Branch CNN with Transformer Semantic Information for Real-Time Segmentation摘要背景创新点方法Conv-Former Block卷积注意力机制前馈网络FFN 语义信息对齐模块主干特征对齐共享解码头对齐 总体架构backbone解码器头 对齐损失 实验SOTA效果对比Cit…

数字IC设计高频面试题

在数字IC设计领域&#xff0c;面试是评估候选人技术能力和问题解决能力的重要环节。数字IC设计的复杂性和要求在不断提高。面试官通常会提出一系列面试题&#xff0c;以考察应聘者在数字设计、验证、时钟管理、功耗优化等方面的专业知识和实践经验。 这些题目不仅涉及理论知识…

Functions

1.trigonometric function 定义和图像 反三角函数是三角函数的反函数 versin(verse -sin)&#xff1a;1/sinx 性质 三角函数的公式 三角恒等式 周期性公式&#xff1a;直接画图记 公式记忆&#xff1a;先想象一个在第一象限的锐角 1&#xff1a;在坐标轴中旋转360 2.sin&am…

1/7 C++

练习&#xff1a;要求在堆区连续申请5个int的大小空间用于存储5名学生的成绩&#xff0c;分别完成空间的申请、成绩的录入、升序排序、成绩输出函数&#xff0c;并在主程序中完成测试 要求使用new #include <iostream>using namespace std; double *addr_new() {double …

[文献精汇]使用PyCaret预测 Apple 股价

介绍 开发一个机器学习模型来尝试通过线性回归分析来预测 Apple 股票的价格会很有趣。PyCaret 的库&#xff0c;这是一个开源的 Python 低代码机器学习库&#xff0c;可以自动化机器学习工作流程&#xff0c;非常适合像我这样的机器学习初学者。 线性回归分析 线性回归分析用…

【51单片机】02LED流水灯实验

点亮你的LED 一、点亮第一个LED1.GPIO介绍2.P1、P2、P3端口 二、LED实验2.尝试点亮LED3.LED流水灯 一、点亮第一个LED 1.GPIO介绍 这块内容这里可以做简单的了解&#xff0c;与数电知识强相关。后续可以再回过头来学习 GPIO (general purpose input output) 通用输入输出端口…

「Mac畅玩鸿蒙与硬件53」UI互动应用篇30 - 打卡提醒小应用

本篇教程将实现一个打卡提醒小应用&#xff0c;通过用户输入时间进行提醒设置&#xff0c;并展示实时提醒状态&#xff0c;实现提醒设置和取消等功能。 关键词 打卡提醒状态管理定时任务输入校验UI交互 一、功能说明 打卡提醒小应用包含以下功能&#xff1a; 提醒时间输入与…

Python递归(汉诺塔问题)

递归分析 递归&#xff1a;通过自我调用来解决问题的函数 递归通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。 递归要注意&#xff1a; 1.递归出口 2.当前问题如何变成子问题 利用递归写一个阶乘函数&#xff0c;F(n)&#xff0c;求n的阶乘…

VS2022 C#创建Com组件和调用

生成一个类库项目 这里创建了一个.net 4.8的项目&#xff0c;添加了一个ComAIFaceTest类 如下图&#xff1a; ComAIFaceTest代码如下&#xff1a; [ComVisible(true)][Guid("12345678-ABCD-1234-EF00-0123456789AB")][ClassInterface(ClassInterfaceType.AutoDual)…

【GOOD】A Survey of Deep Graph Learning under Distribution Shifts

深度图学习在分布偏移下的综述&#xff1a;从图的分布外泛化到自适应 Northwestern University, USA Repository Abstract 图上的分布变化——训练和使用图机器学习模型之间的数据分布差异——在现实世界中普遍存在&#xff0c;并且通常不可避免。这些变化可能会严重恶化模…

ARM发布Armv9.5架构:迈向更强性能与灵活性的新时代

2024年11月30日&#xff0c;ARM正式发布了其最新的Armv9.5架构&#xff0c;这是Arm技术发展的又一重要里程碑。从表中信息来看&#xff0c;Armv9.5架构的发布标志着该公司的架构系列在性能、灵活性和可扩展性方面取得了进一步突破。本次发布不仅是技术上的提升&#xff0c;更是…

RAFT:随机退火森林

RAFT:随机退火森林 RAFT(Randomized Annealed Forests)是一种机器学习算法,主要用于分类和回归任务。以下是对它的介绍及原理举例说明: 一、RAFT简介 RAFT是一种基于随机森林的集成学习方法,它结合了随机森林的优点和退火算法的思想。随机森林通过构建多个决策树并综…

“AI智慧语言训练系统:让语言学习变得更简单有趣

大家好&#xff0c;我是你们的老朋友&#xff0c;一个热衷于探讨科技与教育结合的产品经理。今天&#xff0c;我想和大家聊聊一个让语言学习变得不再头疼的话题——AI智慧语言训练系统。这个系统可是我们语言学习者的福音&#xff0c;让我们一起来揭开它的神秘面纱吧&#xff0…

自动驾驶相关知识学习笔记

一、概要 因为想知道SIL、HIL是什么仿真工具&#xff0c;故而浏览了自动驾驶相关的知识。 资料来源《自动驾驶——人工智能理论与实践》胡波 林青 陈强 著&#xff1b;出版时间&#xff1a;2023年3月 二、图像的分类、分割与检测任务区别 如图所示&#xff0c;这些更高阶的…

1/7距离放假一周加1

要求在堆区连续申请5个int的大小空间用于存储5名学生的成绩&#xff0c;分别完成空间的申请、成绩的录入、升序排序、成绩输出函数以及空间释放函数&#xff0c;并在主程序中完成测试 要求使用new和delete完成 #include <iostream> #include<algorithm> using nam…

解锁编程智慧:23种设计模式案例分享

为什么要学习设计模式&#xff1f;你可以把设计模式想象成一些做饭的菜谱。当我们需要做一道菜&#xff08;开发一个功能&#xff09;时&#xff0c;如果按照自己的想法随意添加调料&#xff08;编写代码&#xff09;&#xff0c;很可能做出的菜味道不好&#xff08;功能不稳定…

UWB实操:用信号分析仪(频谱分析仪)抓取UWB频域的图像

连接好UWB设备和信号分析仪&#xff08;频谱分析仪&#xff09;&#xff0c;让UWB设备持续发送信号。我来演示如何一步一步获得下面的图像&#xff1a; 设置频率&#xff0c;FREQ&#xff0c;Center Freq 7987.2MHz 设置X轴&#xff0c;宽度&#xff0c;SPAN 2GHz设置Y轴&…

Kali系统(Debian 10.3) 遇到的问题

目录 问题一&#xff1a;非问题 kali 基础官网与安装 问题二&#xff1a; 问题三&#xff1a; Kali系统 MySQL问题Cant connect to local MySQL server through socket /run/mysqld/mysqld.sock (2) 问题四&#xff1a;重新安装MySQL 也就是MariaDB(MariaDB 含 MySQL相关…

2025最新版Visual Studio Code安装使用指南

2025最新版Visual Studio Code安装使用指南 Installation and Usage Guide for the Latest Visual Studio Code in 2024 By JacksonML 2025-1-7 1. Visual Studio Code背景 早在二十年前&#xff0c;通用的集成开发环境&#xff08;Integrated Deveopment Environment, 简称…