java - UML 概念及其在 Java 中的应用

标签 java oop uml aggregation composition

我正在尝试学习 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/

相关文章:

java - 如何在文本周围应用 css 边框

Delphi:写入后代类中私有(private)祖先的字段

associations - UML Papyrus 关联符号

uml - 标准 UML 到代码映射(正向工程)?

java - 使用 Spring Boot 运行脚本时出现 SQL 错误

java - IText Unicode 印度字符未正确显示

java - Java POJO 是否应该在 setter 方法中进行字段验证和抛出异常?

具有继承和接口(interface)的 UML 类图

java - 不断检查日期的变化

database - 使用类和数据库进行编程