为什么会产生包?
对复杂系统进行建模时,经常需要处理大量的类、接口、组件、节点和图,这时就有必要将这些元素进行分组,把那些语义相近并倾向于一起变化的元素组织起来加入同一包,这样方便理解和处理整个模型,同时也便于轻松地控制这些元素的可见性,使一些元素在包外可见,一些元素是隐藏在包内的。
设计良好的包是高内聚、低耦合的,并且对其内容的访问具有严密的控制
注意:若包被撤销,则其中的元素也被撤销了
包有哪些作用?
在我们的电脑桌面上,如果有很多各种各样的文件散落是不是看着很糟心,如何把这些文件分门别类的放在一起管理也是一种技巧。所以电脑就有了文件夹的这种形式让我们对自己电脑里面的内容进行规整化的管理,如下图。包就起着文件夹的作用,当一个程序中有很多类,就需要将这些类放在一起分组管理
包的可见性
+:表示共有的(public),此元素可以被任何引入该包的包中的元素访问
-:表示私有的(private),此元素只能被同一个包的元素访问
#:表示受保护的(protected),此元素可以被继承该包的包中的元素访问
包的图符
包与包之间的关系
泛化:继承关系,用于说明包的家族
依赖(常用):如果两个包中的任意两个类之间有依赖关系,则这两个包之间有依赖关系
如何建立包图?
1.分析系统模型元素(通常是对象类),把概念上或语义上相近的模型元素纳入一个包
2.对于每一个包,标出其模型元素的可见性(公共、保护或私有)
3.确定包与包之间的依赖关系,特别是输入依赖
4.确定包与包之间的泛化关系,确定包元素的多重性与重载
5.绘制包图
6.包图精化
建包时要注意哪些问题?
- 避免循环依赖产生
- 测试时可以以包为测试单位
- 应该尽量把概念和语义上相接近的元素的包含在同一个包中
- 对于一个包,找出哪些包内的元素是可以在包外访问的,把这些元素标记为公共的,其他所有元素都标记为受保护的或者私有的
不足之处欢迎斧正哦~🙂