Wiederholung. Klassenhierarchie:

Ähnliche Dokumente
Programmierung Nachklausurtutorium

Wiederholung. Jedes Objekt hat seinen eigenen Zustand/seine eigenen Variablen (gilt auch für mehrere Objekte, die zur gleichen Klasse gehören).

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

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

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

Kapitel 5: Interfaces

Informatik II Übung 6

Programmieren in Java

Einstieg in die Informatik mit Java

Vorkurs Informatik WiSe 15/16

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Vererbung, Polymorphie

Programmieren in Java

Einführung in die Programmierung

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

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

Programmierkurs Java

Einstieg in die Informatik mit Java

Präsentation Interfaces

1 Abstrakte Klassen, finale Klassen und Interfaces

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen

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

12 Abstrakte Klassen, finale Klassen und Interfaces

Objektorientierte Programmierung

Das Interface-Konzept am Beispiel der Sprache Java

IT I: Heute. abstrakte Methoden und Klassen. Interfaces. Interfaces List, Set und Collection IT I - VO 7 1

6. Globalübung (zu Übungsblatt 8)

Klassen und Konstruktoren in Java

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

14 Abstrakte Klassen, finale Klassen, Interfaces

Einstieg in die Informatik mit Java

Algorithmen und Datenstrukturen 07

Abstrakte Klassen, Interfaces

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

Objektorientierte Programmierung Studiengang Medieninformatik

Abschnitt 14: Schnittstellen: Interfaces

14 Abstrakte Klassen, finale Klassen, Interfaces

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

Java Einführung Abstrakte Klassen und Interfaces

Programmieren in Java -Eingangstest-

Verkettete Datenstrukturen: Listen

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

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

Informatik II Übung 06. Benjamin Hepp 5 April 2017

Polymorphie. 15. Java Objektorientierung II

Kapitel 4: Klassen und Unterklassen

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

Polymorphie. 15. Java Objektorientierung II

II.4.2 Abstrakte Klassen und Interfaces - 1 -

Abstrakte Basisklassen

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

Javakurs für Anfänger

Objektorientierte Programmierung. Kapitel 14: Interfaces

II.4.1 Unterklassen und Vererbung - 1 -

II.4.1 Unterklassen und Vererbung - 1 -

Grundzüge der Programmierung. Wiederverwendung VERERBUNG

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

Programmieren in Java

Abstrakte Basisklassen

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

Info B VL 8: Abstrakte Klassen & Interfaces

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

Javakurs für Anfänger

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

3 Objektorientierte Konzepte in Java

Pakete Software Entwicklung 1

Programmierkurs C++ Abstrakte Klassen und Methoden

Modularisierung in Java: Pakete Software Entwicklung 1

Vererbung. CoMa-Übung XI TU Berlin. CoMa-Übung XI (TU Berlin) Vererbung / 47

Informatik II - Tutorium 6

II.4.5 Generische Datentypen - 1 -

Die abstrakte Klasse Expression:

4. Vererbung Die Klasse Object. Die Klasse Object

14. Java Objektorientierung

Vererbung. Generalisierung und Spezialisierung Vererbung und Polymorphismus

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

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

Vererbung und Polymorphie

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

Einstieg in die Informatik mit Java

Zugriffsrechte und Packages

HERZLICH WILLKOMMEN PROGRAMMIERKURS (JAVA) ZUM. Dr. Vera Weil Institut für Informatik Universität zu Köln. 9. Vorlesung (05.

Heute. Nachbetrachtung Wissensüberprüfung. Sortieren Interface Comparable TreeSet Sortieren von Arrays: Arrays.sort() 3.12.

Javakurs für Anfänger

II.4.1 Unterklassen und Vererbung - 1 -

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Schnittstellen, Vererbung & Polymorphismus für Fortgeschrittene

II.4.1 Unterklassen und Vererbung - 1 -

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

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

Objektorientierte Programmierung. Kapitel 12: Interfaces

Universität Augsburg, Institut für Informatik Sommersemester 2001 Prof. Dr. Martin Ester 08. Oktober Klausur II

EINFÜHRUNG IN DIE PROGRAMMIERUNG

Transkript:

Wiederholung Klassenhierarchie: class Unter extends Ober {... Die Unterklasse Unter erweitert die Funktionalität ihrer Oberklasse Ober. Objekte der Klasse Unter können anstelle von Objekten der Klasse Ober verwendet werden: Sie verstehen alle Nachrichten, die Ober-Objekte verstehen. Sie können Variablen des Typs Ober zugewiesen werden. Sie können anstelle von Ober-Objekten als Parameter übergeben werden. Object: Oberklasse aller anderen Klassen in Java. 1

Wiederholung Typische Anwendung: Zusammenfassen gemeinsamer Teile der Implementierung verschiedener Klassen: Component implementiert Rectangle getbounds() Unterklassen Button, Window, Scrollbar, TextField erben die Implementierung. 2

Wiederholung Typische Anwendung: Zusammenfassen gemeinsamer Teile der Schnittstelle verschiedener Klassen: Menge deklariert enthaelt(), fuegeein() Unterklassen UngeordnetesArray, GeordnetesArray besitzen jeweils eigene Implementierung dieser Methoden. 3

Wiederholung Vorteil: Man kann so Methoden implementieren, die als Argument sowohl ein UngeordnetesArray als auch auf ein GeordnetesArray akzeptieren: int f(menge m) {... 4

Abstrakte Klassen Wenn Objekte nur von den Unterklassen angelegt werden (sollen), dann ist die Implementierung der Methoden in der Oberklasse beliebig (da sie ohnehin in den Unterklassen überschrieben werden). Dies sollte man im Programmtext irgendwie kennzeichnen. Dazu dient das Schlüsselwort abstract (vor Klassen und Methoden). 5

Abstrakte Klassen Abstrakte Klassen: haben keine eigenen Objekte: Objekte können nur von Unterklassen gebildet werden. Abstrakte Methoden: haben nur Schnittstelle (Funktionskopf), keine Implementierung; dürfen nur in abstrakten Klassen vorkommen; müssen in konkreten Unterklassen implementiert werden. 6

Abstrakte Klassen abstract class AbstrakteKlasse { abstract int abstraktemethode(); // Diese Methode wird hier *nur* deklariert. // Unterklassen, die nicht selbst abstract sind, // *müssen* diese Methode implementieren. int konkretemethode() {...... 7

Abstrakte Klassen class KonkreteKlasse extends AbstrakteKlasse { int abstraktemethode() { // Da diese Klasse nicht abstract ist, muß hier // die Methode implementiert werden.... 8

Abstrakte Klassen int test (AbstrakteKlasse a) { return a.abstraktemethode(); // funktioniert: Jedes Objekt, das in a stecken kann, muß zu // einer *konkreten* Unterklasse von AbstrakteKlasse gehören; // in dieser muß abstraktemethode implementiert sein. AbstrakteKlasse a1; a1 = new KonkreteKlasse(); n = xyz.test(a1); // funktioniert a1 = new AbstrakteKlasse(); // funktioniert nicht! 9

Einfache und mehrfache Vererbung In Java: Jede Klasse (außer Object) hat genau eine direkte Oberklasse class B extends A {... Klassenhierarchie hat Baumstruktur (einfache Vererbung). 10

Einfache und mehrfache Vererbung Alternative (in anderen Programmiersprachen): Klassen können von mehreren Oberklassen erben: class Quadrat extends Rechteck extends Rhombus {... mehrfache Vererbung. 11

Einfache und mehrfache Vererbung Anwendung: Sortieren nach laufender Nummer (Personalausweisnummer, Matrikelnummer, Mitgliedsnummer, Inventarnummer,...) public class Nummer { int n; static void sortiere(nummer[] array) {... public class Person { String vorname; String familienname; 12

Einfache und mehrfache Vererbung public class Student extends Nummer extends Person { // KEIN JAVA! String hauptfach; String nebenfach; Student[] studenten;... Nummer.sortiere(studenten); 13

Einfache und mehrfache Vererbung Probleme der mehrfachen Vererbung: In verschiedenen Oberklassen können Variable mit dem gleichen Namen deklariert sein. In verschiedenen Oberklassen können Methoden mit dem gleichen Namen deklariert sein: eine konkrete Methode, andere Methoden abstrakt: ok. mehrere gleiche Implementierungen: ok mehrere verschiedene Implementierungen: welche Methode soll aufgerufen werden? Darum: in Java nicht erlaubt. 14

Interfaces Ausweg: Interface Interface völlig abstrakte Klasse. nur Methodendeklarationen (ohne Implementierung) und Konstanten. Syntaktisch: class interface, extends implements. 15

Interfaces public interface Numeriert { int nummer(); // implizit: public public class NumHilfsfkt { public static void sortiere(numeriert[] array) {... 16

Interfaces public class Student extends Person implements Numeriert { int matrikelnr; String hauptfach; String nebenfach;... public int nummer() { // ist in Numeriert deklariert return matrikelnr; // und muß hier implementiert // werden. Student[] studenten;... NumHilfsfkt.sortiere(studenten) 17

final final verhindert, daß sich etwas ändert: final vor Variablendeklaration: Der Wert der Variablen ist unveränderlich (Konstante). final vor Methodendeklaration: Die Methode kann in Unterklassen nicht überschrieben werden. final vor Klassendeklaration: Von der Klasse können keine Unterklassen gebildet werden. 18

this Beispiel: Doppeltverkettete Liste public class Element { // Ein Element hat Vorgänger und Nachfolger; der Vorgänger des // Nachfolgers (und umgekehrt) ist wieder das Element selbst. Element vor; Element nach; public void setzenachfolger(element e) { nach = e; e.vor = this; // this: das Objekt, "in dem wir uns gerade befinden", d.h., // dem die Nachricht setzenachfolger() geschickt wurde.... 19

this Beispiel: Doppeltverkettete Liste public class Element { // Ein Element hat Vorgänger und Nachfolger; der Vorgänger des // Nachfolgers (und umgekehrt) ist wieder das Element selbst. Element vor; Element nach; public void setzenachfolger(element nach) { this.nach = nach; nach.vor = this; // this: das Objekt, "in dem wir uns gerade befinden", d.h., // dem die Nachricht setzenachfolger() geschickt wurde.... 20

Packages Klassenhierarchie: strukturelle Ähnlichkeit (gemeinsame Teile der Schnittstelle und Implementierung). Packages: thematischer Zusammenhang, gemeinsames Anwendungsgebiet. Beispiel: Package java.awt (Abstract Window Toolkit) enthält u.a. die Klassen Color (RGB-Farbwerte), Point (2-dimensionale Punkte (in einem Fenster)), TextField. 21

Packages Oberklasse: Oberklasse: Package: allgemeines Fluessigkeit Behaelter Unterklassen: Unterklassen: Package: ernaehrung Orangensaft Trinkglas Package: strassenverkehr.kfz Benzin Kanister 22

Packages Packages = Ansammlungen von (thematisch) verwandten Klassen und Interfaces strukturieren Programm: Klassen sind für Programmierer leichter auffindbar. regeln Zugriffsschutz: für Klassen im selben Package gelten geringere Einschränkungen als für Klassen in verschiedenen Packages; liefern separate Namensräume: Klassen in verschiedenen Packages dürfen die gleichen Namen besitzen: ernaehrung.oel und strassenverkehr.kfz.oel sind verschiedene Unterklassen von allgemeines.fluessigkeit. 23

Packages package strassenverkehr.kfz; // Der Inhalt dieser Datei gehört zum Package // strassenverkehr.kfz public class Kanister extends allgemeines.behaelter {... 24

Packages package strassenverkehr.kfz; import allgemeines.behaelter; // die Klasse Behaelter aus dem Package allgemeines // kann unter ihrem kurzen Namen angesprochen werden public class Kanister extends Behaelter {... 25

Packages package strassenverkehr.kfz; import allgemeines.*; // alle Klassen aus dem Package allgemeines können // unter ihrem kurzen Namen angesprochen werden public class Kanister extends Behaelter {... 26

Packages Klassenname Dateiname Packagename Directoryname Die Klasse Kanister im Package strassenverkehr.kfz steht in der Datei Kanister im Directory strassenverkehr/kfz. Falls in einer Datei kein Package angegeben wird, gehören die Klassen darin zum sogenannten Default-Package. 27

Zugriffsrechte protected, public, etc.: spezifizieren, von wo aus auf eine Variable/Methode/Klasse zugegriffen werden kann: aus der aus dem aus von Klasse gleichen Unter- überall selbst Package klassen private x package / friendly x x protected x x x public x x x x 28