UML实现图-组件图

概述

组件图(ComponentDiagram)描述了软件的各种组件和它们之间的依赖关系。组件图中通常包含4种元素:组件、程序、包、任务,各个组件之间还可以相互依赖。

一、组件的表示法

组件是定义了良好接口的物理实现单元,是系统中可替换的物理部件。在一般情况下,组件表示将类、接口等逻辑元素打包而形成的物理模块。一个组件包含它所实现的一个或多个逻辑类的相关信息,创建了一个从逻辑视图到组件视图的映射。

在UML中,组件用一个左侧带有两个突出小矩形的矩形来表示,如图4-1所示。
在这里插入图片描述

组件的名称是一个字符串,位于组件图的内部。组件的名称有两种:简单名和路径名。通常,UML图中的组件只显示其名称,但是也可以用标记值或表示组件细节的附加栏加以修饰。

二、程序的表示法

1.子程序规范
子程序规范通常是一组子程序集合名,子程序规范中不包括类定义。在UML中,使用一个包含了两个方框的矩形表示子程序规范,上方显示子程序规范的名称,如图4-2所示。
2.子程序体
子程序体是子程序规范的实现,在UML中,使用一个包含了两个方框的矩形表示子程序体下方矩形空白,上方显示子程序体的名称,如图4-3所示。
3.主程序
主程序是包含程序根的文件。在UML中,使用一个包含了两个方框的矩形表示主程序,上方矩形空白,上方显示子程序体的名称,如图4-4所示。
在这里插入图片描述

三、包的表示法

1.包规范
包是类的实现方法。包规范是类的头文件,包含类中函数的原型信息。在C++中,包规范就是I文件,在Java 中就是接口类的包。在UML中,使用一个包含两个方框和一个椭圆形的矩形表示包
规范,上方显示包规范的名称,如图 4-5所示。
2.包体
包体包含了包规范的实现代码。在C++中,包体就是.cpp文件,在Java中就是实现类的包。在UML中,使用一个包含两个方框和一个椭圆形的空白矩形表示包规范,上方显示包体的名称,如图4-6 所示。

在这里插入图片描述

四、任务的表示法

组件图用依赖关系表示各组件之间存在的关系类型。组件图中的依赖关系是由客户指向提供者的虚线箭头表示的。客户组件依赖于提供者组件,提供者组件只在开发时存在,运行时则不存在。

借助于依赖的虚线箭头,我们又可以表示本节所介绍的各种组件之间的依赖关系,如图4-9所示。

在这里插入图片描述

从以上的依赖关系可以看出,任务是最上层的,组件是依赖于任务的实现,包是依赖于组件的具体实现,程序则是依赖于包的实现。在实际的组件图中,我们不必介意以上的依赖关系,只要能够表达组件及组件的关系即可。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

动物群体甲基化如何讲故事?

DNA甲基化是DNA化学修饰的一种形式,能够在不改变DNA序列的前提下,改变基因表达,从而使表型发生变化。DNA甲基化是一种非常保守的表观遗传修饰,其广泛存在于生物体内,在不同的物种间、相同物种不同环境,同一…

学完PMP,怎么应用到实际工作中?

学习理论知识只是第一步,其目的是为了在实际工作中能够提供帮助。我相信题主的问题也是许多人共同面临的。PMP的知识体系是专业项目管理所必须掌握的知识体系。俗话说,有备无患,具备专业的理论知识就是最好的准备。废话不多说,举几…

使用 zxing 生成二维码以及条形码

需求背景 前期在做项目的时候,有一个需求是说要生成一张条形码,并且呢将条形码插入到 excel 中去,但是之前一直没有搞过找个条形码或者是二维码,最后是做出来了,这里呢就先看看怎么生成,后面再抽时间来写写…

6.3 cf 944

Problem - C - Codeforces 思路 分四种情况&#xff0c;以12为分界点 &#xff08;紫色部分是最初思路&#xff0c;但不包含所有情况&#xff09; 只看在a<b c<d 时的图 代码 #include <bits/stdc.h> using namespace std; #define IOS ios::sync_with_stdio(…

web前端三大主流框架指的是什么

web前端三大主流框架是什么&#xff1f;前端开发师的岗位职责有哪些&#xff1f;这边整理了相关内容供大家参考了解&#xff0c;请各位小伙伴随小编一起查阅下面的内容。 web前端三大主流框架 web前端三大主流框架是Angular、React、Vue。 1.Angular Angular原名angularJS诞生…

OJ3376无尽的石头问题

答案&#xff1a; #include<bits/stdc.h> using namespace std; const int N10e7; int fx(int n) {int sum0;while(n){sum(n%10);n/10;}return sum; } int main() {int t,n,x;cin>>t;while(t--){cin>>n;int count0;for(int i1;i<N;){if(in){cout<<…

网关(Gateway)- 自定义过滤器工厂

自定义过滤工厂类 DemoGatewayFilterFactory package com.learning.springcloud.custom;import org.apache.commons.lang.StringUtils; import org.springframework.cloud.gateway.filter.GatewayFilter; import org.springframework.cloud.gateway.filter.GatewayFilterChai…

FreeRTOS【16】直达任务通知使用

1.开发背景 直达任务通知&#xff0c;FreeRTOS 的线程任务提供的接口&#xff0c;可以用作线程唤醒&#xff0c;或者是传递数据&#xff0c;因为是基于线程本身的操作&#xff0c;是轻量级&#xff0c;速度响应更快&#xff0c;适合小内存芯片使用。 事实上本人使用得比较少&am…

pytorch笔记:自动混合精度(AMP)

1 理论部分 1.1 FP16 VS FP32 FP32具有八个指数位和23个小数位&#xff0c;而FP16具有五个指数位和十个小数位Tensor内核支持混合精度数学&#xff0c;即输入为半精度&#xff08;FP16&#xff09;&#xff0c;输出为全精度&#xff08;FP32&#xff09; 1.1.1 使用FP16的优缺…

大渡口数字经济产业商会暨尼伽OLED透明屏产品发布会

2024年5月31日&#xff0c;大渡口数字经济产业商会成功举办了一场盛大的“商会数字经济发展项目签约大会”&#xff0c;活动上不仅深入探讨了构建“义渡新质生产力”及如何更好地“建功重庆西部大开发”的战略议题&#xff0c;还正式与尼伽OLED宣布达成战略合作伙伴关系&#x…

Java版工程项目管理系统源码:技术框架与功能实现全解析

在工程行业&#xff0c;项目管理的高效协同和信息共享是提升管理效率和精度的关键。本文将详细介绍一款采用先进技术框架的Java版工程项目管理系统&#xff0c;该系统支持前后端分离&#xff0c;功能全面&#xff0c;可满足不同角色的需求。从项目进度图表到施工地图&#xff0…

10个从基础到高级的GPT提示词优化指南

为一名大模型的深度用户和微软Copilot的首批开放测试者&#xff0c;很多人会问我如何写出高效的提示词。同时&#xff0c;也有不少读者反映&#xff0c;像ChatGPT和Claude这样的模型并没有想象中那么神奇&#xff0c;无法满足他们的实际需求。 首先我想说&#xff0c;确实像Ch…

双指针_复写零

复写零 题目描述&#xff1a; 题目链接&#xff1a;复写零 内容&#xff1a; 这道题目要求我们每遇到一次0就复写一遍&#xff0c;并且只能在原数组上进行修改&#xff0c;不能越界访问。 算法原理&#xff1a; 思路1&#xff1a; 如果我们用两个指针cur,dest同时从指向第一个…

c# 输出二进制字符串

参考链接 C#二进制输出数据_c# 输出二进制 123.5的方法-CSDN博客https://blog.csdn.net/a497785609/article/details/4572112标准数字格式字符串 - .NET | Microsoft Learnhttps://learn.microsoft.com/zh-cn/dotnet/standard/base-types/standard-numeric-format-strings#BFo…

工业HMI设计,稳定压倒一切,那高颜值就不稳定了吗?

提及工业HMI设计&#xff0c;很多小伙伴就跳出来说&#xff0c;工业 HMI稳定是最重要的&#xff0c;颜值没比必要&#xff0c;花里呼哨的.我承认稳定的重要性&#xff0c;但是稳定与颜值并不是一对矛盾体。本文就分享为什么工业HMI稳定性重要&#xff1f;为什么高颜值也重要&am…

QT:QML中使用Loader加载界面

目录 一.介绍 二.实现 三.效果展示 四.代码 一.介绍 在QML中使用Loader加载界面&#xff0c;可以带来诸多好处&#xff0c;如提高应用程序的启动速度、动态地改变界面内容、根据条件加载不同的组件、更有效地使用内存以及帮助分割应用逻辑等。 1.延迟加载&#xff1a;QML…

动态规划2:面试题 08.01. 三步问题

动态规划解题步骤&#xff1a; 1.确定状态表示&#xff1a;dp[i]是什么 2.确定状态转移方程&#xff1a;dp[i]等于什么 3.初始化&#xff1a;确保状态转移方程不越界 4.确定填表顺序&#xff1a;根据状态转移方程即可确定填表顺序 5.确定返回值 题目链接&#xff1a;面试…

【WEB前端2024】开源智体世界:乔布斯3D纪念馆-第34课-进门播放欢迎光临的音效

【WEB前端2024】开源智体世界&#xff1a;乔布斯3D纪念馆-第34课-进门播放欢迎光临的音效 使用dtns.network德塔世界&#xff08;开源的智体世界引擎&#xff09;&#xff0c;策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript编写的智…

R语言绘图 --- 柱状图(Biorplot 开发日志 --- 3)

「写在前面」 在科研数据分析中我们会重复地绘制一些图形&#xff0c;如果代码管理不当经常就会忘记之前绘图的代码。于是我计划开发一个 R 包&#xff08;Biorplot&#xff09;&#xff0c;用来管理自己 R 语言绘图的代码。本系列文章用于记录 Biorplot 包开发日志。 相关链接…

GITLAB常见问题总结

Troubleshooting GitLab Pages administration (FREE SELF) 原文地址 stage: Plan group: Knowledge info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/…