UML14种图之部署图和构件图最全总结

UML14种图之部署图和构件图最全总结UML14 种图之部署图和构件图部署图构件图接口 Interface 外部接口 端口连接器 Connector 连接件构件图中的关系组件图的建模技术案例 分析一个已经存在的系统 部署图一 什么是部署图 部署图 deploymentdi 配置图 是用来显示系统中软件和硬件的物理架构 从部署图中 您可以了解到软件和硬件组件之间的物理关系以及处理节点的组件分布情况 使用部署图可以

部署图

构件图

基本概念:组件图即是用来描述组件与组件之间关系的一种UML图。组件图在宏观层面上显示了构成系统某一个特定方面的实现结构。

组件图中主要包含三种元素,即组件、接口和关系。

组件图通过这些元素描述了系统的各个组件及之间的依赖关系,还有组件的接口及调用关系。此外,组件图还可以使用包来进行组织,使用注解与约束来进行解释和限定。

组件图在面向对象设计过程中起着非常重要的作用:它明确了系统设计,降低了沟通成本,而且按照面向对象方法进行设计的系统和子系统通常保证了低耦合度,提高了可重用性。

在这里插入图片描述

组件图的组成元素:组件、接口、组件图中的关系、组件的内部结构。

组件,是系统设计的一个模块化部分,它隐藏了内部的实现,对外提供了一组接口。

组件是一个封装完好的物理实现单元,它具有自己的身份标示和定义明确的接口。并且由于它对接口的实现过程与外部元素独立,所以组件具有可替换性
在这里插入图片描述在这里插入图片描述

组件在系统中一般存在三种类型,分别为部署组件、工作产品组件和执行组件。

a.运行系统需要配置的组件,是形成可执行文件的基础—操作系统、JAVA虚拟机、DBMS;

b.包括模型、源代码和用于创建配置组件的数据文件,它们是配置组件的来源—UML图、java类和数据库表;

c.在运行时创建的组件,是最终可运行的系统产生的允许结果—.net组件

下面举两个例子来说明

  • (1)一个ATM机的组件:

系统设计的一个模块化部分

显示界面

读卡机

业务操作—-查询、取款、转账、挂失

  • (2)学校教务系统的组件:

系统设计的一个模块化部分

登录界面、业务动作、层业务实现层

学生管理、教师管理、成绩维护、选课

接口(Interface)

•接口(interface)接口由一组操作组成,它指定了一个契约,这个契约必须由实现和使用这个接口的构件的所遵循。

在这里插入图片描述
在这里插入图片描述
在java语言中供接口通过关键字implements来显式地表示,需接口被类所使用的任何接口类型隐式地定义。

外部接口——端口

<1>接口与端口的关系

提供接口说明了通过端口来提供服务,请求接口说明了通过端口需要从其它构件获得服务。

一个构件可以通过一个特定端口同另一个构件通讯,而且通讯完全是通过由端口支持的接口来描述的。

<2>表示方式

尾部加小方框的正常接口表示,小方框就被称为端口。

在这里插入图片描述

连接器(Connector)——连接件

  • 连接端口意味着请求端口要调用提供端口中的操作,以得到服务。
  • 立端口和接口的优点在于在设计时,两个构件彼此不需要了解对方的内部,只要它们的接口是相互兼容的即可。
  • 如果一个端口提供一个特定的接口而另一个端口需要这个接口,且接口是兼容的,那么这两个端口-便是可连接的。

<1>组装连接件

装配连接件是两个构件实例间的连接件,它定义一个构件实例提供服务,另一个构件实例使用这些服务。装配连接件用于把一个请求接口或端口与一个提供接口或端口的连接起来。在执行时,消息起源于一个请求端口,沿着连接件传递,被交付到一个提供端口

在这里插入图片描述
<2>委托连接件

委托有这样的含义:具体的消息流将发生在所连接的端口之间,可能要跨越多个层次,最终到达要对消息进行处理的最终部件实例。这样,使用委托连接件可对构件行为的层次分解建模。

委托连接件把外部对构件端口的请求分发到构件内部的部件实例进行处理,或者通过构件端口把构件内部部件实例向构件外部的请求分发出去。

构件内部的一个部件可以是另一个构件或是一个类。注意,必须在两个提供端口间或两个请求端口间定义委托连接件。

注意事项:因为构件是可以嵌套的,所以内部构件之间的连接(球-穴)是组装连接件,内部构件与端口之间的连接(实线箭头)是委托连接件。

组件的内部结构

在UML 2规范中,组件允许通过嵌套结构来表现组件的内部结构。

子组件之间通过接口建立关系。图中组件边缘的小矩形被称为端口,端口可以理解为组件的入口与出口,组件通过端口与外部元素相互协作。端口上可以添加提供接口或需求接口来使组件得以扩展。

在这里插入图片描述

构件图中的关系

  • 组件与需求接口之间建立依赖关系
  • 组件与组件之间建立依赖关系:说明在运行过程中A在某些行为上依靠组件B的支持
    在这里插入图片描述

2.实现关系

组件与提供接口之间建立实现关系

在这里插入图片描述

组件图的建模技术

  • 对源代码结构建模

(1)识别出感兴趣的源代码文件集合,并建模为组件。

(2)如果系统规模较大,使用包对组件进行分组。

(3)可以使用约束或注解来表示源代码的作者、版本号等信息。

(4)使用接口和依赖关系来表示这些源代码文件之间的关系。

(5)检查组件图的合理性,并识别源代码文件的优先级以便进行开发工作。

  • 对可执行程序结构建模

(1)识别出相关的运行组件集合。

(2)考虑集合中每个组件的类型。

(3)如果系统规模较大,可以使用包对组件进行分组。这里包的使用可以对应于相应文件的文件存储结构。

(4)分析组件之间的关系,使用接口和依赖关系建模这些关系。

(5)考量建模结果是否实现了组件的各个特性,对建模的结果进行细化。

案例(分析一个已经存在的系统)

画出下列描述的网上商城组件图:购物车、订单、库存、支付管理组件,使用组件图进行完善。

识别组件:购物车、订单、库存、支付管理

识别组件之间的关系通过一个现实的例子。

(1)在购买一件商品时,我们首先是浏览商品,了解商品详情。在商品详细页面上,我们可以看到一个“加入购物车”,点击之后,所浏览的商品即可加入我们的购物车。因此,购物车组件必须对外提供一个“加入购物车”的接口。

(2)当我们进入购物车查看购物车里的商品时,会看到页面里有一个商品数量的选项。在这里可以增加或减少商品的数量。但增加数量的上限不能超过该商品的库存,由此,可以知道购物车需要知道商品的库存信息,也即,库存组件必须给购物车提供一个“查询商品库存”的接口。在该页面中,还有一个“结算”的按钮,点击之后,我们会进入订单的页面。由此,订单组件必须对购物车提供一个“生成订单”的接口。

(3)进入订单页面后,可以看到有一个“提交订单”的按钮,点击之后进入支付管理的页面。由此,支付管理组件必须对订单组件提供一个“提交订单”的接口。

(4)提交订单之后,我们来到支付管理页面,在这里有一个“下一步”的按钮,根据我们网购的经验,可以知道点击之后我们会进入响应的网银支付系统。因此,支付管理组件需要支付系统提供一个支付的接口。

经过以上的分析,我们可以把组件及组件之间的联系用一个表来表示:

在这里插入图片描述

在这里插入图片描述


组件图

【说明】

参考材料:《UML面向对象建模基础》

最后笔者总结如下:

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/229651.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午4:12
下一篇 2026年3月16日 下午4:13


相关推荐

  • 子网掩码和通配符掩码的区别

    子网掩码和通配符掩码的区别子网掩码子网掩码,官方的定义是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。说白了子网掩码的工作原理就是,它拥有和主机IP地址一样的位数,每一位与对应的ip地址位进行“与”操作,得出的结果就是主机所在的子网,打个比方,…

    2022年7月24日
    11
  • PHP array_multisort()函数超详细理解

    PHP array_multisort()函数超详细理解

    2021年10月25日
    46
  • n8n智能体开发:激活并检查工作流 – 实践

    n8n智能体开发:激活并检查工作流 – 实践

    2026年3月15日
    2
  • IDEA导入Eclipse项目

    IDEA导入Eclipse项目背景 用习惯了 idea 再去用 eclipse 实在用的不习惯 于是将老的 eclipse 项目导入到 eclipse 网上有很多教程 看了很多博客都不行 一直报错 各种报错 现在终于好了 我们一起来看看怎么将 eclipse 的项目导入到 idea1 新建一个文件夹 idea 打开这个空文件夹 2 将项目导入 3 窗口右下角等待项目编译完成 4 配置项目环境和结构注意 上面的

    2026年3月26日
    3
  • 浮动广告代码

    浮动广告代码整个页面的代码如下:<%@PageLanguage=’vb’AutoEventWireup=’false’Codebehind=’floatadv.aspx.vb’Inherits=’

    2022年7月3日
    30
  • C++实现大整数加法

    C++实现大整数加法大整数加法可谓是学习 C 语言的一个里程碑 那么 如何在 C 简单易懂地实现大整数加法呢 nbsp 概念思路假定这两个十进制的大整数位数不超过 255 位 那么 可以定义两个长度为 255 的字符数组 num1 num2 以换行符作为分界线 依次读入 最后 从两个数组的最后一位开始 一位位地向前相加 进位 直到两个数组都被读完或一个数组被读完 此时 更长的一个数组剩下的数字直接输出 例

    2026年3月26日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号