【UML】第4篇 UML公共机制(补扩展机制)

目录

一、扩展机制

1.1 构造型

1.2 标记值(Tagged Value)

 1.3 约束(Constraint)


上节扩展机制没有讲完,如上图。

一、扩展机制

1.1 构造型

UML中的扩展机制包括约束、构造型和标记值,其中的构造型定义如下:

构造型是一种扩展UML词汇的方法,用于定义新的构造块。简单来说,构造型就是UML中已有的构造块的基础上进行扩展,增加新的含义或特性,从而形成新的构造块。构造型在UML中通常用来表示具有特定语义的元素,这些元素在UML的基本元素中并不存在。

可以这样理解,有时候可能会遇到一些UML标准元素无法满足的特殊需求,这时就可以使用构造型来扩展UML的表达能力。下面是一些构造型的示例:

  1. 角色构造型(<<role>>):在UML中,类图通常用来表示系统中的类及其关系,但有时我们需要强调某些类在特定场景下的角色,这时可以使用角色构造型。例如,在一个在线购物系统中,用户类可能在不同的场景下有不同的角色,如“买家”和“卖家”,这时我们可以在类图上使用角色构造型来表示这些不同的角色。
  2. 边界构造型(<<boundary>>):在表示系统的交互界面时,我们可以使用边界构造型来表示与外部环境进行交互的组件。例如,在一个Web应用程序中,用户界面可能包括多个页面和组件,这些组件可以使用边界构造型来表示。
  3. 控制构造型(<<control>>):在UML中,我们通常使用状态图和活动图来表示系统的动态行为,但有时我们需要强调某些状态或活动在系统中的控制作用,这时可以使用控制构造型。例如,在一个交通管理系统中,交通信号灯的状态可能包括“红灯”、“绿灯”和“黄灯”,这些状态可以使用控制构造型来表示。
  4. 实体构造型(<<entity>>):在数据库建模中,我们经常需要表示实体和它们之间的关系,这时可以使用实体构造型来表示数据库中的实体。例如,在一个电子商务系统中,商品和订单都可以看作是实体,这些实体可以使用实体构造型来表示。

使用构造型时需要注意保持模型的清晰和一致性,避免出现过于复杂的构造型和混淆语义的情况。

1.2 标记值(Tagged Value)

标记值是一种用于为模型元素添加附加信息的机制。这些信息可能无法在UML的标准元素中直接表示,因此需要使用标记值进行扩展。

定义:

标记值是一种与UML元素相关联的键值对,用于存储和传递额外的非标准信息。它由两部分组成:标记(Tag)和值(Value)。标记是一个用于标识信息的关键词或短语,而值是与标记相关联的特定数据或信息。

标记值提供了一种灵活的方式来扩展UML元素的语义,使其能够适应各种特定领域或特定项目的需求。通过为UML元素添加标记值,我们可以传递额外的信息,这些信息可能对于理解模型的特定方面或满足特定的项目需求至关重要。

假设我们正在使用一个UML工具来建模一个Web应用程序,并且我们想要为类图中的某个类添加一个描述性的注释。我们可以使用标记值来实现这个目的。

  1. 首先,我们选择要添加标记值的类元素。
  2. 然后,我们使用UML工具提供的扩展机制来创建一个新的标记值。在这个例子中,我们可以选择"description"作为标记。
  3. 最后,我们将实际的描述性文本作为值与"description"标记相关联。例如,我们可以将值设置为"该类表示用户账户的信息"。

最终,这个标记值将作为类元素的一部分保存在UML模型中,并在需要时可以进行访问和解析。这样,我们就成功地使用标记值扩展了UML元素的语义,以满足特定的项目需求。

需要注意的是,标记值的使用应该谨慎并保持一致性,以避免过度复杂化和混淆语义的情况发生。

 1.3 约束(Constraint)

约束是一种用于限制和规定模型元素行为的规则或条件。通过定义约束,我们可以对UML模型中的元素进行语义上的限制和规定,以确保模型的准确性和一致性。

约束是一种语义上的限制条件,用于规定UML模型中元素的行为和关系。它可以表示为文字表达式、布尔表达式或其他形式的规则,用于限制模型元素的属性、操作或关系。

约束提供了一种机制,用于确保UML模型中的元素符合特定的语义规则和条件。这些规则和条件可以是全局的,也可以是特定于某个元素或关系的。约束可以表示为自然语言文本、形式化语言或其他方式,以便建模者和工具能够理解和验证它们。

约束可以用于表达各种条件和限制,例如:

  1. 属性值的范围限制:例如,一个类的属性可能有一个特定的取值范围,约束可以用于确保属性值在该范围内。
  2. 元素之间的关系限制:例如,两个类之间的关联可能有一个特定的多重性约束,用于规定关联的实例数量和角色。
  3. 行为的限制:例如,一个操作可能有一个前置条件或后置条件,约束可以用于规定操作执行的条件和结果。

假设我们有一个类图,其中包含一个表示用户的类和一个表示订单的类。我们想要确保每个用户只能创建一定数量的订单。为了实现这个需求,我们可以使用约束来限制用户和订单之间的关系。

  1. 首先,我们在类图中选择用户类和订单类之间的关联关系。
  2. 然后,我们使用UML工具提供的扩展机制来创建一个新的约束。在这个例子中,我们可以创建一个名为"MaxOrdersPerUser"的约束。
  3. 接下来,我们定义约束的具体规则。例如,我们可以将规则设置为"每个用户最多只能创建10个订单"。这可以通过使用布尔表达式或其他形式的规则来表示。
  4. 最后,我们将这个约束与用户类和订单类之间的关联关系相关联。

这样,当我们在模型中创建用户和订单实例时,UML工具将自动验证这个约束是否得到满足。如果某个用户试图创建超过10个订单,工具将会提示错误或警告信息,从而帮助我们确保模型的准确性和一致性。

通常,约束没有名称。它们是由其主体的内容来标识的。某些常用约束是由名称来标识的,因此,不必重复它们的主体的内容。当多个关联连接至同一个类时,就会应用 XOR 约束。

约束是通过用花括号({})将文本括起来的形式来表示的,并且包含在右上角被折叠的一个矩形中。

可以指定用来编写约束主体的语言,以便阅读该约束的其他人更容易理解它的条件或限制。可以使用下列语言来编写约束主体:

  • 自然语言(例如,英语)
  • 编程语言
  • 数学表示法
  • 对象约束语言(OCL)

需要注意的是,约束的使用应该谨慎并保持一致性,以避免过度复杂化和混淆语义的情况发生。同时,建模者需要仔细考虑约束的定义和验证方式,以确保它们能够有效地满足项目的需求。

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

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

相关文章

微服务项目部署

启动rabbitmq \RabbitMQ\rabbitmq_server-3.8.2\sbin 找到你的安装路径 找到\sbin路径下执行这些命令即可 rabbitmqctl status //查看当前状态 rabbitmq-plugins enable rabbitmq_management //开启Web插件 rabbitmq-server start //启动服务 rabbitmq-server stop //停止服务…

bugku--文件包含

点击 访问一下index.php 页面报错 既然是文件包含就可以想到php伪协议 这里我们需要访问本地文件系统 构造我们的payload ?filephp://filter/readconvert.base64-encode/resourceindex.php base64解码 得到我们的flag 提交就好啦 ?filephp://filter/readconvert.base64-e…

【01分数规划】ABC324F

[ABC324F] Beautiful Path - 洛谷 思路 首先看到这个形式很容易想到 01 分数规划&#xff0c;即去二分答案&#xff0c;然后就是转化成 是否存在一个路径使得 sigma b - mid * sigma c > 0 显然只需要改变一下边权&#xff0c;跑一遍最长路即可 #include <bits/stdc.h…

基于单片机智能循迹小车仿真设计

**单片机设计介绍&#xff0c;基于单片机智能循迹小车仿真设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的智能循迹小车是一种通过传感器检测地面情况&#xff0c;并根据设定的规则进行动作控制的机器人。它使用…

C_10练习题答案

一、单项选择题(本大题共 20小题,每小题 2分,共 40分。在每小题给出的四个备选项中,选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。) 1,结构化程序由三种基本结构组成,三种基本结构组成的算法是(A) A.可以完成任何复杂的任务 B.只能完成部分复杂的任务…

目标检测检测精度

在一个数据集检测中&#xff0c;会产生四类检测结果&#xff1a;TP、TN 、FP 、FN&#xff1a; T ——true 表示正确 F——false 表示错误 P—— positive 表示积极的&#xff0c;看成正例 N——negative 表示消极的&#xff0c;看成负例 我的理解&#xff1a;后面为预测结…

设计模式——单例模式(创建型)

引言 单例模式是一种创建型设计模式&#xff0c; 让你能够保证一个类只有一个实例&#xff0c; 并提供一个访问该实例的全局节点。 问题 单例模式同时解决了两个问题&#xff0c; 所以违反了单一职责原则&#xff1a; 保证一个类只有一个实例。 为什么会有人想要控制一个类所…

基于C/C++的rapidxml加载xml大文件 - 下部分

下载地址: RapidXml (sourceforge.net)https://rapidxml.sourceforge.net/ 将源码添加到自己的工程中 示例测试大文件耗时: 总共293w行数据&#xff0c;大概耗时不到1s。

Unity_FairyGUI发布导入Unity编辑器资源报错

Unity_FairyGUI发布导入Unity编辑器资源报错 报错&#xff1a; FairyGUI: settings for Assets/UI/XMUI/XMSubway_atlas0.png is wrong! Correct values are: (Generate Mip Mapsunchecked) UnityEngine.Debug:LogWarning (object) FairyGUI.UIPackage:LoadAtlas (FairyGUI.P…

Vue运用之input本地上传文件,实现传参file:(binary)

前言 功能场景是,实现列表的【批量导入】的效果,在Excel里维护好信息,本地上传好文件,再点击【确认】触动接口,将flie信息传值后端接口。 html代码 input的type设置为file,支持格式设置为仅支持Excel类型 <div class="btn-box"><div class=&quo…

Weblogic-CVE-2023-21839

一、漏洞概述 RCE漏洞&#xff0c;该漏洞允许未经身份验证的远程&#xff0c;通过T3/IIOP协议网络访问并破坏WebLogic服务器&#xff0c;成功利用此漏洞可导致Oracle WebLogic服务器被接管&#xff0c;通过rmi/ldap远程协议进行远程命令执行,当 JDK 版本过低或本地存在小工具&…

SIEM 解决方案的不同部署方式,如何选择SIEM 解决方案

安全信息和事件管理&#xff08;SIEM&#xff09;作为一种网络安全解决方案&#xff0c;是多种技术的融合&#xff0c;这些技术结合了包括安全信息管理和安全事件管理在内的流程。简单来说&#xff0c;SIEM 解决方案是一种重要的安全工具&#xff0c;它收集、存储和分析来自整个…

ViTDet论文笔记

arxiv&#xff1a;https://arxiv.org/abs/2203.16527 GitHub&#xff1a;https://github.com/ViTAE-Transformer/ViTDet 摘要 本文提出使用plain&#xff0c;non-hierarchical视觉transformer作为目标检测的主干网络。通过这种设计可以使得ViT结构模型不需要再重新设计一个分…

【华为数据之道学习笔记】4-3信息架构建设核心要素:基于业务对象进行设计和落地

4.3.1 按业务对象进行架构设计 业务对象是指业务领域中重要的人、事、物对象。业务对象承载了业务运作和管理涉及的重要信息&#xff0c;是信息架构中最重要的管理要素。 业务对象同时还是业务和IT的关键连接点&#xff0c;也是实现IA&#xff08;信息架构&#xff09;、BA&…

centOS安装bochsXshell连接centos启动可视化界面

centOS安装bochs 参考&#xff1a;https://blog.csdn.net/muzi_since/article/details/102559187 首先安装依赖环境&#xff1a; yum install gtk2 gtk2-devel yum install libXt libXt-devel yum install libXpm libXpm-devel yum install SDL SDL-devel yum install libXr…

springCloud项目打包如何把jar发放到指定目录下

springCloud项目打包如何把jar发放到指定目录下 maven-antrun-plugin springCloud微服务打包jar&#xff0c;模块过多&#xff1b;我的项目模块结构如下&#xff1a; 我把实体类相关的单独抽离一个模块在service-api下服务单独写在service某块下&#xff0c; 每个模块的jar都…

【LeetCode刷题笔记(2)】【Python】【字母异位词分组】【中等】

字母异位词分组 题目描述 给定一个字符串数组strs&#xff0c;请你将字母异位词组合在一起。可以按任意顺序返回结果列表。 输入&#xff1a;字符串数组strs 输出&#xff1a;结果列表 字母异位词&#xff1a;由重新排列源单词的所有字母得到的一个新单词。 要求&#x…

湖仓一体架构理论与实践汇总

湖仓一体架构理论与实践汇总 软件研发本质上属于“手工业”。软件研发在很大程度上还是依赖于个人的能力。当软件规模较小时&#xff0c;依赖“手工业”可以解决问题&#xff0c;但是当软件规模大了之后再依赖“手工业”就不行了。 软件的复杂度包含两个层面&#xff1a;软件…

[论文精读] 使用扩散模型生成真实感视频 - 【李飞飞团队新作,文生视频 新基准】

论文导读: 论文背景:2023年12月11日&#xff0c;AI科学家李飞飞团队与谷歌合作&#xff0c;推出了视频生成模型W.A.L.T&#xff08;Window Attention Latent Transformer&#xff09;——一个在共享潜在空间中训练图像和视频生成的、基于Transformer架构的扩散模型。李飞飞是华…

【从零开始学习JVM | 第八篇】学习垃圾回收算法 和 垃圾回收器

前言&#xff1a; 现代编程语言通常采用垃圾回收机制来自动管理内存。垃圾回收机制是一种自动化的内存管理技术&#xff0c;可以在程序运行时自动识别和回收不再使用的内存&#xff0c;从而减少内存泄漏和其他内存相关问题的发生。 本文将介绍垃圾回收算法和垃圾回收器的相关…