9

来自 UML 圣经,关于角色

角色:角色名称解释了对象如何参与关系。每个对象都需要持有对关联对象或对象的引用。引用保存在对象内的属性值中。当只有一个关联时,只有一个属性持有引用。

  1. 这句话是什么意思?
  2. 谁能提供一个例子来解释它?
4

1 回答 1

19

Roles:A role name explains how an object participates in the relationship.

您有两个类,Professor它们Book的关联如下图所示:

图1

该角色描述了教授和书籍之间的关联。在这种情况下,教授是相关书籍的作者。

Each object needs to hold a reference to the associated object or objects. The reference is held in an attribute value within the object.

为此,我将使用另一个具有一对一多重性的示例。

图2

该图显示查询构建器有一个查询(反之亦然)。代码中如何描述这种关联?

您有一个具有名为QueryBuilder类型的属性的类。在代码中:Queryquery

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

图 3

因此,在 Account 类中,我们将有两个字段,每个关联一个字段。

class Account {
    BookItem[] borrowed;
    BookItem[] reserved;
}

请注意,这些关联是一对多的,因此我们拥有的关联字段是可以保存多个 BookItem 的数组。

在这里你可以找到一篇很好的文章,我在其中借用了这个答案的大多数例子。

编辑:Author和之间的关联的解释Book

连接AuthorBook图表中的线是关联的可视化。这是一种双向关联,这意味着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被省略的细节之一。

于 2013-05-25T22:27:50.090 回答