UML - 交互图

上一节: UML - 用例图

上一节

下一节: UML - 状态图

下一节

UML - 交互图

简述

从术语“交互”中可以清楚地看出,该图用于描述模型中不同元素之间的某种类型的交互。这种交互是系统动态行为的一部分。

此交互行为在 UML 中由两个称为“序列图”和“协作图”的关系图)表示。这两个关系图的基本用途是相似的。

序列图强调消息的时间顺序,协作图强调发送和接收消息的对象的结构组织。

交互图的目的

交互图的目的是可视化系统的交互行为。可视化交互是一项艰巨的任务。因此,解决方案是使用不同类型的模型来捕获交互的不同方面。

序列图和协作图用于捕获动态性质,但从不同的角度。

交互图的目的是 -

捕获系统的动态行为。

描述系统中的消息流。

描述对象的结构组织。

描述对象之间的交互。

如何绘制交互图?

正如我们已经讨论过的,交互图的目的是捕获系统的动态方面。因此,为了捕捉动态方面,我们需要了解什么是动态方面以及如何可视化。动态方面可以定义为特定时刻正在运行的系统快照

我们在UML中有两种类型的交互图。一个是序列图,另一个是协作图。序列图捕获从一个对象到另一个对象的消息流的时间序列,协作图描述参与消息流的系统中对象的组织。

在绘制交互图之前,需要清楚地识别以下事项

参与交互的对象。

消息在对象之间流动。

消息流动的顺序。

对象组织。

以下是对订单管理系统进行建模的两个交互图。第一个图是序列图,第二个是协作图

序列图

序列图有四个对象(Customer, Order, SpecialOrder 和 NormalOrder)。

下图显示了SpecialOrder对象的消息序列,在 NormalOrder 对象的情况下可以使用相同的消息序列。了解消息流的时间序列非常重要。消息流只不过是对象的方法调用。

第一个调用是sendOrder(),它是Order对象的方法。下一个调用是confirm(),它是SpecialOrder对象的方法,最后一个调用是Dispatch(),这是SpecialOrder对象的方法。下图主要描述了从一个对象到另一个对象的方法调用,这也是系统运行时的实际情况。

协作图

第二个交互图是协作图。它显示了如下图所示的对象组织。在协作图中,方法调用序列由某种编号技术指示。该数字指示如何依次调用这些方法。我们采用了相同的订单管理系统来描述协作图。

方法调用类似于序列图的方法调用。但是,不同之处在于序列图不描述对象组织,而协作图显示对象组织。

要在这两个关系图之间进行选择,重点在于需求的类型。如果时间序列很重要,则使用序列图。如果需要组织,则使用协作图。

在哪里使用交互图?

我们已经讨论过交互图用于描述系统的动态性质。现在,我们将研究使用这些关系图的实际方案。要了解实际应用,我们需要了解序列图和协作图的基本性质。

这两个图的主要用途是相似的,因为它们用于捕获系统的动态行为。但是,具体目的比较明确和理解。

序列图用于捕获从一个对象流向另一个对象的消息的顺序。协作图用于描述参与交互的对象的结构组织。单个关系图不足以描述整个系统的动态方面,因此使用一组图来捕获整个系统。

当我们想要了解消息流和结构组织时,可以使用交互图。消息流是指从一个对象到另一个对象的控制流的顺序。结构组织是指系统中元素的可视组织。

可以使用交互图 −

按时间序列对控制流进行建模。

按结构组织对控制流进行建模。

用于前向工程。

用于逆向工程。

上一节: UML - 用例图

上一节

下一节: UML - 状态图

下一节

查看笔记 分享笔记

笔记内容:

称呼:

Email:

站点:

分享笔记 重置

分类导航

前端

Ajax 教程

Angular 教程

Aurelia 教程

Bootstrap 教程

ChartJS 教程

CSS 教程

ES6 教程

FontAwesome 教程

HTML 教程

HTML 字符集 教程

HTML 游戏 教程

JavaScript 教程

jQuery 教程

Less 教程

React 教程

Sass 教程

Stylus 教程

TypeScript 教程

Unity 教程

Vue.js 教程

WebAssembly 教程

XAML 教程

颜色 教程

服务端

C# 教程

C++ 教程

COBOL 教程

C语言 教程

Fortran 教程

Go 教程

Groovy 教程

Java 教程

JSP 教程

JVM 教程

Kotlin 教程

Lisp 教程

Lua 教程

Node.js 教程

Pascal 教程

Perl 教程

PHP 教程

Python 教程

Python 3 教程

Ruby 教程

Rust 教程

Scala 教程

Spring 教程

Spring Boot 教程

Spring Cloud 教程

VB.Net 教程

移动端

Android 教程

IOS 教程

Objective-C 教程

React Native 教程

Swift 教程

小程序 教程

数据库

Access 教程

DB2 教程

Mariadb 教程

Memcached 教程

MongoDB 教程

MySQL 教程

Neo4j 教程

PL/SQL 教程

PostgreSQL 教程

Redis 教程

SQL 教程

SQL Server 教程

SQLite 教程

T-SQL 教程

数据格式

Jackson 教程

JSON 教程

SVG 教程

XML 教程

开发工具

ActiveMQ 教程

Ant 教程

Apache HttpClient 教程

Apache POI PPT 教程

AWS 教程

Docker 教程

ElasticSearch 教程

ExpressJS 教程

GIT 教程

GitLab 教程

Google Maps 教程

Gradle 教程

Java NIO 教程

JavaFX 教程

JavaMail 教程

JDBC 教程

jMeter 教程

JPA 教程

jsoup 教程

Junit 教程

KoaJS 教程

Kubernetes 教程

Log4j 教程

Logstash 教程

Lucene 教程

Makefile 教程

Maven 教程

RESTful 教程

Sed 教程

SEO 教程

Servlet 教程

SLF4J 教程

Socket.IO 教程

Struts 教程

SVN 教程

TestNG 教程

UML 教程

UNIX / LINUX 教程

WebSocket 教程

WPF 教程

xStream 教程

区块链 教程

数据处理

Flink 教程

Flume 教程

Hadoop 教程

Hbase 教程

Hive 教程

Kafka 教程

Kibana 教程

MapReduce 教程

MATLAB 教程

MyBatis 教程

Pig 教程

R语言 教程

Solr 教程

Spark 教程

Storm 教程

Zookeeper 教程

大数据分析 教程

数据仓库 教程

数据挖掘 教程

计算机基础

HTTP 教程

IPv4 教程

IPv6 教程

Ubantu 教程

WebServices 教程

嵌入式系统 教程

操作系统 教程

数据结构和算法 教程

汇编语言 教程

物联网 教程

电子电路基础 教程

编译器设计 教程

网站开发 教程

计算机 教程

计算机基础 教程

计算机网络 教程

设计模式 教程

AI

CNTK 教程

Keras 教程

PyTorch 教程

TensorFlow 教程

人工智能 教程

机器学习 教程

Python 技术

Django 教程

Flask 教程

NumPy 教程

Pandas 教程

Pillow 教程

PyGTK 教程

PyQt5 教程

PySpark 教程

pytest 教程

Python -数据科学 教程

Python MySQL 教程

Python 取证 教程

Python 数据结构 教程

Python 文本处理 教程

Python 网络编程 教程

Python 网页抓取 教程

Python 设计模式 教程

RxPY 教程

SciPy 教程

Seaborn 教程

SymPy 教程

wxPython 教程

框架

Laravel 教程

Web 图标Icon 教程

Web2py 教程

WebGL 教程

WebRTC 教程

WordPress 教程

Yii 教程

Zend Framework 教程

SAP

Crystal Reports 教程

苹果iPhone7材料和制造成本224.8美元,比6s高18%
别名:R9s Plus