【UML用户指南】-14-对高级结构建模-实例

news2024/11/15 14:05:27

目录

1、实例的组成结构

1.1、类型

1.2、名称

1.3、操作

1.4、状态

1.5、其他特征

1.5.1、主动对象

1.5.2、链

1.5.3、静态属性

1.6、标准元素


实例是抽象的具体表现,可以对它施加一组操作,而且它可能有一组状态,来存储操作的结果。

术语“实例”与“对象”在很大程度上是同义的,因而,在大多数情况下二者可以互换使用

在 UML 中可以表示抽象和它们的实例。UML 中的几乎每一个构造块(最显著的是类、构件、

结点和用况)都可以对它们的本质方面或者对它们的实例方面建模。在大多数情况下是把它

们作为抽象。当要对具体的表现建模时,就要用它们的实例。

UML为实例提供了图形表示,如图所示。这种表示法允许将具名实例以及匿名实例可视化

在图形上,用带下划线的名字表示实例规约

实例使用一个冒号

包的限定名用两个冒号

        在对实例建模时,要把它们放在对象图中(若想可视化它们的结构细节),

放在交互图和活动图中(若想可视化它们在动态情景中的参与情况)

如果要显式地表示对象与它的抽象之间的关系,可以把对象放在类图中

1、实例的组成结构

1.1、类型

        一个实例有一个类型。实例的类型必须是具体的类目,但是一个实例规约(不表示单个实例)可以有一个抽象类型。在表示法上,实例的名称后跟一个冒号再加上类型,例如:t :Transaction。

1.2、名称

        实例可以有一个在其语境中与其他实例相区别的名称。通常,对象存在于一个操作、一个构

件或一个结点的语境中。名称 (name)是一个文字串,例如上图中的t和myCustomer。单

独的一个名称叫做简单名 (simple name)。

实例的抽象可以是简单名,例如Transaction;

也可以是路径名( path name),例如Multimedia::AudioStream,它是以抽象所在的包名为前缀的抽象名。

在很多情况下,只有对象所在的计算机知道该对象的实际名称,在这种情况下,

可以给出一个匿名对象(例如:AudioStream)。匿名对象的每次出现都被认为是有别于所

有其他出现。

1.3、操作

        对象不仅是通常在现实世界中占有空间的事物,而且可以对它做某些事。在对象的抽象中声

明了可以在对象上进行的操作。例如,如果类 Transaction定义了操作 commit,那么给定一

个实例t : Transaction,就可以写出像t.commit()这样的表达式。这个表达式的执行意味

着对象t由操作commit进行操纵。在与Transaction相关的继承网格结构中,这个操作可能

被多态地调用,也可能不被多态地调用

1.4、状态

        由对象的所有性质加上每个性质当前的取值(也可以根据你的观点包括链和相关的对象)组成。这些性质包括对象的属性和链以及所有它的组成部分。对象的状态因此是动态的。所以,当可视化对象的状态时,实际上是在给定的时间空间点上描述对象的状态值。在同一张交互图中,可以通过多次显示一个对象来表明它的状态变化,但每次出现都表示一个不同的状态。

状态的改变可以是对象中任意属性的值发生变更

        当操作对象时,通常要改变对象的状态;当查询对象时,则不会改变它的状态。例如,在预

订飞机票时(用对象 r : Reservation 表示),可以设置它的一个属性的值(例如 price=395.75)

如果改变了预订,比如增加了一段新航程,那么对象的状态要发生变化(例如price =1024.86)。

        如图所示,可以用UML表明对象的属性值。例如,显示myCustomer的属性id值是

“432-89-1783”。这个例子中,显式地给出了 id 的类型(SSN),但是这是可以省略的(正如active = True),因为其类型可以在myCustomer的类中对id的声明中找到。
 

可以把一个状态机和一个类联系起来,在对事件驱动的系统建模或者对类的生命期建模时,

这是特别有用的。在这些情况下,也可以显示状态机对于给定对象在某一给定时刻的状态。

把状态展示在类型后面的方括号内。

如上图所示,对象 c(类 Phone 的实例)处于状态WaitingForAnswer,它是一个在Phone的状态机中定义的命名状态。

由于一个对象可以同时处于几个状态,所以也可以显示该对象当前状态的一个列表。

1.5、其他特征

1.5.1、主动对象

进程和线程是系统交互视图的重要元素,所以UML提供了区别主动元素(它是进程或线程的

一部分,表示控制流的根)与被动元素的可视化提示。可以声明使进程或线程具体化的主动

类,也可以辨别主动类的实例,

每个主动对象代表一个控制流的根,可用于命名不同的流。

1.5.2、链

关联的实例称为链。链是对象之间的语义联系。像关联一样,把链表示成一条直线,但能把链与关联区别开来,因为链连接的是对象。

1.5.3、静态属性

另一种实例是静态(类范围内的)属性。实际上,静态属性是类拥有的对象,类的所有实例都可以访问这个对象。因此,可以在类声明中把它表示为带有下划线的属性

1.6、标准元素

UML 中的所有扩展机制都可应用到对象上。然而,通常不直接地将实例衍型化,也不给出实

例的标记值。相反,对象的衍型和标记值可从它的抽象中所定义的衍型和标记值派生出来。

例如,如图所示,可以显式地指明对象的衍型以及它的抽象。

(1)实例(instanceOf) 描述了客户对象是供应者类目的一个实例。它很少以图形的形

式来表示,通常用一个后跟冒号的文本表示法来表示它。

(2)实例化(instantiate) 描述了客户类创建了供应者类的实例。
 

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

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

相关文章

leetcode-04-[24]两两交换链表中的节点[19]删除链表的倒数第N个节点[160]相交链表[142]环形链表II

一、[24]两两交换链表中的节点 重点:暂存节点 class Solution {public ListNode swapPairs(ListNode head) {ListNode dummyHeadnew ListNode(-1);dummyHead.nexthead;ListNode predummyHead;//重点:存节点while(pre.next!null&&pre.next.next…

AI智能体的分级

技术的分级 人们往往通过对一个复杂的技术进行分级,明确性能、适用范围和价值,方便比较、选择和管理,提高使用效率,促进资源合理分配和技术改进和标准化。 比如,国际汽车工程师学会(SAE)定义了自…

CANOpen转PROFINET网关连接低压伺服系统

在现代工业自动化领域,随着技术的不断进步,各种总线通讯协议之间的转换和互操作性变得越来越重要。CANOpen和PROFINET作为两种广泛应用的通讯协议,各自具有独特的优势和应用场景。然而,在实际应用中,往往需要将CANOpen…

python使用wkhtmltopdf将html字符串保存pdf,解决出现方框的问题

出现的问题: 解决办法: <html> <head><meta charset="UTF-8"/> </head> <style> * {font-family: Arial,SimSun !important; } </style> </html>在html字符串前面加上上面代码,意思是设置字体编码和样式 html示例:…

vue2前置路由守卫中使用this.$store.state报错解决

1、问题描述&#xff1a;在前置路由守卫逻辑中&#xff0c;要更改vuex中的store的state状态&#xff0c;使用常规的this.$store.state报错 2、问题原因&#xff1a; 在vue2是vueRouter前置路由守卫中&#xff0c;this关键字并不会指向vue实例&#xff0c;因此不能使用this.$st…

如何优雅的实现Excel导入通用处理流程

目录 1.业务背景2.业务导入流程3.流程优化3.1 模板模式3.1.1 导入处理器接口ImportProcessor3.1.2 抽象父类 AbstractImportProcessor3.1.3 子类实现 ImportDemoProcessor 3.2 工厂模式3.2.1 标识子类的枚举ImportTypeEnum3.2.2 工厂类ProcessorHolder3.2.3 工厂类的调用 4. 特…

纹理贴图必须要输入顶点坐标或纹理坐标吗

最近知识星球的一位同学,面试时被问到:纹理贴图必须要输入顶点坐标或纹理坐标吗? 他一下子被这个问题问蒙了,虽然他知道正确答案是否定的,但是说不上来理由。 这个就引出了文本提到的全屏三角形,它不需要顶点缓冲区,而是利用顶点着色器直接生成所需的顶点坐标和纹理坐标…

【CTS】android CTS测试

android CTS测试 1.硬件准备2. 软件准备3. 下载 CTS3.1 cts3.2 解压 CTS 包&#xff1a; 4 配置adb fastboot5 检查 Java 版本6 安装aapt26.1 下载并安装 Android SDK6.2 找到 aapt2 工具6.3 配置环境变量 7. 准备测试设备8. 运行 CTS 测试8.1 启动 CTS&#xff1a; 9. 查看测试…

DDD架构和微服务初步实现

本次记录的是微服务的初步认识和DDD架构的初步实现和思路&#xff0c;在之前的发布里&#xff0c;对Javaweb进行了一次小总结&#xff0c;还有一些东西&#xff0c;不去详细理解说明了&#xff0c;下面开始我对微服务的理解。 什么是微服务&#xff1f; 在刚刚开始学习的时候…

【让AI写高考AI话题作文】看各大模型的回答

文章目录 命题chatGPT问题的消失&#xff0c;思考的萎缩 通义千问标题&#xff1a;在信息洪流中寻找智慧之光 文心一言探寻未知&#xff0c;拥抱无限的问题 命题 阅读下面的材料&#xff0c;根据要求写作。&#xff08;60分&#xff09; 随着互联网的普及、人工智能的应用&am…

快速锁定Bug!掌握Wireshark等抓包技术,提升测试效率

前言 相信做了测试一段时间的小伙伴都会开始意识到抓包对于测试的重要性&#xff0c;它涉及到功能测试、性能测试、自动化测试、安全测试和数据库测试等等。可以说我们要想做好测试就必须和抓包打交道&#xff0c;脱离抓包的测试是不合格的。人们都说黑客利用Wireshark等抓包工…

未来校园的新质生产力:南京江北新区浦口外国语学校校园网升级改造的启示

作者:南京江北新区浦口外国语学校 校长助理 杨美玲 导语:在南京江北新区(第十三个国家级新区),浦口外国语学校,这所拥有77605平方米宽阔校园、169个班级、7335名学生和511位专任教师的九年一贯制公办外语特色学校,正以前所未有的活力和智慧,迎接信息化时代的挑战。作为学校信息…

【JMeter接口测试工具】第二节.JMeter基本功能介绍(下)【进阶篇】

文章目录 前言八、Jmeter常用逻辑控制器 8.1 如果&#xff08;if&#xff09;控制器 8.2 循环控制器 8.3 ForEach控制器九、Jmeter关联 9.1 正则表达式提取器 9.2 xpath提取器 9.3 JSON提取器十、跨越线程组传值 10.1 高并发 10.2 高频…

1996-2023年各省农林牧渔总产值数据(无缺失)

1996-2023年各省农林牧渔总产值数据&#xff08;无缺失&#xff09; 1、 时间&#xff1a;1996-2023年 2、 来源&#xff1a;国家统计局、统计年鉴 3、 指标&#xff1a;农林牧渔总产值 4、 范围&#xff1a;31省 5、 缺失情况&#xff1a;无缺失 6、 指标解释&…

韩顺平0基础学java——第20天

p407-429 接口 一个类可以实现多个接口&#xff08;电脑上可以有很多插口&#xff09; class computer IB&#xff0c;IC{} 接口中的属性只能是final&#xff0c;并且是public static final 接口不能继承其他类&#xff0c;但是可以继承多个别的接口 interface ID extends I…

【PX4-AutoPilot教程-TIPS】离线安装Flight Review PX4日志分析工具

离线安装Flight Review PX4日志分析工具 安装方法 安装方法 使用Flight Review在线分析日志&#xff0c;有时会因为网络原因无法使用。 使用离线安装的方式使用Flight Review&#xff0c;可以在无需网络的情况下使用Flight Review网页。 安装环境依赖。 sudo apt-get insta…

Rust基础学习-标准库

栈和堆是我们Rust代码在运行时可以使用的内存部分。Rust是一种内存安全的编程语言。为了确保Rust是内存安全的&#xff0c;它引入了所有权、引用和借用等概念。要理解这些概念&#xff0c;我们必须首先了解如何在栈和堆中分配和释放内存。 栈 栈可以被看作一堆书。当我们添加更…

数据库错误[ERR] 1071 - Specified key was too long; max key length is 1000 bytes

环境&#xff1a;phpstudy的mysql8 索引长度问题&#xff1a; 试了很多解决办法&#xff0c;例如需改配置&#xff1a; set global innodb_large_prefixON; set global innodb_file_formatBARRACUDA; 试了还是有问题&#xff0c;直接启动不了了。因为mysql8取消了这个配置。…

Linux操作系统学习:day02

内容来自&#xff1a;Linux介绍 视频推荐&#xff1a;[Linux基础入门教程-linux命令-vim-gcc/g -动态库/静态库 -makefile-gdb调试]( day02 5、Linux目录结构 操作系统文件结构的开始&#xff0c;只有一个单独的顶级目录结构&#xff0c;叫做根目录。所有一切都从“根”开始…

DHCP原理与配置(Linux)

目录 DHCP概念 使用DHCP的好处 DHCP的分配方式 DHCP租约过程 租约过程分4个步骤&#xff08;全过程广播&#xff09; 1. 客户机请求IP&#xff08;Discover&#xff1a;发现&#xff1b;客户端广播 发送一个数据包&#xff0c;其他主机也能接收到&#xff0c;如果是没有安…