OOAD - UML 结构化图
UML结构图分为以下几类:类图、对象图、组件图和部署图。
类图
类图对系统的静态视图进行建模。 它由系统的类、接口和协作组成; 以及它们之间的关系。
系统的类图
让我们考虑一个简化的银行系统。
一家银行有很多分行。 在每个区域,指定一个分行作为区域总部,负责监督该区域的其他分行。 每个分行可以有多个账户和贷款。 账户可以是储蓄账户或活期账户。 客户可以开设储蓄账户和活期账户。 但是,一名客户不得拥有多个储蓄账户或往来账户。 客户还可以从银行获得贷款。
下图是对应的类图。
系统中的类
银行、分行、账户、储蓄账户、往来账户、贷款和客户。
关系
一家银行"拥有–a"个分行 − 组合,一对多
具有区域总部角色的分支机构监督其他分支机构 − 一元关联,一对多
一个分行"有–a"个账户 − 聚合、一对多
从Account类中继承了两个类,即Savings Account和Current Account。
一名客户可以拥有一个往来账户 − 关联,一对一
一名客户可以拥有一个储蓄账户 − 关联,一对一
分行"拥有–a"笔贷款 − 聚合、一对多
一个客户可以申请多笔贷款 − 关联,一对多
对象图
对象图对一组对象及其在某个时间点的链接进行建模。 它在类图中显示了事物的实例。 对象图是交互图的静态部分。
示例 − 下图显示了银行系统部分类图的对象图。
组件图
组件图显示一组组件之间的组织和依赖关系。
组件图包括 −
- 组件
- 接口
- 关系
- 软件包和子系统(可选)
组件图用于 −
通过正向和逆向工程构建系统。
使用面向对象的编程语言开发系统时对源代码文件的配置管理进行建模。
表示建模数据库中的模式。
动态系统的行为建模。
示例
下图显示了对使用 C++ 开发的系统源代码进行建模的组件图。 它显示了四个源代码文件,即 myheader.h、otherheader.h、priority.cpp 和 other.cpp。 显示了 myheader.h 的两个版本,从最新版本追溯到其祖先版本。 文件priority.cpp 具有对other.cpp 的编译依赖性。 文件 other.cpp 编译依赖于 otherheader.h。
部署图
部署图强调运行时处理节点及其驻留在其上的组件的配置。 它们通常由节点和依赖关系或节点之间的关联组成。
部署图用于 −
嵌入式系统中的模型设备通常由软件密集型硬件集合组成。
表示客户端/服务器系统的拓扑。
对完全分布式系统进行建模。
示例
下图显示了遵循客户端/服务器体系结构的计算机系统的拓扑。 该图说明了构造为由处理器组成的服务器的节点。 从图中可以看出,系统中部署了四台或更多服务器。 连接到服务器的是客户端节点,其中每个节点代表一个终端设备,例如工作站、笔记本电脑、扫描仪或打印机。 这些节点使用图标来表示,清楚地描述了现实世界的等效情况。