类图中B类中的A类对象

Objects of class A in Class B in Class Diagram

本文关键字:对象      更新时间:2023-10-16

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

感谢

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

关于关联、组合或聚合。。。在这里你可以找到一个很好的解释。如果不更好地了解您的用例,就不可能说出适合您的。然而,阅读另一个链接将帮助你理解差异,并根据你的场景进行判断。

关联、聚合和组成之间的差异

希望能有所帮助。

关于UML,需要记住的重要一点是,在决定使用什么时,通常没有真正的正确或错误答案,但有些工具比其他工具更好。UML只是一种通信工具,只要以每个人都能理解通信内容的方式使用该工具,那么它就达到了目的。

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

泛化与继承有一对一的关系,所以何时使用它是很清楚的。

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

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

当一个对象(B)被直接用来组成一个对象时,请使用合成。在这种情况下,如果你对人体进行建模,并且有器官类,你会将心脏类建模为身体类的合成对象。

事实上,您使用的Qt框架与您用来为类建模的内容无关,图表不需要对所有内容进行建模,只需要对与他人交流概念所必需的内容进行建模。

例如,如果您使用的是QList和QMap等容器类,您可能甚至不希望它们出现在图中,但如果您要使用QTcpSocket并从中继承,那么最好显示出来。

请记住,这一切都是关于你试图沟通的内容。