软件设计师-UML基础教程

2023-11-10

场景

针对UML1.5各种模型图的构成和功能进行说明。

UML概述

UML简介

UML (Unified Modeling Language)为面向对象软件设计提供统一的、标准的、可视化的建模语言。

适用于描述以用例为驱动,以体系结构为中心的软件设计的全过程。 

UML的定义包括UML语义和UML表示法两个部分。

(1) UML语义:

UML对语义的描述使开发者能在语义上取得一致认识,消除了因人而异的表达方法所造成的影响。

(2) UML表示法:

UML表示法定义UML符号的表示法,为开发者或开发工具使用这些图形符号和文本语法为系统建模

提供了标准。

UML模型图的构成

事物(Things):UML模型中最基本的构成元素,是具有代表性的成分的抽象

关系(Relationships):关系把事物紧密联系在一起

图(Diagrams ):图是事物和关系的可视化表示

UML事物

UML包含4种事物:构件事物 行为事物   分组事物  注释事物

构件事物:

UML模型的静态部分,描述概念或物理元素它包括以下几种:

类:具有相同属性相同操作 相同关系相同语义的对象的描述

接口:描述元素的外部可见行为,即服务集合的定义说明

协作:描述了一组事物间的相互作用的集合

用例:代表一个系统或系统的一部分行为,是一组动作序列的集合

构件:系统中物理存在,可替换的部件

节点:运行时存在的物理元素

另外,参与者、信号应用、文档库、页表等都是上述基本事物的变体

行为事物:

UML模型图的动态部分,描述跨越空间和时间的行为

交互:实现某功能的一组构件事物之间的消息的集合,涉及消息、动作序列、链接

状态机:描述事物或交互在生命周期内响应事件所经历的状态序列

分组事物:

UML模型图的组织部分,描述事物的组织结构

包: 把元素组织成组的机制

注释事物:

UML模型的解释部分,用来对模型中的元素进行说明,解释

注解 :对元素进行约束或解释的简单符号

UML关系

依赖

依赖(dependency)是两个事物之间的语义关系,其中一个事物(独立事物)发生变化,

会影响到另一个事物(依赖事物)的语义

关联

关联(association)是一种结构关系,它指明一个事物的对象与另一个事物的对象间的联系

泛化

泛化(generalization)是一种特殊/一般的关系。也可以看作是常说的继承关系

实现

实现(realization)是类元之间的语义关系,其中的一个类元指定了由另一个类元保证执行的契约

注:

博客:
霸道流氓气质_C#,架构之路,SpringBoot-CSDN博客

UML图及特征

用例图(Use Case Diagram)

用例图是从用户角度描述系统功能, 是用户所能观察到的系统功能的模型图,

用例是系统中的一个功能单元

用例图中的事物及解释

 事物名称  解释  UML表示
 参与者(Actor)  在系统外部与系统直接交互的人或事物(如另一个计算
机系统或一些可运行的进程)。我们需要注意的是:
1.参与者是角色(role)而不是具体的人,它代表了参与者在与系统打交道的过程中所扮演的角色。所以在系统的实际运作中,一个实际用户可能对应系统的多个参与者。不同的用户也可以只对应于一个参与者,从而代表同一参与者的不同实例。
2.参与者作为外部用户(而不是内部)与系统发生交互作用,是它的主要特征。
3.在后面的顺序图等中出现的“参与者”,与此概念相同,但具体指代的含义,视具体情况而定。
 
 用例(Use Case)  系统外部可见的一个系统功能单元。系统的功能由系统单元所提供,并通过一系列系统单元与一个或多个参与者之间交换的消息所表达 。  

用例图中的关系和解释

类图(Class Diagram)

类图描述系统中类的静态结构。

不仅定义系统中的类,表示类之间的联系如关联、依赖、聚合等,也包括类的内部结构(类的属性和操作)

类图是以类为中心来组织的,类图中的其他元素或属于某个类或与类相关联 

类图中的事物及解释

1、类

从上到下分为三部分,分别是类名、属性和操作。类名是必须有的

类如果有属性,则每一个属性都必须有一个名字,另外还可以有其它的描述信息,如可见性、数据类型、缺省值等

类如果有操作,则每一个操作也都有一个名字,其它可选的信息包括可见性、参数的名字、参数类型、

参数缺省值和操作的返回值的类型等

2、接口

一组操作的集合,只有操作的声明而没有实现

3、抽象类

不能被实例化的类,一般至少包含一个抽象操作

4、模板类

一种参数化的类,在编译时把模版参数绑定到不同的数据类型,从而产生不同的类

类图中的关系及解释

1、关联关系

描述了类的结构之间的关系。具有方向、名字、角色和多重性等信息。一般的关 联关系语义较弱。

也有两种语义较强,分别是聚合与组合

聚合关系

特殊关联关系,指明一个聚集(整体)和组成部分之间的关系

组合关系

语义更强的聚合,部分和整体具有相同的生命周期

2、泛化关系

在面向对象中一般称为继承关系,存在于父类与子类、父接口与子接口之间

3、实现关系

对应于类和接口之间的关系。

类Circle、Rectangle实现了接口Shape的操作

4、依赖关系

描述了一个类的变化对依赖于它的类产生影响的情况。有多种表现形式,例如绑定(bind)、友元(friend)等

对象图(Object Diagram)

对象图是类图的实例,几乎使用与类图完全相同的标识。

他们的不同点在于对象图显示类的多个对象实例,而不是实际的类

顺序图(Sequence Diagram)

顺序图显示对象之间的动态合作关系,它强调对象之间消息发送的顺序,同时显示对象之间的交互  

顺序图的一个用途是用来表示用例中的行为顺序。

当执行一个用例行为时,顺序图中的每条消息对应了一个类操作或引起状态转换的触发事件

顺序图中的事物和解释

顺序图与用例图和类图的关系

协作图(Collaboration Diagram)

协作图描述对象间的协作关系,协作图跟顺序图 相似,显示对象间的动态合作关系。

除显示信息交换外,协作图还显示对象以及它们之间的关系.

协作图的一个用途是表示一个类操作的实现

协作图中的事物和解释

协作图中的关系及解释

1、链接

用线条来表示链接,链接表示两个对象共享一个消息,位于对象之间或参与者与对象之间

协作图与顺序图的区别和联系

协作图和顺序图都表示出了对象间的交互作用,但是它们侧重点不同。

顺序图清楚地表示了交互作用中的时间顺序(强调时间),但没有明确表示对象间的关系。

协作图清楚地表示了对象间的关系(强调空间),但时间顺序必须从顺序号获得。

协作图和顺序图可以相互转化

状态图(State Chart Diagram)

状态图是一个类对象所可能经历的所有历程的模型图。

状态图由对象的各个状态和连接这些状态的转换组成

状态图用于揭示Actor、类、子系统和组件的复杂特性,为实时系统建模。

状态图中的事物及解释

活动图(Activity Diagram)

活动图是状态图的一个变体,用来描述执行算法的工作流程中涉及的活动

活动图描述了一组顺序的或并发的活动

活动图事物及解释

活动图关系

构件图(Component Diagram)

构件图为系统的构件建模型,构件即构造应用的软件单元

还包括各构件之间的依赖关系,以便通过这些依赖关系来估计对系统构件的修改给系统可能带来的影响

构件图中的事物及解释

构件图中的关系及解释

部署图(Deployment Diagram)

部署视图描述位于节点实例上的运行构件实例的安排。

节点是一组运行资源,如计算机、设备或存储器。

这个视图允许评估分配结果和资源分配

部署图中的事物及解释

部署图中的关系和解释

UML语法描述

UML全部图之间的关系


 


 


 


 


 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

软件设计师-UML基础教程 的相关文章

  • 关联类的正确使用

    我是 UML 的新手 我不确定我的图表是否正确 我希望得到比我更有经验的人的建议 我的问题的陈述说 学生学习课程 每个学生可以选修几门课程 每门课程 学习 任何课程都可以有多个学生学习 学生由数字代码识别 有姓名 出生日期和一个或多个国籍
  • 我应该使用什么图来表示模块中功能之间的交互?

    我需要使用 UML 或 SysML 符号创建图表 我有由函数组成的模块 有些函数仅在模块 内部 使用 其他函数则由其他模块使用 Example MODULE 1有两个功能 func1 and func2 func2 uses func1 i
  • 用例图包括

    我有一个关于用例图的问题 如图所示 用户可以输入或更新他的姓名和问题 正如您所看到的 用户在第一次输入信息时需要输入姓名和问题 因此包括在内 但是 如果他希望更新他的信息 图表是否表明他必须修改名称和问题 因为它们包含在内 例如 如果他拼错
  • 用例之间的 UML 关系(扩展/包含)

    我不太理解以下主题 因为它与我读到的内容有点含糊 Inlcude就像对下一部分的引用一样 没有它 用例就不完整 这部分应该从更多地方引用 否则它的使用没有意义 但我见过一个例子 其中 include 仅在某些 IF 语句中为真 例如 添加新
  • 如何快速理解任何产品的设计和代码流程? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 显示除“<>”或“<>”之外的 UML 用例图的依赖关系

    除了 扩展 或 包含 之外 我们如何显示用例之间的简单依赖关系 例如 我们想说用例 1 依赖于由用户 1 完成的用例 2 可以用一个简单的箭头来实现吗 向哪个方向 是的 还有其他依赖项 直接连接到用例的类的完整列表是 UML 2 5 标准的
  • 如何在 UML 活动图上显示异步操作

    我即将绘制 记录一些客户端 服务器连接建立代码 以更好地理解它 有几个操作是在单独的线程中异步完成的 连接线程 数据接收线程等 我应该在单独的图表上显示它们吗 我更愿意将其放在单个图表上以掌握整体视图 但不知道如何在活动图上表示它 我不确定
  • UML 领域建模

    领域模型和数据模型有什么区别 数据模型是一个design仅描述数据及其关系的模型 该模型包含实体 但它们是根据什么来描述的data他们不负责如何处理这些数据或他们的责任是什么 另一方面 领域模型是用于分析问题领域的概念模型 它用具有关系 数
  • XMI 2.1.1 的 XSD

    我必须使用 JAXB 解析 XMI 文件 xmi 版本 2 1 1 为此 我必须生成与 XMI 文件相对应的 Java 类 因此 我需要 xmi 文件的 shema 定义才能使用 jxc 工具执行此操作 我希望有人知道在哪里可以找到这个文件
  • IBM Rhapsody 中状态图终止连接器的理解

    在IBM Rhapsody中 如果我使用new创建了一个类的实例 那么我们是否必须通过调用delete来处理内存的释放 或者Termination Connector将在其状态图中通过内存释放来处理其销毁 如果您使用 C 和 OXF 对象执
  • 如何在时序图上表示 if 条件 1 else if 条件 2?

    我想知道 如何在序列图上表示 if cond1 else if cond2 语句 if condition1 Do something else if condition2 Do something else if 我不确定是否有两个独立的
  • 在用例建模中分解 CRUD

    我有一个后续问题用例图中的 CRUD https stackoverflow com questions 7772399 crud in a use case diagram 如果我需要分解复杂的用例 例如 管理用户 假设这很复杂 可以将它
  • 如何在 UML 中正式记录 C# 属性?

    在 UML 类图中记录类的 C 属性的正确方法是什么 我还没有决定这是否是我的答案 但我想我会把它扔在那里以便讨论 这看起来可以接受吗 它是属性类型的实例 其中元数据值放入下面的标记值中 我刚刚弄清楚如何添加自定义立体类型 该箭头只是一个标
  • 创建UML图时应该编写构造函数吗?

    我有一项作业要求我为实际的 Java 程序创建 UML 图 但程序中有几个构造函数方法 我很困惑 我是否应该将这些构造函数方法添加到图中 根据 UML 规范 2 5 版第 11 4 4 节 构造函数是一个具有所属类类型的单个返回结果参数的操
  • Pear PHP UML 类图 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试创建现有代码的图形表示 我尝试使用 VS PHP 使用 Visual Studios 201
  • 在序列图中引用给定类的实例

    我必须建模一个系统 其中类的对象Person将调用静态方法getBook Book在课堂上Book这将返回特定书籍的实例 如何引用操作得到的图书实例 到目前为止 我可以想到两种方法 这两种方法我都没有见过 使用过 这就是为什么我正在寻找co
  • 是否有适用于 Java 的 Harel Statechart DSL 工具?

    我正在寻找一种能够理解 DSL 的工具 在其中我可以定义生成 Java 代码的状态图 或者 DSL 中的状态图可以按原样运行 该工具最好用 Java 编写 并且必须根据 Harel 状态图 或等效的 UML 2 状态机 的定义支持超级状态和
  • 系统间依赖关系的UML图

    哪种 UML 图最能显示我们的 IT 系统和其他外部 IT 系统之间的依赖关系 例如我想在图表上显示 系统A从系统B获取数据 系统B可以调用系统A的一些功能 我想知道组件图和序列图之间的关系 你怎么认为 你的问题不是很具体 因为所有 UML
  • Visual Basic 6.0 UML 图生成器

    有没有免费的 UML 图生成器可以将 VB6 源代码转换为 UML 图 您是否见过 Deanna 提到的内置 Visual Modelerhere https stackoverflow com questions 16912161 use
  • 使用绝对导入时,pyreverse 不会在 UML 中显示组合关系

    我在生成 UML 时遇到问题pyreverse 特别是当类不属于同一模块时以及使用绝对导入时的组合关系 为了说明问题 我有以下两个模块a py and b py在同一个包中 a py from b import B class A def

随机推荐

  • (数据结构)图——图、顶点、无向边、无向图、有向边、有向图、简单图、无向完全图、有向完全图、稀疏图、稠密图、权、网、子图的相关概念

    图的定义 图是由顶点的有穷非空集合和顶点之间边的集合组成 通常表示为 G V E 其中 G表示一个图 V是图G中顶点的集合 E是图G中边的集合 注意 1 线性表中我们把数据元素称为元素 树中将数据元素称为结点 在图中数据元素称为顶点 2 线
  • OJ测试数据生成器

    测试数据生成器 先序二叉树生成器 哈夫曼树生成器 哈夫曼树解码生成器 多叉树生成器 多叉树的孩子链表法表示生成器 多叉树的双亲表示法生成器 图的邻接表表示生成器 矩阵表示法的图 图的最短路径 无框架 拓扑排序 可以使用本文中提到的数据生成器
  • 缺陷单字段

    缺陷单字段 优先级 紧急 高 中 低 无关紧要 严重程度 致命 严重 一般 提示 建议 出现概率 必现 非必现 高概率 非必现 中概率 非必现 低概率 非必现 无法复现
  • Taro CLI 与本地安装运行时框架 @tarojs/taro-weapp 版本不一致, 请确保版本一致!

    最近打开这个项目 yarn dev weapp 时候报错 cli 和项目版本冲突如下 kyle DESKTOP LIPAM5T MINGW64 d yuwei workspacke web frontend icommunity weapp
  • @CreatedDate、@CreatedBy、@LastModifiedDate、@LastModifiedBy

    在spring jpa audit 中 在字段或者方法上使用注解 CreatedDate CreatedBy LastModifiedDate LastModifiedBy 当进行实体插入或者更新可以自动赋值 CreatedDate 创建时
  • 新建的QT项目没有menubar、statusbar或者toolbar

    新建的QT项目没有menubar statusbar或者toolbar 右击窗口对象即可添加
  • HomeLab 常用工具一:filebrowser

    前言 在实际使用过程中 我们通常都有基于WEB 的文件操作需求 例如从一台陌生设备上想打开看一下 图片等 和nextcloud 相比 filebrowser 更为轻巧也更为方便 一 filebrowser 安装 这里基于docker 安装和
  • 计算机网络——常用的网络命令

    目录 一 实验目的 二 实验内容 三 实验环境和要求 四 实验步骤 1 Ping命令 2 Ipconfig命令 3 Netstat命令 4 Tracert命令 5 Route命令 6 ARP命令 7 Nslookup命令 8 Netsh命令
  • 货币桥架构图

    该通用平台于2022年8月15日至9月23日进行了落地试验 来自中国香港和大陆 阿联酋与泰国的20家商业银行使用各自中央银行在mBridge平台上发行的CBDC 代表其企业客户进行了支付以及外汇 FX 同步交收 PvP 交易 互操作性是CB
  • 【新版】系统架构设计师 - 案例分析 - 总览

    个人总结 仅供参考 欢迎加好友一起讨论 架构 案例分析 总览 新旧大纲对应 旧版 新版 系统规划软件架构设计设计模式系统设计系统建模分布式系统设计嵌入式系统设计系统的可靠性分析与设计系统的安全性和保密性设计 系统计划信息系统架构的设计理论和
  • 【华为机试真题 JAVA】猴子爬山-100

    编程题目 100分 猴子爬山 2021 H1 H2 2022 Q1 考试题 时间限制 C C 1秒 其他语言 2秒 空间限制 C C 262144K 其他语言524288K 64bit IO Format lld 本题可使用本地IDE编码
  • 教学场景下的AI数字人,可视化语音交互

    玩了Midjourney 感慨AI太强大了 设计师已哭晕 AI数字人 教学场景下的AI数字人 能实现什么 图 AI数字人 图 AI数字人 个性化学习支持 根据学生的个人需求和学习风格 提供个性化的学习支持和建议 自动化评估和反馈 可以帮助教
  • Vulhub靶场-shellshock漏洞复现

    漏洞介绍 漏洞描述 Shellshock的原理是利用了Bash在导入环境变量函数时候的漏洞 启动Bash的时候 它不但会导入这个函数 而且也会把函数定义后面的命令执行 在有些CGI脚本的设计中 数据是通过环境变量来传递的 这样就给了数据提供
  • 七分醉意录

    2022 1 24 七分醉意 时隔两年整 没有公司年会聚会 今天却搞了一次 说不清的感觉 首先环境让人第一眼看了想骂街 然而 最后的结果却让人有一丝的怀念和回味 第一次真正地品尝公司茅台镇的酱香型白酒 以公司品牌名命 我想如果没有喝过的人一
  • Google_三大论文中文版(Bigtable、 GFS、 Google MapReduce)

    做个中文版下载源 http dl iteye com topics download 38db9a29 3e17 3dce bc93 df9286081126 做个原版地址链接 http labs google com papers gfs
  • 三进制计算机可以实现吗,对于三进制计算机逻辑运算方法的猜想

    这件事主要源于CSDN上的这篇文章 莫斯科国立大学三进制计算机发展史 阅读后就猜想对于三进制计算机的逻辑运算是如何处理的呢 在二进制计算机中 基本的逻辑计算有 与 或 和 非 下面分别用AND OR NOT来表示 0 AND 0 0 0 O
  • 3dmax中怎么修改帧数

    在右下角的播放键右键修改帧数的面板就会自动弹出来 转载于 https www cnblogs com ZeroMurder p 5337384 html
  • 计算机文本自定义,自定义文本编辑器

    自定义文本编辑器 概述 您可以在管理资产和创建通信UI中自定义文本编辑器 以添加更多字体和字体大小 这些字体包括英语和非英语 如日语 字体 您可以进行自定义 以在字体设置中更改以下内容 字体系列和大小 高度和字母间距等属性 字体系列和大小
  • Windows CMD 常用指令

    有关某个命令的详细信息 请键入 HELP 命令名 ASSOC 显示或修改文件扩展名关联 ATTRIB 显示或更改文件属性 BREAK 设置或清除扩展式 CTRL C 检查 BCDEDIT 设置启动数据库中的属性以控制启动加载 CACLS 显
  • 软件设计师-UML基础教程

    场景 针对UML1 5各种模型图的构成和功能进行说明 UML概述 UML简介 UML Unified Modeling Language 为面向对象软件设计提供统一的 标准的 可视化的建模语言 适用于描述以用例为驱动 以体系结构为中心的软件