【发布时间】:2013-05-19 21:58:24
【问题描述】:
来自UML圣经,关于角色:
角色:角色名称解释了对象如何参与关系。 每个对象都需要持有对关联对象或对象的引用。引用保存在对象内的属性值中。当只有一个关联时,只有一个属性持有引用。
- 这句话是什么意思?
- 谁能提供一个例子来解释它?
【问题讨论】:
标签: object associations roles uml
来自UML圣经,关于角色:
角色:角色名称解释了对象如何参与关系。 每个对象都需要持有对关联对象或对象的引用。引用保存在对象内的属性值中。当只有一个关联时,只有一个属性持有引用。
【问题讨论】:
标签: object associations roles 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 的数组。
Here你可以找到一篇好文章,我借用了这个答案的大部分例子。
编辑:解释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 或者如何确保如果Book 有一个Author 那么Author 也有这个Book 是省略的细节之一。
【讨论】: