08.06.2015 Aufrufe

04. Vorlesung.pdf

04. Vorlesung.pdf

04. Vorlesung.pdf

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!