当前位置: 首页 > news >正文

软件设计(十四)-UML建模(上)

软件设计(十三)-原码、反码、补码、移码icon-default.png?t=N176https://blog.csdn.net/ke1ying/article/details/129115844?spm=1001.2014.3001.5501

UML建模包含:用例图,类图与对象图,顺序图,活动图,状态图,通信图,构件图

  • 用例图

主要包含关系,扩展关系,泛化关系。

 

首先旁边的对象肯定是参与者。

包含关系 include:登记外借信息,必须要用到用户登入,所以是包含。

扩展关系 extend:查询书籍 也可以直接修改书籍,所以不是包含,是扩展关系。(关键在于是否必须,包含关系就是必须,但是修改书籍则不是必须的)

  • 类图与对象图

 

 

关系包含依赖关系,泛化关系,组合关系,聚合关系,实现关系。

组合和聚合又统称为关联关系。

泛化是对类来的,实现是对接口来的

组合 和 聚合都是菱形,组合是实心,聚合是空心。

书籍列表和书籍是聚合关系。

计算机书籍和非计算机书籍和书籍则是 泛化关系。

第一题:

UML图中箭头分别代表什么关系?

继承关系:A = 艺术家,C 乐队和D歌手都继承于艺术家。

那么C和D为什么C是乐队呢?

聚合关系:多个歌手聚成一个乐队。菱形代表整体一方,所以C是乐队。

那么艺术家编写和演奏什么?演奏B歌曲

每个歌曲由音轨构成,音轨又构成唱片。所以E就是音轨,F就是唱片

一、题:艺术家可能是 一名歌手或一支由2名或2名以上的歌手所组成的乐队。一名歌手可以不属于任何乐队,也可以属于一个或者多个乐队。

问:那么他们的多重度是多少

D表示歌手,(2)那里多重度应该是 2 --*歌手   (以对方为主体来看,他要多少给多少,一个乐队至少对应2个以上歌手,所以2--*)

所以C代表乐队,(1)那里写0--*个乐队     (以对方为主体来看,他要多少给多少,一名歌手不属于任何乐队,也就是说一个歌手可以对应0个乐队。)

一条音轨只包含一首歌曲或空,一首歌曲可分布在多条音轨,同一歌曲在唱片中最多只能出现一次。

B代表歌曲,E代表音轨,所以(3)以音轨为主体来看,一条音轨只包含一首或者空,所以0--1

  1. 以歌曲为主体来看,一首歌可分布在多条音轨,所以是1--*
  2. 因为每个唱片由多个音轨构成,所以以唱片为主体,1--*
  3. 因为每个唱片由多个音轨构成,所以以音轨为主体,1(再多的音轨都只能要一张唱片)

以上就是每个位置的多重度。

每一条音轨都有开始位子和持续时间,一张唱片上的音轨次序是非常重要的,因此对于任意一条音轨,播放器需要准确知道,它的上一条音轨和下一条音轨是什么(可能不存在)。

给类track加上 0 --1的多重度,两端都是音轨。

 

相关文章:

软件设计(十四)-UML建模(上)

软件设计(十三)-原码、反码、补码、移码https://blog.csdn.net/ke1ying/article/details/129115844?spm1001.2014.3001.5501 UML建模包含:用例图,类图与对象图,顺序图,活动图,状态图&#xff…...

本地主机搭建服务器后如何让外网访问?快解析内网端口映射

本地主机搭建应用、部署服务器后,在局域网内是可以直接通过计算机内网IP网络地址进行连接访问的,但在外网电脑和设备如何访问呢?由于内网环境下,无法提供公网IP使用,外网访问内网就需要一个内外网转换的介质。这里介绍…...

Flink-Table API 和 SQL(基本API、流处理的表、时间属性和窗口、聚合查询、联结查询、函数、SQL客户端、连接到外部系统)

文章目录Table API 和 SQL快速上手基本 API程序架构创建表环境创建表表的查询输出表表和流的转换流处理中的表动态表和持续查询将流转换成动态表原理用 SQL 持续查询-更新查询&追加查询将动态表转换为流(Append-only、Retract、Upsert)时间属性和窗口事件时间处理时间窗口&…...

C++入门:数据抽象

数据抽象是指,只向外界提供关键信息,并隐藏其后台的实现细节,即只表现必要的信息而不呈现细节。数据抽象是一种依赖于接口和实现分离的编程(设计)技术。让我们举一个现实生活中的真实例子,比如一台电视机&a…...

WRF进阶:使用IO选项控制WRF变量输出/WRF指定变量输出添加/删除

Registry文件 WRF模式在运行求解时,会涉及到大量的数据变量运算,而这些数据变量的管理、规定、控制则需要依赖于WRF的Registry文件,简单来说,它可以理解为管理WRF数据结构的“数据字典”("Active data-dictionar…...

一文读懂功率放大器(功率放大器的特性是什么意思)

功率放大器是一种电子放大器,旨在增加给定输入信号的功率幅度。功率放大器一般要求得到一定的不失真或者较小失真的输出功率,在大信号状态下进行工作,主要是输出较大功率。功率放大器的特性介绍:1、增益功率放大器的增益主要是指放…...

微信小程序阻止页面返回(包滑动、自动返回键)

这个场景还是挺有意思的,比如某多多,只要你点左上角的返回 好家伙,满满又 花不了 的优惠券就来了,让你拥有一种消费最划算的感觉。 如果你的场景比较简单,只是对左上角的返回进行监听,只需要关闭自带的导航…...

视频直播美颜sdk的发展史

视频直播美颜sdk的出现是必然的,它的诞生就是为了让更多用户能够更好地体验到视频直播带给大家的快乐,可以说视频直播美颜sdk的发展和用户体验有着紧密联系。今天,小编不聊技术,咱们来聊一下视频直播美颜sdk的诞生以及发展历程。 …...

【Mysql】存储过程

【Mysql】存储过程 文章目录【Mysql】存储过程1.存储过程1.1 存储过程概述1.2 特点1.3 基本语法1.3.1 创建1.3.2 调用1.3.3 查看1.3.4 删除1.4 变量1.4.1 系统变量1.4.2 用户定义变量1.4.3 局部变量1.5 if1.6 参数1.7 case1.8 循环1.8.1 while1.8.2 repeat1.8.3 loop1.9 游标1.…...

Day895.MySql误删数据还原方案 -MySQL实战

MySql误删数据还原方案 Hi,我是阿昌,今天学习记录的是关于MySql误删数据还原方案的内容。 传统的高可用架构是不能预防误删数据的,因为主库的一个 drop table 命令,会通过 binlog 传给所有从库和级联从库,进而导致整…...

Java方法引用

2 方法引用 在使用Lambda表达式的时候,我们实际上传递进去的代码就是一种解决方案:拿参数做操作那么考虑一种情况: 如果我们在Lambda中所指定的操作方案,已经有地方存在相同方案,没有必要再写重复逻辑,如usePrintable…...

C++教程之迭代器Iterator

前言 之前的两篇文章我们主要了解了vector和string的相关知识,从中我们知道可以通过下标来访问vector的元素或者string的字符,但是除了这种方式还有一种更为通用的方式获取元素,那就是迭代器,这篇文章就会简单介绍迭代器的相关内…...

容联七陌:ChatGPT大模型能力为智能客服带来新方向

科技云报道原创。 近几个月来,大众对ChatGPT预期的持续走高,也影响到了智能客服领域公司的命运。 一方面,ChatGPT的出现为智能客服场景带来了更加“智能”的可能性;但另一方面,有人认为ChatGPT完全可以替代现有的智能…...

【Linux 多线程同步】使用同步和互斥实现生产消费模型

目录 1.同步的接口 2.多线程但是按顺序来执行 3.生产消费模型 4.使用互斥加同步实现生产消费模型 (采用环形队列) 同步:在保证数据安全的前提下,让线程能够按照某种特定的顺序访问临界资源,从而有效避免饥饿问题 …...

【TypeScript】TypeScript的接口和对象类型(interface):

文章目录一、使用接口约束的时候不能多一个属性也不能少一个属二、重名interface 可以合并,继承三、可选属性 使用?操作符四、任意属性 [propName: string]五、只读属性 readonly,是不允许被赋值的只能读取六、添加函数一、使用接口约束的时候不能多一个…...

7、函数与异常

目录一、函数的概念二、匿名函数三、闭包四、defer五、异常机制一、函数的概念 函数的基本形式 //函数定义。a,b是形参 func argf(a int, b int) { a a b } var x, y int 3, 6 argf(x, y) //函数调用。x,y是实参函数参数: func arg2(a, b int) { //参数类型相…...

Julia 语言环境安装

Julia 语言支持以下系统: LinuxFreeBSDmacOSWindowsAndroid Julia 安装包下载地址为:Download Julia。 Github 源码地址:GitHub - JuliaLang/julia: The Julia Programming Language。 国内镜像地址:Index of /julia-releases/…...

5.1 线程

文章目录1.概述2.多线程的特性2.1 随机性2.2 CPU分时调度2.3 线程的状态2.4 线程状态与代码对照3.多线程代码实现方式1:继承Thread3.1 概述3.2 常用方法3.3 测试多线程的创建方式14.多线程代码实现方式2:实现Runnable接口4.1 概述4.2 常用方法4.3 练习2:测试多线程的…...

通讯录的实现

一、目的:使用C实现通讯录二、包含功能:添加联系人:向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记录1000人显示联系人:显示通讯录中所有联系人信息删除联系人:按照姓名进行删除指定联系人…...

Urho3D导航

Urho3D通过使用Recast和Detour库实现导航网格生成和路径查找。 导航功能通过NavigationMesh和Navigable组件公开。 NavigationMesh从已使用Navigable组件标记的子节点收集几何体。默认情况下,可导航组件的行为是递归的:除非禁用递归,否则也…...

hello-uniapp图片懒加载实现:优化应用性能与流量的完整指南

hello-uniapp图片懒加载实现:优化应用性能与流量的完整指南 【免费下载链接】hello-uniapp uni-app框架演示示例 项目地址: https://gitcode.com/gh_mirrors/he/hello-uniapp 在移动应用开发中,图片加载是影响性能和用户体验的关键因素。hello-un…...

终极解析器构建指南:Ohm从CSV解析到自定义语法实战

终极解析器构建指南:Ohm从CSV解析到自定义语法实战 【免费下载链接】ohm A library and language for building parsers, interpreters, compilers, etc. 项目地址: https://gitcode.com/gh_mirrors/oh/ohm Ohm是一个强大的解析器构建库和领域特定语言&#…...

BabelDOC:让PDF翻译变得超级简单的终极工具指南

BabelDOC:让PDF翻译变得超级简单的终极工具指南 【免费下载链接】BabelDOC Yet Another Document Translator 项目地址: https://gitcode.com/GitHub_Trending/ba/BabelDOC BabelDOC是一款强大的PDF文档翻译工具,专门为学术论文、技术文档等复杂P…...

Outfit字体:如何用专业几何无衬线字体打造品牌视觉革命

Outfit字体:如何用专业几何无衬线字体打造品牌视觉革命 【免费下载链接】Outfit-Fonts The most on-brand typeface 项目地址: https://gitcode.com/gh_mirrors/ou/Outfit-Fonts 你是否曾为寻找一款既能体现品牌个性,又能在各种数字场景中完美呈现…...

2026届学术党必备的六大降重复率工具推荐榜单

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 基于自然语言处理技术的智能应用是AI写作工具,它能辅助用户完成文本生成、语法纠…...

1.3 装饰器与上下文管理器

📘 第一阶段 1.3 装饰器与上下文管理器学习目标:彻底掌握 Python 中用于代码复用和资源管理的高级特性,理解它们在 FastAPI 中的底层应用。 预计用时:2 天(每天约 3 小时) 重要程度:⭐⭐⭐⭐&a…...

为什么要学习大模型?从新手到专家:AI大模型学习与实践完全指南

一、初聊大模型 1、什么是大模型? 大模型,通常指的是在人工智能领域中的大型预训练模型。你可以把它们想象成非常聪明的大脑,这些大脑通过阅读大量的文本、图片、声音等信息,学习到了世界的知识。这些大脑(模型&…...

SEO 优化工具如何进行本地优化

SEO 优化工具如何进行本地优化 在当今数字化时代,本地优化成为了企业和个人网站在百度搜索中获得高排名的关键因素之一。本地优化,即通过特定策略提升一个网站在特定地理位置的搜索排名,这对于希望在本地市场中获得更多流量的企业尤为重要。…...

离散化与差分结合应用例题精讲

一、离散化是什么? 1.为什么用离散化 引入:当题目给我们几个区间涂色,总长为20亿,要求我们统计最后有颜色的区域。 聪明的我们立刻就想建立一个数组,每接收到一个区间就遍历该区间打上标记。最后遍历整个数组统计带…...

FireRedASR Pro效果展示:长难句识别准确,抗噪能力惊艳

FireRedASR Pro效果展示:长难句识别准确,抗噪能力惊艳 1. 语音识别新标杆 在嘈杂的会议室里,一段夹杂着咳嗽声和键盘敲击的录音正在播放。令人惊讶的是,FireRedASR Pro几乎一字不差地将这段对话转换成了文字,连专业术…...