UML构件图

UML构件图组件图 ComponentDia 又称为构件图 他描述的是在软件系统中遵从并实现一组接口的物理的 可替换的软件模块 构件图 构件 Component 接口 Interface 关系 Relationship 端口 Port 连接器 Connector 在面向对象系统的物理方面进行建模要用到两种图 组件图和配置图 二 包含的元素 1 组件 Component amp

组件图(Component Diagram)又称为构件图,他描述的是在软件系统中遵从并实现一组接口的物理的、可替换的软件模块。

构件图 = 构件(Component) + 接口(Interface) + 关系(Relationship) + 端口(Port) + 连接器(Connector)

  • 在面向对象系统的物理方面进行建模要用到两种图:组件图和配置图。

二、包含的元素

1.组件(Component)->构件

  • 组件是定义了良好接口的物理实现单元,是系统中可替换的物理部件。
  • 组件代表系统的一个物理实现块,代表逻辑模型元素如类、接口、协同等的物理打包。
  • 构件通过它的提供接口和请求接口展现行为。
  • 由于在UML2.0中,构件是一种类,因此构件具有属性、操作和可见性。这些概念的含义与在类图中定义的是一样的,只是在这里把这些概念应用在构件上。

组件的命名:

  组件的名称有两种:简单名和路径名。并依据目标操作系统可以添加相应的扩展名,例如javadll

表示方式:组件用一个左侧带有突出两个小矩形的矩形来表示。

UML构件图

UML2.0中表示方式:构件用加构造型《component》的矩形框来表示,左上角添加以前的构件符号,如果没有构件细节可在中央直接写上名字。

(构造型和左上角的图标可以二选一)

UML构件图

UML2.0把构件分为基本构件和包装构件

  • 基本构件
    注重于把构件定义为在系统中可执行的元素。
  • 包装构件
    扩展了基本构件的概念,它注重于把构件定义为一组相关的元素,这组元素为开发过程的一部分。也即, 包装构件定义了构件的命名空间方面。在构件的命名空间中,可以包括类、接口、构件、包、用况、依赖(如映射)和制品。按照这种扩展,构件也具有如下的含义:可以用构件来装配大粒度的构件,方法为把所复用的构件作为大粒度构件的成分,并把它们的请求和提供接口连接在一起(简单理解:组件包含组件,组拼大组件)。

组件的种类

  1. 配置组件(Deployment Component):运行系统需要配置的组件,是形成可执行文件的基础—操作系统、JAVA虚拟机、DBMS;
  2. 工作产品组件(Work Product Component):包括模型、源代码和用于创建配置组件的数据文件,它们是配置组件的来源—UML图、java类和数据库表;
  3. 执行组件(Execution Component):在运行时创建的组件,是最终可运行的系统产生的允许结果—.net组件

2.接口(Interface)

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

接口分提供接口和请求接口

  • 把构件实现的接口称为提供接口(供接口),这意味着构件的提供接口是给其它构件提供服务的。实现接口的构件支持由该接口所拥有的特征,包括接口拥有的约束。
  • 构件使用的接口被称为请求接口(需接口),即构件向其它构件请求服务时要遵循的接口

表示方式:

  • 供接口用“棒棒糖”式的图形表示,即由一个封闭的圆形与一条直线组成。
  • 需接口用“插座”式的图形表示,即由一个半圆与一条直线组成。

UML构件图

UML构件图

java语言中供接口通过关键字implements来显式地表示,需接口被类所使用的任何接口类型隐式地定义。

3.外部接口——端口

  • 端口是UML2.0引入的概念
  • 端口描述了在构件与它的环境之间以及在构件与它的内部构件之间的一个显示地交互点
  • 端口是一个封装构件的显示的对外窗口,所有进出构件的交互都要通过端口。
  • 使用端口能在更大的程度上增加构件的封装性和可替代性。
  • 端口是构件的一部分,端口的实例随着它们所属的构件的实例一起被创建和撤消。

<1>接口与端口的关系

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

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

<2>表示方式

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

UML构件图

4.连接器(Connector)——连接件

UML2.0提供两种类型的连接器:

  1. 代理连接器(Delegation Connector)——委托连接件:连接外部接口的端口和内部接口。
  2. 组装连接器(Assembly Connector)——组装连接件:组件连接器表示构件之间的关系,它连接构件内部的类,将一个构件的供接口和一个构件的需接口捆绑在一起

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

<1>组装连接件

有两种表示装配连接件的方法:

  1. 如果要显式地把两个构件实例衔接在一起,在它们的端口之间画一条线即可。
  2. 如果两个构件实例相连是由于它们有兼容的接口,则可以使用一个“球-穴”标记来表示构件实例之间的连接关系。

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

UML构件图

<2>委托连接件

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

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

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

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

4..依赖关系(Dependency)

组件图用依赖关系表示各组件之间存在的关系类型。

  在UML中,组件图中依赖关系的表示方法与类图中依赖关系相同,都是一个由客户指向提供者的虚线箭头。

UML构件图

三、相关概念比较

1.组件与类

UML构件图

2.组件与包

二者均为分组组织机制,但也有许多不同之处:

  • 一个组件代表一个物理的代码模块,而包可以包含成组的逻辑模型元素,也可以包含物理的组件;可以用包来组织用例(use case),不可以用组件来组织用例。
  • 一个类可以出现在多个组件中,却只能在一个包中定义。
  • 配置图(deployment diagram)中,节点(node)中可以放组件,但不可以放包。
  • 包只是类型(type),组件可以是实例也可以是类型。
  • 包可以作为开发视图(development view),用于管理。组件可作为物理视图(physical view),用于部署。但反之不然。

四、组件图建模技术

  1. 对系统中的组件建模—分解系统,考虑有关系统的组成管理、软件的重用和物理节点的配置等因素,把关系密切的可执行程序和对象分别归入组件,找出相应的类、接口等模型元素。
  2. 对相应组件提供的接口建模。
  3. 对组件之间的依赖关系建模。
  4. 将逻辑设计映射成物理实现。
  5. 对建模的结果进行精化和细化。

UML构件图

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

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

(0)
上一篇 2026年3月19日 下午9:19
下一篇 2026年3月19日 下午9:20


相关推荐

  • 视频流媒体服务器的作用是什么?流媒体服务器功能介绍[通俗易懂]

    视频流媒体服务器的作用是什么?流媒体服务器功能介绍[通俗易懂]入行这么多年,深深觉得流媒体服务器的未来也将伴随着宽带应用和网络发展的总趋势,毕竟科技改变生活,未来流媒体也将占据网络的主流,视频流媒体服务器的功能和作用也将越来越丰富。在未来,流媒体服务器将转向高

    2022年7月1日
    26
  • linux vim常用命令_linuxvi编辑器命令

    linux vim常用命令_linuxvi编辑器命令1.vi模式a)一般模式:vi处理文件时,一进入该文件,就是一般模式了.b)编辑模式:在一般模式下可以进行删除,复制,粘贴等操作,却无法进行编辑操作。等按下‘i,I,o,O,a,A,r,R’等字母之后才能进入编辑模式.通常在linux中,按下上述字母时,左下方会出现’INSERT’或者‘REPLACE’字样,才可以输入任何文字到文件中.要回到一般模式,按下[ESC]键即可.c)命令行模…

    2026年2月16日
    5
  • 云安全基线

    云安全基线云安全基线参考实践

    2026年3月19日
    2
  • java mysql 分表策略_mysql 分表策略

    java mysql 分表策略_mysql 分表策略mysql 单表数据量巨大时 查询性能会很差 经常遇到的是存储日志相关的数据会每天产生大量的数据 这里提供单表拆分成多表存储的三个思路 一 固定 N 张表 ID 取模存储预先创建好 N 张表 记录按 ID 取模存储到相应的表中 优点 简单粗暴缺点 受 ID 模式 预先创建好表的数量 不易扩展和改动 按 ID 查询方便 但按时间查询就比较麻烦 数据量大时迁移会影响性能 例如 表 test 拆分到 100 张表中 INSERTIN

    2026年3月17日
    2
  • Java高级程序员面试经历

    Java高级程序员面试经历05 年毕业 到现在已经快 12 年了 如果一直在技术上辛勤耕耘 足够的努力 加上多年的技术经验累积 这个年纪混到架构师级 技术总监甚至 CTO 还是有可能的 不过因为我自己的经历有点特别 2011 年初离开深圳 之后就很少接触编程了 所以水平基本上停留在那个年代 自己不仅没有达到这个级别 甚至去面试的时候 还要和九零后一起竞争 实际上很难遇到比我年纪更大的面试者了 重新回到深圳 见下老同学 有和别人一起开公

    2025年8月4日
    4
  • 测试管理工具列表大全「建议收藏」

    测试管理工具列表大全「建议收藏」测试管理工具列表大全IDNameNotes1TestDirector/QualityCenter业界第一个基于Web的测试管理系统,它可以在您公司组织内进行全球范围内测试的协调。通过在一个整体的应

    2022年8月3日
    7

发表回复

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

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