1

我有一个带有我自己的用户定义类的应用程序,并且我还使用 Qt 框架库来启动其他内置类的对象。因此,在我的课堂上,我们称其为“myclass”,我创建 Qt 内置类的实例并对其进行处理。完成了……现在,我需要为此创建类图。我想知道这可以归类为关联、聚合、组合或泛化中的哪一个?

谢谢

4

2 回答 2

2

它不是泛化,因为您没有在这里继承,所以它不能被称为“is-a”关系。

至于关联,组合或聚合......在这里你可以找到一个很好的解释是哪个。如果不更好地了解您的用例,就不可能为您说出正确的选择。但是,阅读其他链接将帮助您了解差异并根据您的情况进行判断。

关联、聚合和组合之间的区别

希望有帮助。

于 2013-08-16T03:10:27.527 回答
0

关于 UML 需要牢记的重要一点是,在决定使用什么时,通常没有真正的正确或错误答案,但有些工具比其他工具要好。UML 只是一种交流工具,只要该工具的使用方式让每个人都了解正在交流的内容,那么它就可以发挥作用。

对于类图,在其最基本的级别上,您实际上可以仅使用关联和泛化对所有内容进行建模,但这会缺少其他人可能希望看到的细节。

泛化与继承具有一对一的关系,因此很清楚何时使用它。

关联描述与另一个类有关系或依赖关系的任何类;那里有一个相当概括(!),这就是为什么它可以用来代替聚合和组合。

当一个对象 (B) 组成另一个对象 (A) 并且 B 可以在其他对象之间共享时,使用聚合。例如,图书馆由书籍组成,因此可以将一本书建模为图书馆的聚合,因为其他类也可以聚合一本书,例如借书的人。

当一个对象(B)直接用于组成一个对象(A)时,使用组合。在这种情况下,如果您正在对人体进行建模并具有器官类,则可以将心脏类建模为身体类的组合对象。

您使用 Qt 框架这一事实与您用于建模类的内容无关,并且图表不需要对所有内容进行建模,只需将概念传达给他人即可。

例如,如果您使用 QList 和 QMap 之类的容器类,您可能甚至不需要图中的那些,但如果您要使用 QTcpSocket 并从它继承,那么最好显示它。

请记住,这完全取决于您要传达的内容。

于 2013-08-16T09:19:57.207 回答