14. Java Objektorientierung. Klassen, Vererbung, Kapselung

Ähnliche Dokumente
14. Java Objektorientierung

12. Java Klassen. Klassen - Technisch. Beispiel: Erdbebendaten. Klassen - Konzeptuell

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

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Programmierkurs Java

Informatik II Übung 06. Benjamin Hepp 5 April 2017

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

Programmieren in Java

14. Java Klassen. Klassen (Java) vs. Records (Pascal) Klassen - Konzeptuell. Klassen - Technisch

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

II.4.2 Abstrakte Klassen und Interfaces - 1 -

4. Vererbung Die Klasse Object. Die Klasse Object

Klassen und ihre Beziehungen III: Mehrfache Vererbung, Rollen, Schnittstellen und Pakete

Javakurs für Anfänger

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete. II.4.2 Abstrakte Klassen und Interfaces - 1 -

Objektorientierte PL/SQL-Entwicklung Ein Erfahrungsbericht aus Sicht von JAVA-Entwicklern

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

Ersetzbarkeit und Verhalten

Java für Bauingenieure

Javakurs für Anfänger

Objektorientierte Programmierung Studiengang Medieninformatik

Client-Server-Beziehungen

2.13 Vererbung. Rainer Feldmann Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/ Article

Java Einführung Vererbung und Polymorphie. Kapitel 13

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

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

Javakurs für Anfänger

Einführung in die Programmierung für NF. Vererbung

Kapitel 13. Abstrakte Methoden und Interfaces. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

2.4 Datenabstraktion und Objektorientierung Datenabstraktion in Programmiersprachen

Tafelübung 07 Algorithmen und Datenstrukturen

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

6. Globalübung (zu Übungsblatt 8)

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

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

Programmierkurs C++ Abstrakte Klassen und Methoden

Probeklausur: Programmierung WS04/05

12 Abstrakte Klassen, finale Klassen und Interfaces

14 Abstrakte Klassen, finale Klassen, Interfaces. Auswertung von Ausdrücken. Beispiel. Abstrakte Methoden und Klassen

14 Abstrakte Klassen, finale Klassen, Interfaces

Kapitel 6. Vererbung

Programmieren I. Kapitel 8. Vererbung

Implementieren von Klassen

Kapitel 6. Vererbung

Objektorientierte Programmierung. Kapitel 14: Interfaces

Vererbung. Generalisierung und Spezialisierung Vererbung und Polymorphismus

Kapitel 6. Vererbung

9. Vererbung Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi

Theorie zu Übung 8 Implementierung in Java

Einführung in die Programmierung Wintersemester 2008/09

Algorithmen und Datenstrukturen

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

SWE1 / Übung 9 ( )

Objekt-orientierte Programmierung

Programmieren 1 09 Vererbung und Polymorphie

Silke Trißl Wissensmanagement in der Bioinformatik. Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: Farbe Hubraum Tank...

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen

1 Abstrakte Klassen, finale Klassen und Interfaces

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

Vererbung und Polymorphie

Objektorientierte Programmierung

Einstieg in die Informatik mit Java

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

3 Objektorientierte Konzepte in Java

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

II.4.1 Unterklassen und Vererbung - 1 -

Methoden und Klassen. Silke Trißl Wissensmanagement in der Bioinformatik

II.4.5 Generische Datentypen - 1 -

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2017/18. Vorbereitende Aufgaben

Programmiermethodik 3. Klausur Lösung

Vorlesung Datenstrukturen

3 Objektorientierte Konzepte in Java

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

Objektorientierte Programmierung III

2. Vererbung und Kapselung

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

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

Client-Server-Beziehungen

2. Vererbung und Polymorphie. Vererbung (1/2) Beispiel (1/2) Vererbung (2/2) Eine Unterklasse wird folgendermaßen definiert

Info B VL 8: Abstrakte Klassen & Interfaces

VIII: Vererbung. Unterklassen einer Klasse. Vererbung von Methoden und Instanzvariablen. Überschreiben von Methoden

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

Programmieren. Warum Objektorientierung? Objektorientierung. Beispiele für Busobjekte der realen Welt

Java für Computerlinguisten

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Interfaces

Einfache Datentypen in JAVA

Vererbung. Vererbung von Methoden und Instanzvariablen. Vererbung als Realisierung einer is-a Beziehung.

Vererbung. Oberklassen und Unterklassen

Einführung in die Programmiersprache Java II

Spezifikation, Klassen, Schnittstellen in Java. 2.4 Datenabstraktion, Objektorientierung, Java

Objektorientierung (OO)

Vererbung & Schnittstellen in C#

Liste Programmieren Java Überblick

Grundzüge der Programmierung. Wiederverwendung VERERBUNG

Abgabe: keine Pflichtabgabe (vor 12 Uhr) Aufgabe 10.1 (P) Vererbung Gegeben seien folgende Java-Klassen:

Programmieren in Java

Einführung in die Programmierung

Transkript:

427 14. Java Objektorientierung Klassen, Vererbung, Kapselung

Objektorientierung: Verschiedene Aspekte 428 Daten Typhierarchie Objekte Code Vererbung Unter- und Oberklassen Methoden überschreiben Unterklassen zuweisen Objektorientierung Polymorphismus Kapselung Interfaces Abstrakte Datentypen

Objektorientierung: Verschiedene Aspekte 428 Daten Typhierarchie Objekte Code Vererbung Unter- und Oberklassen Methoden überschreiben Unterklassen zuweisen Objektorientierung Polymorphismus Kapselung Interfaces Abstrakte Datentypen

Objektorientierung: Verschiedene Aspekte 428 Daten Typhierarchie Objekte Code Vererbung Unter- und Oberklassen Methoden überschreiben Unterklassen zuweisen Objektorientierung Polymorphismus Kapselung Interfaces Abstrakte Datentypen

Objektorientierung: Verschiedene Aspekte 428 Daten Typhierarchie Objekte Code Vererbung Unter- und Oberklassen Methoden überschreiben Unterklassen zuweisen Objektorientierung Polymorphismus Kapselung Interfaces Abstrakte Datentypen

Objektorientierung: Verschiedene Aspekte 428 Daten Typhierarchie Objekte Code Vererbung Unter- und Oberklassen Methoden überschreiben Unterklassen zuweisen Objektorientierung Polymorphismus Kapselung Interfaces Abstrakte Datentypen

Objektorientierung: Verschiedene Aspekte 428 Daten Typhierarchie Objekte Code Vererbung Unter- und Oberklassen Methoden überschreiben Unterklassen zuweisen Objektorientierung Polymorphismus Kapselung Interfaces Abstrakte Datentypen

Objektorientierung: Verschiedene Aspekte 428 Daten Typhierarchie Objekte Code Vererbung Unter- und Oberklassen Methoden überschreiben Unterklassen zuweisen Objektorientierung Polymorphismus Kapselung Interfaces Abstrakte Datentypen

Objektorientierung: Verschiedene Aspekte 428 Daten Typhierarchie Objekte Code Vererbung Unter- und Oberklassen Methoden überschreiben Unterklassen zuweisen Objektorientierung Polymorphismus Kapselung Interfaces Abstrakte Datentypen

Objektorientierung: Verschiedene Aspekte 428 Daten Typhierarchie Objekte Code Vererbung Unter- und Oberklassen Methoden überschreiben Unterklassen zuweisen Objektorientierung Polymorphismus Kapselung Interfaces Abstrakte Datentypen

429 Bereits besprochen: Objekte Fokus auf Objekte eines gegebenen Datentyps, welche Daten (Felder) und Code (Methoden) enthalten Datentyp field1 field2 method1 method2

Bereits besprochen: Komposition von Objekten 430 Measurement LocalDateTime date_time Coordinate position java.time.localdatetime float magnitude Coordinate float latitude float longitude float distance(coordinate other)

Vererbung 431 Datentypen sind in einer Typhierarchie eingegliedert. OberKlasse fieldsuper methodsuper Unterklassen (Subtypen) erben Daten und Code ihrer Oberklassen (Supertypen). UnterKlasse1 fieldsuper fieldsub1 methodsuper methodsub1 UnterKlasse2 fieldsuper fieldsub2 methodsuper methodsub2

Vererbung Komposition 432 Komposition: Ein Objekt enthält Felder welche Objekte von andere Typen referenzieren Vererbung: Ein Objekt von einem Typ enthält zusätzliche Felder und Methoden, welche von einem Supertyp geerbt wurden

Korrekter Einsatz von Vererbung 433 Wichtige Frage bei der Überlegung, ob DatenTyp1 von DatenTyp2 erben soll: Ist DatenTyp1 ein DatenTyp2?

Korrekter Einsatz von Vererbung 433 Wichtige Frage bei der Überlegung, ob DatenTyp1 von DatenTyp2 erben soll: Ist DatenTyp1 ein DatenTyp2? Beispiel Ist ein Student eine Person Ist ein Apfel eine Frucht

Korrekter Einsatz von Komposition 434 Wichtige Frage bei der Überlegung, ob DatenTyp1 DatenTyp2 als Komposition enthalten soll: Hat DatenTyp1 einen DatenTyp2?

Korrekter Einsatz von Komposition 434 Wichtige Frage bei der Überlegung, ob DatenTyp1 DatenTyp2 als Komposition enthalten soll: Hat DatenTyp1 einen DatenTyp2? Beispiel Hat ein Student eine Address Hat ein Apfel eine Farbe

Vererbung: extends Schlüsselwort class Measurement { LocalDateTime datetime; Koordinate position; } boolean alarm() {...} Measurement LocalDateTime datetime Koordinate position boolean alarm() class Temperature extends Measurement { double temperature; } class Wind extends Measurement { double speed; double direction ; } Temperature LocalDateTime datetime Koordinate position double temperature boolean alarm() 435

Datenkapselung (Repetition) 436 Steuern, welche Daten und welcher Code woher zugänglich ist. Zugriffsmodifikatoren: private: Sichtbar aus Code derselben Klasse protected: Sichtbar aus Code derselben Klasse oder Unterklasse (später) public: Von überall sichtbar Name private field1 protected field2 private method1 public method2

Beispiel für protected Sichtbarkeit class Measurement { private LocalDateTime datetime; protected Koordinate position; } public boolean alarm() {...} Measurement private LocalDateTime datetime protected Koordinate position public boolean alarm() class Temperature extends Measurement { private double temperature; } class Wind extends Measurement { private double speed; private double direction ; } Temperature (not accessible: datetime) protected Koordinate position private double temperature boolean alarm() 437

438 Abstrakte Klassen class Measurement {... // returns true if measurement is alarming, false otherwise public boolean alarm() {...} } Klasse Measurement bietet eine Methode alarm() an Die Methode soll true zurückgeben, genau dann wenn die Messung alarmierend ist

438 Abstrakte Klassen class Measurement {... // returns true if measurement is alarming, false otherwise public boolean alarm() {...} } Klasse Measurement bietet eine Methode alarm() an Die Methode soll true zurückgeben, genau dann wenn die Messung alarmierend ist... aber die implementation der Methode hängt von der implementierung der diversen Subtypen ab...?!

Abstrakte Klassen 439 Es macht keinen Sinn, Objekte vom Typ Measurement zu erstellen. Der Datentyp sollte abstrakt sein.

Abstrakte Klassen: Keyword abstract 440 abstract class Measurement {... // returns true if measurement is alarming, false otherwise abstract boolean alarm(); } class Temperature extends Measurement { double temperature; } // Implement the abstract method from the supertype boolean alarm(){ return temperature > 35; }

Abstrakte Klassen: Keyword abstract 441 abstract class Measurement {... // returns true if measurement is alarming, false otherwise abstract boolean alarm(); } class Wind extends Measurement { double speed; } // Implement the abstract method from the supertype boolean alarm(){ return speed > 80; }

442 Abstrakte Klassen: Eigenschaften Falls mindestens eine Methode abstract ist, d.h. nicht implementiert, muss die ganze Klasse abstract deklariert sein. Abstrakte Klassen können nicht instanziert werden (new...) Abstrakte Klassen enhalten Daten und Code, welche von allen Subklassen geerbt wird. Von den Unterschieden wird abstrahiert.

Abstrakte Klassen: Benutzung 443 Temperature t = new Temperature(40); boolean b = t.alarm();

Abstrakte Klassen: Benutzung 443 Temperature t = new Temperature(40); boolean b = t.alarm(); In diesem Beispiel wir die Variable b auf true gesetzt.

Abstrakte Klassen: Benutzung 443 Temperature t = new Temperature(40); boolean b = t.alarm(); In diesem Beispiel wir die Variable b auf true gesetzt. Was wenn wir alarm() aus einer Methode definiert in Klasse Measurement aufrufen?

Abstrakte Klassen: Dynamische Methodenbindung 444 abstract class Measurement { abstract boolean alarm(); } String alarmoutput(){ if ( this.alarm()){ Out.println("Alarm!"); } else { Out.println("Nominal"); } }

Abstrakte Klassen: Dynamische Methodenbindung 445 Temperature t = new Temperature(40); t.alarmoutput();

Abstrakte Klassen: Dynamische Methodenbindung 445 Temperature t = new Temperature(40); t.alarmoutput(); Ausgabe: "Alarm!"

Abstrakte Klassen: Dynamische Methodenbindung 445 Temperature t = new Temperature(40); t.alarmoutput(); Ausgabe: "Alarm!" Das Objekt t vom Typ Temperature erbt Methode alarmoutput. In diesem Objekt ist die Implementierung der Methode alarm() aus Klasse Temperatur an die abstrakte Methode alarm() gebunden. Deshalb wird alarmoutput() die Implementierung von alarm() aus Klasse Temperature aufrufen.