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…

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

在现代企业管理中&#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;…

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

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

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

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

使用粗糙贴图制作粗纹皮革手提包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…

Hugging Face 给普通用户提供了一个 2 vCPU 16GB 的免费空间

Hugging Face 给普通用户提供了一个 2 vCPU 16GB 的免费空间&#xff0c;并且支持部署 Gradio 构建的应用程序&#xff0c;非常方便&#xff0c;下面我们进入 https://huggingface.co/spaces/ &#xff0c;点击创建空间。

unity 模型生成PNG图片并导出(可以任意控制方向和大小,本文提供三种方案)

提示&#xff1a;文章有错误的地方&#xff0c;还望诸位大神不吝指教&#xff01; 文章目录 前言一、插件RuntimePreviewGenerator&#xff08;方案一&#xff09;二、unity 官方提供的接口&#xff08;方案二&#xff09;三、方法三&#xff0c;可以处理单个模型&#xff0c;也…

Linux下C++静态链接库的生成以及使用

目录 一.前言二.生成静态链接库三.使用静态链接库 一.前言 这篇文章简单讨论一下Linux下如何使用gcc/g生成和使用C静态链接库&#xff08;.a文件&#xff09;。 二.生成静态链接库 先看下目录结构 然后看下代码 //demo.h#ifndef DEMO_H #define DEMO_H#include<string&g…

线程状态:深入理解多任务并发编程中的精髓

目录 引言 1. 线程状态概述 1.1 定义 1.2 线程状态图 2. 线程状态的转换 2.1 新建到就绪 2.2 就绪到运行 2.3 运行到阻塞 2.4 运行到等待和超时等待 2.5 运行到终止 3. 实际编程中的线程状态管理 3.1 合理使用wait()和notify() 3.2 谨慎处理阻塞状态 3.3 使用线程…

面试题之Docker篇

1、Docker 是什么&#xff1f; Docker一个开源的应用容器引擎&#xff0c;是实现容器技术的一种工具&#xff0c;让开发者可以打包他们的应用以及环境到一个镜像中&#xff0c;可以快速的发布到任何流行的操作系统上。 2、Docker的三大核心是什么? 镜像&#xff1a;Docker的镜…

Elastic Support Hub 转向语义搜索

作者&#xff1a;Chris Blaisure 我们很高兴与大家分享 Elastic Support Hub 最近的增强功能&#xff1a;它现在由语义搜索提供支持&#xff01; 但在我们更详细地了解对 Elastic Support Hub 所做的更改及其对客户的影响之前&#xff0c;我们需要花点时间解释语义搜索的概念&…

【安卓】安卓xTS之Media模块 学习笔记(3) VTS测试

1. 背景 接下来进行正式的VTS测试。本章节还是以Media模块相关进行介绍。 VTS主要测的是内核和HAL层&#xff0c;media的hal层是以openMax&#xff08;即将废弃&#xff0c;今日2023.12&#xff09; 和 Codec2 (后续主流) 接口为主。 这里我们只看Codec2的要求&#xff0c;CDD…

MongoDB的插入文档、更新文档语句

本文主要介绍MongoDB的插入文档、更新文档语句。 目录 MongoDB插入文档MongoDB更新文档 MongoDB插入文档 在MongoDB中&#xff0c;可以通过使用insertOne或insertMany方法向集合中插入文档。 insertOne方法可以插入一个文档&#xff0c;例如&#xff1a; db.collection.inse…

Android 等待view 加载布局完成 (包括动态生成View)

前言 在实际开发中&#xff0c;有很多组件需要 根据数据&#xff0c;动态生成&#xff0c;或者 追加 / 减少 子view&#xff0c;由于View布局需要时间&#xff0c;此时想要获取父View的最新宽高值&#xff0c;要么手动测量&#xff0c;要么等待布局完成后再获取&#xff1b; …