构件(Component)

构件也称为组件,它是软件系统中具有独立功能的部分,也是软件体系结构中重要地组成要素,它在功能和数据上构成了一个软件系统的基础‘

构件是系统中可替换的物理部分,它包装了实现而且遵从并提供一组接口的实现。

通俗地说,构件是系统设计的一个模块化元素,它隐藏了内部的实现,对外提供一组外部接口。在系统中,满足相同接口的构件可以自由地替换,如对象库、可执行体、COM+构件及企业级Java Beans等。构件不仅可以为这些事物建模,而且可以表达其它一些参加可执行系统的事物,如表、文件及文档。

构件的基类是“类”(Class),所以它具有类的所有功能(可以有属性、操作、行为等)。

 构件向外部展现两种接口:提供接口和需要接口。提供接口表示构件为客户提供的功能,它告知构件如何被使用。构件至少要有一个提供接口。需要接口表示为了使构件工作,构件必须从其它服务中获取的功能。

 构件和提供接口的接口元素之间用“接口实现”关系连接,和需要接口的接口元素之间用“使用”关系连接。表示提供接口的元素,用一个“棒棒糖”形状表示;表示需要接口的元素,用一个“插座”形状表示。当图中一个构件的提供接口和另外一个构件需要接口是同一个接口的时候,两个形状会合并。接口也可以用一个常规的方框形状表示。

下图是一个构件及提供接口及需要接口的示例。

  1. 在构件图中,从图形工具栏拖出一个构件节点,命名为“订单系统”。
  2. 在构件图中,从图形工具栏拖出一个构件节点,命名为“库存系统”。
  3. 在两个节点中间,增加一个接口节点(使用圆形的节点模板,也可以点击默认圆形节点后面的下拉箭头选择方框形状的接口节点模板),命名为“产品存取”(名称写在圆形图标的下面)。
  4. 将“订单系统”组件和“产品存取”接口之间使用使用关系连接(从订单系统到产品存取);将“库存系统”组件和“产品存取”接口之间使用“接口实现”关系连接(从库存系统到产品存取)。

如下所示: