Praxis der Programmierung

Ähnliche Dokumente
Praxis der Programmierung

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.

Vererbung, Polymorphie

Einstieg in die Informatik mit Java

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

6. Globalübung (zu Übungsblatt 8)

Einstieg in die Informatik mit Java

Vererbung und Polymorphie

C++ - Objektorientierte Programmierung Vererbung

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

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

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

Programmierung Nachklausurtutorium

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

Einführung in die Programmierung mit C++

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

7. Übung Informatik II - Objektorientierte Programmierung

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

Einstieg in die Informatik mit Java

Begriffe 1 (Wiederholung)

Vererbung und Polymorphie

Grundlagen der Informatik

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

Java Einführung Vererbung und Polymorphie. Kapitel 13

Grundelemente objektorientierter Sprachen (1)

Vererbung Was versteht man unter dem Begriff Vererbung?

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

Vorkurs Informatik WiSe 15/16

Programmierkurs C++ Abstrakte Klassen und Methoden

Vererbung. Oberklassen und Unterklassen

Vererbung. Was versteht man unter dem Begriff Vererbung?

Einstieg in die Informatik mit Java

Programmieren in Java

Vererbung. Florian Adamsky, B. Sc. (PhD cand.) Softwareentwicklung im WS 2014/15.

Implementieren von Klassen

Objektorientierte Programmierung und Klassen

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

Algorithmen und Datenstrukturen

OOP und Angewandte Mathematik (Praktikum 1) Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Grundelemente objektorientierter Sprachen (1)

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

Klassen und Konstruktoren in Java

Programmieren in Java

Kapitel 8 Vererbung. Korbinian Molitorisz. IPD Tichy Lehrstuhl für Programmiersysteme

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

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Einführung in die Programmiersprache Java II

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

4. Vererbung Die Klasse Object. Die Klasse Object

Überblick. R.Grossmann / P. Sobe 1

Programmierkurs Java

Objektorientierte Programmierung III

Grundelemente objektorientierter Sprachen (1)

Exceptions und Vererbung

3. Klassen Statische Komponenten einer Klasse. Klassenvariablen

Programmierung und Angewandte Mathematik

Programmieren in Java

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

Geschachtelte Klassen

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

Algorithmen und Datenstrukturen 07

Angewandte Mathematik in OOP WS 2011/12. Abschluss-Test

Einführung in die Systemprogrammierung

Klassenmethoden. Klassenvariablen. Für das Auslesen des Studentenzählers definieren wir eine öffentliche Klassenmethode:

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

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Vorlesung Datenstrukturen

3 VERERBUNG ALLGEMEINES

PYTHON. 06 Objektorientierung II

Vererbung, Polymorphismus

Programmieren in Java

Teil 2: OOP und JAVA (Vorlesung 11)

Programmieren 1 09 Vererbung und Polymorphie

Programmierung und Angewandte Mathematik

Objektorientierte Programmierung Studiengang Medieninformatik

Tücken der dynamischen Bindung

Überblick. 5. Objekt und Klasse, Elementfunktionen

Klassen als Objekte. Smalltalk vs. Objective-C. Self-Nachrichten an Klassen in Objective-C. Klassen als Objekte. Smalltalk: Everything is an object

Polymorphie. 15. Java Objektorientierung II

Programmierkurs. SoSe Markus Geveler Inst. f. Applied Mathematics, TU Dortmund.

Objektorientierte Programmierung

Praxis der Programmierung

Kapitel 4: Klassen und Unterklassen

Einführung in die Programmiersprache Java II

Programmierpraktikum 3D Computer Grafik

Polymorphie. 15. Java Objektorientierung II

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

Objektorientiertes Programmieren mit C++ für Fortgeschrittene

C++ Klassen weitere Funktionen

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

Einstieg in die Informatik mit Java

Javakurs für Anfänger

5 Vererbung. Subklassen, Superklassen, Pakete Zugriffsrechte

Repetitorium Informatik (Java)

Programmieren in C++ Vererbung

Tafelübung 07 Algorithmen und Datenstrukturen

Transkript:

Klassenvariablen und -methoden, Vererbung Institut für Informatik und Computational Science Henning Bordihn 1

Klassenvariablen und -methoden 2

Klassenvariablen und -methoden werden mit dem Schlüsselwort static vereinbart sind der Klasse, nicht den Objekten zugeordnet; d.h. Klassenmethoden können auch aufgrufen werden, ohne dass ein Objekt der Klasse erzeugt wurde Klassenvariablen sind (mit ihren Werten) allen Exemplaren der Klasse gemeinsam, sind also klassenglobal Klassenvariablen werden vor dem ersten Exemplar der Klasse angelegt, müssen also wie globale Variablen definiert werden werden mit dem Klassennamen (statt mit dem Objektnamen) qualifiziert Klassenmethoden dürfen direkt nur auf Datenelemente und Methoden zugreifen, die ebenfalls static sind! 3

Aufgaben 1 bis 3 4

Vererbung 5

Aufgabe 4 6

WRITE ONCE! 7

Prinzipien bei der Vererbung Definition von Klassen (Unterklassen), die von einer anderen Klasse (Oberklasse) abgeleitet sind Vererbung aller Datenelemente und Methoden von der Oberklasse an jede ihrer Unterklassen Erweiterung der Oberklasse durch neue Datenelemente und Methoden möglich (geerbte) Methoden mit derselben Signatur können in verschiedenen Unterklassen verschieden implementiert sein (Polymorphie)! realisiert durch Überschreiben von (virtuellen) Methoden der Oberklasse hierarchische Vererbung (Kinder, Enkel, Urenkel,...) Mehrfachvererbung (Erben von mehreren Oberklassen gleichzeitig) 8

Definition einer Unterklasse class Unterklasse : public Oberklasse { // neue Datenelemente // Konstruktoren Unterklasse(...) { // ruft Oberklasse() auf... } // oder Unterklasse(...) : Oberklasse( /* aktuelle Parameter */ ) { // neue Anweisungen } }; // neue Methoden 9

Konstruktoren bei der Vererbung Konstruktor der Unterklasse ruft zuerst einen Konstruktor der Oberklasse auf den Standardkonstruktor oder den explizit angegebenen Konstruktor Unterklasse(...) : Oberklasse(***) sorgt für Kompatibilität zur Oberklasse Exemplare der Unterklasse sind spezialisierte Exemplare der Oberklasse. Oberklasse allgemein; Unterklasse spezialisiert; allgemein = spezialisiert; spezialisiert = allgemein; // ok // geht nicht 10

Zugriffsattribute bei der Vererbung class Unterklasse : public Oberklasse alle Elemente (Datenelemente und Methoden) werden vererbt (auf private Elemente kann aber nicht direkt zugegriffen werden) class Unterklasse : Oberklasse oder class Unterklasse : private Oberklasse alle geerbten Elemente werden private Definition von Elementen mit protected: Zugriff nur für die Klasse und ihre Unterklassen 11

Zugriffsattribute Beispiel class Oberklasse { int main() { private: Oberklasse o; int privat; Unterklasse u; protected: int protect; int i = u.publik; // Fehler public: i = o.publik; // ok int publik; i = o.protect; // Fehler }; } class Unterklasse : Oberklasse { // privat! public: int f1() { return privat; } // geht nicht int f2() { return protect; } // ok int f3() { return publik; } // ok 12

Aufgabe 5 13

Definition einer Unterklasse class Unterklasse : public Oberklasse { // neue Datenelemente // Konstruktoren Unterklasse(...) { // ruft Oberklasse() auf... } // oder Unterklasse(...) : Oberklasse( /* aktuelle Parameter */ ) { // neue Anweisungen } }; // neue Methoden 14

Mehrfachvererbung Aufzählen der Oberklassen, durch Komma getrennt: class Unterklasse : public Elternklasse, public Superklasse {... } Vorsicht vor Namenskonflikten z.b. bei Datenelement var in beiden Oberklassen: a = Elternklasse::var; b = Superklasse::var; besser Mehrfachvererbung vermeiden! übrigens: neue Elemente vedecken gleichnamige Elemente der Oberklasse(n) 15

Polymorphie durch Überschreiben von Methoden Redifinieren ( Verdecken ) der Methode der Oberklasse bei Aufrufen wird die Imlementierung der Klasse abgearbeitet, die dem Typ entspricht, mit dem das Objekt definiert wurde Entscheidung durch den Compiler (statische/frühe Bindung) werden virtuelle Methoden (Schlüsselwort virtual) überschrieben, entscheidet der Typ des Objekts, an das der Aufruf gerichtet ist (dynamische/späte Bindung) Aber: bei Zuweisungen von Unterklassenobjekten an Oberklassenvariablen erfolgt automaisch eine Typkonversion Besonderheiten der Unterklasse gehen verloren! 16

Aufgaben 6 und 7 17