Vererbung. Definition Felder Konstruktor Methoden Beispiel. Dr. Beatrice Amrhein

Ähnliche Dokumente
Polymorphie. Überschreiben. Definition Eigene Methoden überschreiben Beispiele. Dr. Beatrice Amrhein

Interfaces. Definition von Interfaces Verwendung von Interfaces Vordefinierte Interfaces Beispiele. Dr. Beatrice Amrhein

Implementieren von Klassen

Statische und Nichtstatische Methoden Properties/ Eigenschaften

Delegates. «Delegierter» Methoden Schablone Funktionszeiger. Dr. Beatrice Amrhein

Ereignisse (Events) Asynchrones Versenden von Informationen Sender (Herausgeber) Empfänger (Abonnent) Dr. Beatrice Amrhein

Ausnahmen. Exceptions. Definition Ausnahmen erzeugen Ausnahmen abfangen Ausnahmen weiterleiten. Dr. Beatrice Amrhein

Mapra: C++ Teil 6. Felix Gruber, Sven Groß. IGPM, RWTH Aachen. 13. Juni 2017

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

C++ - Objektorientierte Programmierung Vererbung

Programmieren in Java

Programmierung Nachklausurtutorium

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

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

Einführung in die Programmierung mit C++

Teil 2: Weitere Aspekte der Objektorientierung

Programmieren in Java

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

Fragen zur OOP in Java

Polymorphie. Überladen. Definition Methodennamen überladen Konstruktoren überladen Operatoren überladen Beispiele. Dr.

Javakurs für Anfänger

Prof. Dr. Wolfgang Schramm. Vorlesung. Techniken der Programmentwicklung. Exkurs: Anonyme Klassen

Vererbung und Polymorphie

Programmieren in Java

DAP2-Programmierpraktikum Einführung in C++ (Teil 2)

Programmieren in Java

Objektorientierte Programmierung Studiengang Medieninformatik

Vererbung, Polymorphie

Abstrakte Basisklassen

Java Vererbung. Inhalt

Zustände umsetzen Enumerations (Aufzählungen) Zustandsobjekte

Abstrakte Basisklassen

Javakurs für Anfänger

Rückblick: Benutzerdefinierte Datentypen Definition der Klasse Vektor als Container für 2-dimensionale Vektoren

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

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

Exkurs: ANONYME KLASSEN. Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm

Erste Java-Programme (Scopes und Rekursion)

6. Globalübung (zu Übungsblatt 8)

Vorlesung Datenstrukturen

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

Die abgeleiteten Klassen Kreis und Viereck erben die Elemente des Basisklasse und verfügen über zusätzliche Eigenschaften (Seitenlänge,

Delegatesund Ereignisse

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

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

Lambda-Funktionen. Lambda-Funktionen. Lambda-Funktionen sollen

Vererbung und Polymorphie

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

Konstruktor/Destruktor

C++ - Objektorientierte Programmierung Polymorphie

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

III. Objektorientierte Programmierung. Aufruf einer Methode. Definition einer Methode. Bezug zur aufrufenden Instanz. Instanzen einer Klasse

Vererbung Was versteht man unter dem Begriff Vererbung?

Humboldt-Universität zu Berlin Wintersemester 2010/11 Institut für Informatik Grundlagen der Programmierung. 6. Übungsblatt

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

Grundlagen der Objektorientierten Programmierung Static

Objektorientierung. Klassen und Objekte. Dr. Beatrice Amrhein

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

C/C++ - Programmierung. Vererbung Seite 1 von 6. Eine einfache Klasse für eine Personenbeschreibung hat die folgende UML: CPerson.

Objektorientierte Programmierung und Klassen

Überblick. Überblick. Abstrakte Klassen - rein virtuelle Funktionen Beispiele

JAVA 05: Objektorientierte Konzepte

Vererbung. Was versteht man unter dem Begriff Vererbung?

1 Klassen und Objekte

Objektorientierte Programmierung. Kapitel 14: Interfaces

Einführung in die Programmiersprache Java II

Thema heute: Vererbung und Klassenhierarchien. Abgeleitete Klassen. Vererbung von Daten und Funktionen. Virtuelle Funktionen

Mikrorechentechnik II. Klassen in C++

1 Abstrakte Klassen, finale Klassen und Interfaces

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

Java für Bauingenieure

Informatik II Übung, Woche 17

Grundzüge der Programmierung. Wiederverwendung VERERBUNG

Info B VL 11: Innere Klassen/Collections

Schlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe:

Einstieg in die Informatik mit Java

12 Abstrakte Klassen, finale Klassen und Interfaces

Programmieren II Abstrakte Klassen / Virtuelle Methoden. Programmieren II Abstrakte Klassen / Virtuelle Methoden

Exceptions und Vererbung

Ableiten konkreter Klassen

Überblick. Überblick zum weiteren Inhalt

Vererbung I. Kfz Eigenschaften und Methoden der Klasse Kfz Lkw. Pkw. Eigenschaften und Methoden der Klasse Kfz

Ableiten konkreter Klassen

C++ Notnagel. Ziel, Inhalt. Programmieren in C++

Übersicht. Bisherige Verwendung von Klassen Vererbung. Zeiger auf Objekte (abgeleiteter) Klassen Virtuelle Funktionen Konstruktoren/Destruktoren

Einführung in die Programmierung mit C++

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

4. Objektorientierte Programmierung mit C++

Informatik II. Giuseppe Accaputo, Felix Friedrich, Patrick Gruntz, Tobias Klenze, Max Rossmannek, David Sidler, Thilo Weghorn FS 2017

Grundkurs C++ IDE Klassenhierarchien

7. Übung Informatik II - Objektorientierte Programmierung

Objektorientierung. Marc Satkowski 20. November C# Kurs

Grundkurs C++ IDE Klassenhierarchien

Thema heute: Vererbung und Klassenhierarchien. Abgeleitete Klassen. Vererbung von Daten und Funktionen. Virtuelle Funktionen

Prof. W. Henrich Seite 1

Transkript:

Vererbung Definition Felder Konstruktor Methoden Beispiel Dr. Beatrice Amrhein

Definition 2

Definition: Vererbung Die Vererbung dient dazu, mit Hilfe von existierenden Klassen neue Klassen zu implementieren. Die neue Klasse erhält dabei (Zugriff auf) alle Felder und Methoden der Basisklasse, die nicht private sind. 3

Vererbung: Schreibweise Die Deklaration der abgeleiteten Klasse hängt den Namen der Basisklasse mit einem Doppelpunkt an. class AbgeleiteteKlasse : BasisKlasse... Dadurch erhält die abgeleiteten Klasse alle Methoden und Felder der Basisklasse (ausser denen, die private sind). 4

Beispiel Die Basisklasse hat zum Beispiel ein Feld und eine Methode class BasisKlasse protected int feld = 2; protected int Methode1(int a) return a + feld; Die abgeleitete Klasse «erbt» alle Felder und Methoden und kann diese benutzen. class AbgeleiteteKlasse : BasisKlasse public float Methode2(float a) return a + feld + Methode1(5); 5

protected Der Modifiziererprotected bedeutet, dass nur die (Basis-)Klasse und die davon abgeleiteten Klassen dieses Feld, diesen Konstruktoroder diese Methode sehen (oder benutzen) können. class BasisKlasse // Felder protected int feld1; // Konstuktor protected int BasisKlasse(int a) feld1 = a; // Methoden protected int Methode1(int a) return a + feld; In diesem Beispiel kann nur die BasisKlasse und alle davon abgeleiteten Klassen das feld1 und die Methode1 sehen und benutzen. Der protectedkonstuktorkann nur von den abgeleiteten Klassen aufgerufen werden. 6

Felder 7

Vererbte Felder Jedes nicht private Feld, welches in der Basisklasse deklariert (und initialisiert) wird, existiert auch in der abgeleiteten Klasse. class BasisKlasse protected String name = "Hase"; protected double feld = 1.41; class AbgeleiteteKlasse : BasisKlasse public double Methode(double a) Console.WriteLine(name); return a + feld; Wert von feld = 1.41 Inhalt von name = Hase 8

Vererbte Felder Zur besseren Erkennung, woher das Feld stammt, kann jeweils mit den Schlüsselwörtern this und base gearbeitet werden class BasisKlasse protected double feld1 = 1.41; base class AbgeleiteteKlasse : BasisKlasse private int feld2 = 4; public double Methode(double a) return a + base.feld1 + this.feld2; this 9

Vererbte const Felder Auch die konstanten Felder werden vererbt class BasisKlasse protected const String name = "Hase"; protected double feld1 = 1.41; class AbgeleiteteKlasse : BasisKlasse private int feld2 = 4; public double Methode(double a) Console.WriteLine(BasisKlasse.name); Console.WriteLine(AbgeleiteteKlasse.name); return a + base.feld1 + this.feld2; name ist das gleiche Feld, in der Basis-und in der abgeleiteten Klasse 10

Konstruktor 11

Konstruktor Der Konstruktor der Basisklasse wird in der abgeleiteten Klasse durch den Aufruf base(args)aufgerufen. class BasisKlasse protected double feld1; protected BasisKlasse( double d ) this.feld1 = d; Konstruktor der Basisklasse aufrufen -> Wert d an feld1 zuweisen class AbgeleiteteKlasse : BasisKlasse private int feld2; public AbgeleiteteKlasse(double d, int e) : base(d) this.feld2 = e; public double Methode(double a) return base.feld1 + this.feld2; 12

Konstruktor ohne Argumente Der Konstruktor der Basisklasse ohne Argumente wird in der abgeleiteten Klasse durch den Aufruf base() aufgerufen. class BasisKlasse protected double feld1; protected BasisKlasse( ) this.feld1 = 5; Konstruktor der Basisklasse aufrufen class AbgeleiteteKlasse : BasisKlasse private int feld2; public AbgeleiteteKlasse(double d, int e) : base() this.feld2 = e; public double Methode(double a) return base.feld1 + this.feld2; 13

Konstruktor ohne Argumente Falls der Konstruktorder Basisklasse keine Argumente hat, kann der Aufruf base() weggelassen werden, da der Konstruktor der Basisklasse im Konstuktor der abgeleiteten Klasse immer als erstes aufgerufen wird. class BasisKlasse protected double feld1; protected BasisKlasse( ) this.feld1 = 5; class AbgeleiteteKlasse : BasisKlasse private int feld2; public AbgeleiteteKlasse(double d, int e) this.feld2 = e;... 14

Methoden 15

Vererbte Methoden Alle (ausser den privaten) Methoden der Basisklasse sind auch in der vererbten Klasse vorhanden (so als wären es die eigenen). class BasisKlasse protected double BasisMethode(double a) return a*a; class AbgeleiteteKlasse : BasisKlasse public double Methode(double arg1, double arg2) double resultat = base.basismethode(arg1); return resultat * arg2; base zeigt an, dass es eine Methode der Basisklasse ist. 16

Beispiel: Geometrische Figuren 17

Basisklasse GeomFigur public class GeomFigur protected double[] seiten; protected GeomFigur(double[] s) Console.Write("GeomFigur-Konstuktor"); seiten = s; public String Information() String result = "Seitenlängen:"; foreach (double d in seiten) result = result + " " + d; return result; protected double Summe() double laenge = 0; for(int i=0; i< seiten.length; i++) laenge = laenge + seiten[i]; return laenge; // Basisklasse für geometrische Figuren 18

Von GeomFigur abgeleitete Klasse Rechteck public class Rechteck : GeomFigur public Rechteck(double[] s) : base(s) Console.Write(" --> Rechteck-Konstruktor"); public double Umfang() return 2 * base.summe(); Der Konstruktor benutzt den Konstruktor der Basisklasse zum Speichern der Seiten. Die Methode Umfang benutzt die Methode Summe der Basisklasse public double Flaeche() return seiten[0] * seiten[1]; Die Methode Information wird geerbt und muss nicht mehr implementiert werden. 19

Abgeleitete Klasse Polygon Von GeomFigur abgeleitete Klasse für Polygone public class Polygon : GeomFigur public Polygon(double[] s) : base(s) Console.Write(" --> Polygon-Konstruktor"); public double Umfang() return base.summe(); 20

Von Polygon abgeleitete Klasse Dreieck Die Klasse Dreieck ist von der Klasse Polygon und darum nur indirekt von der Klasse GeomFigur abgeleitet. public class Dreieck : Polygon public Dreieck(double[] s): base(s) Console.Write(" --> Dreieck-Konstruktor"); Der Konstruktor ruft den Konstruktorder Klasse Rechteck auf Die Methoden Information und Umfang wird geerbt (und muss darum nicht implementiert werden). 21

Benutzen der verschiedenen Klassen Polygon Dreieck Rechteck 22

Beispiel: Leih Objekte 23

Basisklasse LeihObjekt public class LeihObjekt private int id; private String title; public String Title // Title Eigenschaft (Property) get return title; public static int counter; // statischer Zähler protected LeihObjekt(String t) // Konstruktor id = ++counter; title = t; Console.Write("--> LeihObjekt"); protected String Info() return id + ". " + title; Nach dem Handbuch der.net 4.0-Programmierung, Rolf Wenger, 2012 24

Abgeleitete Klasse DVD public class DVD:LeihObjekt private String regisseur; public DVD(String t, String r):base(t) regisseur = r; Console.Write("--> DVD"); Aufruf des Basis- Konstruktors public String getdvdinfo() return base.info() + ", Regisseur: " + regisseur; Aufruf der vererbten Methode Info() Nach dem Handbuch der.net 4.0-Programmierung, Rolf Wenger, 2012 25

Abgeleitete Klasse PrintMedium public class PrintMedium : LeihObjekt private String verlag; public PrintMedium(String t, String v):base(t) verlag = v; Console.Write("--> PrintMedium"); Aufruf des Basis- Konstruktors public String getinfo() return base.info()+ " des Verlags "+ this.verlag; Aufruf der vererbten Methode Info() Nach dem Handbuch der.net 4.0-Programmierung, Rolf Wenger, 2012 26

Abgeleitete Klasse Buch von PrintMedium public class Buch : PrintMedium private String autor; public Buch(String t, String p, String a):base(t,p) this.autor = a; Console.Write("--> Buch"); Aufrufdes Konstruktors von PrintMedium public String getbuchinfo() return base.getinfo() + ", Autor: " + autor; Aufruf der vererbten Methode getinfo() von PrintMedium Nach dem Handbuch der.net 4.0-Programmierung, Rolf Wenger, 2012 27

Benutzen der verschiedenen Klassen class Program static void Main(string[] args) PrintMedium z = new PrintMedium("Das neue Heft", "Heft Verlag"); Console.WriteLine(z.getInfo()); Buch b = new Buch("Das neue Buch", "Buch Verlag", "Buch Autor"); Console.WriteLine(b.getBuchInfo()); DVD d1 = new DVD("Der neue Film", "Film Regisseur"); Console.WriteLine(d1.getDVDInfo()); DVD d2 = new DVD("Der zweite neue Film", "Film Regisseur"); Console.WriteLine("Weiterer Film: 0", d2.title); Console.WriteLine("Anzahl Leihobjekte: 0", LeihObjekt.counter); Console.ReadLine(); Nach dem Handbuch der.net 4.0-Programmierung, Rolf Wenger, 2012 28

Program: Ausgabe der Main Methode Die Konstruktorenrufen jeweils den Konstruktorder Basisklasse auf. Zuerst wird immer der Konstruktorder tiefsten Stufe, dann aufwärts die Konstruktoren der Ableitungs-Hierarchie aufgerufen. Die Info- Methoden benutzen jeweils die Info -Methoden der Basis- Klasse. Nach dem Handbuch der.net 4.0-Programmierung, Rolf Wenger, 2012 29