UML图的各种类型以及软件设计师考试考察的方式

UML建模

前言
常见的UML的类型
UML 比前两题是更难的(略高,但是学会就可以了。前两题是:数据流图,数据库的设计),因为UML图有很多类型:用例图,类图与对象图,顺序图,活动图,状态图,通信图,构件图
所有会考察的UML图的类型### 用例图:
用例图在案例分析中,主要考试2个方面:
1有关项目的详细描述(会把一个完整的用例图的某些参与者和某些用例给扣掉,让大家根据题干的内容以及用例图已有的结构来分析哪个位置的用例叫什么名称,哪个位置的参与者对应的是哪个角色)
2要根据题目的意思,来分析2个用例之间是什么关系,是包含还是扩展,或者是泛化关系。
要求:对参与者和用例,紧扣题干,做一一匹配(前提是,需要知道在用例图中,基本的图例所表达的含义。)
例如:
图中人是参与者,用箭头指向的各个用例代表了这个参与者会使用到这些用例,然后要区分上面的用例是新增书籍,下方是查询书籍,往往是分析用例之间的关系,来分析这2个用例。在这里涉及到了扩展关系。根据是否涉及到扩展关系,来分析,哪个位置是新增书籍信息,哪个是查询书籍信息。
包含关系是include.(必须)
扩展关系是extent(非必须)
包含关系是指A用例会使用到某个用例,就是包含关系。
区分包含和扩展: 例如,查询书籍,我可以直接查询,不需要使用其他用例,但是我发现查询到的信息有误,我需要修改信息,那么我需要用到扩展,修改有时候需要有时不需要,但是包含是必须。
例如,在取款的时候,默认每次都会吐钱 ,那么每次都是包含关系。但是每次都提示是否打印凭条,那么打印凭条就不是必须的,就是扩展。

类图与对象图:

考察的方式有3种:
1 填类名(主要),方法名,属性名
类图与对象图
填类名(最常考):要根据题干的信息,要确定在一个类图当中哪一个类的类名 是什么,例如,把图中的类名都删掉,删除之后只知道,有这么几个类或者说对象,又知道之间的关系,来分析,哪个位置是哪个类。填类名
2 填多重度(主要)
有以下几种表达方式,第一种代表了一个集合中的一个对象对应另外一个集合中的几个对象,1就是对应一个对象,2就是对应2个对象
表达式还有另外的几种表达方式,其中,0…(0到)和*是等价的,它们都代表了一个集合的一个对象对应了另一个集合的多个对象,这多个对象可以是0个,也可以是多个。等同的表达方式

另外一种形式 ,就是一个集合的一个对象对应了另一个集合的一个或多个对象。或者是1个到多个,但是至少是一个

填多重度: 在这里也有多重度,例如圈起来的1, 0…*,这就是多重度
填多重度填关系:
关系包括: 依赖关系,泛化关系,关联关系,实现关系
其实真正要了解的是泛化、组合、聚合。依赖都出现的少。
一般呢,记得泛化以及实现,因为实现是对接口,泛化是对类,所以泛化和实现的箭头都是空心箭头,只是泛化关系用的是实线,实现关系用的是虚线。
各种关系

组合关系和聚合关系都是用菱形来表示的, 组合关系是实心的菱形,聚合关系是空心的菱形。
各种关系书籍列表和书籍之间的聚合关系,空心的菱形,借阅记录列表和借阅记录也是空心的菱形,也就是聚合关系。
在这里插入图片描述非计算机类书籍与书籍, 计算机类书籍与书籍都是空心的箭头,也就是泛化关系
在这里插入图片描述

活动图:

活动图是和我们之前接触的程序里的流程图非常接近的一种图。这种图能表现整个处理流程的基本情况、分支的状态,例如在图中首先,用户下订单,然后从一个粗的横线,引出了两个分支,一方面是生成送货单,另一方面是用户选择支付方式,在支付方式选择这块,是一个菱形,菱形指示了如果判断为真如何,判断为假如何,这种结构和程序流程图是保持一致的。
在这里插入图片描述这个粗横线代表的是,从这个粗横线开始产生了多少的并行的线程。注意: 并行的线程。如图,产生了2个分支,然后在下一个粗横线进行了合并,也就是在这里产生了2个分支。
活动图分为带甬道的活动图和不带甬道的活动图,带甬道的活动图里指示了不同的对象,这样划分出来后,我们可以更加明确,哪个活动是归属与谁的,有它相应的责任人。
在这里插入图片描述对于这种图,我们需要了解: 一个流程和一个图的对应,我们扣出一些空来,我们是否能够给它还原的问题。其实,所有的图要解决的问题是类似的,都是把完整的图抠出一些空,看能不能把它恢复完整。解决机制也是一样的,就是自己根据表述,来尝试画这个图, 自己画这个图会怎么画,然后再根据标准的图例来判定哪些位置应该有哪些操作。

状态图:

表现得是状态的变迁,所以把状态图也归为动态图,所以在状态图中,往往是以状态为节点。
例如图中的off on 都是状态。
在这里插入图片描述

那么,建线代表的是事件,触发事件。 由一种状态,触发一个事件,会进入另外一种状态,从而导致了状态的变迁,这就是状态图。
状态图在考试的时候,如何考察: 往往会给出一个系统描述,描述的过程中会给出多种状态的变迁,然后会把状态图扣掉,大家来填充状态以及状态变迁的条件,也就是触发的事件(这种题往往比较容易解决,因为状态在描述的过程中,我们好识别有哪些状态,需要先识别一共有哪几种状态,一种状态到另一种 状态需要什么条件,恢复到上一种状态需要什么条件都列出来)在这里插入图片描述会员的升级和降级就可以使用状态图来表现。例如,普通的会员,有银卡会员,金卡会员,钻石会员,积分达到多少可以升级会员,从5000到银卡,累积10000到金卡,状态图可以清晰的展示出来。

顺序图:

顺序图有这么一些组成的基本元素。有对象,一般写在顶端,每一个对象引出一条生命线,用虚线画下来,例如,在图中每一个对象都是如此。

在这里插入图片描述整体的执行顺序是从上到下走,可以根据图中的标号看出第n步,例如图中第一步是卡片的插入,第二部是创建相应的session,第3,4步依次下来。有箭头的方向代表了对象之间进行相应的交互的时候是从谁到谁来发送相应的消息,每一个箭头所对应的其实是消息,以第一个消息为例,实际上是CardReader(读卡器)想ATM系统发送了相应的消息。在这里插入图片描述
顺序图最大的特点就是表现出了处理事物的时候,它的时间顺序情况如何,按照顺序一步一步下来的。
顺序图里,考试中考察方式: 核心点是放在消息里,因为顺序图是一种动态图,动态图表现的是对象之间的交互关系,所以往往会把顺序图中的某些消息抠掉,让大家根据处理流程来分析某一步是干嘛的,例如图中分析第6,7号是干嘛的,需要我们依据题目给出的描述,根据前面已有的1234条已有的完成的任务综合分析后面还有哪些步骤要走(往往已经把这些专有的消息、名称都已经列出来了,相当于做选择题,让大家选择合适的词语来填到这个位置来)。其次是填对象名。
顺序图往往比较简单。

通信图:

又称之为协作图,其实是顺序图的另一种表达方式。
在这里插入图片描述

我们知道顺序图是上面一排对象,引出相应的生命线(虚线),对象之间的一些交互,以顺序的方式表达了一些消息的传递,通过这种方式来让人清晰的了解,整个流程执行顺序是怎么样的,涉及到了哪些对象,哪些对象参与什么操作。
通信图和顺序图是类似的。
通信图是和顺序图结构有了很大的变化,通信图的对象是一些节点,对象的交互还是通过箭头来标识,消息是在箭头旁边标注。通信图和顺序图相比,就是时间上没有那么明晰,其他方面基本保持一致。所以,顺序图和通信图统称为交互图。
考试的时候一般会把对象抠掉一些,把需要传递的消息抠掉一些,然后做成填空题。通信图和顺序图的差异: 顺序图会强调时间顺序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/209514.shtml

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

相关文章

3_CSS层叠样式表基础

第3章-CSS层叠样式表基础 学习目标(Objective) 掌握标签选择器的使用掌握类选择器的使用了解id选择器和通配符选择器掌握font属性和color属性的应用 1.HTML的局限性 如果要改变下高度或者变一个颜色,就需要大量重复操作 总结: HTML满足不了设计者的需…

Emacs之dired模式重新绑定键值v(一百三十一)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

uniapp实战 —— 轮播图【数字下标】(含组件封装,点击图片放大全屏预览)

组件封装 src\components\SUI_Swiper2.vue <script setup lang"ts"> import { ref } from vue const props defineProps({config: Object, })const activeIndex ref(0) const change: UniHelper.SwiperOnChange (e) > {activeIndex.value e.detail.cur…

Python——数据容器

数据容器操作的异同点 项目列表list元组tuple字符串str集合set字典dict元素数量支持多个支持多个支持多个支持多个支持多个元素类型任意任意仅字符任意key&#xff1a;除字典外任意类型&#xff1b;value&#xff1a;任意类型下标索引支持支持支持不支持不支持重复元素支持支持…

yarn link使用(npm link)

使用场景 前端开发中&#xff0c;两个项目相互依赖时&#xff0c;使用yarn link(npm link)链接 例如&#xff1a;A项目依赖于本司自己的UI库B&#xff0c;当我们修改了UI库B中的某些代码时&#xff0c;需本地验证后再发布到私服&#xff0c;此时A项目与UI项目B通过yarn link连…

数据可视化:解锁企业经营的智慧之道

在现代企业管理中&#xff0c;数据可视化已经成为了一项重要的工具。它不仅仅是简单地展示数据&#xff0c;更是提供了深入理解数据、做出更明智决策的方法。作为一名可视化设计从业人员&#xff0c;我经手过一些企业自用的数据可视化项目&#xff0c;今天就来和大家聊聊数据可…

数字化升级,智慧医疗新时代——医院陪诊服务的技术创新

在信息技术飞速发展的今天&#xff0c;医疗服务正迎来数字化升级的新时代。本文将探讨如何通过先进技术的应用&#xff0c;为医院陪诊服务注入更多智慧元素&#xff0c;提升患者和家属的医疗体验。 1. 创新医疗预约系统 # Python代码演示医疗预约系统的简单实现 class Medic…

输入框的透明度影响placeholder的透明度怎么解决

有一个需求是需要写如上图所示的输入框。 首先想到的是调整输入的透明度 <div class"inputDiv"><img src"./images/search.png" /><input type"text" class"myInput" placeholder"请输入标题关键字"/> &…

飞天使-linux操作的一些技巧与知识点

命令行光标移动到行首行尾 ctrl a 跳到首 ctrl e 跳到尾/etc/passwd rpm 包格式 RPM&#xff08;Red Hat Package Manager&#xff09;是一种常用的Linux软件包管理系统&#xff0c;它使用特定的命名规则来标识和命名软件包。RPM包的名称格式通常遵循以下规则&#xff1a;…

Qt基础-修改Qt Creator界面字体

Qt Creator设计时字体太小,有时需要自定义一下,本文讲解如何修改Qt Creator界面字体。 一、创建样式文件 创建CSS文件,定义名称为custom-style.css 编写内容: QWidget { font: 12pt "Microsoft YaHei"; }QPlainTextEdit { font: 12pt "Microsoft YaHei&…

FPGA时序分析与约束(0)——目录与传送门

一、简介 关于时序分析和约束的学习似乎是学习FPGA的一道分水岭&#xff0c;似乎只有理解了时序约束才能算是真正入门了FPGA&#xff0c;对于FPGA从业者或者未来想要从事FPGA开发的工程师来说&#xff0c;时序约束可以说是一道躲不过去的坎&#xff0c;所以这个系列我们会详细介…

Python的sort()与sorted()排序函数的区别

文章目录 一、工具二、需求三、简单的使用例子四、原理分析Timsort算法主要特点&#xff1a;Timsort算法的工作原理&#xff1a;sort() 方法和 sorted() 函数的差异&#xff1a; 五、Python中的单例实现简单示例 一、工具 Python 3.10.0 pycharm 2022 二、需求 最近做项目的…

微服务学习:RestTemplateWebClient发起的http请求实现远程调用

http请求做远程调用是与语言无关的调用&#xff0c;只要知道对方的ip,端口&#xff0c;接口路径&#xff0c;请求参数即可 启动类中配置&#xff1a; Beanpublic RestTemplate restTemplate(){return new RestTemplate();} Sevice中书写方法 get Autowiredprivate RestTemp…

2023-2024 年重庆市职业院校技能大赛 高职组“软件测试”赛项样题

2023-2024 年重庆市职业院校技能大赛 高职组“软件测试”赛项样题 单元测试要求分析、代码设计、设计测试数据、编写测试脚本和 测试执行等&#xff1b;测试计划、测试报告文档设计与编写&#xff1b;Web 端测试用例 设计、测试执行和 Bug 记录&#xff1b; 自动化测试要求分析…

点击按住说话按钮事件有延迟

问题原因&#xff1a; 该问题原因是由于系统的某些手势 delaysTouchesBegan 属性为 YES&#xff0c;当按钮处在某些特定位置时触摸事件会先被这些系统的手势拦截&#xff0c;系统不响应才会继续分发&#xff0c;而按钮的 UIControlEventTouchDown 事件是需要立即响应的&#xf…

Python数据处理的六种方式总结,Python零基础学习

文章目录 前言1、dedup()去重并排序2、traverse()拆分嵌套数组3、filter()数据筛选4、groupby()分组运算5、select()遍历结果集6、sort()数据排序 总结 前言 在 Python 的数据处理方面经常会用到一些比较常用的数据处理方式&#xff0c;比如pandas、numpy等等。 今天介绍的这…

vue图片预览 90度旋转

要在 Vue 3 中实现点击按钮让图片旋转 90 度&#xff0c;你可以使用 CSS 转换和 Vue 的事件处理来完成。这里是一个基本的示例&#xff1a; 首先&#xff0c;在你的组件的模板中&#xff0c;添加一个按钮和一个应用转换的图像&#xff1a; <template> <div> <…

使用粗糙贴图制作粗纹皮革手提包3D模型

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 当谈到游戏角色的3D模型风格时&#xff0c;有几种不同的风格&#xf…

UniGui使用CSS优化PageControl

如题直接上代码 .x-tab-bar-default-top{background-image:none!important;background-color:#FFF !important;border-color:#f0f0f0 !important;border-left:none!important;border-right:none!important}.x-tab-bar-strip-default{border-color:#f0f0f0 !important;backgrou…

Redisson出现问题总结

org.redisson.client.RedisAuthRequiredException: NOAUTH Authentication required… channel: 出现此问题的原因为没有redis权限。解决方案在setAddress()后面加上setPassword()方法。 config.useSingleServer().setAddress("redis://localhost:6379").setPasswo…