软件设计中的顺序图

article/2025/8/29 17:48:14

C++程序开发过程中,程序的入口一般是main函数也是主函数,然后才会在main函数中调用其他的类对象使程序运行起来。

一个软件程序一般是由很多类对象组合而成的,程序运行过程中对象之间要相互通信,也就是互相调用,互相配合才能很好的使整个程序软件运行起来。

在软件开发领域描述类与类之间的关系的是UML类图,类与类之间的关系请看我的文章C++类与类之间的关系,文章里面讲了6中常见类与类之间的关系。

但是对象与对象之间的通信关系是通过时序图也就是顺序图来表示的。

顺序图是一种强调对象间消息传递次序的交互图,又称为时序图或序列图。描述了在一个用例或操作的执行过程中对象如何通过消息相互交互,说明了消息如何在对象之间被发送和接收以及发送的顺序。它着重显示了参与相互作用的对象和所交换消息的顺序。

时序图主要有4中要素:对象、生命线、激活状态、消息。

下面通过一个简单的例子展现类图和顺序图。这个Demo实现的主要功能:主界面通过一个线程来加载SVG图片。

1.定义接口:

#pragma once
class IReadSvg {
public:IReadSvg();~IReadSvg();virtual void readSvg() = 0;
};
#include "IReadSvg.h"IReadSvg::IReadSvg() {
}IReadSvg::~IReadSvg() {
}

2.主界面继承接口类并且实现接口

#pragma once#include <QtWidgets/QMainWindow>
#include "ui_Thread.h"
#include "IReadSvg.h"class QtThread;class Thread : public QMainWindow,public IReadSvg {Q_OBJECTpublic:Thread(QWidget *parent = Q_NULLPTR);void readSvg()override;
private slots:void slotReadSvg();
private:Ui::ThreadClass ui;QtThread* _thread = nullptr;
};
#include "Thread.h"
#include "QtThread.h"
#include <QDebug>Thread::Thread(QWidget *parent): QMainWindow(parent) {ui.setupUi(this);connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(slotReadSvg()));_thread = new QtThread(this, this);
}void Thread::readSvg() {qDebug() << QStringLiteral("开始加载SVG图片");
}void Thread::slotReadSvg() {_thread->start();
}

3.定义线程

#pragma once#include <QThread>class IReadSvg;class QtThread : public QThread {Q_OBJECTpublic:QtThread(IReadSvg* read,QObject *parent);~QtThread();private:void run()override;private:IReadSvg* _readSvg = nullptr;
};
#include "QtThread.h"
#include "IReadSvg.h"QtThread::QtThread(IReadSvg* read, QObject *parent): QThread(parent) {_readSvg = read;
}QtThread::~QtThread() {
}void QtThread::run() {_readSvg->readSvg();
}

当点击主界面按钮的时候,就会启动线程,然后就会就会加载主界面实现的接口函数进行加载SVG函数。

4.类图和顺序图

在这里插入图片描述


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

相关文章

顺序图(Sequence Diagram)

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

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

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

UML-顺序图与协作图

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

顺序图概述

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

数值分析-龙格库塔法

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

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

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

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

四阶龙格库塔法求解微分方程 作者&#xff1a;PEZHANG 时间&#xff1a;2021.11.6 求解过程数学描述 四阶龙格库塔的求解过程可用如下数学公式描述&#xff1a; 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\…

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

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

隐式龙格库塔法举例说明

隐式龙格-库塔法 题目具体分析前期准备确定系数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.​ 具体分析 前期准备 首先对和在区间上进行离散化&#xff0c;然…

龙格库塔法求解微分方程

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

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

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

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

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

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

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

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

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

6.2 龙格—库塔法

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

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

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

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

常微分方程 Ordinary differential equation&#xff0c;简称ODE&#xff0c;自变量只有一个的微分方程。 例子1&#xff1a; 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…

经典四阶龙格库塔法

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

四阶龙格库塔法(Runge-Kutta)求解常微分方程的 Matlab程序及案例

文章目录 1. 算法2. 程序3. 案例4. 联系作者 1. 算法 上一篇介绍了显式欧拉法、隐式欧拉法、两步欧拉法和改进欧拉法求解常微分方程初值问题&#xff1b;其中显式欧拉法和隐式欧拉法是一阶算法精度&#xff0c;截断误差为 O ( h 2 ) O\left( {{h^2}} \right) O(h2)&#xff1b…

【Runge-Kutta】龙格-库塔法求解微分方程matlab仿真

1.软件版本 MATLAB2013b 2.算法理论 龙格&#xff0d;库塔法&#xff08;Runge-Kutta&#xff09;是用于模拟常微分方程的解的重要的一类隐式或显式迭代法。龙格库塔法的家族中的一个成员如此常用&#xff0c;以至于经常被称为“RK4”或者就是“龙格库塔法”。令初值问题表述…