„Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen.“

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

Objektorientierte Programmierung
der Universität Oldenburg
der Universität Oldenburg
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Einführung in die Programmierung Zusammenfassung
Kritische Betrachtung
Kapselung , toString , equals , Java API
Progwerkstatt JAVA Klasse, Objekte, Konstruktoren, Methoden
der Universität Oldenburg
Abstrakte Klassen HS Merseburg (FH) WS 06/07.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Erweiterte Zuweisungskompatibilität
Konstruktoren.
Einführung in die OOP in Java
Programmieren mit JAVA
Programmieren mit JAVA
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
DVG Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
Abstrakte Klassen, Interface
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
Klassen 02 - Klassen.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Informatik 1 Übung 8. NACHBESPRECHUNG Übung 8 Rekursion Existiert Weg von A nach B?
Objektorientiertes Programmieren
EPROG Tutorium Einheit 4 Klassen und Objekte. Wiederholung Schleifen do... while while for break/continue Strings String char Methoden für Strings Arrays.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
EPROG Tutorium #6 Philipp Effenberger
EPROG Tutorium #3 Philipp Effenberger
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
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.
Objektorientierte Programmierung (OOP)
Java Programme nur ein bisschen objektorientiert.
Objektorientierte Programmierung mit JAVA. © Klasse Wie in C++ ist die Klasse das primäre Mittel um ein Entity abzubilden Die Eigenschaften.
C++ FÜR cOMPUTERSPIELENTWICKLER
Tutorium Software-Engineering SS14 Florian Manghofer.
, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Kapselung von Daten I Gründe für die Datenkapselung Datenkonsistenz leichtere.
, 1 / Javakurs 2012 – Objektorientierung Objektorientierte Programmierung I This work is licensed under the Creative Commons Attribution-ShareAlike 3.0.
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
Klassen in Java.
Konstruktoren.
Objektorientierung Gliederung von Daten und Funktionen zu Objekten
Vererbung.
OOP II.
Einführung in die Programmierung mit Java
„Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen.“
Einführung in die Programmierung mit Java
Grundkurs Informatik 11-13
Raphael Fischer Informatik II - Übung 06 Raphael Fischer
Programmierung und Vererbung in Java
Grundkurs Informatik mit Java
Arrays in Java Ein Array ist eine Variable, die aus einer An-zahl von Elementen des gleichen Datentyps besteht, die aufeinanderfolgend im Speicher liegen.
Interfaces Definition von Interfaces Verwendung von Interfaces
Definition Felder Konstruktor Methoden Beispiel
9. Vererbung und Polymorphie
Implementieren von Klassen
Polymorphie Überschreiben
 Präsentation transkript:

„Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen.“ J. W. v. Goethe http://www.zitate-online.de/autor/goethe-johann-wolfgang-von/ http://www.weimar-lese.de/files_weimar_lese/johann_wolfgang_von_goethe_bearbeitet_von_andreas_werner.jpg

Vererbung Spezialisierung einer Klasse Eine Kindklasse erbt von einer Elternklasse, man spricht auch von Basis- und abgeleiteter Klasse Elternklasse (Basisklasse) BTime int h; int m Kindklasse (abgeleitete Klasse) Depart String Destination

Vererbung Die Vererbung wird durch das Schlüsselwort extends eingeleitet. Die Kindklasse übernimmt alle Member (Instanzvariablen) und Methoden der Elternklasse. Ein Objekt der Klasse Depart enthält somit das Ziel, als auch die Zeit (Stunde, Minute). Die private-Member der Elternklasse sind in der Kindklasse ebenso, wie die public Member enthalten. Die private Member sind aber nicht sichtbar in der Kindklasse. Sie Sichtbarkeit protected regelt, dass diese Member auch in abgeleiteten Klassen sichtbar sind, in fremden Klassen jedoch nicht.

Vererbung Im Zuge der Vererbung kann es in der Kindklasse eine Methode mit der gleichen Signatur, wie in der Elternklasse geben. In diesem Falle überschreibt die Funktion der Kindklasse die Funktion der Elternklasse. Man spricht von überschriebenen Funktionen. Überschriebene Methoden können durch die Annotation @Override gekennzeichnet werden. Gibt es in der Kindklasse eine Variable mit dem selben Namen, wie in der Elternklasse, spricht man von Überdeckung.

Überschriebene Funktion Vererbung public class Depart extends BTime { private String Destination; Depart(int h, int m, String Dest) setM(m); setH(h); Destination=Dest; } @Override public String toString() return super.toString()+" to "+Destination; . . . Überschriebene Funktion

Vererbung public static void main(String args[]) { Depart dp[]={new Depart(8,30,"Chemnitz"), new Depart(8,43,"Tharandt"), new Depart(8,54,"Wien")}; for (int i=0; i<dp.length; i++) System.out.println(dp[i]); } 08:30 to Chemnitz 08:43 to Tharandt 08:54 to Wien

Vererbung Constructoren Der Constructor einer abgeleiteten (Kind-)Klasse trägt den Namen der Kindklassse. Die Instanzvariablen der Basisklasse werden mit dem Defaultkonstructor initialisiert. Über set-Methoden können danach Werte zugewiesen werden (siehe setM, setH im Beispiel).

Vererbung Constructoren Eine elegantere Methode, die Instanzvariablen der Elternklasse zu initialisieren, besteht im Aufruf von super(…..); super muss als erste Anweisung des Constructors ausgeführt werden. Die übergebenen Parameter im Aufruf von super müssen zu einem Constructor der Elternklasse passen.

Vererbung Constructoren public class Depart extends BTime { private String Destination; Depart(int h, int m, String Dest) super(h,m); Destination=Dest; } . . .

Referenzen und Objekte Referenzvariable und Objekttyp müssen zueinander passen. Bei Objekten abgeleiteter Klassen darf die Referenzvariable auch vom Typ einer Elternklasse sein. Ist dies der Fall stehen nur die Methoden der Elternklasse zur Verfügung. Handelt es sich aber um überschriebene Methoden, wird die Methode der Kindklasse ausgeführt.

Referenzen und Objekte public static void main(String args[]) { Depart dp[]={ new Depart(8,30,"Chemnitz"), new Depart(8,43,"Tharandt"), new Depart(8,54,"Wien")}; for (int i=0; i<dp.length; i++) System.out.println(dp[i]); BTime bt=dp[0]; System.out.println(bt); } Referenz der Elternklasse Aufruf der Funktion Der Kindklasse

Vererbung und Datentyp In C war jedes Objekt, jede Variable genau von einen Datentyp. In der objektorientierten Programmierung ist jedes Objekt vom Typ seiner eigenen Klasse, aber auch vom Typ aller Elternklassen. Alle Klassen haben in Java implizit die Elternklasse Object. Ein Objekt vom Typ Depart ist somit auch vom Typ Btime und vom Typ Object.

Interfaces Interfaces kann man sich vorstellen, wie ein Headerfile in c, für das es kein zugeordnetes Implementationsfile gibt. Ein Interface ist aufgebaut, wie eine Klasse, enthält jedoch keine Instanzvariable und keine Funktionen, lediglich Funktionsköpfe, gefolgt von ‘;‘. interface Compareable { public boolean lessThan(Compareable other); }

Interfaces Eine Klasse kann Interfaces implementieren. class BTime implements Compareable { . . . public boolean lessThan(Compareable other) boolean ret = ((h*60+m) <((BTime)other).h*60+((BTime)other).m); return ret; }

Interfaces Eine Klasse kann mehrere Interfaces Implementieren. Implementiert eine Klasse ein Interface, so muss sie alle Funktionen des Interfaces implementieren (müssen ausprogrammiert werden). Ein Objekt ist dann vom Typ der eigenen Klasse, vom Typ aller Elternklassen und vom Typ aller implementierten Interfaces. Ei n Interface stellt sicher, dass die Objekte der Klasse eine bestimmte Funktionalität bereitstellen.

Klassendiagramm Student InformatikStudent ArchitekturStudent KlProg Name MatrNr InformatikStudent KlProg BelProg ArchitekturStudent GebaeudeProjekt Generalisierte Klasse (Basisklasse, Elternklasse) Spezialisierte Klassen (abgeleitete Klasse, Kindklasse) toString() . . . Konstruktoren, getter, setter