UML建模都有那些图(架构师必刷)

分析&回答

统一建模语言(Unified Modeling Language,UML)又称标准建模语言。

UML从考虑系统的不同角度出发,定义了用例图类图对象图包图状态图活动图序列图通信图构件图、部署图等10种图。下图中红字部分为 UML2.0新增。

在这里插入图片描述

面向对象动态建模,用于建立行为的实体间行为交互的四种图:状态图(Stage Diagram),序列图(Sequence Diagram),通讯图(Communication Diagram),活动图(Activity Diagram) 。
序列图”与“协作图”表述的是相似的消息,“活动图”是“状态图”的一种。

  • 静态结构图Static Structure Diagram
    用例图Use Case Diagram
    类图Class Diagram
    包图Package Diagram
    对象图Object Diagram
  • 交互图Interaction Diagram
    顺序图Sequence Diagram
    通讯图Communication Diagram (UML1.0是协作图)
    状态图State chart Diagrams
    活动图Activity Diagrams
  • 实现图 Implementation Diagrams
    构件图Component Diagram
    部署图Deployment Diagram

用例图

用例图Use case diagrams描述了作为一个外部的观察者的视角对系统的印象。强调这个系统是什么而不是这个系统怎么工作。

用例图与情节紧紧相关的。情节scenario是指当某个人与系统进行互动时发生的情况。下面是一个医院门诊部的情节。

“一个病人打电话给门诊部预约一年一次的身体检查。接待员找出在预约记录本上找出最近的没有预约过的时间,并记上那个时间的预约记录。”

用例Use case是为了完成一个工作或者达到一个目的的一系列情节的总和。角色actor是发动与这个工作有关的事件的人或者事情。角色简单的扮演着人或者对象的作用。下面的图是一个门诊部Make Appointment用例。角色是病人。角色与用例的联系是通讯联系communication association(或简称通讯communication)
在这里插入图片描述

角色是人状的图标,用例是一个椭圆,通讯是连接角色和用例的线。

一个用例图是角色,用例,和它们之间的联系的集合。我们已经把Make Appointment作为一个含有四个角色和四个用例的图的一部分。注意一个单独的用例可以有多个角色。
在这里插入图片描述

用例图在三个领域很有作用。

决定特征(需求)。当系统已经分析好并且设计成型时,新的用例产生新的需求

客户通讯。使用用例图很容易表示开发者与客户之间的联系。

产生测试用例。一个用例的情节可能产生这些情节的一批测试用例。

类图

类图Class diagram通过显示出系统的类以及这些类之间的关系来表示系统。类图是静态的-它们显示出什么可以产生影响但不会告诉你什么时候产生影响。

下面是一个顾客从零售商处预定商品的模型的类图。中心的类是Order。连接它的是购买货物的Customer和Payment。Payment有三种形式:Cash,Check,或者Credit。订单包括OrderDetails(line item),每个这种类都连着Item。
在这里插入图片描述

UML类的符号是一个被划分成三块的方框:类名,属性,和操作。抽象类的名字,像Payment是斜体的。类之间的关系是连接线。

类图有三种关系。

关联association-表示两种类的实例间的关系。如果一个类的实例必须要用另一个类的实例才能完成工作时就要用关联。在图中,关联用两个类之间的连线表示。

聚合aggregation-当一个类属于一个容器是的一种特殊关系。聚合用一个带菱形的连线,菱形指向具有整体性质的类。在我们的图里,Order是OrderDetails的容器。

泛化generalization-一个指向以其他类作为超类的继承连线。泛化关系用一个三角形指向超类。Payment是Cash,Check和Credit的超类。

一个关联有两个尾端。每个尾端可以有一个角色名role name来说明关联的作用。比如,一个OrderDetail实例是一个Order实例的项目。

关 联上的方向性navigability箭头表示该关联传递或查询的方向。OrderDetail类可以查询他的Item,但不可以反过来查询。箭头方向同 样可以告诉你哪个类拥有这个关联的实现;也就是,OrderDetail拥有Item。没有方向性的箭头的关联是双向。

关 联尾端的数字表示该关联另一边的一个实例可以对应的数字端的实例的格数,通过这种方式表达关联的多样性multiplicity。多样性的数字可以是一个 单独的数字或者是一个数字的范围。在例子中,每个Order只有一个Customer,但一个Customer可以有任意多个Order。

下面这个表给出了最普遍的多样性示例。
在这里插入图片描述

每个类图包括类,关联和多样性表示。方向性和角色是为了使图示得更清楚时可选的项目。

包和对象图

为了简单地表示出复杂的类图,可以把类组合成包packages。一个包是UML上有逻辑关系的元件的集合。下面这个图是是一个把类组合成包的一个商业模型。

dependencies关系。如果另一个的包B改变可能会导致一个包A改变,则包A依赖包B。
在这里插入图片描述

包是用一个在上方带有小标签的矩形表示的。包名写在标签上或者在矩形里面。点化线箭头表示依赖

对象图Object diagrams用来表示类的实例。他们在解释复杂关系的细小问题时(特别是递归关系时)很有用。

这个类图示一个大学的Department可以包括其他很多的Departments。
在这里插入图片描述

这个对象图示上面类图的实例。用了很多具体的例子。

UML中实例名带有下划线。只要意思清楚,类或实例名可以在对象图中被省略。
在这里插入图片描述
每个类图的矩形对应了一个单独的实例。实例名称中所强调的UML图表。类或实例的名称可能是省略对象图表只要图的意义仍然是明确的。

顺序图

类图和对象图是静态模型的视图。交互图是动态的。他们描述了对象间的交互作用。

顺序图将交互关系表示为一个二维图。纵向是时间轴,时间沿竖线向下延伸。横向轴代表了在协作中各独立对象的类元角色。类元角色用生命线表示。当对象存在时,角色用一条虚线表示,当对象的过程处于激活状态时,生命线是一个双道线。

消息用从一个对象的生命线到另一个对象生命线的箭头表示。箭头以时间顺序在图中从上到下排列。
在这里插入图片描述

协作图

协作图也是互动的图表。他们像序列图一样也传递相同的信息,但他们不关心什么时候消息被传递,只关心对象的角色。在序列图中,对象的角色放在上面而消息则是连接线。
在这里插入图片描述

对象角色矩形上标有类或对象名(或者都有)。类名前面有个冒号(:)。

协作图的每个消息都有一个序列号。顶层消息的数字是1。同一个等级的消息(也就是同一个调用中的消息)有同样的数字前缀,再根据他们出现的顺序增加一个后缀1,2等等。

状态图

对象拥有行为和状态。对象的状态是由对象当前的行动和条件决定的。状态图statechart diagram显示出了对象可能的状态以及由状态改变而导致的转移。

我们的模型例图建立了一个银行的在线登录系统。登录过程包括输入合法的密码和个人账号,再提交给系统验证信息。

登录系统可以被划分为四种不重叠的状态:Getting SSN, Getting PIN, Validating, 以及 Rejecting。每个状态都有一套完整的转移transitions来决定状态的顺序。
在这里插入图片描述

状态是用圆角矩形来表示的。转移则是使用带箭头的连线表示。触发转移的事件或者条件写在箭头的旁边。我们的图上有两个自转移。一个是在Getting SSN,另一个则在上Getting PIN。

初始状态(黑色圆圈)是开始动作的虚拟开始。结束状态也是动作的虚拟结束。

事件或条件触发动作时用(/动作)表示。当进入Validating状态时,对象并不等外部事件触发转移。取而代之,它产生一个动作。动作的结果决定了下一步的状态。

活动图

活动图activity diagram是一个很特别的流程图。活动图和状态图之间是有关系的。状态图把焦点集中在过程中的对象身上,而活动图则集中在一个单独过程动作流程。活动图告诉了我们活动之间的依赖关系。

对我们的例子来说,我们使用如下的过程。

“通过ATM来取钱。”

这个活动有三个类Customer, ATM和 Bank。整个过程从黑色圆圈开始到黑白的同心圆结束。活动用圆角矩形表示。

在这里插入图片描述

活动图可以被分解成许多对象泳道swimlanes ,可以决定哪些对象负责那些活动。每个活动都有一个单独的转移transition连接这其他的活动。

转移可能分支branch成两个以上的互斥的转移。保护表达式(在[]中)表示转移是从一个分支中引出的。分支以及分支结束时的合并merge在图中用菱形表示。

转移也可以分解fork成两个以上的并行活动。分解以及分解结束时的线程结合join在图中用粗黑线表示

组件与配置图

组件component是代码模块。组件图是是类图的物理实现。

配置图Deployment diagrams则是显示软件及硬件的配置。

下面的配置图说明了与房地产事务有关的软件及硬件组件的关系。
在这里插入图片描述

物理上的硬件使用节点nodes表示。每个组件属于一个节点。组件用左上角带有两个小矩形的矩形表示。


为了大家更加方便的刷题,我们对文章进行了分类和整理,免费为大家提供刷题服务。程序员不欺骗程序员,赶紧扫码小程序刷起来!
请添加图片描述

为了一站式解决面者刷题问题,部分内容可能存在摘录情况,如有侵权辛苦您留言联系我们,我们会删除文章或添加引用文案,Thanks!

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

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

相关文章

SWAT 建模与案例应用

SWAT 建模与案例应用 一、模型简介 SWAT模型是美国农业部(USDA)的农业研究中心开发的分布式水文模型。 主要目的是为了预测在大流域复杂多变的土壤类型、土地利用方式和管理措施条件下,土地管理对水分、泥沙和化学物质的长期影响。 近年来…

UML建模工具Astah Pro教程

文章目录 前言一、下载安装Astah二、破解Astah总结 前言 UML建模工具Astah Pro 破解教程,拒绝盗版白嫖行为,只是本人囊中羞涩,想购买正版,但是心有余而力不足。所以此文章只做为技术学习交流,不用于任何商业用途。如果…

Unity+ChatGpt的联动 AICommand

果然爱是会消失的,对吗 chatGpt没出现之前起码还看人家的文章,现在都是随便你。 本着师夷长技以制夷的思路,既然打不过,那么我就加入 github地址:https://github.com/keijiro/AICommand 文档用chatGpt翻译如下&#…

AI 对话模型被网友玩坏了!这次还可以运行 Docker 容器...

最近一款新的聊天 AI 被网友们玩疯了。 它可以直接生成代码、可以给你的代码 debug 以及提出优化... 可以模仿莎士比亚风格写作... 还可以解答各种各样的问题,而且显然不只 10 岁小孩子的智商,感觉它已经把互联网上所有的公开资料都吸收并消化了。 这就是…

chatgpt赋能Python-python_png转pdf

Python PNG转PDF - 一种简便的图像转换方式 在图像处理中,有时我们需要将PNG格式的图像转换成PDF格式,以便于在电子文档中使用或者进行打印。虽然市面上有很多可用的图像转换工具,但是许多人都喜欢使用Python进行图像处理,因为Py…

HTC VIVE Focus Wave VR SDK 新手入门开发配置全指南 Development Tutorial

文章目录 配置Android开发环境下载 & 安装Java 8 SDK配置Android SDK 安装Unity安装Unity Hub安装Unity 2018.4.4f1配置Unity工程转换为安卓平台修改Player Settings工程设置 配置Unity路径导出设置 VIVE Input Utility介绍安装配置使用VIU模拟器 *本文是在开发人员岳阳分享…

实战分享1:如何使用华为VR Glass 6dof 基于 OpenXR@ unity 开发VR游戏/应用

目录 1 环境准备 2 使用OpenXR XR Interaction Toolkit 2.1 工程准备 2.1.1 安装openxr相关插件 2.1.2 配置工程 2.1.3 Debugger -XR Interaction Debugger 2.2 场景搭建 2.2.1 头部显示和位姿追踪测试 2.2.2 加入双手柄交互(6dof) 2.2.3 结果…

使用微软云人工智能,合成带感情的语音

以前公司下达了一个需求,要求用语音做广播,因为广播里面包含姓名,所以不能难以直接录制,需要使用合成语音。 一开始考虑到时间以及优先级问题,这边使用了百度的合成语音。 但是百度语音相对僵硬,而且没有…

Unity关于Oculus Quest2 入门开发:(三)基于XR Interaction Toolkit0.10.0开发交互功能之传送篇

说书人:“古语云:千里之行始于足下。“跑”,至关重要啊!…" 路人甲:“呵呵…” 皮一下很开心,哈哈,勿笑勿笑。。。 今天我们谈谈”跑“,无论是HTC Vive还是Oculus&#xff0c…

unity +vive(设备)+steam vr(软件)(第二天)

开始新的冒险! 我们这里还是选择使用3D模板就行。。(这里要注意项目名称,最好是英文,用中文可能后面代码会报错。。) 咱们先下载这个包然后导入,全选,导入 然后你就会能到你的unity弹出这三个…

【实战分享2】:如何基于OpenXR@ unity + 华为VR Glass 6dof Quest 开发跨平台VR游戏/应用

在上一篇中《【实战分享1】如何使用华为VR Glass 6dof 基于 OpenXR unity 开发VR游戏》最后小结中提到,基于openxr可以支持一套代码,达到跨平台部署: 使用openxr标准,无需在场景或者XR RIG上做任何的改动,可以跨平台&…

华为入局 VR 眼镜能让 VR 早普及几年?|CSDN博文精选

作者 | 小谦笔记 责编 | 刘静 出品 | CSDN博客 早在15、16年,VR、AR概念最先兴起的那会儿,还没有体验过VR的我,以为好莱坞大片里面那种“空中屏幕控制”的科技即将到来,只需要按一按眼镜,面前就会出现一个屏幕&#xf…

VR眼镜连接android设备,华为VR眼镜和电脑如何连接 投屏软件PCVR Assistant 2.0使用教程...

HUAWEI VR Glass如何连接电脑?HUAWEI VR Glass在电脑上如何使用?华为投屏软件PCVR Assistant 2.0如何使用?华为VR眼镜主打轻薄,能调节近视,支持联动多种设备,除了可以手机投屏外,还能使用投屏软件PCVR Assistant 2.0在电脑上轻松操作。下面来看看电脑上如何使用PCVR Ass…

我参加 NVIDIA Sky Hackathon---语音识别+前端设计

一、语音识别 针对项目中要求识别的果皮,瓶子,纸箱这些物品我们选择采集以下文字对应的语音数据: 请检测出果皮 请检测出纸箱 请检测出瓶子 请检测出果皮和纸箱 请检测出纸箱和瓶子 请检测出果皮和瓶子 请检测出纸箱、果皮和瓶子 1.语…

VR开发者如何把Oculus Quest中的录制视频导出

最近在开发Oculus上的一个APP,在向上级汇报的时候,录制了一段视频,那怎样把这段视频导出到个人的PC上呢? 之前用过Android Studio开发过手机的APP,之前可以在Android Studio上之间看到整个手机的目录。Oculus也是Android的系统&…

【资源】Oculus meta Quest 2游戏下载VR一体机游戏资源合集下载教程Pro

meta Oculus Quest2的VR一体机已经发布有一段时间了,虽然后起之秀的VR一体机设备陆续也发布,尤其是近期pico4的发布,但是不可否认,Quest2至今依然是VR一体机设备的生态之王,丰富的VR游戏和应用资源是其他设备望尘莫及的…

《基于Qt的VR编辑器开发》(Yanlz+Unity+SteamVR+5G+AI+VR云游戏+Qt+编辑器+跨平台+人机交互+触发事件+立钻哥哥+==)

《基于Qt的VR编辑器开发》 《基于Qt的VR编辑器开发》 版本 作者 参与者 完成日期 备注 YanlzFramework_Qt_V01_1.0 严立钻 2019.09.04 ##《基于Qt的VR编辑器开发》发布说明: “基于Qt的VR编辑器开发”:是对“Qt”的了解拓…

基于UnityXR 开发 Oculus Quest VR应用------的前期工作

开发oculus quest vr应用有两种方式: 1、基于unity xr toolkit 开发 2、直接接入oculus 原生sdk开发 方式1:使用untiy xr开发,项目会更好维护一些,用的api也都是unity xr那一套,可直接上手开发。 方式2:现成…

如何使用Oculus Quest学习SteamVR开发

在与学员朋友们的交流过程中,越来越多的朋友在报名之前会询问这样一个问题:现在并没有HTC VIVE,手头上只有一个Oculus Quest1/2,能不能报名学习课时或者是自行进行steam VR的开发?本文将介绍关于这方面的内容。. 先上结…

unity +vive(设备)+steam vr(软件)(第一天)

废话不多说,直接开始! 首先是设备! 下载我们最爱的steam!!! 同时下载一下一个叫steam VR的一个工具 主要我们就有了基本游玩vr的工具。 vr眼镜我用的是学校提供的HTC vive家的设备 unity版本是2020.3.2…