2

我正在为一个项目做 UML 图,但我有疑问......我用一个例子来解释:

public class Book{...}

public class Library{
    private ArrayList<Book> books;

    public void insert(Book b){...}

    public Book get(Book b){...}
    }

在这种情况下,书和图书馆之间存在聚合但也存在依赖关系,对吗?聚合是“父”类包含“子”类的关系,而依赖是类通过参数或返回类型使用另一个类的情况。现在,如果一个类A包含另一个类B的对象意味着B的对象已经以某种方式传递给类A的对象,唯一的方法是使用方法(或构造函数),那么聚合涉及依赖?

PS:对不起我的英语不好

4

2 回答 2

4

恕我直言,我不同意你的教授。您的图表中确实有聚合,因为Library包含Books(在语义和句法上)。

UML 依赖关系意味着“某些 UML 元素或一组元素需要、需要或依赖于规范或实现的其他模型元素”(来自我最喜欢的 UML 参考站点:uml-diagrams.org)。当您在两个元素之间放置一个聚合链接时,已经说明一个依赖于另一个,因此在它们之间添加依赖关系是多余的。

于 2012-09-12T07:22:05.610 回答
1

我不是 UML 专家,但在“UML in a Nutshell”中我真正喜欢的一件事是,UML 只有在对每个人都直观时才有用。

话虽如此,我建议不要使您的图表过于复杂。并非所有内容都可以也不必在图表中呈现。在您的情况下,Library有一些Books,聚合/组合的情况(取决于您的描述中未提及的其他细节)。您不必声明这两个类之间的依赖关系,因为聚合暗示了它。在我的理解中,当您想要陈述间接关系时,“依赖关系”很有用,例如运行时依赖关系。

于 2012-09-11T18:25:28.407 回答