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

news2024/11/21 1:34:05

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.coloradmin.cn/o/491590.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

拥抱智能时代:初探RFID系统

在数字化时代&#xff0c;人们越来越追求高效率和高质量的体验&#xff0c;以获得更快乐、更好的生活。RFID系统作为一项智能化管理技术&#xff0c;正越来越广泛地应用于各个领域&#xff0c;以提高效率和质量。本文将介绍RFID系统的基本概念、工作原理和实际应用案例&#xf…

OpenAI的编程语言和框架,给程序员带来了帮助有哪些

OpenAI 是一个人工智能开发公司&#xff0c;成立于2015年&#xff0c;总部位于美国旧金山。这家公司致力于研究和开发先进的人工智能技术&#xff0c;旨在将这些技术应用到解决全球一些最棘手的问题上。 OpenAI 以其卓越的技术和实验室出品的 groundbreaking AI papers 而闻名…

Android焦点流程梳理

作者&#xff1a;Cy13er 前言 最近在看一些焦点处理的问题&#xff0c;认真处理起来发现不跟着源码自己走一遍焦点相关的流程&#xff0c;对于问题的分析上会比较困难。所以本文主要对焦点流程进行一次梳理&#xff0c;在处理类似问题时也可以作为手册阅读。 起源 一切都要从…

Apache Kafka 进阶(一)

官网 Apache Kafka是一个开源的分布式事件流平台&#xff0c;被数千家公司用于高性能数据管道、流分析、数据集成和关键任务应用。 核心能力 高吞吐量 在网络有限的吞吐量下&#xff0c;使用延迟低至2ms的机器集群交付消息。可扩展性 将生产集群扩展到1000个代理&#xff0c…

SQLite安装配置

1.什么是 SQLite&#xff1f; SQLite是一个软件库&#xff0c;实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite是一个增长最快的数据库引擎&#xff0c;这是在普及方面的增长&#xff0c;与它的尺寸大小无关。SQLite源代码不受版权限制。 SQLite是…

Linux 五种网络IO模式(阻塞IO、非阻塞IO、IO多路复用、信号驱动IO、异步IO)

Linux网络编程中&#xff0c;有五种网络IO模式&#xff0c;分别是阻塞IO、非阻塞IO、IO多路复用、信号驱动IO、异步IO&#xff1b; 虽然说不能全都认识得很透彻&#xff0c;但至少得都知道一点&#xff01; 开始之前&#xff0c;先了解以下同步IO和异步IO&#xff1b; 1. 同步…

探索AIGC创新实践,亚马逊云科技与全球咨询合作伙伴携手同行

AIGC(AI Generated Content&#xff0c;人工智能生成内容)&#xff0c;已经成为全球出圈的科技热点。各行各业都在重新审视和思考AIGC的创新价值、未来趋势和成功实践&#xff0c;力争在这波热潮下寻找更多创新的可能性&#xff0c;重塑行业格局。 在AIGC领域&#xff0c;亚马…

无代码资讯|ChatGPT新功能曝光;Mendix与亚马逊云科技底层融合;无代码开发平台Appy Pie推出内置AI

栏目导读&#xff1a;无代码资讯栏目从全球视角出发&#xff0c;带您了解无代码相关最新资讯。 Top3大事件 1、ChatGPT 新功能曝光&#xff0c;GPT-4 迎来 AGI 历史性时刻&#xff01; 北美时间4月20日&#xff0c;Open AI联合创始人Greg Brockman受邀出席 “2023TED” 大会&…

手写【深拷贝】

JS中深拷贝的实现 JSON.parse(JSON.stringify())递归实现深拷贝 使用JSON.parse(JSON.stringify()) 实现 无法拷贝 函数、正则、时间格式、原型上的属性和方法等 递归实现深拷贝 es5实现深拷贝 源对象 const obj {name: 张桑,age: 18,hobby: [{name: 篮球,year: 5,loveSta…

极简爬虫通用模板

网络爬虫的一般步骤如下&#xff1a; 1、确定爬取目标&#xff1a;确定需要爬取的数据类型和来源网站。 2、制定爬取策略&#xff1a;确定爬取哪些网页、如何爬取和频率等。 3、构建爬虫程序&#xff1a;使用编程语言&#xff08;如Python&#xff09;实现爬虫程序&#xff…

【python】列表、字典、元组与集合的特点以及对比

一、列表&#xff08;List&#xff09; 1. 列表的特点 数据按顺序存储列表有正序、倒序两种索引列表可存储任意类型的数据&#xff0c;并且允许重复。 2. 列表的遍历&#xff1a; lst[1,2,3] for i in range(len(lst)):print(lst[i],end" ")3. 列表的缺点&#x…

虹科方案 | HK-TrueNAS:音频协作的理想存储

一、虹科HK-TRUENAS 非常适合 AVID PRO TOOLS™ 专业音频编辑和大多数媒体和娱乐 (M&E) 工作流程从录制开始&#xff0c;经过后期制作&#xff0c;最后进入播放。这一过程可能需要几个月的时间来拍摄一部大型的电影&#xff0c;也可能需要几个小时甚至几分钟的时间来播放最…

Java电子招投标采购系统源码-适合于招标代理、政府采购、企业采购、工程交易等业务的企业

招投标管理系统-适合于招标代理、政府采购、企业采购、工程交易等业务的企业 招投标管理系统是一个用于内部业务项目管理的应用平台。以项目为主线&#xff0c;从项目立项&#xff0c;资格预审&#xff0c;标书编制审核&#xff0c;招标公告&#xff0c;项目开标&#xff0c;项…

使用篇丨链路追踪(Tracing)很简单:链路拓扑

作者&#xff1a;涯海 最近一年&#xff0c;小玉所在的业务部门发起了轰轰烈烈的微服务化运动&#xff0c;大量业务中台应用被拆分成更细粒度的微服务应用。为了迎接即将到来的双十一大促重保活动&#xff0c;小玉的主管让她在一周内梳理出订单中心的全局关键上下游依赖&#…

反射~~~

文章目录 反射反射获取Class类对象反射获取构造器对象反射获取成员变量对象反射获取方法对象反射的作用绕过编译阶段为集合添加数据通用框架的底层原理 反射 反射获取Class类对象 getClass()方法为Object类中的成员方法 反射获取构造器对象 parametTypes为参数的类对象 获得类的…

智安网络|网络安全威胁越来越多,教你如何全方面应对

随着互联网的普及和发展&#xff0c;各大网站已经成为人们获取信息和交流的主要平台。然而&#xff0c;随着网络攻击和恶意软件的威胁不断增加&#xff0c;网站经常成为攻击者的目标。因此&#xff0c;在建立和维护网站系统时&#xff0c;必须采取强大的安全措施。 一、网站系…

阅读有感重庆rcgl

1.json转为对应的泛型集合 List<String> resourceList JSON.parseArray(JSON.toJSONString(obj), String.class); 2.集合转换为数组 String[] roles (String[])resourceList.toArray(new String[0]); 3.json转换为对应的javabean SLoginRule loginRule (SLoginRul…

【Web项目实战】从零开始学习Web自动化测试:用Python和Selenium实现网站登录功能

B站首推&#xff01;2023最详细自动化测试合集&#xff0c;小白皆可掌握&#xff0c;让测试变得简单、快捷、可靠https://www.bilibili.com/video/BV1ua4y1V7Db 目录 1.环境搭建 2.编写测试用例 3.运行测试用例 3.1 命令行方式 3.2 集成到CI/CD流程中 4.结论 Web自动化测…

Windows安装配置Tomcat服务器教程 ——外网远程访问

文章目录 前言1.本地Tomcat网页搭建1.1 Tomcat安装1.2 配置环境变量1.3 环境配置1.4 Tomcat运行测试1.5 Cpolar安装和注册 2.本地网页发布2.1.Cpolar云端设置2.2 Cpolar本地设置 3.公网访问测试4.结语 转载自cpolar文章&#xff1a;外网访问本地Tomcat服务器【cpolar内网穿透】…

ReadTimeoutError: HTTPSConnectionPool(host=‘files.pythonhosted.org‘, port=443)

问题&#xff1a; 今天在遇到了安装pytorch中的torchvision包的时候一直超时失败报错如下 ReadTimeoutError: HTTPSConnectionPool(hostfiles.pythonhosted.org, port443): Read timed out. 之前的安装的方式是&#xff1a; pip install --no-deps torchvision 解决办法&…