7. Vorlesung Vererbung Einfach- und Mehrfachvererbung Polymorphismus

Slides:



Advertisements
Ähnliche Präsentationen
Business Engineering Philipp Osl, Alexander Schmidt
Advertisements

ER-Modell: Objekte und Klassen
Abstrakte Klassen Basisklassen sollten in der Regel sehr allgemein sein. Oft ist es nicht notwendig, dass Objekte dieser generellen Basisklassen angelegt.
Objektorientierte Programmierung
Fragen 2 Werden die Funktionen des Betriebssystemkernes wie normale Funktionen aufgerufen? Einf. In die WI, DV-Infrastruktur WS 03/04.
Programmorganisation
Arbeitstitel: DV-Infrastruktur
Die Definitionsphase -Objektorientierte Analyse - Das statische Modell
der Universität Oldenburg
Assoziationen Verbindungen zwischen Objekten einer Klasse
Objektorientierter Entwurf
Objektorientierter Entwurf
Anwendungsfalldiagramm
Anwendungsfalldiagramm
Abstrakte Klassen HS Merseburg (FH) WS 06/07.
Java: Objektorientierte Programmierung
Java: Grundlagen der Objektorientierung
Abhängigkeitsbeziehung
Abstrakte Klassen.
Methodik: Objektorientierte Analyse
Objektorientierte Konzepte und Notation in UML
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 4 Vererbung Sommersemester 2003 Lars Bernard.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 5 Polymorphismus Sommersemester 2003 Lars Bernard.
Übung Datenbanksysteme UML
Software-Technik: (fortgeschrittene) Klassendiagramme
Geoinformation III Vorlesung 13b XML-Schema.
Programmieren mit JAVA
Vererbung Spezialisierung von Klassen in JAVA möglich durch
DVG Ausnahmen. DVG Was sind Programmfehler? 4 Programm erzielt gar kein Ergebnis. 4 Berechnetes Ergebnis stimmt nicht mit dem erwarteten.
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
DVG Klassen und Objekte
1 Klassen (1) Eine Klasse beschreibt eine Menge von Objekten mit gemeinsamer Struktur gemeinsamem Verhalten gemeinsamen Beziehungen gemeinsamer Semantik.
Wizards & Builders GmbH Einführung in die objektorientierte Programmierung Norbert Abb.
Prof. Dr. Gerhard Schmidt pres. by H.-J. Steffens Software Engineering SS 2009Folie 1 Objektmodellierung Objekte und Klassen Ein Objekt ist ein Exemplar.
2. Vorlesung Ansätze der Systemanalyse: Strukturierte Analyse (SA)
11. Vorlesung: Dynamische Konzepte am Fallbeispiel
4. Vorlesung: Use Case Diagramme Fallbeispiel
9. Vorlesung: Fortsetzung Klassendiagramm für Fallbeispiel
8. Vorlesung: Klassendiagramm für Fallbeispiel
3. Vorlesung: UML Use Case Diagramme
6. Vorlesung: Statische Konzepte
12. Vorlesung: Aktivitätsdiagramme
5. Vorlesung: Grundkonzepte Objekt-Orientierung
10. Vorlesung: Dynamische Konzepte
Entwurfs- und Implementationsdiagramme
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Objektorientierte Konzepte/UML Geoinformation I Vorlesung 2 WS 2000/2001.
UML WS 09/10: Datenbanken vs MarkUp Dozent: Prof. Dr. Manfred Thaller
25. Januar 2007Klasse IT '041 Projekt Solar Server Schulprojekt der Klasse IT `04.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Klassenhierarchien, Vererbung
Objektorientierte Modellierung mit UML
Klassen und Klassenstruktur
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
Java-Kurs - 7. Übung Besprechung der Hausaufgabe Referenzvariablen
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
SS 2014 – IBB4C Datenmanagement Do 17:00 – 18:30 R Vorlesung #3 ER Modellierung.
Java-Kurs Übung Besprechung der Hausaufgabe Vererbung
Java-Kurs Übung Besprechung der Hausaufgabe
Java-Kurs Übung Besprechung der Hausaufgabe Vererbung
Einführung in die Programmierung mit Java
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 9. Vorlesung WS 2001/2002.
Java-Kurs - 9. Übung Besprechung der Hausaufgabe
Sichtbarkeit einschränken
UML-Klassendiagramm: Klassen
Abstrakte Klassen und das Interface-Konzept
Tutorium Software-Engineering SS14 Florian Manghofer.
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
Java-Kurs - 8. Übung Klassen und Objekte: Vererbung
 Präsentation transkript:

7. Vorlesung Vererbung Einfach- und Mehrfachvererbung Polymorphismus Konkrete und abstrakte Klassen Pakete CRC-Karten Wie findet man Klassen? Hans-Jürgen Steffens Systemanalyse SS 04

Vererbung Generalisierung / Spezialisierung („ist ein“) Z. B. Quadrat ist ein Rechteck Extension der Unterklasse ist eine Teilmenge der Extension ihrer Oberklasse Eine Unterklasse verfügt über die Eigenschaften, das Verhalten und die Assoziationen der Oberklassen (d. h. sie erbt diese von der Oberklasse) Die Unterklasse ist vollständig konsistent mit der Oberklasse, erweitert diese aber um zusätzliche Informationen (Attribute, Operationen, Assoziationen) Ein Objekt einer Unterklasse kann überall dort verwendet werden, wo ein Objekt der Oberklasse erlaubt ist Es sind mehrere Stufen der Vererbung möglich, d. h. eine Unterklasse kann wiederum Oberklasse von weiteren Klassen sein (Klassenhierarchie, Vererbungsstruktur) Hans-Jürgen Steffens Systemanalyse SS 04

Vererbung Oberklasse Unterklassen Geometrische Figur Oberklasse x : int y : int sichtbar : bool zeichnen() entfernen() verschieben() Unterklassen Jede Objekt zu einer der Unterklassen verfügt automatisch auch über die Attribute x, y, sichtbar und die Operations zeichnen(), entfernen(), verschieben() Kreis Rechteck Dreieck radius a x2 b y2 x3 y3 Hans-Jürgen Steffens Systemanalyse SS 04

Beispiel für Vererbung Hans-Jürgen Steffens Systemanalyse SS 04

Generalisierung im Beispiel Jeder Stammkunde ist ein Privatkunde Jeder Firmenkunde ist ein Kunde, jeder Privatkunde ist ein Kunde Kunden Privatkunden Firmen- kunden Stamm- kunden Hans-Jürgen Steffens Systemanalyse SS 04

Was wird vererbt? Attribute Attribute der Oberklasse incl. Typ (Werte werden nicht vererbt) Klassenattribute und ihre Werte (es handelt sich um dasselbe Attribut) Operationen Alle Operationen, die auf Objekte der Oberklasse angewendet werden könne, können auch auf Objekte der Unterklasse angewendet werden. Wird eine Nachricht an ein Objekt geschickt, so wird zunächst bei dessen Klasse nach der entsprechenden Operation gesucht, anschließend bei der direkten Oberklasse, anschließend bei deren Oberklasse usw. Klassenoperationen können ebenfalls auf Unterklassen angewendet werden Assoziationen Wenn Objekte der Oberklasse Beziehungen mit Objekten einer bestimmten Klasse eingehen können, dann können Objekte der Unterklasse dies ebenfalls Hans-Jürgen Steffens Systemanalyse SS 04

Einfach- und Mehrfach-Vererbung Einfachvererbung: Jede Klasse kann maximal eine direkte Oberklasse haben Mehrfachvererbung: Klassen können auch zwei oder mehr Oberklassen haben (und von diesen erben) Mehrfachvererbung wird von vielen Programmiersprachen (z. B. Java) nicht unterstützt Wirft eine Reihe von Problemstellungen auf, was passiert z. B. bei Vererbung gleichnamiger Operationen von verschiedenen Oberklassen? Hans-Jürgen Steffens Systemanalyse SS 04

Mehrfach-Vererbung Privatkunde erbt „Kunden-Nr“ von Kunde und Vorname, Nach- name, Geschlecht, Telefon von Person Hans-Jürgen Steffens Systemanalyse SS 04

Merfach-Vererbung Quadrat ist ein Rechteck und Quadrat ist eine Raute. Nachteil dieser Modellierung: Quadrat erbt alle Attribute von Rechteck und Raute und muss diesen auch Werte zuweisen (a=b=c, x2=x+a, y2=y+b) Hans-Jürgen Steffens Systemanalyse SS 04

Polymorphismus „Vielgestaltigkeit“ Verschiedene Objekte, die auf die gleiche Botschaft reagieren, können unterschiedliche Implementierungen besitzen Eine Unterklasse kann eine von der Oberklasse geerbte Operation überschreiben Sie muss allerdings die gleichen Parameter und Rückgabewerte besitzen Im Falle einer abstrakten Oberklasse kann die Operation in der Oberklasse eine abstrakte Operation sein, d. h. sie verfügt selbst über keine Implementierung, sondern überlässt die Implementierung den Unterklassen Hans-Jürgen Steffens Systemanalyse SS 04

Polymorphismus Es existieren verschiedene Implementierungen für die Operation zeichnen(), je nachdem ob ein Kreis oder ein Rechteck gezeichnet werden soll. Diese Operations überschreiben die gleichnahmige Operation der Oberklasse. Hans-Jürgen Steffens Systemanalyse SS 04

Konkrete und abstrakte Klassen Von konkreten Klassen kann es Objekte geben Von abstrakten Klassen selbst kann es keine Objekte geben, nur von ihren Unterklassen. Abstrakte Klassen werden durch Kursivschreibung des Namens gekennzeichnet Hans-Jürgen Steffens Systemanalyse SS 04

Abstrakte Operation Die Oberklasse verfügt nur über die Definition der Operation, nicht aber über eine Implementierung. Die Unterklassen müssen entsprechende Implementierungen bereit stellen. Zweck: Aufgrund der Definition in der Oberklasse weiß man, dass man jedem Objekt einer beliebigen Unterklasse eine entsprechende Nachricht schicken kann, selbst wenn man die genaue Unterklasse noch gar nicht kennt. Abstrakte Operationen werden durch Kursivschreibung des Namens gekennzeichnet. Hans-Jürgen Steffens Systemanalyse SS 04

Beispiele für abstrakte und konkrete Klassen Von dieser Klasse können keine Objekte angelegt werden, d. h. jede geometrische Figur muss entweder ein Kreis oder ein Rechteck sein. Kennzeichnung von abstrakten Klassen durch Kursivschreibung. Geometrische Figur x : int y : int sichtbar : bool zeichnen() entfernen() verschieben() Abstrakte Operation, d. h. die Klasse Geometrische Figur verfügt nur über die Definition der Operation, nicht aber über eine Implementierung. Die Unterklassen Kreis und Rechteck müssen Implementierungen bereit stellen. Rechteck Kreis a radius b zeichnen() zeichnen() Hans-Jürgen Steffens Systemanalyse SS 04

Beispiel für abstrakte und konkrete Klassen Abstrakt – Kunden müssen immer Privat- oder Firmen- kunden sein. Konkret, d. h. es können auch Privatkunden angelegt werden, die keine Stammkunden sind. Hans-Jürgen Steffens Systemanalyse SS 04

Pakete (Packages) UML-Konstrukt zur Gruppierung von Modellelementen (z. B. Klassen) Ein Paket kann selbst wieder Pakete enthalten Dient der Strukturierung großer, komplexer Modelle (Zerlegung in Teilmodelle) Zwischen den Paketen können Abhängigkeiten modelliert werden, um bei einer Änderung herauszufinden, wo möglicherweise weitere Änderungen erforderlich sind. Jedes Modellelement gehört zu maximal einem Paket Pakete definieren einen Namensraum (namespace), in dem die Namen eindeutig sein müssen. Außerhalb des Pakets werden sie folgendermaßen identifiziert: Paketname::Klassennname Hans-Jürgen Steffens Systemanalyse SS 04

Beispiel für Package Diagram Jedem Package kann wieder ein Modell, z. B. ein Klassendiagramm hinterlegt sein. Kundenverwaltung Auftragsverwaltung Lagerverwaltung Abhängigkeiten Hans-Jürgen Steffens Systemanalyse SS 04

Notation von Paketen System Package1 Package2 Package3 Hans-Jürgen Steffens Systemanalyse SS 04

CRC-Karten Class/Responsibility/Collaboration CRC-Karte: Karteikarte, in die Klassenname, Verantwortlichkeiten der Klasse (Wissen und Operationen) und die Zusammenarbeit mit anderen Klassen eingetragen wird Ergänzung zum OOA-Modell Dienen der Ausarbeitung, Diskussion und Detaillierung der Klassendefinitionen Werden im Rahmen von CRC-Workshops von interdisziplinären Teams genutzt CRC-Karten werden an Whiteboard geheftet, durch Linien verbunden (zur Entwicklung von Vererbungen, Aggregationen, Assoziationen), wieder geändert usw. Hans-Jürgen Steffens Systemanalyse SS 04

Beispiel für CRC-Karte Class Reservierung Responsibilities Gewünschter Kfz-Typ Mietzeitraum von bis Gewünschte Ausstattung Abhol-Niederlassung Rückgabe-Niederlassung Anlegen Bestätigen Ändern Stornieren Collaborations Kunde Kfz-Typ Ausstattungsmerkmal Vermietung Hans-Jürgen Steffens Systemanalyse SS 04

CRC-Karte vs. UML-Klassendiagramm Class Bestellung Responsibilities Verwaltet eine Bestellung Delegiert Aufgaben an Bestellpositionen Collaborations Bestellposition Hans-Jürgen Steffens Systemanalyse SS 04

Wie findet man Klassen? (1) Dokumentenanalyse Dokumente, z. B. Formulare, enthalten Attribute sowie Hinweise auf Klassen und Assoziationen Hieraus kann bottom-up ein Klassendiagramm entwickelt werden Beschreibung der Use Cases Top-down-Ableitung von Klassen Substantive und z. T. Verben stellen potenzielle Klassen dar, die dann auf mögliche Attribute usw. untersucht werden müssen Hans-Jürgen Steffens Systemanalyse SS 04

Wie findet man Klassen? (2) Untersuchung, ob folgende Kategorien vorkommen: Konkrete Objekte (Dinge) Personen und deren Rollen Informationen über Aktionen Orte Organisationen Behälter Dinge in einem Behälter Ereignisse Kataloge Verträge Hans-Jürgen Steffens Systemanalyse SS 04

Zusammenfassung Generalisierungen stellen Vererbungsbeziehungen zwischen Klassen mit der Bedeutung „ist ein“ dar. Die Unterklassen erben Attribute, Operationen und Assoziationen von den Oberklassen. Man unterscheidet Einfachvererbung, wo jede Klasse nur eine Oberklasse haben darf, und Mehrfachvererbung. Unterklassen können die in der Oberklasse definierten Operationen überschreiben (Polymorphismus). Klassen, von denen keine direkten Objekte gebildet werden können, nennt man abstrakt, die anderen konkret. Pakete (Packages) strukturieren komplexe Modelle. CRC-Karten sind ein Mittel zur Entwicklung von Klassen. Klassen können über Dokumentenanalyse, die Beschreibung der Use Cases und die Identifikation von typischen Kategorien gefunden werden. Hans-Jürgen Steffens Systemanalyse SS 04

Übungsfragen Was versteht man unter Vererbung? Was wird vererbt? Erläutern Sie: Einfach- und Mehrfachvererbung Konkrete und abstrakte Klassen Polymorphismus Was sind CRC-Karten? Wie sind sie aufgebaut? Wozu verwendte man Pakete in der UML? Wie findet man Klassen? Hans-Jürgen Steffens Systemanalyse SS 04