UML-包图中包与包之间的关系


元素

包只是一种一般性的分组机制,在这个分组机制中可以放置UML类元,如类定义、用例定义、装填定义和类元之间的关系等。在一个包中可以放置3种类型的元素,它们分别如下。

□ 包自身所拥有的元素,如类、接口、组件、节点和用例等。

□ 从另一个包中合并或导入的元素。

□ 另外一个包所访问的元素。

可见性

包的可见性用来控制包外界的元素对包内的元素的访问权限。一个包中的元素在包外的可见性,通过在元素名称前加上一个可见性符号来指示。其可见性包括公有的、私有的和可保护的,它们分别使用“+”“-”和“#”来表示。具体说明如下。

□ + 对所有的包都是可见的。

 - 只能对该包的子包是可见的。

 # 对外包是不可见的。

关系

依赖

有时一个包中的类需要用到另一个包中的类,这就造成包之间的依赖性,建模人员必须使用<<access > ><<import>>的依赖。<<import>>的依赖也可以叫作输入依赖或引入依赖。<<access>>叫作访问依赖,它的表示方法是在虚箭线上标有构造型<<access>>,箭头从输入方的包指向输出方的包。
在这里插入图片描述

泛化

泛化关系是表达事物的一般和特殊的关系,如果两个包之间有泛化关系,意指其中的特殊性包必须遵循一般性包的接口。包与包之间的泛化关系和类间的泛化关系很相似,因此涉及泛化关系的包也像类那样遵循可替换性原则。
在这里插入图片描述

导入包

当一个包导入另外一个包时,该包里的元素能够使用被导入包里的元素,而不必在使用时通过包名指定其中的元素。例如,当使用某个包中的类时如果未将包导入,则需要使用包名加类名的形式引用指定的类。

在导入关系中,被导入的包称作目标包。要在UML中显示导入关系,需要画一条从包连接到目标包的依赖性箭头,再加上字符import,如下图所示,将security包导入User包后,在User包中只能使用Identity类,而不能使用Creden类。
在这里插入图片描述

不仅包中的元素具有可见性,导入关系本身也有可见性。

导入可以是公共导入,也可以是私有导入。公共导入意味着被导入的元素在它们导入后的包里具有Public可见性,私有导入则表示被导入的元素在它们导入后的包里具有Private可见性。公共导入仍然使用import表示,私有导入则使用access表示。

在一个包导入另一个包时,其导入的可见性import和access产生的效果是不同的。具有Public可见性的元素在其导入后的包中具有Public可见性,它们的可见性会进一步传递上去,而被私有导入的元素则不会。

在这里插入图片描述

在上图所示的包模型中,包B公共导入包C并且私有导入包D,因此包B可以使用包C和D中的Public元素,包A公共导入包B,但是包A只能看见包B中的Public元素,以及包C中的Public元素,而不能看见包D中的Public元素。因为包A、B、C之间是公共导入,而包B与C之间是私有导入。

欢迎交流~

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张_Laura

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值