Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
UML概念及其在Java中的应用_Java_Oop_Uml_Aggregation_Composition - Fatal编程技术网

UML概念及其在Java中的应用

UML概念及其在Java中的应用,java,oop,uml,aggregation,composition,Java,Oop,Uml,Aggregation,Composition,我试图学习UML概念及其在Java编程中的应用。我了解关联、共享聚合和组合概念。我感到困惑的是,它们是如何应用于特定场景的。e、 g.如果我们有一组三类:书籍、作者和出版商,我们如何应用这些概念 Book.java class Book { private String ISBN; private String category; private Publisher publisher; private ArrayList<Author> authors; } 教材{ 专用字

我试图学习UML概念及其在Java编程中的应用。我了解关联、共享聚合和组合概念。我感到困惑的是,它们是如何应用于特定场景的。e、 g.如果我们有一组三类:书籍、作者和出版商,我们如何应用这些概念

Book.java

class Book {

private String ISBN;
private String category;
private Publisher publisher;
private ArrayList<Author> authors;  
}
教材{
专用字符串ISBN;
私有字符串类别;
私营出版商;
私人ArrayList作者;
}
Author.java

class Author {

private String authorName;
private String phoneNo;
private String email;
private ArrayList<Book> books;
}
类作者{
私有字符串authorName;
私有字符串phoneNo;
私人字符串电子邮件;
私人ArrayList书籍;
}
Publisher.java

class Publisher {

private String publisherName;
private String publisherAddress;
private ArrayList<Book> books;
}
类发布器{
私有字符串发布器名称;
私服;
私人ArrayList书籍;
}
这些仅仅是联系吗?我们可以说出版商和书籍之间的关系是共享聚合吗?这本书的作者之间有多少关系呢


在我看来,Publisher Book是一个共享聚合,Book Author是一个简单的关联。如果有一个章节课,和一本书有关,那就是作文。我的理解正确吗

关联、聚合和组合都是“有a”关系

关联仅仅意味着两个类彼此关联,但每个类的实例可以彼此独立存在。您的示例没有显示简单的关联

聚合是一种特殊的关联,其中一个类包含另一个类的集合。作者有很多书,出版商有很多书,等等

组合是一种特殊的聚合,意味着一种强烈的生命周期联系。换句话说,组合类通常不能存在于父类之外。例如,没有映射,Map.Entry就不能存在。上面没有这样的例子


您还应该知道,与Java相比,UML中的“组合”更为严格/狭窄。

根据UML上层结构规范v2.4.1(如下所述),“共享聚合”在UML中没有专门定义。因此,它是否共享取决于模型,它是否复合取决于如何管理存在

“AggregationKind是下列文字值的枚举:

无-表示该属性没有聚合。 共享-表示属性具有共享聚合。 复合-表示以复合方式聚合属性,即复合对象负责组合对象(部件)的存在和存储

语义变化点-共享聚合的精确语义因应用程序区域和建模者而异。”


虽然
书籍
作者
之间存在多对多关联,但
书籍
出版商
之间存在多对一关联

在Java类中,您使用了两对相互反向的引用属性
Book::authors
Author::books
以及
Book::publisher
publisher::books
。这是实现双向关联的模式


有关关联的更多信息,请参阅的第1节。

谢谢。这是有用的。所以,在UML中,我手头的关系应该是(Book)--(作者)和(出版商)--(Book)?