我正在尝试学习 UML 概念及其在 Java 编程中的应用。我了解关联、共享聚合和组合概念。我感到困惑的是它们如何应用于特定场景。例如如果我们有一组三个类:Book、Author 和 Publisher,我们如何应用这些概念。
Book.java
class Book {
private String ISBN;
private String category;
private Publisher publisher;
private ArrayList<Author> authors;
}
作者.java
class Author {
private String authorName;
private String phoneNo;
private String email;
private ArrayList<Book> books;
}
Publisher.java
class Publisher {
private String publisherName;
private String publisherAddress;
private ArrayList<Book> books;
}
这些仅仅是关联吗?我们可以说Publisher和Book之间是共享聚合的关系吗? Book-Author 之间的多对多关系怎么样?
对我来说,Publisher-Book 是一个共享聚合,Book-Author 是一个简单的关联。如果有一个与一本书相关的 Chapter 类,那就是作文。我的理解正确吗?
最佳答案
关联、聚合和组合都是“has a”关系。
关联意味着两个类彼此关联,但每个类的实例可以彼此独立存在。您的示例显示没有简单的关联。
聚合是一种特殊的关联,其中一个类包含另一个类的集合。作者有很多书,出版商有很多书,等等。
组合是一种特殊的聚合,意味着强大的生命周期联系。换句话说,组合类通常不能存在于父类之外。例如,如果没有 Map,Map.Entry 就无法存在。上面没有这样的例子。
您还应该意识到,与 UML 相关的“组合”比 Java 中的“组合”要严格/狭窄得多。
关于java - UML 概念及其在 Java 中的应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23413836/