UML图中的domain model,object model,system sequence diagram以及interaction diagram

news/2024/11/29 12:49:23/

UML图(Unified Modeling Language,统一建模语言)是一种用于描述、可视化、构建和记录软件系统的标准化建模语言。在UML中,有很多类型的图,其中包括领域模型(Domain Model)、对象模型(Object Model)和系统顺序图(System Sequence Diagram)等。这些图都是用于描述不同层面和方面的系统。

domain model(领域模型)

领域模型关注实际问题领域,帮助我们识别关键概念、需求和概念之间的关系。一般处理一个实际问题时,我们就首先通过domain model来分析有哪些关键概念,以及各个概念之间的关系。

比如说我们现在想做一个图书馆系统,图书馆里有书本,有用户,我们需要记录用户都借了哪些书,那我们就可以提取出两个关键概念,Libruary Account以及Book,并且他们的关系可以表示为:

对应的代码表示是这样:

class Account {
id : int ;
lateFees : int ;
borrowed: List <Book>;
boolean borrow( Book) { …}
void save();
}
class Book { … }

在画domain model时,我们就只限于画出对象名以及它所包含的属性,在这里我们library account里面其实还有一个属性即borrowedBook,但是我们已经通过一个连接线表示出了它和Book之间的包含关系,所以就不用再多余地把book也写进library account的属性了。

这里的两个概念之间用一个线段链接,并用文字注明了他们是borrow的关系,然后1个library account对应了*也就是多个Book,表示了二者的数量关系。其实大多数情况中间的线段是有箭头的(这里应该是向右的箭头,表示library account borrow Book,如果是向左的箭头,上面的注释就应该是borrowed by),箭头并不是强制的,属于可有可无。

在domain model中,对于“has a”的关系,有关于Composition和Aggregation两种不同的画法,它们之间的主要区别在于整体和部分之间的生命周期关系以及部分的独立性。直接看图:

Composition(组合)和Aggregation(聚合)在UML类图中使用实心和空心的表示法来区分 。Composition(组合):组合关系在UML类图中用实心菱形箭头表示。菱形端指向整体,箭头端指向部分,且整体和部分的生命周期是紧密相关的。在组合关系中,部分没有整体是没有意义的。比如一个person有手有脚步,如果脱离了person,那么hand和leg单独都没有意义。

Aggregation(聚合):聚合关系在UML类图中用空心菱形箭头表示。菱形端指向整体,箭头端指向部分。空心菱形表示聚合关系中整体和部分具有相对独立的生命周期。在聚合关系中,部分即使脱离整体,仍然可以独立存在。比如说轮子和汽车,轮子是可以单独存在的。

object model(对象模型)

其实object model和domain model很像,就是在domain model的基础上增加了实现细节,比如类当中成员变量的类型,类所包含的方法,参数,返回值类型等。比如对于刚刚的library account,在object model里就表示成了这样:

其中borrow(book), returnItem(book)以及payFees(int)都属于这个library account的方法,也是它的responsibilities。通过domain model我们更清楚不同对象的具体实现细节以及方法责任。如果说Domain Model处于较高的抽象层次,与现实世界的问题领域紧密相关,那么Object Model就处于较低的抽象层次,与软件实现紧密相关。

后面我计划总结一个完整的项目,从domain model,object model到最终Java代码给出例子,有空的话就会去写出来。

System Sequence Diagram(系统顺序图)

系统顺序图(System Sequence Diagram,简称SSD)是一种用于描述系统边界上事件顺序的模型,它展示了一个特定使用场景下系统的交互过程。系统顺序图只关注系统级别的组件,例如用户和整个系统。这有助于我们将重点放在系统的整体行为上,而不是关注内部细节。比如对于图书馆系统用户借书的操作,系统顺序图可以表示如下:

通过系统顺序图,我们可以清楚地表示出用户和系统之间可能的交互方式以及交互顺序,同时用虚线向回的箭头表示一些可能的相应。系统顺序图是面向对象设计过程中的一个重要工具,它可以帮助我们有效地理解和设计系统的交互。

Interaction Diagrams(交互图)

交互图(Interaction Diagrams)是一种用于表示对象之间互动和通信的建模工具,用于描述系统内部的行为和协作。交互图主要有两种常见表示法:顺序图(Sequence Diagrams)和通信图(Communication Diagrams)。这里就讲一下顺序图,顺序图和上面的系统顺序图很像,但是它可以描绘更加具体的对象或类之间的交互,而不仅仅是把整体看作一个系统那么笼统。来一张图就明白了:

对于整个图书馆系统,它里面有很多对象,通过交互图中的顺序图可以很好地描绘出这些对象之间是如何进行互动和传递信息的。

小结:

这篇文章总结了UML图中常见的几种图的定义,使用场景及画法,包括domain model, object model, system sequence diagram以及interaction diagram等。


http://www.ppmy.cn/news/61725.html

相关文章

无线键盘有几种连接方式?(USB接收器连接(无线2.4g)、蓝牙连接、wi-fi连接、红外线连接)

文章目录 无线键盘有哪几种连接方式&#xff1f;各连接方式优缺点 无线键盘有哪几种连接方式&#xff1f; 无线键盘有以下几种连接方式&#xff1a; 通过USB接收器连接&#xff08;无线2.4g&#xff09;&#xff1a;无线键盘通过USB接收器与电脑连接&#xff0c;一般需要插入电…

C++ 基础知识 五 ( 来看来看 面向对象的继承 上篇 )

C 基础知识 五 来看来看 面向对象的继承 上篇 一、简介1 什么是 C 继承2 继承的目的和作用 二、定义1 派生类和基类的定义2 公有继承和私有继承 三、访问控制1 派生类对基类成员的访问权限2 如何控制访问权限 四、虚函数继承1 继承中的虚函数机制2 在派生类中重写虚函数 五、多…

2个月快速通过PMP证书的经验分享

01 PMP证书是什么&#xff1f; 指的是项目管理专业人士资格认证。它是由美国项目管理协会&#xff08;Project Management Institute(简称PMI)&#xff09;发起的&#xff0c;严格评估项目管理人员知识技能是否具有高品质的资格认证考试。其目的是为了给项目管理人员提供统一的…

FFmpeg HEVC 解码 YUV

1. 概要与流程图 1.1 FFmpeg 支持 h264,hevc 等解码,由于分离视频文件为 hevc 格式,为了方便起见,当前解码的格式为 hevc,代码支持各种视频格式解码,需要修改参数和适配 1.2 HEVC 解码 YUV 流程图如下: 2. 封装读写文件操作 2.1 读写头文件,FileTool.h #import <Fou…

Handler

背景 1、在日常Android研发工作中&#xff0c;经常用到Handler&#xff0c;但对其原理不熟悉。 目的 理解Handler 的工作原理 知识说明 polling&#xff1a;轮询idle&#xff1a;闲置Threshold&#xff1a;阈值Dispatch&#xff1a;分发Asynchronous&#xff1a;异步的syn…

cmd命令(dos命令)大全基础笔记

1、基本命令 ipconfig /all 查看本地网络配置 ipconfig /release 释放ip ipconfig /renew 重新获得ip ifconfig /flushdns 清空dns解析器缓存 ping ip地址 -t 一直ping tracert www.baidu.com 网络诊断工具 netstat -ano 查看侦听端口 netstat -ano | findstr ‘8080’检查8080…

Spring的事务原理

一、什么是事务&#xff1f; 事务是数据库操作的最小工作单元&#xff0c;是作为单个逻辑工作单元执行的一系列操作&#xff1b;这些操作作为一个整体一起向系统提交&#xff0c;要么都执行、要么都不执行&#xff1b;事务 是一组不可再分割的操作集合&#xff08;工作逻辑单元…

Android开机时间工具分析

背景 android 上面有很多的方法可以分析开机时间 比如打log&#xff0c;通过log 分析。android 的官网上面提供了下面的两种图形化的方式来分析开机时间&#xff0c;一些异常很明显的拖长整个开机时间的活动 可以很容易就看出来。 问题 android 官网和网上的教程很多都不适用于…