04. Vorlesung.pdf
04. Vorlesung.pdf
04. Vorlesung.pdf
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Objektorientierte Programmierung<br />
4. <strong>Vorlesung</strong><br />
Prof. Dr. Peter Knauber<br />
FACHHOCHSCHULE<br />
MANNHEIM<br />
Hochschule für Technik und Gestaltung<br />
Übersicht<br />
Übersicht<br />
Rückblick:<br />
Begriffe<br />
Klassen<br />
Notation<br />
von Klassen<br />
Notation von<br />
Beziehungen<br />
Vererbung<br />
Überblick<br />
• Wiederholung: Bisherige Begriffe<br />
• Definition Klassen<br />
• Notation<br />
– Klassen<br />
– Beziehungen zwischen Klassen<br />
– Vererbung<br />
• Beispiele<br />
<strong>Vorlesung</strong> OOP,<br />
Mannheim, 21.03.2002<br />
Folie 1<br />
© Prof. Dr. Peter Knauber<br />
FH Mannheim
Begriffe der Objektorientierung<br />
Übersicht<br />
Rückblick:<br />
Begriffe<br />
Klassen<br />
Notation<br />
von Klassen<br />
Notation von<br />
Beziehungen<br />
Vererbung<br />
Überblick<br />
̌ Objekte<br />
• Klassen<br />
• Instanziierung<br />
• Vererbung / Inheritance<br />
̌ Attribute<br />
̌ Polymorphismus<br />
• Dynamische Bindung<br />
• Initialisierung<br />
̌ Methoden<br />
̌ Operationen<br />
̌ Mitteilungen / Messages<br />
• Sichtbarkeit<br />
• Kapselung<br />
̌ Identität von Objekten<br />
̌ Struktur und Verhalten<br />
(̌) Delegation<br />
• Objektorientierte Analyse (OOA)<br />
• Objektorientiertes Design (OOD)<br />
• Objektorientierte<br />
Programmierung (OOP)<br />
• Objektorientiertes Testen<br />
• Objektorientierte Wartung<br />
<strong>Vorlesung</strong> OOP,<br />
Mannheim, 21.03.2002<br />
Folie 2<br />
© Prof. Dr. Peter Knauber<br />
FH Mannheim<br />
Wiederholung: Objekte, Nachrichten,<br />
Operationen, Methoden, Polymorphismus<br />
Übersicht<br />
Rückblick:<br />
Begriffe<br />
Klassen<br />
Notation<br />
von Klassen<br />
Notation von<br />
Beziehungen<br />
Vererbung<br />
Überblick<br />
• Ein Objekt ist eindeutig identifizierbar, gehört zu einer Klasse, hat<br />
einen änderbaren Zustand in Form von Werten von Attributen,<br />
unterstützt (polymorphe) Operationen.<br />
• Beim Empfang einer Nachricht vollzieht ein Objekt eine<br />
entsprechende Operation.<br />
• Die Interpretation der Operation obliegt dem Objekt.<br />
• Eine spezifische Implementierung einer Operation innerhalb einer<br />
bestimmten Klasse heißt Methode.<br />
• Polymorphismus bedeutet, dass die gleiche Operation von<br />
verschiedenen Objekten in unterschiedliches Verhalten umgesetzt<br />
werden kann.<br />
<strong>Vorlesung</strong> OOP,<br />
Mannheim, 21.03.2002<br />
Folie 3<br />
© Prof. Dr. Peter Knauber<br />
FH Mannheim
Definition: Klasse<br />
Übersicht<br />
Rückblick:<br />
Begriffe<br />
Klassen<br />
Notation<br />
von Klassen<br />
Notation von<br />
Beziehungen<br />
Vererbung<br />
• Konzept:<br />
Objekte mit der gleichen Datenstruktur (den gleichen Attributen) und<br />
dem gleichen Verhalten (unterstützte Operationen) werden zu einer<br />
Klasse gruppiert.<br />
→Eigentlich werden gleichartige Objekte erzeugt, indem sie aus der<br />
gleichen Klasse instanziiert (auch: abgeleitet) werden.<br />
Überblick<br />
• Eine Klasse definiert die (Daten-) Struktur und das Verhalten (aller)<br />
aus ihr instanziierten (von ihr abgeleiteten) Objekte.<br />
<strong>Vorlesung</strong> OOP,<br />
Mannheim, 21.03.2002<br />
Folie 4<br />
© Prof. Dr. Peter Knauber<br />
FH Mannheim<br />
Zitate: Klassen<br />
Übersicht<br />
Rückblick:<br />
Begriffe<br />
Klassen<br />
Notation<br />
von Klassen<br />
Notation von<br />
Beziehungen<br />
Vererbung<br />
Überblick<br />
• A class is a set of objects that share a common structure and a<br />
common behavior.<br />
Grady Booch, 1991<br />
• An object is not a class, although ... a class may be an object.<br />
Grady Booch, 1991<br />
<strong>Vorlesung</strong> OOP,<br />
Mannheim, 21.03.2002<br />
Folie 5<br />
© Prof. Dr. Peter Knauber<br />
FH Mannheim
Klassen und Objekte<br />
Übersicht<br />
Rückblick:<br />
Begriffe<br />
Klassen<br />
Notation<br />
von Klassen<br />
Notation von<br />
Beziehungen<br />
Vererbung<br />
Überblick<br />
• Eine Klasse beschreibt eine (möglicherweise sehr große) Menge<br />
gleichartiger Objekte mit individuellen Attributwerten.<br />
• Jedes Objekt ist eine (eindeutige, wg. Identität) Instanz seiner<br />
Klasse.<br />
Es enthält eine Referenz auf seine Klasse.<br />
• Prinzipielle Implementierungs-Möglichkeit (nur zur Illustration):<br />
– Attribute werden mit jedem Objekt gespeichert,<br />
– Methoden werden (einmalig) mit der Klasse gespeichert und über die<br />
Referenz im Objekt identifiziert.<br />
Nach Booch: Methoden könnten im „Klassenobjekt“ gespeichert werden.<br />
<strong>Vorlesung</strong> OOP,<br />
Mannheim, 21.03.2002<br />
Folie 6<br />
© Prof. Dr. Peter Knauber<br />
FH Mannheim<br />
Notation von Klassen<br />
Übersicht<br />
Klassendiagramm<br />
Rückblick:<br />
Begriffe<br />
vollständig:<br />
Kurzformen<br />
Klassen<br />
Notation<br />
von Klassen<br />
Notation von<br />
Beziehungen<br />
Vererbung<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Überblick<br />
Attribut: „:“ <br />
„:“ = <br />
Operation: „( )“<br />
Der Initial-Wert wird bei der<br />
Instanziierung zugewiesen<br />
Konvention:<br />
• Klassennamen beginnen mit Großbuchstaben<br />
• Attributnamen und Operationsnamen beginnen mit Kleinbuchstaben<br />
• Es werden keine Trenn- oder Unterstriche verwendet<br />
Die Notation entspricht der UML (Unified Modeling Language).<br />
<strong>Vorlesung</strong> OOP,<br />
Mannheim, 21.03.2002<br />
Folie 7<br />
© Prof. Dr. Peter Knauber<br />
FH Mannheim
Notation von Klassen: Beispiel<br />
Übersicht<br />
Rückblick:<br />
Begriffe<br />
Klassen<br />
Notation<br />
von Klassen<br />
Notation von<br />
Beziehungen<br />
Vererbung<br />
Überblick<br />
AchsenparallelesQuadrat<br />
x0 : Integer = 0<br />
y0 : Integer = 0<br />
kantenlänge : Integer = 1<br />
verschiebe ()<br />
berechneFläche ()<br />
<strong>Vorlesung</strong> OOP,<br />
Mannheim, 21.03.2002<br />
Folie 8<br />
© Prof. Dr. Peter Knauber<br />
FH Mannheim<br />
Notation von Beziehungen zwischen Klassen<br />
Übersicht<br />
Einfache Assoziation zwischen zwei Klassen<br />
Rückblick:<br />
Begriffe<br />
Klassen<br />
Notation<br />
von Klassen<br />
Notation von<br />
Beziehungen<br />
Vererbung<br />
<br />
<br />
<br />
<br />
⊳ <br />
<br />
<br />
<br />
<br />
Überblick<br />
Rolle der „anderen“ Klasse<br />
mit Richtungsangabe<br />
Rollen: <br />
Häufigkeit der Klasse<br />
aus Sicht der jeweils anderen Klasse<br />
Häufigkeit:<br />
Beispiele:<br />
• 1<br />
•“..“ 0..2<br />
•“..“ “*“ 1..*<br />
•“*“ *<br />
<strong>Vorlesung</strong> OOP,<br />
Mannheim, 21.03.2002<br />
Folie 9<br />
© Prof. Dr. Peter Knauber<br />
FH Mannheim
Notation von Beziehungen zwischen Klassen:<br />
Beispiel 1/4<br />
Übersicht<br />
Rückblick:<br />
Begriffe<br />
Klassen<br />
Notation<br />
von Klassen<br />
Notation von<br />
Beziehungen<br />
Vererbung<br />
Überblick<br />
Aus Sicht dieser Klasse handelt es sich hierbei um die linke untere Ecke<br />
AchsenparallelesQuadrat<br />
kantenlänge : Integer<br />
verschiebe ()<br />
berechneFläche ()<br />
1<br />
linkeUntereEcke <br />
1<br />
Punkt<br />
x0 : Integer<br />
y0 : Integer<br />
verschiebe ()<br />
Jeder Punkt gehört zu genau einem Quadrat<br />
Jedes Quadrat hat genau eine<br />
linke untere Ecke<br />
<strong>Vorlesung</strong> OOP,<br />
Mannheim, 21.03.2002<br />
Folie 10<br />
© Prof. Dr. Peter Knauber<br />
FH Mannheim<br />
Notation von Beziehungen zwischen Klassen:<br />
Beispiel 2/4<br />
Übersicht<br />
Rückblick:<br />
Begriffe<br />
Klassen<br />
Notation<br />
von Klassen<br />
Notation von<br />
Beziehungen<br />
Vererbung<br />
Händler<br />
1..*<br />
Lieferant<br />
firmenname : String<br />
straße : String<br />
hausnummer : Integer<br />
postleitzahl : Integer<br />
ort : String<br />
Überblick<br />
1<br />
Kundenliste<br />
kundenZahl ()<br />
*<br />
Kunde<br />
name : String<br />
straße : String<br />
hausnummer : Integer<br />
postleitzahl : Integer<br />
ort : String<br />
<strong>Vorlesung</strong> OOP,<br />
Mannheim, 21.03.2002<br />
Folie 11<br />
© Prof. Dr. Peter Knauber<br />
FH Mannheim
Notation weiterer Beziehungen<br />
Übersicht<br />
Rückblick:<br />
Begriffe<br />
Klassen<br />
Notation<br />
von Klassen<br />
Notation von<br />
Beziehungen<br />
Vererbung<br />
Überblick<br />
Dazugehören (shared aggregate)<br />
Enthaltensein (composite aggregate),<br />
elementar dazugehören (es geht nicht ohne)<br />
<strong>Vorlesung</strong> OOP,<br />
Mannheim, 21.03.2002<br />
Folie 12<br />
© Prof. Dr. Peter Knauber<br />
FH Mannheim<br />
Übersicht<br />
Rückblick:<br />
Begriffe<br />
Klassen<br />
Notation<br />
von Klassen<br />
Notation von<br />
Beziehungen<br />
Vererbung<br />
Überblick<br />
Notation von Beziehungen zwischen Klassen:<br />
Beispiel 3/4<br />
Liste<br />
1<br />
Person<br />
1<br />
Ein Listenelement kann zu<br />
mehreren Listen gehören<br />
*<br />
2<br />
2<br />
Listenelement<br />
Arm<br />
Fuß<br />
Kurzname: Aggregation<br />
Kurzname: Composition<br />
Ein Fuß gehört immer zu<br />
• Shared Aggregation<br />
genau einer Person<br />
– Eine Form der Zusammengehörigkeit zwischen einem Ganzen und<br />
seinen Teilen<br />
– Setzt eine aggregierende Klasse in Bezug zu ihren Teilen<br />
• Composite Aggregation<br />
– Eine Form der physischen Zusammengehörigkeit und gleicher<br />
Lebensdauer zwischen einem Ganzen und seinen Teilen<br />
– Die Häufigkeit am aggregierenden Ende ist immer gleich 1<br />
<strong>Vorlesung</strong> OOP,<br />
Mannheim, 21.03.2002<br />
Folie 13<br />
© Prof. Dr. Peter Knauber<br />
FH Mannheim
Notation von Beziehungen zwischen Klassen:<br />
Beispiel 4/4<br />
Übersicht<br />
Rückblick:<br />
Begriffe<br />
Klassen<br />
Notation<br />
von Klassen<br />
Notation von<br />
Beziehungen<br />
Vererbung<br />
Überblick<br />
Händler<br />
Wiederverwendung:<br />
beide Klassen benutzen<br />
die gleiche<br />
Adress-Struktur<br />
1..*<br />
Lieferant<br />
firmenname : String<br />
Adresse<br />
straße : String<br />
hausnummer : Integer<br />
postleitzahl : Integer<br />
ort : String<br />
Vielleicht ist die<br />
Adresse des<br />
Lieferanten zunächst<br />
nicht bekannt<br />
Konto<br />
ktoNr : Integer<br />
blz : Integer<br />
bankName : Integer<br />
1<br />
<strong>Vorlesung</strong> OOP,<br />
Mannheim, 21.03.2002<br />
Kundenliste<br />
kundenZahl ()<br />
*<br />
Kunde<br />
bankVerbindung <br />
name : String<br />
Folie 14<br />
Bankverbindung wird immer<br />
zusammen mit dem Kunden angelegt<br />
© Prof. Dr. Peter Knauber<br />
FH Mannheim<br />
Übersicht<br />
Rückblick:<br />
Begriffe<br />
Klassen<br />
Notation<br />
von Klassen<br />
Notation von<br />
Beziehungen<br />
Vererbung<br />
Überblick<br />
<strong>Vorlesung</strong> OOP,<br />
Mannheim, 21.03.2002<br />
Folie 15<br />
© Prof. Dr. Peter Knauber<br />
FH Mannheim
Vererbung<br />
Übersicht<br />
Rückblick:<br />
Begriffe<br />
Klassen<br />
Notation<br />
von Klassen<br />
Notation von<br />
Beziehungen<br />
Vererbung<br />
Überblick<br />
• Vererbung bezeichnet die gemeinsame Verwendung von Attributen<br />
und Operationen durch verschiedene Klassen auf der Basis einer<br />
hierarchischen („is-a”) Relation.<br />
• Diese Relation ist transitiv.<br />
• Eine Klasse besitzt die Eigenschaften (Attribute und Operationen)<br />
ihrer Oberklasse(n) plus einigen zusätzlichen oder spezielleren<br />
Eigenschaften.<br />
Man sagt, sie erbt die Eigenschaften ihrer Oberklasse.<br />
• Folge:<br />
Ein Objekt einer Klasse ist auch automatisch Objekt von deren<br />
(eventuellen) Oberklassen.<br />
<strong>Vorlesung</strong> OOP,<br />
Mannheim, 21.03.2002<br />
Folie 16<br />
© Prof. Dr. Peter Knauber<br />
FH Mannheim<br />
Notation von Vererbung<br />
Übersicht<br />
Rückblick:<br />
Begriffe<br />
Klassen<br />
Notation<br />
von Klassen<br />
Notation von<br />
Beziehungen<br />
Vererbung<br />
Überblick<br />
<br />
<br />
<br />
<br />
<br />
<br />
<strong>Vorlesung</strong> OOP,<br />
Mannheim, 21.03.2002<br />
Folie 17<br />
© Prof. Dr. Peter Knauber<br />
FH Mannheim
Beispiel für Vererbung (1/2)<br />
Übersicht<br />
Rückblick:<br />
Begriffe<br />
Klassen<br />
Notation<br />
von Klassen<br />
Notation von<br />
Beziehungen<br />
Vererbung<br />
Überblick<br />
• Ein Sparbuch<br />
– ist ein (spezielles) Konto,<br />
– für das gesetzliche<br />
Kündigungsfrist gilt.<br />
Konto<br />
inhaber : String<br />
ktoNummer : Integer<br />
zahleEin ()<br />
kündige ()<br />
• Ein Girokonto<br />
– ist ein (spezielles) Konto,<br />
– für das Schecks eingereicht<br />
werden können.<br />
Girokonto<br />
(inhaber : String)<br />
(ktoNummer : Integer)<br />
(zahleEin () )<br />
(kündige () )<br />
reicheScheckEin ()<br />
Sparbuch<br />
(inhaber : String)<br />
(ktoNummer : Integer)<br />
kündigungsfrist : Dauer<br />
(zahleEin () )<br />
(kündige () )<br />
Ererbte Attribute und Operationen<br />
sind in Klammern gesetzt.<br />
<strong>Vorlesung</strong> OOP,<br />
Mannheim, 21.03.2002<br />
Folie 18<br />
© Prof. Dr. Peter Knauber<br />
FH Mannheim<br />
Beispiel für Vererbung (2/2)<br />
Übersicht<br />
Rückblick:<br />
Begriffe<br />
Klassen<br />
Notation<br />
von Klassen<br />
Notation von<br />
Beziehungen<br />
Vererbung<br />
Adresse<br />
straße : String<br />
hausnummer : Integer<br />
postleitzahl : Integer<br />
ort : String<br />
Überblick<br />
Lieferant<br />
Lieferantenadresse<br />
firmenname : String<br />
Kundenadresse<br />
name : String<br />
kundennummer : Integer<br />
Nicht: Lieferant, Kunde!!<br />
<strong>Vorlesung</strong> OOP,<br />
Mannheim, 21.03.2002<br />
Folie 19<br />
© Prof. Dr. Peter Knauber<br />
FH Mannheim
Übersicht<br />
Rückblick:<br />
Begriffe<br />
Klassen<br />
Notation<br />
von Klassen<br />
Notation von<br />
Beziehungen<br />
Vererbung<br />
Überblick<br />
<strong>Vorlesung</strong> OOP,<br />
Mannheim, 21.03.2002<br />
Folie 20<br />
© Prof. Dr. Peter Knauber<br />
FH Mannheim<br />
Übersicht<br />
Rückblick:<br />
Begriffe<br />
Klassen<br />
Notation<br />
von Klassen<br />
Notation von<br />
Beziehungen<br />
Vererbung<br />
Überblick<br />
<strong>Vorlesung</strong> OOP,<br />
Mannheim, 21.03.2002<br />
Folie 21<br />
© Prof. Dr. Peter Knauber<br />
FH Mannheim
Übersicht<br />
Rückblick:<br />
Begriffe<br />
Klassen<br />
Notation<br />
von Klassen<br />
Notation von<br />
Beziehungen<br />
Vererbung<br />
Überblick<br />
<strong>Vorlesung</strong> OOP,<br />
Mannheim, 21.03.2002<br />
Folie 22<br />
© Prof. Dr. Peter Knauber<br />
FH Mannheim<br />
Zur Erinnerung:<br />
Aufgaben für die Software-Entwicklung<br />
Übersicht<br />
Rückblick:<br />
Begriffe<br />
Klassen<br />
Notation<br />
von Klassen<br />
Notation von<br />
Beziehungen<br />
Vererbung<br />
Überblick<br />
• Mehr Aufwand in die Konzeption/Planung stecken und<br />
• Verlässliche Schätzmodelle für Aufwand und Kosten entwickeln<br />
• Auf erprobten und funktionierenden Lösungen (Konzepten) aufbauen:<br />
Architektur, Design<br />
• Erprobte und funktionierende Komponenten wiederverwenden:<br />
Baugruppen, Komponenten, Module, Packages<br />
→ Bauklötze, Lego!<br />
→Wiederverwendung<br />
• Graphische Modelle:<br />
– Fördern das (schnelle) Verständnis<br />
– Erleichtern die Kommunikation (sie sind oft intuitiv verständlich)<br />
– Helfen Missverständnisse zu vermeiden<br />
<strong>Vorlesung</strong> OOP,<br />
Mannheim, 21.03.2002<br />
Folie 23<br />
© Prof. Dr. Peter Knauber<br />
FH Mannheim
Begriffe der Objektorientierung<br />
Übersicht<br />
Rückblick:<br />
Begriffe<br />
Klassen<br />
Notation<br />
von Klassen<br />
Notation von<br />
Beziehungen<br />
Vererbung<br />
Überblick<br />
̌ Objekte<br />
̌ Klassen<br />
̌ Instanziierung<br />
̌ Vererbung / Inheritance<br />
̌ Attribute<br />
̌ Polymorphismus<br />
• Dynamische Bindung<br />
• Initialisierung<br />
̌ Methoden<br />
̌ Operationen<br />
̌ Mitteilungen / Messages<br />
• Sichtbarkeit<br />
• Kapselung<br />
̌ Identität von Objekten<br />
̌ Struktur und Verhalten<br />
(̌) Delegation<br />
• Objektorientierte Analyse (OOA)<br />
• Objektorientiertes Design (OOD)<br />
• Objektorientierte<br />
Programmierung (OOP)<br />
• Objektorientiertes Testen<br />
• Objektorientierte Wartung<br />
<strong>Vorlesung</strong> OOP,<br />
Mannheim, 21.03.2002<br />
Folie 24<br />
© Prof. Dr. Peter Knauber<br />
FH Mannheim<br />
Ausblick<br />
Übersicht<br />
Rückblick:<br />
Begriffe<br />
Klassen<br />
Notation<br />
von Klassen<br />
Notation von<br />
Beziehungen<br />
Vererbung<br />
Überblick<br />
• Objektorientierter Entwurf nach Booch<br />
• Beispiel<br />
<strong>Vorlesung</strong> OOP,<br />
Mannheim, 21.03.2002<br />
Folie 25<br />
© Prof. Dr. Peter Knauber<br />
FH Mannheim