Modul 404
Kompetenz: Vorgabe interpretieren, objektbasiert mit einer Programmiersprache implementieren, dokumentieren und testen.
Objektbasiert programmieren nach Vorgabe
Ueli Hagger
Modul 404
Kompetenz: Vorgabe interpretieren, objektbasiert mit einer Programmiersprache implementieren, dokumentieren und testen.
Klassendiagramm 1
Übersicht Klassendiagramm
Beziehungen zwischen Klassen: Assoziationen
Haben alle Objekte einer Klasse eine bestimmte Beziehung zu einem oder mehreren Objekten einer anderen Klasse, so wird diese Beziehung Teil der Klassenbeschreibung.
Beispiel:
Beziehungen (Assoziationen) können für eine oder beide Richtungen der Beziehung einen Namen haben. Die Leserichtung wird durch einen Pfeil markiert.
4
Mitarbeiter arbeitet-für Unternehmen
beschäftigt
3
Beziehungen zwischen Klassen: Rollen
5
Die an einer Beziehung beteiligten Klassen nehmen darin eine bestimmte Rolle ein, die bei Bedarf angegeben werden kann.
Person arbeitet-für Unternehmen
beschäftigt
Mitarbeiter Arbeitgeber
Kunde Konto
Weiteres Beispiel:
ist-kontoinhaber
ist-kontoberechtigter
Multiplizitäten (Kardinalitäten) in Beziehungen
Auto Motor
0..1 1
Frage 2:
Ein Motor gehört zu wie vielen Autos?
Frage 1:
Ein Auto besitzt wie viele Motoren?
Multiplizität:
Liefert Antwort auf die Frage:
• Mit wie vielen Objekten der gegenüberliegenden Klasse kann ein Objekt der Klasse verbunden sein?
Vermerk der Anzahl in Leserichtung, also bei der gegenüberliegenden Klasse.
besitzt gehört zu
5
Multiplizitäten (Kardinalitäten) in Beziehungen
7
Frage 2:
Ein Unternehmen beschäftigt wie viele Personen?
Frage 1:
Eine Person arbeitet für wie viele
Unternehmen?
Person arbeitet-für Unternehmen
beschäftigt
Mitarbeiter Arbeitgeber
1..* 1
Notation von Multiplizitäten
8
Person
Person 1
nicht angeschrieben bedeutet 1!
genau 1 Person
0 .. 1
0 bis 1 Person
3 .. *
3 bis beliebige viele
Person beliebige viele (entspricht 0 .. *)
Person 0 .. 2
0 bis 2 Person
2 genau 2
Person 2, 4, 6
2, 4 oder 6 Person
1 .. 5, 8, 10 .. *
nicht 6, 7 oder 9
* 7
Spezielle Beziehungen: Aggregierung
Aggregierung ist eine Teil-Ganzes-Beziehung zwischen zwei Klassen.
Auf der Seite der Klasse, welche das Ganze darstellt, ist eine kleine Raute angebracht.
9
Auto Motor
Ganzes
1 1
Teil
Ein Teil kann zu mehreren Ganzen gehören:
Zimmer 1..* 1.. * Wand
Spezielle Beziehungen: Aggregierung
Teile können selber wieder Teile enthalten und eine Aggregation kann auch einen Namen haben:
Motor 1 4 .. 32 Ventil
Zylinder
Zylinderblock 2 .. 8
1 Auto
1 1
hat 9
Spezielle Aggregierung: Komposition
11
Komposition ist ein Spezialfall der Aggregation:
• Die Teile sind existenzabhängig vom Ganzen.
• Die Teile existieren folglich nur, wenn das Ganze existiert.
• Ein Teil kann somit nur zu einem Ganzen gehören.
Komposition ist durch eine gefüllte Raute auf der Seite des Ganzen angezeigt.
Rechnung 1 1..* Position
Buch 1 1..* Kapitel
Generalisierung
12
Girokonto sollzinsen : double dispo : double
Festgeldkonto mindBetrag : int laufzeit : int Sparkonto
Generalisierung ist eine Beziehung zwischen einer allgemeineren Klasse und einer Untermenge dieser Klasse.
Die Unterklasse enthält durch Vererbung alle Attribute der Oberklassen(n).
Die Unterklasse erweitert die Oberklassen durch weitere Attribute oder Beziehungen.
Generalisierung Spezialisierung
Konto kontostand : double inhaber : string habenzinsen : double 11
Operationen (Methoden)
13
Konto kontostand : double inhaber : string habenzinsen : double einzahlen()
zeigeKontostand() kuendigen()
Klassenname Attribute
Operationen
Mit Objekten kann man etwas tun, z.B. für ein Konto:
darauf einzahlen, den Kontostand anzeigen, das Konto kündigen, etc.
Jeder Klasse von Objekten kann man in UML deshalb Operationen (auch Methoden genannt) zuordnen:
Vererbung von Operationen
Über eine Spezialisierung werden neben Attributen auch Operationen
vererbt.
Girokonto sollzinsen : double dispo : double auszahlen()
Festgeldkonto mindBetrag : int laufzeit : int kuendigen() Sparkonto
auszahlen() Konto kontostand : double inhaber : string habenzinsen : double einzahlen()
zeigeKontostand() kuendigen() 13
Konventionen für die Namensgebung
15
Kunde adresse gibAdresse()
Konto kontoNr kontoStand auszahlen() 1
0..*
0..*
besitzt
kontoInhaber
Klassenname: Substantiv
Rollenname: Substantiv
Beziehungsname: Verb
Attribute: Substantiv
Operationen: Verb Namen sollte man so wählen, dass man Sätze formen kann.
Beispiel:
Beispiel
Quelle: http://www.srvtz.de/Wiki.jsp?page=JavaI.Alles&print=ja
15
Beispiel 1: CD-Datenmodell (1)
Problembeschreibung:
Es soll ein Klassenmodell für ein Informationssystem über CDs modelliert werden:
• Jede CD enthält einen oder mehrere Titel.
• Jede CD ist von einer Plattenfirma herausgebracht.
• Eine CD hat einen CD-Titel.
• Ein Titel kann auf mehreren CDs enthalten sein.
• Ein Titel hat einen Namen und eine Länge.
• Jeder Titel kann von mehreren Künstlern gespielt werden.
• Ein Künstler kann mehrere Titel spielen.
17
Möglichkeit zur Findung von Klassen
• Beschreiben Sie in textueller Form das Problem. Beachten Sie das die Beschreibung in Aufsatzform abgefasst werden muss, d.h. keine Stichworte, Aufzählungen usw.
• Markieren Sie alle Hauptwörter, z.B. mit einem roten Stift.
• Markieren Sie alle Verben, z.B. mit einem grünen Stift.
• Markieren Sie alle Multiplizitäten, z.B. mit einem blauen Stift.
• Alle Hauptwörter sind nun Klassen, bzw. Attribute.
• Alle Verben sind Methoden, welche die Attribute verändern, bzw. etwas ausführen oder Beziehungen
17
Beispiel 1: CD-Datenmodell (1)
Problembeschreibung:
Es soll ein Klassenmodell für ein Informationssystem über CDs modelliert werden:
• Jede CDenthälteinen oder mehrere Titel.
• Jede CDist von einer Plattenfirmaherausgebracht.
• Eine CDhateinen CD-Titel.
• Ein Titelkann auf mehreren CDs enthalten sein.
• Ein Titelhateinen Namenund eine Länge.
• Jeder Titelkann von mehreren Künstlerngespielt werden.
• Ein Künstlerkann mehrere Titelspielen.
Klassen oder Attribute
CD, Titel, Plattenfirma, CD-Titel, Titel, Namen, Länge, Künstler
Methoden, Beziehungen
enthält, enthalten sein, gespielt werden, spielt
20
19
Klassen oder Attribute
CD, Titel, Plattenfirma, CD-Titel, Namen, Länge, Künstler
Methoden, Beziehungen
enthält, enthalten sein, gespielt werden, spielt
21
Beispiel 1: CD-Datenmodell (1)
Problembeschreibung:
Es soll ein Klassenmodell für ein Informationssystem über CDs modelliert werden:
• Jede CDenthälteinen oder mehrere Titel.
• Jede CDist von einer Plattenfirmaherausgebracht.
• Eine CDhateinen CD-Titel.
• Ein Titelkann auf mehreren CDs enthalten sein.
• Ein Titelhateinen Namenund eine Länge.
• Jeder Titelkann von mehreren Künstlerngespielt werden.
• Ein Künstlerkann mehrere Titelspielen.
21
Beispiel 1: CD-Datenmodell (2)
23
CD cdTitel plattenfirma
Titel titelName titelLänge
Kuenstler name
1..* spielt
gespielt-von
1..* 1..* 1..*
Beispiel 1: CD-Datenmodell (3)
24
Erweiterung:
Über eine Plattenfirma sollen Aussagen gemacht werden können:
Plattenfirma name land
gibt-heraus herausgegeben-von
1 CD cdTitel
Titel titelName titelLänge
Kuenstler name spielt
gespielt-von
1..* 1..* 1..* 1..*
1..* CD cdTitel plattenfirma
Titel titelName titelLänge
Kuenstler name 1..*
spielt gespielt-von
1..* 1..* 1..*
23