如何理解UML2.5.1(05篇)

news2024/11/19 7:33:49

        标记subsets和redefines可以说是UML2.5.1中最重要的一对标记。标记subsets相对要好理解一些,但是redefines的含义就没有那么直白。先看一下目前已知的subsets和redefines的效果:
                假定图一中A1和B1的关联两端的标记都是subsets,那么这一对标记就意味着在向A1和B1的关联添加一个新链接时,也要将此链接添加到A和B之间的关联中;
                假定图一中A1和B1的关联两端的标记都是redefines,那么这一对标记就意味着仅需要向A1和B1的关联添加新链接即可,A和B之间的关联则不能添加此链接。
        如果上述第二点是正确的,则就会带来一个问题:
        关联两端的标记都是redefines与关联两端没有subsets/redefines标记的效果完全一样。而这显然是不正确的。


图一、

        经过一番思考,本人提出如下redefines的最新解释:

        假定向A1和B1之间的关联加入一个联接A3和B3的关联实例(Link1):

A1和B1两端都是redefines标记:
    Item1:A2和B2两端都是subsets标记:
        如下伪代码的依据在于:
        A1和B1的子类(例如A2和B2)之间的关联如果都有subsets标记,则表明A2和B2之间的链接也都存在于A1和B1之间,在不违反这一个约束的同时,每增加一个A1和B1之间的链接,就要在A2和B2之间的关联中增加相同链接,以体现A1和B1之间关联两端的redefines标记的对A1和B1子类所产生的效果。
    伪代码:
    A(1)和B(1)之间增加Link1;
    i = 2;
    Anchor1:
        如果Link1两端的对象的类型与A(i)和B(i)这两端的类的类型相同:
                如果A(i)和B(i)这两端都为subsets标记:
                        A(i)和B(i)之间增加Link1;
                Goto Anchor2;
                如果A(i)和B(i)这两端都为subsets标记:
                        A(i)和B(i)之间增加Link1;
                        i++;
                        Goto Anchor1;
                如果A(i)和B(i)这两端都为redefines标记:
                        Goto Anchor2;
                如果A(i)和B(i)这两端一个为subsets标记,一个为redefines标记:
                        Goto Anchor2;
    Anchor2:
        结束计算。


    Item2:A2是subsets标记,B2是redefines标记:
        不满足Item1的条件,因此一律仅向自身添加新的链接。
    伪代码:
        A1和B1之间增加Link1;
        结束计算。


    Item3:A2和B2两端都是redefines标记:

        不满足Item1的条件,因此一律仅向自身添加新的链接。
    伪代码:
        A1和B1之间增加Link1;
        结束计算。


A1和B1两端,A1是subsets标记,B1是redefines标记:
    Item4、A2和B2两端都是subsets标记:
        不满足Item1的条件,因此一律仅向自身添加新的链接。
    伪代码:
        A1和B1之间增加Link1;
        结束计算。


    Item5、A2是subsets标记,B2是redefines标记:
        不满足Item1的条件,因此一律仅向自身添加新的链接。
    伪代码:
        A1和B1之间增加Link1;
        结束计算。

    Item6、A2是redefines标记,B2是subsets标记:

        不满足Item1的条件,因此一律仅向自身添加新的链接。
    伪代码:
        A1和B1之间增加Link1;
        结束计算。

Item7、A2和B2两端都是redefines标记:
        不满足Item1的条件,因此一律仅向自身添加新的链接。
    伪代码:
        A1和B1之间增加Link1;
        结束计算。

        经过进一步的分析,我们可以有如下结论:
        结论一:如果添加的链接两端的终点对象的类型与要加入的关联的两端的类型相同,则关联两端都是redefines标记的作用与关联两端没有任何subsets/redefines标记的作用完全相同,这里即是仅向A1和B1的关联中添加链接,而不会向A2和B2的关联中添加链接,因为终点对象没有对应的子类对象;
        结论二:如果关联(A1和B1)两端的标记都是subsets,则计算的前进方向是父类方向;
        结论三:如果希望A1和B1之间的关联向子类方向前进,则需要满足三个前提条件:
                条件一、A1和B1所在关联两端的标记都是redefines;
                条件二、A2和B2所在关联两端的标记都是subsets;
                条件三、新增的链接两端的终点对象的类型是A1和B1类型的子类。
        结论四:如果关联(A1和B1)两端的标记一个是subsets,一个是redefines,则计算保持在原地不动,即仅向A1和B1之间添加链接,而A和B以及A2和B2之间则不添加任何链接;

        正如前面结论三所示,这个解释的最大问题在于应用其的门槛太高,因此导致在绝大多数情况下,其所产生的效果与关联两端没有subsets/redefines标记的效果完全相同。
        因此我的问题是,我给出的这个解释是否正确?或者说,正确的解释是什么?

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

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

相关文章

Torch计算方法

Torch 中的计算方法与 Numpy 的计算方法很类似;Torch中带 “下划线 ” 的操作,都是in-place的。 求和: torch.sum() 对输入的 tensor 数据的某一维度求和; 1.torch.sum(input, dtypeNone) 2&…

硬盘 / 硬盘控制器主要端口寄存器 / Controller Register

文章目录IDE 与 SATA硬盘分区表结构硬盘控制器主要端口寄存器data 寄存器Error && FeaturesErrorFeaturesSector countLBA low | mid | highdevice 寄存器StatusCommandIDE 与 SATA 很久以前,硬盘控制器和硬盘是分开的,后面开发了一个新接口&am…

【观察】新华三:智慧计算“再进化”,算力创新“再升级”

今天,算力就是生产力已成为业界共识,特别是算力作为数字经济时代的关键生产力要素,更成为了挖掘数据要素价值,推动数字经济发展的核心支撑力和驱动力。在此过程中,由算力驱动的数字经济除了以信息产业这一独立的经济形…

Linux进程间通信(二):命名管道的使用和原理

文章目录一、前言二、命名管道的使用一、前言 我们上篇博客里谈到,进程间通信的本质在于如何让两个进程看到同一份资源。匿名管道的核心思想就是让子进程继承父进程,从而让父子进程看到同一份管道文件,但这也使通信仅仅局限在具有血缘关系的进…

比Sqoop功能更加强大开源数据同步工具DataX实战

文章目录概述定义与Sqoop对比框架设计支持插件核心架构核心优势部署基础环境安装从stream读取数据并打印到控制台读取MySQL写入HDFS读取HDFS写入MySQL执行流程概述 定义 DataX 官网地址 https://maxwells-daemon.io/ DataX GitHub源码地址 https://github.com/alibaba/DataX D…

SaaS是什么?企业采购SaaS有什么好处?

简单的来讲讲我们对SaaS的理解吧。过去通常来说,我们采购企业使用的产品,通常有比如传统的软件包下载、按照自己的需求找开发商定制、如果有自研能力的团队可以自己去开发。但是这样就比如带来很多问题: 比如业务规则更新了怎么办&#xff1…

Protobuf 了解

Protocol Buffers 是一种结构数据序列化方法,可以将C中定义的存储类的内容与二进制序列串相互转换,主要用于数据传输或数据存储,可类比XML、JSON,而XML、JSON基于文本格式,protobuf是二进制格式,所以比XML、…

【论文阅读总结】inception v4与Inception-ResNet总结

Inception-v4, Inception-ResNet和Residual connections对学习的影响1.摘要2.引言3.文献综述4.体系结构的选择4.1 Pure Inception4.2 Residual Inception Blocks【残差Inception 块】4.3 Scaling of the Residuals【残差的缩放】4.3.1实验发现4.3.1.1实验发现14.3.1.2实验发现2…

ERP容灾备份维护工作有哪些?服务器容灾备份

ERP维护工作有哪些?这是公司信息化专员工作职责:信息规划  1、参与 公司信息化系统总体构架,建立健全公司信息化各项管理制度和标准业务流程,组织公司各业务部门不断进行业务流程的梳理、优化和创新,推动信息化的持续…

408 考研《操作系统》第三章第二节:内存管理、覆盖和交换 、连续分配管理方式、动态分区分配算法

文章目录1. 内存管理的概念1.1 内存保护1.2 总结2. 覆盖与交换2.1 覆盖技术2.2 交换技术2.3 总结:3. 连续分配管理方式3.1 单一连续分配3.2 固定分区分配3.3 动态分区分配3.4 总结4. 动态分区分配算法4.1 首次适应算法4.2 最佳适应算法4.3 最坏适应算法4.4 邻近适应…

米尔基于ARM架构核心板的国产化EtherCAT主站控制器解决方案

EtherCAT是由德国BECKHOFF自动化公司于2003年提出的实时工业以太网技术。它具有高速和高数据有效率的特点,支持多种设备连接拓扑结构。其从站节点使用专用的控制芯片,主站使用标准的以太网控制器。 EtherCAT是一种工业以太网技术,看到的大多…

【RocketMQ】RocketMQ实例--顺序消息

1、应用场景 一、以证券股票交易撮合场景为例,对于出价相同的交易单,坚持按照先出价先交易的原则,下游处理订单的系统需要严格按照出价顺序来处理订单。 二、以数据库变更增量同步场景为例,上游源端数据库按需执行增删改操作&…

RK3568烧录系统

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、烧录工具二、烧录步骤单独烧录烧录整个固件总结前言 前面我们已经学会了编译系统,包括一键编译和单独编译,其中单独编译适合我们做驱…

ENSP 路由器到本地(现实)PC的FTP实验

前言: 在一个风和日丽的下午,我同事突然问我ENSP和本地PC怎么上传和下载文件?我本以为这个很简单,然后我开始了面向百度编程,但是网上的大多数都是ENSP里面的路由器、服务器和PC间的FTP实验,而不是到本地&…

嵌入式经典通信总线协议:SPI协议

目录 一、spi简介 二、SPI特性 三、spi四种工作方式 四、实现代码 1.选择开发板 2.选择SPI 3.设置硬件片选使能和通讯方式,其他根据需要选择 4. 生成代码 一、spi简介 SPI 是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口…

GIT:如何删除仓库中的.idea .DS_Store target文件/文件夹并设置下次不上传

0. 引言 我们常常会有在git仓库初始化时,忘记设置.gitignore文件导致一些非工程文件上传到仓库中了,导致整个仓库的不美观,甚至影响其他开发同事配置代码。这时候我们就需要删除这些指定文件,那么如何操作呢,这一章我…

php学生成绩管理系统,在线录入、统计学生成绩,多种图表展示对比学生成绩

教学质量是学校教学的生命线,只有能够客观分析自己教学成败得失的教师才是一个合格的老师。这是一款注重优化成绩采集方法、丰富成绩分析维度的小学成绩统计系统,力争做到符合教师工作习惯、使用方法简单、数据分析多样、分析结果科学,为教师…

垃圾回收机制之v8引擎

v8的内存分配 (栈(执行环境)跟堆) 堆内存负责垃圾回收机制,只有新生代和老生代两部分 新生代:对等分的(严格) 老生代: 都是由新生代转变的(连续的空间&…

Vue 实现 html 表格 (grid) 单元格编辑功能 2

第一版表格编辑实现是刚学VUE时硬凑出来 点击详见 经过网上的不断学习,代码精简功能增强,克服了上一个版本的两个bug。 欢迎没有下载积分的朋友欢迎复制转载。 主要功能: 由于取消了 vue 循环的 key 更新,故单元格不需要点击两…

Redis常见面试题(六)

目录 1、Redis支持的Java客户端有哪些? 2、Redisson是什么框架? 3、Redis和Redisson有什么关系? 4、Jedis和Redisson对比有什么优缺点? 5、Redis为什么不提供Windows版本? 6、Redis怎么在Windows下使用? 7、Redis如何设置密码访问? 8、Redis如何分析慢查询操作?…