静态图—包图

来源:互联网 发布:linux系统可以做什么 编辑:程序博客网 时间:2024/05/22 22:18

上篇博客总结了对象图:http://blog.csdn.net/wang18631061452/article/details/50183957,这次包图完成后,静态图就OK了。

包图


一、包

1.为什么要包?

1.1在面向对象软件开发的视角中,类显然是构建整个系统的基本构造块。但对于庞大的系统,其包含的的类成百上千,再加上类间的复杂的关联关系、多重性等,必然大大超出了人们可以处理的复杂度。于是引入了“包”这种分组事物构造块。

1.2包的作用:

1)对语义上相关的元素进行分类

2)定义模型中的“语义边界”

3)提供配置管理单元

4)在设计时,提供并行工作的单元

5)提供封装的命名空间,其中所有名称必须唯一

2.包的概念

一种名字空间(namespace)或容器(container).包在UML中,如图:


3.包的元素

在包中可以拥有其它各种元素,包括类、接口、构件、节点、协作、用例,甚至其它子包或图。意味着元素在这个包中声明的,因此一个元素只能属于一个包。

4.可见性

用“+”来表示“public”, 用“#”来表示“protected”, 用“-”来表示“private”
包内元素的可见性,标识了外部元素访问包内元素的权限

5.包的表示


二、包图

1.包图中的关系

包图有2种关系:依赖 、泛化
依赖关系
分4种。在依赖关系中,我们把箭尾端的包称为客户包,把箭头端的包称为提供者包
下面我们用一张图来说明

1.《use》关系
《use》关系是一种默认的依赖关系,说明客户包中的元素以某种方式使用提供者包的公共元素,也就是 客户包依赖于提供者包。例图中有2个《use》依赖,client包将通过server包来完成order的存储,而server包使用System.Data.sqlClient 包来实现数据库的存储。
2.《import》关系
《import》关系:最普遍的包依赖类型,说明提供者包的命名空间将被添加到客户包的命名空间中,客户包中的元素也 能够访问提供者包的所有公共元素。
《import》关系使命名空间合并,党提供者包中的元素具有与客户包中的元素相同的名称时,将会导致命名空间的冲突。这也意味着,当客户包的元素引用提供者包的元素时,将无需使用全称,只需使用元素名称即可。
例图中:Client包引用(import)了rule包,Rule包又引用了GUI包,同时,这还间接表明Client包引用了GUI 包。
3.《access》关系
如果只想使用提供者包的元素,而不想合并这两个包,则应该使用该关系。在客户包中必须使用路径名,才能访问提供者包中的所有公共元素
4.《trace》关系
想表示一个包到另一个包的发展历史,则需要使用《trace》关系表示。
泛化关系
泛化联系表达事物的一般与特殊的关系。如果两个包存在泛化,意指其中的特殊性包必须遵循一般性包的接口。

2.如何阅读包图?

1)根据《use》关系可以发现Client包使用server包,server包使用system.data.sqlclient包,根据它们所包含的元素,得知client包负责order(订单)的输入,并通过Server包管理用户的登陆( loggingservice)和数据库存储(database),而server包还通过.net 的SQL serve访问工具 包,来实现与数据库 的连接和通讯。
2)看《import》关系,从rule包的元素,得知该包负责处理一些规则,并引用了一个具体的窗体(Window);而client包通过引用rule来实现整个窗体和表单的显示,输入等,并且还将 暂存order(订单)信息
3)包的泛化关系。GUI有两个具体实现,一个C/s的WIndows GUI ,一个实现B/S的WebGUI.

3.如何使用rose创建包图?

良好包结构的关键是包内高内聚,包间低耦合。
包既可以在rose的"logic view "处创建,又可以在“component view”处创建。
双击“logic view”目录下“main"选项,在出现的工具栏选择按钮。
选中包,右击选择”select compartment  ITems" ,包下面的类信息




0 0