Beruflich Dokumente
Kultur Dokumente
Assoziation
Aggregation
Komposition
Reiner Nitsch
r.nitsch@fbi.h-da.de
berblick FB Informatik
Prof. Dr. R.Nitsch
t1:Termin b1:Benutzer
Links (Verweise) und
b2:Benutzer
t2:Termin b3:Benutzer
Assoziation
Termin Benutzer entsprechende Assoziation
Klassen
Objekte der Klassen Frau und Mann knnen miteinander verheiratet sein. Dabei
sollen Mann und Frau sich gegenseitig kennen und jedes ggf. die Initiative zur
Kommunikation mit dem anderen Objekt ergreifen knnen.
Zum Verwalten der Assoziation wird i.d.R. noch eine Management-SS bentigt.
class Schoepfungsgeschichte {
Mann* pAdam; Frau* pEva
Manager-Klassen oder -Funktionen public:
Schoepfungsgeschichte() {
erzeugen und verwalten urschlich pAdam = new Mann();
Objekte anderer Klassen in OO- pEva = new Frau();
Programmen und stellen notwendige }
Verknpfungen her. void letzterAkt() {
treten zumeist auch in Interaktion
pEva->heiraten(pAdam);
ApfelEssen();
mit dem Benutzer, um seine pAdam->scheiden();
Managerklasse verwaltet
Wnsche auf Software-Ebene (z.B.
Mann- und Frau-Objekte
Modus "testen" oder "spielen") im
auch nach der Scheidung
}
(keine verwaisten Objekte)
Einklang und per Teamarbeit mit den void ApfelEssen() {
brigen Klassen umzusetzen. cout << "Eva klaut einen Apfel "
<< "vom Baum des Hotelchefs."
Jedes C++-Programm wird durch ein cout << "Mmmh schmeckt lecker!";
Hauptprogramm bzw. eine main()- cout << "Stimme vom CHEF: "
Funktion gestartet. In dieser << "Raus aus dem Hotel!!";
Funktion wird mindestens }
~Schoefungsgeschichte {
ein Objekt dieser Manager- delete pAdam; delete pEva; }
Klasse erzeugt und };
void main () {
eine Start-Methode aufgerufen. Schoepfungsgeschichte SG;
SG.letzterAkt();
28.10.2007 C++ - Beziehungen zwischen
} Objekten 5
Aggregation FB Informatik
Prof. Dr. R.Nitsch
To-do-Liste setzt sich aus mehreren Jeder Eintrag kann in mehreren To-do-Listen vorkommen
To-do-Eintrgen zusammen oder unabhngig von einer To-do-Liste existieren.
hat
UML-Notation ToDoEintrag
* *
ToDoListe
gehrt zu
UML-Symbol fr Aggregation
28.10.2007 C++ - Beziehungen zwischen Objekten 6
Komposition FB Informatik
Prof. Dr. R.Nitsch
Lies:
Jeder Kamin gehrt zu
UML-Notation Gebude
hchstens einem Gebude.
Lies: Komposition 1 0..1 Aggregation Ein Gebude hat keinen,
wie bei Treppe, aber (Composition) einen oder mehrere Kamine.
Zimmer ohne Gebude Kamine knnen auch ohne
gibt es nicht Gebude existieren
Zimmer knnen auch Exklusivitt (Unabhngigkeit)
nachtrglich eingebaut * *
werden Unabhngigkeit
Zimmer Kamin
Noch ein Beispiel: Window, Men, Button, Scrollbar bilden eine Komposition
28.10.2007 C++ - Beziehungen zwischen Objekten 7
Beispiel: Konto FB Informatik
Prof. Dr. R.Nitsch
hat 1..*
Konto Kunde
0..* gehrt zu
1 1 1
1 1 1
Betrag Name Adresse
Die Beziehung zwischen den Klassen Kunde und Konto ist eine Assoziation, weil ein
Kunde keine bis mehrere Konten haben kann, und weil ein Konto mehrere Kontoinhaber
haben kann (keine Exklusivitt). Kundendaten drfen mit dem Lschen eines Kontos
und Konten drfen mit dem Lschen eines Kunden nicht automatisch gelscht werden
(keine Abhngigkeit). Eine Aggregation liegt nicht vor: ein Konto ist kein Teil eines
Kunden sondern diesem lediglich zugeordnet.
Die Beziehung zwischen einem Konto-Objekt und dem Kontostands-Objekt (hier:
Betrag) ist eine Komposition, weil ein Kontostand ohne zugehriges Konto keinen Sinn
ergibt. Hinweis: Ein Konto sollte natrlich nicht gelscht werden knnen, solange der
Kontostand nicht 0.00 ist.
Aus den selben Grnden stellt auch die Beziehung zwischen dem Kunden und seinen
Adreinformationen eine Komposition dar.
// Anwendungsumgebung
void main()
{
//Objekt vom Typ Kunde dynamisch erzeugen
Kunde* pK1 = new Kunde("Meier","Darmstadt");
Konto Kto1(123, pK1), Kto2(456, pK1);
Kto1.einzahlen(100,99); Kann auch von einer Manager-Klasse (z.B.
Kto1.einzahlen(100,99); Kontenverwaltung) bernommen werden
Kto1.druckeAuszug();
Kto2.einzahlen(1000);
Kto2.druckeAuszug();
pK1->displayKonten();
}
Ausgabe:
KontoNr 123 Kontostand: 201.98
KontoNr 456 Kontostand: 1000.0
Meier aus Darmstadt
hat folgende Konten:
123 456
Press any key to continue