2013-05-24 2 views
7

Als ich durch UML Bibel las über RolleRollenname in Verbindung Beziehung

Rollen: Ein Rollenname wird erläutert, wie ein Objekt in der Beziehung beteiligt ist.

„Jedes Objekt benötigt einen Verweis auf das zugeordnete Objekt oder die Objekte zu halten. Die Bezugnahme in einem Attributwert innerhalb des object.When gehalten wird, gibt es nur eine Vereinigung dann gibt es nur ein Attribut eine Referenz zu halten.“

1) Was bedeutet der zitierte Satz?

2) Ich frage mich, ob es ein Beispiel gibt, erklären Sie es ein bisschen?

Antwort

11

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

Sie haben zwei Klassen, Professor und Book und sie sind, wie in dem folgenden Diagramm zugeordnet:

diagram 1

Die Rolle eine Beschreibung des Zusammenhangs zwischen Professor und Buch gibt. In diesem Fall ist Professor der Autor des zugehörigen Buches.

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

Dafür werde ich ein weiteres Beispiel mit einer 0.59 Vielzahl verwenden.

diagram 2

Das Diagramm zeigt, dass die Abfrage-Generator eine Abfrage hat (und umgekehrt). Wie ist diese Zuordnung im Code dargestellt?

Sie haben eine Klasse QueryBuilder mit einem Attribut vom Typ Query mit dem Namen query. In Code:

class QueryBuilder { 
    Query query; 
} 

Und Sie haben eine Klasse-Abfrage, die ein Attribut des Typs hat QueryBuilderqbuilder namens

In Code:

class Query { 
    QueryBuilder qbuilder; 
} 

Das Attribut (Abfrage für Klasse Querybuilder und qbuilder für die Klasse Abfrage) ist die reference to the associated object

When there is only one association then there is only one attribute holding a reference

Im vorherigen Beispiel gab es eine Assoziation, also hatten wir ein Attribut (Feld) in der Klasse, um die Referenz des zugehörigen Objekts zu behalten.

Im folgenden Diagramm hat Acount zwei Assoziationen mit BookItem.

diagram 3

Also, in der Klasse Konto werden wir zwei Felder, ein Feld für die einzelnen Verbände.

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

Beachten Sie, dass diese Verbände eine zu viele sind, so dass die Felder, die wir für die Verbände haben, sind Arrays, die mehr als eine BookItems halten können.

Here Sie können einen guten Artikel finden, wo ich die meisten Beispiele für diese Antwort ausgeliehen habe.

EDIT: Erklärung der Verbindung zwischen Author und Book.

Die Linie, die Author und Book im Diagramm verbindet, ist die Visualisierung der Zuordnung. Dies ist eine bidirektionale Assoziation, was bedeutet, dass Author ein oder mehrere Book Objekte (die vom Autor geschriebenen Bücher) aber auch Book ein oder mehrere Author Objekte haben (weil Buch mehrere Autoren haben kann). Eine Zuordnung mit der Multiplizität viele (ein oder mehrere) wird normalerweise mit einer Auflistung oder einem Array implementiert. Klasse Author hat ein Feld, das eine Sammlung oder ein Array von Book sein kann. Das Diagramm enthält nicht den Namen dieser Felder. Das erste Diagramm, das Professor mit Book verknüpft, enthält auch die Namen dieser Felder. Professor hat ein Feld mit dem Namen textbook, um seine Book Objekte zu behalten. Book hat ein Feld mit dem Namen author, um seine Author Objekte zu behalten. Der Typ dieser Felder wird vom Diagramm nicht bereitgestellt. Das Feld textbook könnte als etwas aus der folgenden erklärt:

Book[] textbook; 

oder

Set<Book> textbook; 

oder

List<Book> textbook; 

oder

Collection<Book> textbook; 

Auch die Sichtbarkeit der Felder Nein t zur Verfügung gestellt (könnte Standard, privat oder öffentlich sein).

Es gibt einen sehr guten Grund, warum diese Informationen aus dem Klassendiagramm weggelassen werden: Der Autor des Diagramms hielt es nicht für wichtig, dass die Nachricht mit dem Diagramm kommuniziert. Wir dürfen nicht vergessen, dass UML-Diagramme verwendet werden, um das Verständnis eines Systems zu erleichtern, indem einige seiner Aspekte visualisiert werden. In der Regel erstellen wir mehr als ein Diagramm, um verschiedene Perspektiven eines Systems darzustellen. In den meisten Fällen ist das wichtigste Element der Information die Beziehung zwischen den Klassen. Daher werden die Implementierungsdetails oft weggelassen. Beachten Sie, dass es viele Implementierungsdetails bezüglich der Book - Author Assoziation gibt, die in diesen Diagrammen weggelassen wurden. Wie man das erzwingen Book wird immer mindestens eine Author oder wie sicherzustellen, dass, wenn eine Book hat eine Author dann auch die Author hat diese Book sind unter den Details, die weggelassen werden.

+0

Wenn also Autor eins zu viele Bücher geschrieben hat, bedeutet das, dass der Klassenautor eine Liste (Array, ArrayList oder andere) von Büchern enthält, und wenn ja, wird diese Liste nicht als ein Feld von Author (oder Umgekehrt wird der Autor nicht als ein Feld von Book visualisiert. –

+1

@AndrewS Bearbeitete meine Antwort. Hoffe es löst deine Frage. – nakosspy

+0

Danke für die Beantwortung, nur zwei Dinge. Ich glaube nicht, dass eine Beziehung von vielen zu vielen völlig korrekt oder zulässig ist. Auch würde ich erwarten, dass Buch ein Feld vom Typ Autor enthält. Sicher, wenn Sie ein CASE-Tool verwenden und diese Beziehung modellieren, erhält die Book-Klasse ein Array vom Typ Author. Ich stelle diese Frage, weil ich oft die Arten von Unterlassungen sehe, die Sie in Ihrem Text beschreiben, und frage mich warum. –

Verwandte Themen