来自 UML 圣经,关于角色:
角色:角色名称解释了对象如何参与关系。每个对象都需要持有对关联对象或对象的引用。引用保存在对象内的属性值中。当只有一个关联时,只有一个属性持有引用。
- 这句话是什么意思?
- 谁能提供一个例子来解释它?
来自 UML 圣经,关于角色:
角色:角色名称解释了对象如何参与关系。每个对象都需要持有对关联对象或对象的引用。引用保存在对象内的属性值中。当只有一个关联时,只有一个属性持有引用。
Roles:A role name explains how an object participates in the relationship.
您有两个类,Professor
它们Book
的关联如下图所示:
该角色描述了教授和书籍之间的关联。在这种情况下,教授是相关书籍的作者。
Each object needs to hold a reference to the associated object or objects. The reference is held in an attribute value within the object.
为此,我将使用另一个具有一对一多重性的示例。
该图显示查询构建器有一个查询(反之亦然)。代码中如何描述这种关联?
您有一个具有名为QueryBuilder
类型的属性的类。在代码中:Query
query
class QueryBuilder {
Query query;
}
你有一个类 Query 有一个QueryBuilder
名为的类型的属性qbuilder
在代码中:
class Query {
QueryBuilder qbuilder;
}
属性(类 QueryBuilder 的查询和类 Query 的 qbuilder)是reference to the associated object
When there is only one association then there is only one attribute holding a reference
在前面的例子中,有一个关联,所以我们在类中有一个属性(字段)来保持关联对象的引用。
在下图Acount
中与 有两个关联BookItem
。
因此,在 Account 类中,我们将有两个字段,每个关联一个字段。
class Account {
BookItem[] borrowed;
BookItem[] reserved;
}
请注意,这些关联是一对多的,因此我们拥有的关联字段是可以保存多个 BookItem 的数组。
在这里你可以找到一篇很好的文章,我在其中借用了这个答案的大多数例子。
编辑:Author
和之间的关联的解释Book
。
连接Author
和Book
图表中的线是关联的可视化。这是一种双向关联,这意味着Author
一个或多个Book
对象(作者所写的书)但也Book
有一个或多个Author
对象(因为书可以有多个作者)。具有多重性(一个或多个)的关联通常使用集合或数组来实现。类Author
有一个字段,可以是 的集合或数组Book
。该图未提供此字段的名称。
Professor
关联的第一个图表也Book
提供了这些字段的名称。Professor
有一个带有名称的字段textbook
来保存其Book
对象。Book
有一个带有名称的字段author
来保存其Author
对象。图表未提供这些字段的类型。该字段textbook
可以声明为以下任何内容:
Book[] textbook;
或者
Set<Book> textbook;
或者
List<Book> textbook;
或者
Collection<Book> textbook;
也没有提供字段的可见性(可以是默认的、私有的或公共的)。
从类图中省略此信息有一个很好的理由:该图的作者认为他想与该图交流的消息并不重要。我们不能忘记,UML 图用于通过可视化系统的某些方面来帮助理解系统。通常我们创建多个图表以提供系统的不同视角。在大多数情况下,最重要的信息元素是类之间的关系。所以实现细节经常被省略。请注意,这些图中省略了很多关于Book
-关联的实现细节。Author
如何强制Book
总是至少有一个Author
或如何确保如果 aBook
有一个Author
然后还有Author
这个Book
被省略的细节之一。