【问题标题】:Separating class diagram into packages in UML在 UML 中将类图分成包
【发布时间】:2016-12-21 15:19:32
【问题描述】:
我正在使用类图绘制一个软件,现在我想在包图中将它分成包。
我的问题是:如何表示来自两个不同包的类之间的连接?
例如,我的“数据库”包中有一个类,它连接到“视图”包中的另一个类。但是,如果我将它们分成两个单独的类图(每个包一个),则不会表示该连接。这样可以吗?
【问题讨论】:
标签:
oop
uml
class-diagram
staruml
【解决方案1】:
包只是对 UML 元素进行分组的一种方式,它们主要并不暗示元素本身之间的关系。要显示元素之间的关系,只需将它们适当地连接起来,与它们在包中的位置无关。当然,包内部的元素关系应该比与外部的关系更多。包中的元素表明它们彼此之间的关系比与外部元素的关系更紧密。
您可以在包级别显示包层次结构。
当您在包内创建图表时,您可以创建不同的类型:纯粹的包内部,例如外部关系或混合关系。这取决于最适合什么。
【解决方案2】:
包的一个很好的用途是在域图中显示不同问题空间之间的依赖关系。每个问题空间都由一个包表示。包通过依赖线连接。这意味着每个包都向通过依赖关系相关的包公开一个接口。
在我看来,您的域名有点污染。也许数据库不应该知道视图。也许应该有一个控制器来读取数据库并更新视图。访问包内功能的类将访问包接口。
这种技术对系统设计的好处在于,这种封装和解耦可以更轻松地更改一个类的内部结构,而不会影响系统。
【解决方案3】:
在一张图上呈现来自不同包的元素绝对没问题。在这种情况下,您应该记住 package 创建了一个命名空间,因此元素应该使用限定名称呈现。请注意,如果您为包 A 中的元素创建类图,则只需对来自其他包(例如包 B)的元素使用限定名称。