类图中B类中A类的对象

时间:2013-08-15 20:28:49

标签: c++ qt oop uml class-diagram

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

由于

2 个答案:

答案 0 :(得分:2)

这不是概括,因为你不是在这里继承,所以它不能成为“是一个”的关系。

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

Difference between association, aggregation and composition

希望有所帮助。

答案 1 :(得分:0)

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

对于一个类图,在最基本的层面上,你可以用关联和泛化来实际模拟所有内容,但是这样就会缺少其他人可能希望看到的细节。

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

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

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

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

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

例如,如果您正在使用QList和QMap等容器类,那么您可能甚至不想要图中的那些,但是如果您要使用QTcpSocket并继承它,那么最好显示这一点。

请记住,这都是关于你想要传达的内容。