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

news2024/9/30 3:21:01

目录

一、扩展机制

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.coloradmin.cn/o/1309252.html

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

相关文章

Github、Gitee优秀的开源项目分享

先赞后看&#xff0c;养成习惯&#xff01;&#xff01;&#xff01;❤️ ❤️ ❤️ 资源收集不易&#xff0c;如果喜欢可以关注我哦&#xff01; ​如果本篇内容对你有所启发&#xff0c;欢迎访问我的个人博客了解更多内容&#xff1a;链接地址 ​ Java 项目 javacore - Java …

电子印章法律风险点及安全防范措施

公章是公司处理内外部事务的印鉴&#xff0c;公司对外的正式信函、文件、报告使用公章&#xff0c;盖了公章的文件具有法律效力。公章由公司的法定代表人执掌&#xff0c;法定代表人如果把法定代表人章与公章一同使用就代表公司行为。 随着社会数字化转型&#xff0c;电子印章及…

SLAM算法与工程实践——相机篇:传统相机使用(1)

SLAM算法与工程实践系列文章 下面是SLAM算法与工程实践系列文章的总链接&#xff0c;本人发表这个系列的文章链接均收录于此 SLAM算法与工程实践系列文章链接 下面是专栏地址&#xff1a; SLAM算法与工程实践系列专栏 文章目录 SLAM算法与工程实践系列文章SLAM算法与工程实践…

登录/验证码/注册

登录 pom文件 <!--hutool工具类--><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.9</version></dependency><!--jwt--><dependency><groupId>io.jsonw…

maui 调用文心一言开发的聊天APP 3

主要是对代码进行了优化 上一个版本写死了帐号跟密码 &#xff0c;这一个帐本有户可以直接设置对相关的key以及secret如果设置错时&#xff0c;在聊天中也会返回提示。注册帐号时同时也设置了key及secrete升级到了net.8.0导出APK&#xff0c;上一个版本是导出abb.解决了变型问…

Redis新数据类型-Bitmaps

目录 Bitmaps 简介 命令 1. setbit (1) 格式 (2) 实例 2. getbit (1) 格式 (2) 实例 3. bitcount (1) 格式 (2) 实例 4. bitop (1) 格式 (2) 实例 我的其他博客 Bitmaps 简介 Bitmaps 是 Redis 的一种新数据类型&#xff0c;它是一种用于存储位信息的数据结构&…

Netty详细文档

Netty教程 文章目录 Netty教程 Netty简介Netty 的介绍Netty 的应用场景互联网行业游戏行业大数据领域其它开源项目使用到 Netty Netty 的学习资料参考 Java BIO编程I/O 模型BIO、NIO、AIO 使用场景分析Java BIO 基本介绍Java BIO 工作机制Java BIO 应用实例问题分析 Java NIO编…

腾讯云Elasticsearch Service产品体验

基本介绍 产品概述 腾讯云 Elasticsearch Service&#xff08;ES&#xff09;是云端全托管海量数据检索分析服务&#xff0c;拥有高性能自研内核&#xff0c;集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群&#xff0c;也支持免运维、自动弹性、按需…

iOS使用CoreText完成txt阅读器

CoreText是一个高效处理字符和字形转换和进行文字排版的框架&#xff0c;API基于C语言。 常见的CoreText类介绍 &#xff08;1&#xff09;、CFAttributedStringRef 属性字符串&#xff0c;用于存储需要绘制的文字字符和字符属性 &#xff08;2&#xff09;、CTFramesetterR…

Layui实现自定义的table列悬停事件并气泡提示信息

1、概要 使用layui组件实现table的指定列悬停时提示信息&#xff0c;因为layui组件中没有鼠标悬停事件支持&#xff0c;所以需要结合js原生事件来实现这个功能&#xff0c;并结合layui的tips和列的templte属性气泡提示实现效果。 2、效果图 3、代码案例 <!DOCTYPE html&g…

Spark编程入门

1.8 Spark编程入门 1.8.1 通过IDEA创建Spark工程 ps:工程创建之前步骤省略,在scala中已经讲解,直接默认是创建好工程的 导入Pom文件依赖 <!-- 声明公有的属性 --><properties><maven.compiler.source>1.8</maven.compiler.source><maven.compiler…

企业电子招投标采购系统源码之鸿鹄电子招投标系统+电子招投标的组成

招投标管理系统是一款适用于招标代理、政府采购、企业采购和工程交易等领域的企业级应用平台。该平台以项目为主线&#xff0c;从项目立项到项目归档&#xff0c;实现了全流程的高效沟通和协作。通过该平台&#xff0c;用户可以实时共享项目数据信息&#xff0c;实现规范化管理…

基于VUE3+Layui从头搭建通用后台管理系统(前端篇)十四:系统设置模块相关功能实现

一、本章内容 本章使用已实现的公共组件实现系统管理中的系统设置模块相关功能,包括菜单管理、角色管理、日志管理、用户管理、系统配置、数据字典等。 1. 详细课程地址: 待发布 2. 源码下载地址: 待发布 二、界面预览 三、开发视频 3.1 B站视频地址:

Duplicate keys detected: This may cause an update error.【Vue遍历渲染报错的解决】

今天在写项目时&#xff0c;写到一个嵌套评论的遍历时&#xff0c;控制台出现了一个报错信息&#xff0c;但是并不影响页面的渲染&#xff0c;然后一看这个错的原因是 key值重复&#xff0c;那么问题的解决方式就很简单了。&#xff08;vue for循环读取key值时&#xff0c; key…

docker 安装keepalive

docker 安装keepalive 1.Keepalived 简介 Keepalived 是 Linux 下一个轻量级别的高可用解决方案。高可用(High Avalilability,HA)&#xff0c;其实两种不同的含义&#xff1a;广义来讲&#xff0c;是指整个系统的高可用行&#xff0c;狭义的来讲就是之主机的冗余和接管&#…

stateflow之广播时间及案例分析

目录 前言 1.何谓广播事件&#xff1f;作用是啥&#xff1f; 2.本地广播事件 3.直接广播事件 前言 虽然广播时间官方文档以及好多博主已经做出介绍&#xff0c;但个人在阅读的时候总是觉得费解&#xff0c;要么直接按官方内容陈述&#xff0c;要么缺少案例分析讲解&#xf…

节流防抖:提升前端性能的秘密武器(下)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

flex布局,flex-direction, justify content, align-content

目录 flex-direction justify content&#xff1a; flex-wrap align-items align-content flex-flow flex:1 align-self order属性定义项目排列顺序 已知html文件为&#xff1a; <div class"given"><span>1</span><span>2</span…

大数据云计算——Docker环境下部署Hadoop集群及运行集群案列

大数据云计算——Docker环境下部署Hadoop集群及运行集群案列 本文着重介绍了在Docker环境下部署Hadoop集群以及实际案例中的集群运行。首先&#xff0c;文章详细解释了Hadoop的基本概念和其在大数据处理中的重要性&#xff0c;以及为何选择在Docker环境下部署Hadoop集群。接着&…

Ps:认识 RGB 曲线

曲线 Curves本质上是用于调整通道的命令&#xff0c;因此在不同的颜色模式&#xff08;比如&#xff0c;RGB、CMYK、Lab、灰度、双色调等&#xff09;下有着不同的表现和操作方式。颜色模式的不同影响了曲线的坐标系、可调整的通道以及可实现的效果。 在 RGB 颜色模式下的曲线&…