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:

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.

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 QueryBuilder
qbuilder
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
.

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.
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. –
@AndrewS Bearbeitete meine Antwort. Hoffe es löst deine Frage. – nakosspy
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. –