6.2.面向对象技术-UML图

news2024/9/22 4:05:13

UML

  • UML
    • 事物
    • 关系
      • 依赖
      • 关联
        • 聚合
        • 组合
      • 泛化
      • 实现
    • 类图
    • 对象图
    • 用例图
    • 序列图
    • 通信图
    • 状态图
    • 活动图
    • 构件图
    • 部署图
    • 练习题

UML

上午选择题3-4分,下午案例分析必考

UML是统一建模语言,和程序设计语言并无关系。

UML三个要素:UML的基本构造块、支配这些构造块如何放置在一起的规则和运用与整个语言的一些公共机制

UML的基本构造块包括:事物(对模型中最具有代表性的成分的抽象)、关系把事务结合在一起)、(聚集了相关的事物)。

UML中有四种事物:结构事物、行为事物、分组事物、注释事物

事物

  • 结构事物:模型的静态部分,如、接口、用例、构件等;如下图示例:
    在这里插入图片描述

  • 行为事物:模型的动态部分,如交互、活动、状态机 在这里插入图片描述

  • 分组事物:模型的组织部分,如包;了解

  • 注释事物:模型的解释部分,依附于一个元素或一组元素之上对其进行约束或解释的简单符号。了解
    在这里插入图片描述

关系

在这里插入图片描述
需要知道各个关系以及各个图例对应的关系

依赖

一个事物的语义依赖于另一个事物的语义的变化而变化。
带实心箭头的虚线,箭头指向被使用的类
一个类依赖于另一个类的定义。比如某人要过河,需要借用一条船,此时人与船之间的关系就是依赖

关联

是一种结构关系,描述了一组链,链是对象之间的连接。分为组合聚合,都是部分和整体的关系,其中组合事物之间关系更强。两个类之间的关联,实际上是两个类所扮演角色的关联,因此,两个类之间可以有多个由不同角色标识的关联。
实线,0…1,0…* 表示一个类与另一个类的关系 * 表示多个,1表示一个
类与类之间的关系,如下图中,老师与学生是双向关联,老师有多名学生,学生也可能有多名老师。但学生与某课程间的关系为单向关联,一名学生可能要上多门课程,课程是个抽象的东西他不拥有学生。

*
*
1
*
老师
学生
课程
聚合

带空心菱形的实线,菱形指向整体
部分可以离开整体而单独存在,是一种“弱拥有”的关系。如车和轮胎是整体和部分的关系, 轮胎离开车仍然可以存在

汽车
引擎
轮胎
组合

带实心菱形的实线,菱形指向整体
部分不能离开整体单独存在,这种关系比聚合更强,也称为强聚合。如公司和部门是整体和部分的关系, 没有公司就不存在部门

公司
部门

泛化

一般特殊的关系,子类和父类之间的关系
带三角箭头的实线,箭头指向父类。
是一种继承关系。例如:动物和猫/狗的关系,猫/狗是动物的一种

动物

实现

一个类元指定了另一个类元保证执行的契约。
带三角箭头的虚线,箭头指向接口
父类是一个接口,子类实现了父类接口里的所有抽象方法。比如:大雁需要飞行,就要实现fly()接口

大雁
+fly()
«interface»
飞翔
+fly()

类图

  • 类图:静态图,为系统的静态设计视图,展现一组对像、接口、协作和它们之间的关系。
  • 多重度:指的是不同类之间的联系,类似于数据库设计的表与表的关系
    例如1…*:一对多,一个Company对应多个Department,1个Company对于多个Office
    在这里插入图片描述

对象图

比较少见
对象图:静态图,展现某一时刻一组对象及它们之间的关系,为类图的某一快照。在没有类图的前提下,对象图就是静态设计视图。
在这里插入图片描述

用例图

  • 用例图:静态图,展现了一组用例、参与者以及它们之间的关系。
  • 用例图中的参与者是人、硬件或其他系统可以扮演的角色;用例是参与者完成的一系列操作
  • 用例之间的关系:包含(include)、扩展(extend)、泛化

在这里插入图片描述
包含是一定要去做的事情;拓展是可做可不做的事情;泛化是多个实现方式

序列图

序列图:即顺序图,动态图,是场景的图形化表示,描述了以时间顺序组织的对象之间的交互活动

同步消息(进行阻塞调用,调用者中止执行,等待控制权返回,需要等待返回消息,用实心三角箭头表示)、异步消息(发出消息后继续执行,不引起调用者阻塞,也不等待返回消息,由空心箭头表示)、返回消息(由从右到左的虚线箭头表示)三种。
在这里插入图片描述

通信图

了解
通信图:动态图,即协作图,是顺序图的另一种表示方法,也是由对象和消息组成的图,只不过不强调时间顺序,只强调事件之间的通信,而且也没有固定的画法规测,和顺序图统称为交互图。如下:
在这里插入图片描述

状态图

了解
状态图:动态图,展现了一个状态机,描述单个对象在多个用例中的行为,包括简
单状态和组合状态
。转换可以通过事件触发器触发,事件触发后相应的监护条件会
进行检查。

状态图中转换和状态是两个独立的概念,如下:图中方框代表状态,箭头上的代表
触发事件,实心圆点为起点和终点。下图描述的就是一个图书的状态变化
在这里插入图片描述

活动图

活动图:动态图,是一种特殊的状态图,展现了在系统内从一个活动到另二个活动
的流程。

活动的分岔和汇合线是一条水平粗线

每个分岔的分支数代表了可同时运行的线程数。

活动图中能够并行执行的是在一个分岔粗线下的分支上的活动。
在这里插入图片描述

构件图

了解
构件图(组件图):静态图,为系统静态实现视图,展现了一组构件之间的组织和依赖
在这里插入图片描述

部署图

了解
部署图:静态图,为系统静态部署视图,部署图描述的事物理模块的节点分布。它与构件图相关
通常一个结点包含一个或多个构件。其依赖关系类似于包依赖,因此部署组件之间的依赖是单向的类似于包含关系。
在这里插入图片描述

练习题

【2020】UML图中,对象图展现了(),()所示对象图与下图所示类图不一致
在这里插入图片描述

(A)一组对象、接口、协作和它们之间的关系
(B)一组用例、参与者以及它们之间的关系
©某一时刻一组对象以及它们之间的关系
(D)以时间顺序组织的对象之间的交互活动
在这里插入图片描述

答案C D
A和B是1对多关系,D是多对1

【2019】采用面向对象方法进行软件开发时,将汽车作为一个系统。以下()之间不属于组合(Composition)关系。
(A)汽车和座位
(B)汽车和车窗
©汽车和发动机
(D)汽车和音乐系统

答案D
组合是强关联,聚合是弱关联

【2014】如下所示的UML序列图中,(42)表示返回消息,Account类必须实现的方法有(43)。
在这里插入图片描述
(42)
A.tansID
B.balance
C.withdraw
D.deposit
(43)
A.start
B.checkBalance(withdraw()
C.deposit
D.checkBalance()withdraw()和deposit()

答案B D

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

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

相关文章

代码随想录算法训练营第二十一天 | 77. 组合, 216.组合总和III , 17.电话号码的字母组合

目录 77. 组合 思路 回溯法三部曲 方法一: 回溯未剪枝 方法二:回溯剪枝 心得收获 216.组合总和III 思路 方法一:回溯-没有使用sum来统计path里元素的总和 方法二:回溯,使用sum来保存当前路径上的总和 心得…

如何应用OceanBase 的实时SQL诊断,解决AP场景下的痛点

随着数据量的快速增长与用户需求的变化,数据库的管理与优化工作日益凸显其重要性。作为DBA及开发者,您是否曾面临以下挑战: ○ 分析场景下,在处理大规模数据的且耗时较长的查询是,常涉及海量数据的处理及复杂的计算&…

Python 设计模式之工厂函数模式

文章目录 案例基本案例逐渐复杂的案例 问题回顾什么是工厂模式?为什么会用到工厂函数模式?工厂函数模式和抽象工厂模式有什么关系? 工厂函数模式是一种创建型设计模式,抛出问题: 什么是工厂函数模式?为什么…

Vue3学习笔记第一天

MVVM Vue是一种用于构建用户界面的JavaScript框架。MVVM 是Vue采用的一种软件架构模式,用于构建交互式的用户界面。它的全称是 Model-View-ViewModel,这三个部分分别代表了应用程序的不同层次和角色: Model(模型)&…

【ARM】v8架构programmer guide(3)_ARMv8的寄存器

目录 4.ARMv8 registers 4.1 AArch64 特殊寄存器 4.1.1 Zero register 4.1.2 Stack pointer (SP) 4.1.3 Program Counter (PC) 4.1.4 Exception Link Register(ELR) 4.1.5 Saved Process Status Register (SPSR) 4.2 Proc…

性能测试基础概念

前言👀~ 上一章我们介绍了单元测试Junit的使用,今天我们来讲解一下性能测试的一些基础概念为后面我们进行性能测试做铺垫 什么是性能测试? 性能测试和功能测试有什么区别? 影响一个软件性能因素有哪些? 为什么要进…

循环神经网络和自然语言处理一

目录 一.分词 1.分词工具 2.分词的方法 3.N-gram表示方法 二.向量化 1.one-hot编码 2.word embedding 3.word embedding API 4.数据形状改变 既然是自然语言,那么就有字,词,句了 一.分词 1.分词工具 tokenization,jie…

Outlook Pst文件大小最大多大?如何分开缩减?

簡介 預設情況下,personal Folders (.pst) 和離線 Outlook Data File (.ost) 檔案在 Microsoft Outlook 2010 和 Outlook 2013 中為 Unicode 格式。 .pst 和 .ost 檔案的整體大小有 50 GB 的預先設定限制。 此限制大於 2007 和 Outlook 2003 Outlook Unicode .pst …

零基础5分钟上手亚马逊云科技AWS核心云开发/云架构知识 - 成本分析篇

简介: 欢迎来到小李哥全新亚马逊云科技AWS云计算知识学习系列,适用于任何无云计算或者亚马逊云科技技术背景的开发者,让大家零基础5分钟通过这篇文章就能完全学会亚马逊云科技一个经典的服务开发架构方案。 我将每天介绍一个基于亚马逊云科…

数据结构 - 相邻节点迭代器

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 文章目录 引言一、相邻节…

nuxt3实战:完整的 nuxt3 + vue3 项目创建与useFetch请求封装

一. 安装 pnpm dlx nuxilatest init <project-name>// ornpx nuxilatest init <project-name>如遇到报错 手动安装&#xff1a; 浏览器访问报错https请求地址&#xff1a; 点击tar(项目初始文件的下载地址)对应地址,下载starter-3.tar.gz 包到本地 本地创建项…

【Android】使用网络技术——WebView的用法、http协议、OKHttp、解析XML、JSON格式数据笔记整理

WebView的用法 新建一个WebView项目 修改activity_main中的代码&#xff1a; <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:id"id/main"and…

STM32F1之SysTick系统定时器详细解析

目录 1. 简介 2. SysTick功能框图 3. SysTick寄存器 3.1 SysTick控制及状态寄存器 3.2 SysTick重装载数值寄存器 3.3 SysTick当前数值寄存器 3.4 SysTick校准数值寄存器 4. SysTick定时时间计算 5. SysTick寄存器结构体 6. 写一个us级延时函数 7. 写一个…

240806-RHEL 无法通过 ssh username@ip 远程连接,报错:Connection closed by ip port 22

A. 原因排查 遇到这个错误通常意味着 SSH 服务可能在目标主机上没有正常运行&#xff0c;或有防火墙/网络配置问题。以下是一些排查步骤&#xff1a; 检查 SSH 服务状态&#xff1a; 确认 SSH 服务是否正在目标主机上运行。 sudo systemctl status sshd重启 SSH 服务&#xff…

探索 Python 异步通信的奥秘:WebSockets 库的神奇之旅

文章目录 探索 Python 异步通信的奥秘&#xff1a;WebSockets 库的神奇之旅背景&#xff1a;为何选择 WebSockets&#xff1f;什么是 websockets 库&#xff1f;安装 websockets 库5个简单的库函数使用方法场景应用示例常见问题与解决方案总结 探索 Python 异步通信的奥秘&…

用Manim实现三维坐标系的绘制

1.ThreeDAxes 函数 ThreeDAxes是 Manim 中用于创建三维坐标系的类。在manim中常用的三位坐标绘制函数是&#xff1a; class ThreeDAxes(x_range(-6, 6, 1), y_range(-5, 5, 1), z_range(-4, 4, 1), x_length10.5, y_length10.5, z_length6.5, z_axis_configNone, z_normala…

数据仓库怎么建设?一文详解数仓的建设过程!

随着信息技术的飞速发展&#xff0c;企业不仅需要存储和管理海量数据&#xff0c;更迫切需要从这些数据中提取有价值的信息&#xff0c;以支持复杂的决策制定过程。数据仓库不仅是存储数据的场所&#xff0c;更是支持复杂查询、报告和数据分析的强有力工具&#xff0c;其建设已…

JavaScript异步简介|Promise快速入门

异步&#xff08;Asynchronous, async&#xff09;是与同步&#xff08;Synchronous, sync&#xff09;相对的概念。 异步 JavaScript 简介 异步编程技术使你的程序可以在执行一个可能长期运行的任务的同时继续对其他事件做出反应而不必等待任务完成。与此同时&#xff0c;你…

Linux工具|运维工具rename常用命令详解

&#x1f4eb; 作者简介&#xff1a;「六月暴雪飞梨花」&#xff0c;专注于研究Java&#xff0c;就职于科技型公司后端工程师 &#x1f3c6; 近期荣誉&#xff1a;华为云云享专家、阿里云专家博主、腾讯云优秀创作者、ACDU成员 &#x1f525; 三连支持&#xff1a;欢迎 ❤️关注…

【vulnhub】Wakanda :1靶机

靶机安装 下载地址&#xff1a;https://download.vulnhub.com/wakanda/wakanda-1.ova 运行环境&#xff1a;Virtual Box 信息收集 靶机IP扫描 netdiscover -i eth0 -r 192.168.7.0/24 端口扫描 nmap -A 192.168.7.243 -p- 80端口开启了http服务&#xff0c;在3333端口开启…