包图是UML结构图,它显示包和包之间的依赖关系。
模型图 允许显示系统的不同视图,例如,作为多层(又称为多层)应用程序- 多层应用程序模型。
以下节点和边通常在包关系图中绘制:包、可打包元素、依赖、元素导入、包导入、包合并。
包(Package)
包是一个命名空间,用于将语义相关且可能一起更改的元素分组在一起。将元素组织成组是一种通用机制,以便为系统模型提供更好的结构。
包的所有成员都应该是可打包的元素。如果一个包从模型中移除,那么包拥有的所有元素也是如此。包本身是可打包的元素,所以任何包也可以是其他包的成员。
因为包是命名空间,相关或相同类型的元素在封装包中应该具有唯一的名称。 不同类型的元素允许具有相同的名称。
作为命名空间,包可以导入其他包的单个成员或其他包的所有成员。包也可以与其他包合并。
包呈现为选项卡式文件夹-一个矩形,在矩形顶部的左侧附加了一个小选项卡。如果包的成员未显示在包矩形内,则应将包的名称放在其中。
包org.hibernate
包的成员可以显示在包的边界内。在这种情况下,包的名称应该放在选项卡上。
包org.hibernate包含SessionFactory和Session
根据某些标准,显示带有内容的包的关系图只能显示所包含元素的子集。
包的成员可以通过从包到成员的分支线显示在包外部。圆圈内的加号(+)绘制在命名空间(包)的末尾。这个包的符号在语义上等同于组合(用实心菱形表示)。
包org.hibernate包含SessionFactory和Session接口
可以在包内使用非限定名引用的元素有:
- 自身拥有的元素
- 导入的元素
- 包含(外部)名称空间中的元素。
自身拥有的元素的和导入的元素可能具有一个可视性,该可视性决定了它们是否在包外部可用。
如果包拥有的元素具有可见性,那么它只能是公共或私有可见性。不允许受保护或包可见性。包元素的可见性可以通过元素名称前面的可见性符号(“+”表示公共,“-”表示私有)来表示。
除,Account 外,Library Domain包的所有元素都是公共的
包的公共元素总是可以通过使用限定名在包外部访问。
包URI属性(Package URI Attribute)
包具有可选的URI属性,作为包的唯一标识符。这个属性是在UML 2.4中引入的,主要是为了支持使用XMI交换 配置文件。
注意,UML 2.4规范要求这个URI属性遵循IETF URI规范RFC 2396的规则和语法,而URI语法RFC 3986的最新版本(2005年发布)使RFC 2396过时。
这两个区域资源中心都允许URIs成为统一的资源定位器(URLs)、统一的资源名称(URs)或两者兼而有之。虽然URN实际上定义了项目的身份(唯一的id),并且网址提供了一种查找它的方法,但是看到网址作为URN是非常常见的,有时会令人感到困惑。
这里有一些以网址形式的包URI属性的例子。请注意,使用“http://”方案通常与http协议无关,并且没有实际的资源位于该位置。网址只是作为唯一id的替代:
- http://www.ietf.org/rfc/rfc2396.txt
- http://www.omg.org/spec/UML/20100901/PrimitiveTypes.xmi
- http://www.uml-diagrams.org/profiles/20110410/EJB-30.xmi
我个人倾向于使用URN,因为URn是专门为定义身份(唯一id)而设计的,并不意味着已识别资源的可用性(例如,过时资源):
- urn:ietf:rfc:3986
- urn:oasis:names:specification:docbook:dtd:xml:4.1.2
- urn:schemas-microsoft-com:xml-data
- urn:uml-diagrams-org:profiles:20110410:EJB-30
包的URI属性可以在包名之后以{uri=<uri>}的形式呈现。
EJB Profile显示为带有URI属性的软件包。
包模板(Package Template)
包可以用作其他包的模板。注意,[UML 2.4.1规范]不一致地将其称为包模板和模板包。
可打包元素可以用作模板参数。包模板参数可以指包模板拥有或使用的任何元素,或嵌套在其中的模板。
包可以绑定到一个或多个模板包。当应用多个绑定时,绑定的结果是通过获取中间结果并使用包合并将它们合并到组合结果中来生成的。
包模板服务提供程序和绑定包计划程序服务。
可打包元素(Packageable Element)
可打包元素是可以由包直接拥有的命名元素。
可打包元素的一些示例有:
- 类型
- 分类器(- - >类型)
- 类(- - >分类器)
- 用例(——>分类器)
- 组件(- - >分类器)
- 包
- 约束
- 依赖
- 事件
可打包元素本身没有标记,请参见特定子类。
|