鸟瞰uml(中)

21.依赖和关联之间的区别

依赖(Dependency):

依赖关系是一种较弱的关系,它表示一个类在某些条件下使用了另一个类。一个类的变化可以影响到依赖它的类,但不必须反过来,即依赖关系是一个单向的。依赖关系通常是一种短期的或临时的关系,表示在特定的情况下需要使用另一个类的功能或服务。在UML类图中,依赖关系用一个虚线箭头表示,箭头指向被依赖的类。

关联(Association):

关联关系是一种较强的关系,它表示一个类的对象与另一个类的对象之间存在关联。关联关系可以是双向的,也可以是单向的,它表示两个类之间的关联或连接。一个类的变化可能会影响到与它关联的其他类。在UML类图中,关联关系用一条实线连接两个类,实线两端通常有一个箭头指向被关联的类。可以使用导航箭头来表示关联方向,箭头指向被关联的类表示单向关联,箭头同时指向两个类表示双向关联。还可以使用多重性(Multiplicity)来表示关联的数量和约束。

总结来说,依赖关系表示一个类对另一个类的临时使用或依赖,而关联关系表示两个类之间的较强的连接和关联。依赖关系是一种短期的、临时的关系,而关联关系是一种持久的、更加稳定的关系。

22.泛化与类的继承有区别吗

泛化(Generalization)和类的继承是相互关联的概念,它们描述了类与类之间的层次关系。

泛化(Generalization):

泛化是面向对象编程中的一种机制,用于描述类与类之间的一般与特殊关系。它表示一个更一般的类(父类、超类),和一个或多个更具体的类(子类、派生类)之间的关系。父类通常具有通用的特征和行为,而子类则通过继承父类的特征和行为,并可以添加自己特有的特征和行为。在UML类图中,泛化关系用一条带空心箭头的实线表示,箭头指向父类。

继承(Inheritance):

继承是面向对象编程中的一种实现泛化关系的机制。它允许子类可以继承父类的属性和方法,并且可以在子类中添加额外的属性和方法。通过继承,子类可以重用父类的代码,并且可以通过覆盖(Override)父类的方法来实现多态性。继承是一种代码重用和扩展的机制,它使得类与类之间形成了层次结构。子类可以访问和使用父类的公共成员,而不需要重新实现相同的功能。

综上所述,泛化和继承是相关联的概念,泛化描述了一般与特殊之间的关系,而继承是实现泛化关系的一种具体机制。泛化是面向对象的术语,而继承是面向对象编程中的实现机制。

23.聚合和组合的异同

聚合(Aggregation)和组合(Composition)都描述了对象之间的关联关系,但它们在关联程度和关系强度上存在一些区别。

聚合(Aggregation):

聚合表示一种“包含”关系,其中一个对象包含另一个对象。它表示了一个弱关联,两个对象可以分别存在,即使一个对象不存在,另一个对象仍然可以单独存在。实例之间的聚合关系在生命周期上是相对独立的。聚合关系中的对象之间可以共享资源,但它们的生命周期可以独立控制。例如,一个班级对象(容器)和多个学生对象(成员),即使班级不存在,学生仍然可以存在。

聚合关系用一个带空心菱形的实线来表示,菱形指向被包含的对象。

组合(Composition):组合表示一种更强的“整体-部分”关系,一个对象是另一个对象的一部分。它表示了一个强关联,两个对象之间的生命周期是紧密相关的。一个对象的存在依赖于另一个对象的存在。在组合关系中,整体对象控制着其部分对象的生命周期。当整体对象被销毁时,它包含的部分对象也会被销毁。例如,一个汽车对象(整体)包含多个轮胎对象(部分),当汽车被废弃时,轮胎也被废弃。

组合关系使用一个实线带实心菱形来表示,菱形指向被包含的对象。

在总结上述区别时,可以用以下的规则:如果两个对象之间的关系符合“整体-部分”关系,其中一个对象是另一个对象的一部分,且整体的销毁会影响到部分,那么它们之间的关系应该被定义为组合。如果两个对象之间的关系是“容器-成员”关系,其中一个对象是另一个对象的容器,但成员的生命周期不依赖于容器,那么它们之间的关系应该被定义为聚合。

需要注意的是,聚合和组合只是关系的一种描述方式,并不是语言本身的特性。在许多编程语言中,没有明确的语法来表示聚合和组合关系,只有通过注释或者代码中的命名来描述这种关系。

24.顺序图的元素

角色,对象,生命线,激活期,消息

25.顺序图的消息

同步消息,异步消息,返回消息

26.返回消息是必须的吗,顺序图中消息顺序号是必须的吗

不是,但为了阅读方便一般每个消息都有返回消息

不是,在顺序图中,消息序列号并不是必需的,但它可以提供有关消息发送和接收顺序的信息,并帮助阐明系统中的顺序和交互过程。尽管消息序列号具有很多好处,但在简单的顺序图或交互中,可以省略它们以简化图形,并使用直观的方式描述消息之间的顺序关系。因此,是否使用消息序列号取决于需求和图形的复杂性。对于复杂的顺序图或需要清晰表示消息次序的场景,推荐使用消息序列号。

27.通信图的元素

活动者,对象,链接,消息

28.通信图和顺序图的关联

同:都表示出了对象间的交互作用相互转换

异:顺序图强调消息的时间顺序,图像是一张表;通信图强调对象间的关系(发送和接收消息的对象之间的组织结构),图像是定点和弧的结合

        顺序图可以反映对象的创建、激活、销毁等生命周期;通信图没有

        通信图能反映动作路径,消息必须有顺序号;顺序图没有

        顺序图常用于表示方案,通信图用于过程的详细设计

29.顺序图和通信图中分别怎么表示循环

在顺序图中,可以使用循环图标来表示循环。通常使用两种类型的循环图标:

带有条件的循环(Loop with Condition):这种循环表示在满足条件的情况下重复执行一系列操作。它的表示形式是一个小矩形框,框内部有条件语句,通常以方框与直线相连。

"condition" 表示循环的条件,"Actions" 表示循环内要执行的操作。如果条件为真,循环将继续执行。否则,循环结束。

简单循环(Simple Loop):这种循环表示简单地重复执行一系列操作一定的次数。它的表示形式是一个框内有一个 "Loop" 标签,通常以方框与直线相连。

"Loop" 表示循环的次数。这种循环通常用于表示固定的迭代次数。

在通信图中,可以使用箭头来表示循环。可以在箭头的路径上指定循环条件或表示循环的次数。

箭头表示从 A 到 B 的消息传递。如果需要循环执行该消息传递,可以将箭头连接回自身,以表示循环。你还可以在箭头的路径上添加循环条件或表示循环次数的注释。

注意,通信图通常用于显示消息的传递和顺序关系,而不会详细说明循环的逻辑或具体操作。因此,在通信图中表示循环时应尽量保持简洁清晰。

30.通信图并不是顺序图的一个特例

31.消息交互在面向对象语言中即方法调用

32.状态机图不是静态图

33.泳道技术是将一个活动图中的活动状态进行分组,每一组表示一个特定的类、人或部门,他们负责完成组内的活动

34.活动图和状态机图是对一个对象的生命周期进行建模,描述对象随时间变化的行为

35.对反应型对象进行建模一般使用状态机图

 

 

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

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

相关文章

【2023年度总结】 何其有幸 年岁并进 一元复始 万象更新

🌙 新年将至,万物更新,旧疾当愈。 今年极度焦虑。发生太多事情,做出很多改变。 自律。早起、拍照、运动、读书、学习、认识了很多厉害的朋友,尝试影响周围的人。这是我生活正向能量的来源。 学习。今年依然是把大量…

C#上位机与欧姆龙PLC的通信06---- HostLink协议(FINS版)

1、介绍 对于上位机开发来说,欧姆龙PLC支持的主要的协议有Hostlink协议,FinsTcp/Udp协议,EtherNetIP协议,本项目使用Hostlink协议。 Hostlink协议是欧姆龙PLC与上位机链接的公开协议。上位机通过发送Hostlink命令,可…

golang的大杀器协程goroutine

在Golang中,协程(Goroutine)是轻量级的执行单元,用于实现并发编程。它是Golang语言的重要组成部分,提供了简洁、高效的方式来处理并发任务。 特点: 1)轻量级:Go语言的协程是轻量级…

Golang leetcode206 翻转链表 迭代 递归 双指针

文章目录 翻转链表 leetcode206题解第一版 直接建立新的链表双指针迭代递归法 翻转链表 leetcode206 至此走到这里,我们对于链表的结构应当已经比较熟悉,下面的就是敢于操作 题解第一版 直接建立新的链表 时间复杂度太高 // 初始方法,建立…

简单搭建 SSM 项目实现登录

目录 项目简介项目层级介绍,导入依赖添加配置业务逻辑实现前端 JSP 页面实现 项目简介 SSM(Spring、Spring MVC、MyBatis)框架,是一种 Java Web 应用程序开发框架的集合,可以帮助开发者快速搭建 Java Web 应用程序。想…

React16源码: Suspense与lazy源码实现

Suspense 与 lazy 1 &#xff09;概述 Suspense 是在 react16.6 提供的新 feature用于加载的缓冲的内置组件 2 &#xff09;示例程序 lazy.js // lazy.js import React from react export default () > <p>Lazy Comp</p>主程序 import React, { Suspense, …

ARM AArch64的虚拟化(virtualization)详解(上)

目录 一、概述 开始之前 二、虚拟化介绍 为什么虚拟化很重要

用队列实现栈(JAVA)

仅使用两个队列实现一个后入先出&#xff08;LIFO&#xff09;的栈&#xff0c;并支持普通栈的全部四种操作&#xff08;push、top、pop 和 empty&#xff09;。 实现 MyStack 类&#xff1a; void push(int x) 将元素 x 压入栈顶。int pop() 移除并返回栈顶元素。int top() …

【MySQL】查看表的信息相关命令

文章目录 【MySQL】查看表的信息相关命令查看表的信息相关命令例 【免责声明】文章仅供学习交流&#xff0c;观点代表个人&#xff0c;与任何公司无关。 编辑|SQL和数据库技术(ID:SQLplusDB) 【MySQL】查看表的信息相关命令 在MySQL中&#xff0c;可以使用以下语句来查看表的信…

python实现Ethernet/IP协议的客户端(二)

Ethernet/IP是一种工业自动化领域中常用的网络通信协议&#xff0c;它是基于标准以太网技术的应用层协议。作为工业领域的通信协议之一&#xff0c;Ethernet/IP 提供了一种在工业自动化设备之间实现通信和数据交换的标准化方法。python要实现Ethernet/IP的客户端&#xff0c;可…

【Linux】socket基础API

目录 1. 创建socket&#xff08;TCP/UDP&#xff0c;客户端服务器&#xff09; 1.1 第一个参数——domain 1.2 第二个参数——type 1.3 第三个参数——protocol 2. 绑定socket地址&#xff08;TCP/UDP&#xff0c;服务器&#xff09; 2.1 字节序及转换函数 2.2 IP地址及…

消融实验(ablation study)——全网最全解读

消融实验&#xff08;ablation study&#xff09; 是什么优势与劣势案例总结 是什么 消融实验是一种科学研究方法&#xff0c;用于确定一个条件或参数对结果的影响程度。当研究者提出了一个新的方案或方法时&#xff0c;消融实验通过逐一控制一个条件或参数&#xff0c;来观察…

6个火爆全网的AI开源项目,用上月10万+

标题月10万可能说的有点夸张和含糊&#xff0c;10万具体指的是你可以利用这些开源项目实现&#xff1a; 访问量10万 收入10万 用户10万 …… 开源项目只是免费的工具&#xff0c;具体怎么实现还需要你根据自己需求去深入运营。这里只是给你推荐一些比较热门的开源项目&…

基于QT开发的温室气体数据记录软件

1、概述 温室气体分析仪数据记录软件用于实现温室气体分析仪数据的获取与存储&#xff0c;阀箱数据的获取与存储、冷阱数据的获取与存储、采样单元数据的获取与存储、阀箱和采样单元的远程操作以及系统功能的管理。其主操作界面如下&#xff1a; 上述软件界面分为2各区域&…

用html,js和layui写一个简单的点击打怪小游戏

介绍&#xff1a; 一个简单的打怪小游戏&#xff0c;点击开始游戏后&#xff0c;出现攻击按钮&#xff0c;击败怪物后可以选择继续下一关和结束游戏。 继续下一个怪兽的血量会增加5点&#xff0c;攻击按钮会随机变色。 效果图&#xff1a; html代码&#xff1a; <!DOCTYPE…

【仅供测试】

https://microsoftedge.microsoft.com/addons/detail/%E7%AF%A1%E6%94%B9%E7%8C%B4/iikmkjmpaadaobahmlepeloendndfphd 测试网站&#xff1a; https://www.alipan.com/s/tJ5uzFvp2aF // UserScript // name 阿里云盘助手 // namespace http://tampermonkey.net/ // …

Linux操作系统—进程和服务管理

1. 查看网络连接信息&#xff1a; - 使用netstat和ss命令查看系统的网络连接信息。 # 示例&#xff1a;查看网络连接信息 netstat -an | grep ESTABLISHED 2. 查看进程的环境变量&#xff1a; - 使用/proc目录下的environ文件查看进程的环境变量。 # 示例&#xff1a;查看进程…

一次性解决 DL-FWI 论文题目问题

摘要: 小组做同一方向研究时, 面临题目容易冲突的问题. 本文分析一篇 DL-FWI 涉及的几个方面, 以此来完全解决论文命名问题。 1. 反演结果 反演结果可以按几种方式划分. 1.1 数据的维度 1.1.1 1D 反演的结果是 1D, 其实容易有较好的普适性. 相应的输入, 一般是共中心点道集…

每天刷两条道题——第三天

1.1两两交换链表中的节点 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&#xff09; 输入&#xff1a;[1,2,3,4] 输出&#xff1a;[2,1,4,3…

路由懒加载及路由参数

路由懒加载 叙述&#xff1a;路由的懒加载是一种优化技术&#xff0c;用于在需要时按需加载路由组件&#xff0c;而不是在应用程序初始化时一次性加载所有路由组件。 routes: [{path: /login,// 路由懒加载component: () > import(/views/LoginComp),// 命名路由name: log…