面向对象分析与设计 - UML 结构图



UML 结构图分为以下几类:类图、对象图、组件图和部署图。

类图

类图模拟系统的静态视图。它包含系统的类、接口和协作;以及它们之间的关系。

系统类图

让我们考虑一个简化的银行系统。

一个银行有很多分支机构。在每个区域,一个分支机构被指定为区域总部,负责监督该区域的其他分支机构。每个分支机构可以有多个账户和贷款。账户可以是储蓄账户或活期账户。客户可以同时开立储蓄账户和活期账户。但是,客户不能拥有多个储蓄账户或活期账户。客户也可以从银行获得贷款。

下图显示了相应的类图。

Class Diagram of Banking System

系统中的类

银行、分支机构、账户、储蓄账户、活期账户、贷款和客户。

关系

  • 一个银行“拥有”多个分支机构 − 组合关系,一对多

  • 一个分支机构(作为区域总部)监督其他分支机构 − 一元关联,一对多

  • 一个分支机构“拥有”多个账户 − 聚合关系,一对多

从账户类继承出两个类,即储蓄账户和活期账户。

  • 一个客户可以拥有一个活期账户 − 关联关系,一对一

  • 一个客户可以拥有一个储蓄账户 − 关联关系,一对一

  • 一个分支机构“拥有”多个贷款 − 聚合关系,一对多

  • 一个客户可以获得多个贷款 − 关联关系,一对多

对象图

对象图模拟一组对象及其在某一时间点的链接。它显示类图中事物实例。对象图是交互图的静态部分。

示例 − 下图显示了银行系统类图一部分的对象图。

Object Diagram of Banking System

组件图

组件图显示一组组件之间的组织和依赖关系。

组件图包含:

  • 组件
  • 接口
  • 关系
  • 包和子系统(可选)

组件图用于:

  • 通过正向和反向工程构建系统。

  • 使用面向对象编程语言开发系统时,对源代码文件的配置管理建模。

  • 在数据库建模中表示模式。

  • 模拟动态系统的行为。

示例

下图显示了一个组件图,用于模拟使用 C++ 开发的系统的源代码。它显示了四个源代码文件,即 myheader.h、otherheader.h、priority.cpp 和 other.cpp。显示了 myheader.h 的两个版本,从最新版本追溯到其祖先版本。文件 priority.cpp 具有对 other.cpp 的编译依赖性。文件 other.cpp 具有对 otherheader.h 的编译依赖性。

Component Diagram

部署图

部署图强调运行时处理节点及其上运行的组件的配置。它们通常由节点和依赖关系或节点之间的关联组成。

部署图用于:

  • 模拟嵌入式系统中的设备,这些设备通常包含软件密集型硬件集合。

  • 表示客户端/服务器系统的拓扑结构。

  • 模拟完全分布式系统。

示例

下图显示了遵循客户端/服务器架构的计算机系统的拓扑结构。该图说明了一个被定型为服务器的节点,该节点包含处理器。该图表明在系统中部署了四个或更多个服务器。连接到服务器的是客户端节点,其中每个节点代表一个终端设备,例如工作站、笔记本电脑、扫描仪或打印机。节点使用清晰地描绘现实世界等效物的图标来表示。

Deployment Diagram
广告