【问题标题】:Objects of class A in Class B in Class Diagram类图中B类中A类的对象
【发布时间】:2013-09-26 00:21:12
【问题描述】:

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

谢谢

【问题讨论】:

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


    【解决方案1】:

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

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

    Difference between association, aggregation and composition

    希望对您有所帮助。

    【讨论】:

      【解决方案2】:

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

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

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

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

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

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

      您使用 Qt 框架这一事实与您用来为类建模的内容无关,并且图表不需要建模所有内容,只需要与其他人交流概念所必需的即可。

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-11-26
        • 1970-01-01
        • 2011-08-02
        • 2021-11-10
        • 1970-01-01
        • 1970-01-01
        • 2015-09-07
        • 2016-01-21
        相关资源
        最近更新 更多