Anwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie

Ähnliche Dokumente
Programmieren in Java

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0

Programmieren in Java

Programmierung Nachklausurtutorium

OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik

Vererbung und Polymorphie

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Beispiel: Zwischen der Oberklasse und der abgeleiteten Klasse besteht eine ist ein Beziehung. Eine abgeleitete Klasse stellt eine Spezialisierung der

14. Java Objektorientierung

Institut für Programmierung und Reaktive Systeme. Java 7. Markus Reschke

Einführung in die Programmiersprache Java II

14. Java Objektorientierung. Klassen, Vererbung, Kapselung

14. Java Objektorientierung

Vererbung. Generalisierung und Spezialisierung Vererbung und Polymorphismus

Programmierkurs Java

Informatik II Übung 6

Inhaltsüberblick. I. Grundbegriffe - Objekte und Klassen. Organisatorisches. I. Grundbegriffe - Objektorientierte Konzepte

Objektorientierte Programmierung Studiengang Medieninformatik

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Einstieg in die Informatik mit Java

Polymorphie. 15. Java Objektorientierung II

Polymorphie. 15. Java Objektorientierung II

Grundzüge der Programmierung. Wiederverwendung VERERBUNG

Einstieg in die Informatik mit Java

C++ - Objektorientierte Programmierung Vererbung

Prinzipien der objektorientierten Programmierung (OOP)

Javakurs für Anfänger

Vererbung P rogram m ieren 2 F örster/r iedham m er K apitel 11: V ererbung 1

1 Abstrakte Klassen, finale Klassen und Interfaces

Vorkurs Informatik WiSe 15/16

Vererbung, Polymorphie

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5.

Einführung in die Programmiersprache Java II

Einführung in die Programmierung

Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen. J. W. v. Goethe.

Programmieren 1 09 Vererbung und Polymorphie

Java für Bauingenieure

Programmieren II. Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz Institut für Angewandte Informatik

Exceptions und Vererbung

Einführung in die Programmierung

Einführung in C# Teil 3. Matthias Nübling

Vorausgesetzte Grundkenntnisse. Inhalt. Klassenhierarchie und Vererbung. Vererbung. Klassenhierarchie und Vererbung. Einführung in C# Teil 3

Tafelübung 07 Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen

Wiederholung. Klassenhierarchie:

Programmieren II. Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz Institut für Angewandte Informatik

Vorlesung Programmieren. Bisher: Klassen und Objekte. Was ist mit ähnlichen Klassen? Vererbung und Polymorphismus

Erste Java-Programme (Java Wiederholung & Vererbung)

Abstrakte Klassen und Interfaces

Einstieg in die Informatik mit Java

Einführung in die Programmierung

Javakurs für Anfänger

Java Vererbung. Inhalt

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik

PYTHON. 06 Objektorientierung II

Java Schulung (Java 2 Java Development Kit 5 / 6)

Abschnitt 14: Schnittstellen: Interfaces

Vererbung Was versteht man unter dem Begriff Vererbung?

SWE1 / Übung 9 ( )

Begriffe 1 (Wiederholung)

4. Vererbung. Idee der Vererbung. Wir wollen ein Verwaltungsprogramm für CDs und Videos entwickeln. Wir stellen uns dazu folgende Klassen vor:

12 Abstrakte Klassen, finale Klassen und Interfaces

9. Vererbung und Polymorphie. Informatik Vererbung und Polymorphie 1

Vererbung. Was versteht man unter dem Begriff Vererbung?

Praxis der Programmierung

Abstrakte Klassen und Schnittstellen. Abstrakte Klassen und Schnittstellen. Abstrakte Klassen und Schnittstellen. Vererbung von abstrakten Methoden

Implementieren von Klassen

Vererbung P rogram m ieren 2 F örster/r iedham m er K apitel 11: V ererbung 1

Programmieren in Java

HSR Rapperswil 2001 Markus Rigling. Programmieren: Vererbung. 1 Variante 2

Programmieren I. Kapitel 8. Vererbung

Objektorientierte Programmierung OOP

Grundlagen Polymorphismus Eigenschaften virtueller Klassen Mehrfachvererbung bei ROOT. Mehrfache Vererbung. Daniel Beneckenstein. 21.

Programmierkurs C++ Abstrakte Klassen und Methoden

Überschreiben von Methoden

3 Objektorientierte Konzepte in Java

Vererbung, Polymorphismus

Algorithmen und Datenstrukturen 07

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen

Polymorphie/Späte Bindung Abstrakte Klassen Interfaces. Polymorphie/Späte Bindung Abstrakte Klassen Interfaces

Weitere Beispiele. Beispiel CD-Spieler: Exemplare eines abstrakten Konzepts. 7. Schnittstellen. Schnittstelle: Syntax

Einführung in die Programmierung I. 11. Vererbung. Stefan Zimmer

Propädeutikum Programmierung in der Bioinformatik

Das Interface-Konzept am Beispiel der Sprache Java

Objektorientierte Programmierung III

Java Einführung Vererbung und Polymorphie. Kapitel 13

Praktikum. SEP: Java-Programmierung WS 2018/19. Modularisierung. Thomas Lemberger und Martin Spießl

Javakurs für Anfänger

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure

Objektorientierte Programmierung und Klassen

Javakurs für Anfänger

Interfaces und Vererbung

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 2. Teil

Transkript:

Anwendungsentwicklung mit Java Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie

Vererbung (1) 2 Problem: Objekte mit gleichen Attributen/Methoden, aber nicht völlig identisch, z.b., LKW, PKW, Lieferwagen, Bus, Sportwagen, Familienwagen... Lösung 1: Für alle Arten separate Klassen schreiben Arbeits-/Pflegeaufwand! Lösung 2: Abstraktion und Vererbung Definition einer Beziehung zwischen einzelnen Kategorien Bus PKW LKW Sportwagen Familienwagen

Vererbung (2) 3 Der besondere Vorteil der OOP: Wiederverwendbarkeit aus vorhandenen Klassen können neue abgeleitet werden Eine Klasse bildet eine Subklasse, an die sie ihre Methoden und Attribute vererbt. Für die Subklasse können noch zusätzliche Methoden und Attribute definiert werden. Hierarchische Struktur: alle Klassen erben von der Klasse Object Object ist die Superklasse aller Klassen. Die Klasse Sportwagen ist eine Spezialisierung der Klasse PKW, Klasse - eine Generalisierung

Vererbung in Java 4 Vorgehen: Schnittmenge an Attributen und Methoden identifizieren und in der Superklasse auslagern Superklasse erweitern Subklassen implementieren mit zusätzlichen Methoden und Attributen, ggf. Methoden überschreiben Die Subklasse erbt die Attribute und Methoden der Superklasse LKW

Ein- vs. Mehrfache Vererbung 5 In Java nur einfache Vererbung jede Klasse hat nur eine unmittelbare Superklasse, aber beliebig viele Subklassen (+) Vermeidung der unklaren Fällen (Woher z. T. stammt diese Methode?) (+) Einfaches Design (+) Vermeidung der Konflikte ( ) Mehrfache Vererbung hat große Vorteile und oft unverzichtbar Postbote Radfahrer PostboteAufDemFahrrad Lösung: Schnittstellen

Abstraktion (1) 6 Wird nicht kompiliert, da die Methode in Car2 nicht vorhanden So ist es richtig! Allgemein gilt: Definiere die Methoden und Attribute in der Klasse, wo sie auch hingehören Problem: Oft ist die Methode in der Superklasse nicht näher zu definieren, da Verhalten zu allgemein (z. B. Methode fortbewegen für Lebewesen) Lösung: Abstrakte Methoden Methode ist definiert in der richtigen Klasse, hat aber kein Verhalten, keine Anweisungen

Abstraktion (2) 7 Abstrakte Methoden enthalten nur die Deklaration der Methode (Signatur), nicht aber ihre Implementierung Abstrakte Methoden werden mit dem Schlüsselwort abstract markiert und haben keine Anweisungen (auch keine geschweifte Klammern) z.b. public abstract void moveforward(); Wenn eine Klasse zumindest eine abstrakte Methode besitzt, muss selbst abstrakt definiert werden: public abstract class XXX {...} Abstrakte Klassen werden ausschließlich als Superklassen und Datentypen verwendet, erzeugen von Objekten ist nicht möglich Die Subklasse einer abstrakten Klasse muss die geerbten abstrakten Methoden überschreiben, oder selbst abstrakt definiert werden Methodenüberschreiben Erzwingen Abstrakte Klasse ohne abstrakte Methoden auch möglich Erzeugen von Objekten verhindern

Überschreiben der Methoden 8 Überschreiben (Override) in einer Subklasse Methoden mit der gleichen Signatur definieren, wie in der Superklasse Die Funktionalität der überschriebenen (in der Superklasse definierten) Methode wird versteckt Die überschreibende Methode kann die Methode der Superklasse aufrufen mittels super

Schnittstellen (1) 9 Mit Schnittstellen (interface) werden die Vorteile mehrfacher Vererbung realisiert, ohne deren Nachteile zu übernehmen Schnittstellen sind klassenähnliche Strukturen, aber dürfen nur abstrakte Methoden und statische Konstanten als Attribute haben Schnittstellen werden mit dem Schlüsselwort interface deklariert und in einer Subklasse mit implements eingeführt Eine Klasse darf beliebig viele Schnittstellen implementieren, muss allerdings entweder alle in den Schnittstellen deklarierten Methoden überschreiben, oder abstrakt deklariert werden Schnittstellen, genau so wie abstrakte Klassen, können als Datentypen benutzt werden

Schnittstellen (2) 10 PKW LKW Bus Sportwagen Pickup Problem: Pickup PKW, LKW oder beides? Lösung: Interface TruckInterface mit der Methode unload

Beziehungen 11 Es wird unterschieden zwischen ist ein (is a) und hat ein (has a) Beziehung ist ein bezieht sich auf die Superklasse hat ein bezieht sich auf die Attribute Ein PKW ist ein Ein Sportwagen ist ein PKW und ist ein Ein hat ein Motor

Polymorphismus 12 Polymorphismus (Vielgestaltigkeit) die Eigenschaft der Java-Objekte, in unterschiedlichen Stellen des Programms unterschiedliche Gestalt anzunehmen Tritt technisch auf, wenn Variable von einem Datentyp auf Objekte des anderen Datentyps referenzieren, z.b. Variable vom Typ Superklasse und Objekt vom Typ Subklasse Variable vom Typ Schnittstelle und Objekt vom Typ implementierende Klasse

Polymorphismus - Beispiel 13

Vererbung und Typecasts (1) 14 Object PKW LKW Object tostring() Object o = new Object();

Vererbung und Typecasts (2) 15 Object PKW LKW Object tostring() Object f = new (); fahren() wenden()

Vererbung und Typecasts (3) 16 Object PKW LKW Object tostring() Object f = new (); f1 = ()f; fahren() wenden()

Vererbung und Typecasts (4) 17 PKW Object LKW LKW Object tostring() Object t = new LKW(); fahren() wenden() lautbrüllen() entladen()

Vererbung und Typecasts (5) 18 PKW Object LKW LKW Object tostring() Object t = new LKW(); t1 = ()t; fahren() lautbrüllen() wenden() entladen()

Vererbung und Typecasts (6) 19 PKW Object LKW LKW Object tostring() Object t = new LKW(); LKW t2 = (LKW)t; fahren() lautbrüllen() wenden() entladen()

20 Polymorphie: Ausgangssituation Programmieren Sie ein Restaurant mit folgenden Eigenschaften: Methode empfangen mit einem Attribut zum Empfang der Gäste. Als Parameter erwartet die Methode das Objekt, das den Besucher repräsentiert Nach dem Empfang werden die Besucher bedient (Aufruf der Methode bestellen bei dem Besucher) Nach dem Bestellen werden die Besucher zur Zahlung aufgefordert (Aufruf der Methode zahlen) Das Restaurant sollte eine Schnittstelle besitzen, damit andere Programmteile darauf zugreifen und bestimmte Methoden (hier empfangen) aufrufen können

Polymorphie: Problemidentifikation Mögliche Lösung? 21 Probleme: Würde nur für die Klasse Mitarbeiter und ihre Subklassen funktionieren - Andere möchten doch auch essen! Was ist mit anderen Modulen, wie Schwimmbad, Fitnessstudio, und andere?

Polymorphie: Lösung L 22 Interface RestaurantBesucher muss implementiert werden, damit die Objekte ins Restaurant gehen können

Zugriffsrechte 23 Zugriffsrechte (Accessmodifier) schützen Variablen und Methoden vor nichterlaubtem Zugriff In Java vier unterschiedliche Zugriffsrechte Private Default Protected Public Zugriff nur in der gleichen Klasse Zugriff in den Klassen des gleichen Namensraums (Package) Zugriff in der Subklassen Zugriff öffentlich Schlüsselwort: private, protected, public Wenn kein Modifier vorhanden default

Datenkapselung 24 Die Klassen- und Objektattribute und Methoden müssen immer kleinstmögliche Zugriffsrechte haben Für die Attribute, die nach Außen sichtbar sein sollten, die getter und setter Methoden definieren