3.11 包图
在UML中,包是一种对元素进行分组管理的工具,而包图(Package Diagram)则是一种维护和描述系统总体结构模型的重要建模工具,通过对图中各个包及包之间关系的描述,展现出系统的模块与模块之间的关系。一个包图可以由任何一种UML图组成,通常是UML用例图或UML类图,图3-42是某图书管理系统的包图。
图3-42 某图书管理系统包图
3.11.1 包
包是对元素进行分组的机制,其拥有的元素可以是类、接口、用例、组件、节点和协作,还可以是其他包或图,一个元素不能被一个以上的包所拥有,如果包被撤销,其中的元素也要被撤销。包用一个带标签的文件夹符号表示,可以只标明包名,也可以标明包中的元素,如图3-43所示。
图3-43 包
3.11.2 包间关系
包之间的关系总体上可以概括为依赖和泛化两种关系,依赖关系是指包所包含的元素之间存在着一个或多个依赖关系,也就是说,如果两个包的任何元素之间存在着依赖关系,则这两个包之间就存在着依赖关系。包的依赖关系同样是使用一根虚箭线表示,虚箭线指向被依赖的包。
案例3-10
现为某销售管理系统建立类包图,根据逻辑功能将系统中的类分为界面类、客户类、服务器类、数据处理类、规则类几个组,并创建相应的类包,分别命名为GUI、Windows GUI、Web GUI、Client、Server、Rule、Data Sqlclient。
1)首先Client包负责订单的输入,并通过Server包来管理用户的登录和数据库存储,而Server包通过Data Sqlclient数据访问工具包来实现与数据库的实际交互,由此可得出Client包依赖Server包,Server包依赖Data Sqlclient包。
2)其次Rule包负责处理一些规则,并引用一个具体的窗体,而Client包通过引用Rule来实现整个窗体和表单的显示、输入等,并且还将暂存订单信息,因此Client包依赖Rule包,Rule包依赖GUI包。
3)最后,GUI有两个具体实现,一个是针对C/S的Windows GUI,另一个是实现B/S的Web GUI,这三个包之间存在泛化关系。
根据以上分析可建立该销售管理系统的类包图,如图3-44所示。
图3-44 某销售管理系统类包图