Abstrakte Klassen, Interface

Slides:



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

Objektorientierte Programmierung
der Universität Oldenburg
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.
der Universität Oldenburg
Abstrakte Klassen HS Merseburg (FH) WS 06/07.
Java: Objektorientierte Programmierung
Indirekte Adressierung
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Abstrakte Klassen.
Konstruktoren.
WHILE - Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
Interface bzw. Schnittstelle anschaulich: Hüllenklasse
DO...WHILE Anweisung.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 4 Vererbung Sommersemester 2003 Lars Bernard.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 5 Polymorphismus Sommersemester 2003 Lars Bernard.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
Einführung in die OOP in Java
Programmieren mit JAVA
Programmieren mit JAVA
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 Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
1DVG3 - Paint Paint ein Zeichenprogramm. DVG3 - Paint 2 Paint – ein Zeichenprogramm.
1DVG3 - anonyme Klassen Anonyme Klassen. DVG3 - anonyme Klassen 2 Syntax new BasisKlasse(Parameterliste) { Modifikationen und Erweiterungen der Basisklasse.
Klassen und Objekte DVG
Abstrakte Klassen DVG
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
DVG Klassen und Objekte1 Klassen und Objekte.
DVG Einführung in Java1 Einführung in JAVA.
Entwurfsmuster EDV Entwurfsmuster.
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
Klassen 02 - Klassen.
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
05 - Reflection Das Reflection API Reflection2 Ziel Es kommt vor, dass eine Methode ein Objekt als Parameter übergeben bekommt, ohne dass bekannt.
DVG Klassen und Objekte
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Vererbung Einfache Vererbung – Erben von abstrakten Klassen – Implementieren eines Interfaces.
Klassen und Schnittstellen Klasse: Definiert Zustandsraum ihrer Instanzen vollständig (Implementierung der Struktur, soweit Voraussetzung für die Methoden-
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
CuP - Java Elfte Vorlesung Montag, 11. November 2002.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Unterprogramme in JAVA
EPROG Tutorium #6 Philipp Effenberger
Programmierung von Agenten in Java: Implementierung einer Supply-Chain
Programmiervorkurs WS 2014/15 Instanzmethoden
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
2 Datenabstraktion Geheimnisprinzip:
Java-Kurs Übung Besprechung der Hausaufgabe
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
Einführung in die Programmierung mit Java
IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,
Abstrakte Klassen und das Interface-Konzept
Objektorientierte Programmierung (OOP)
Tutorium Software-Engineering SS14 Florian Manghofer.
Dr. Wolfram Amme, Virtuelle Vererbung, Informatik II, FSU Jena, SS Auflösung von Konflikten bei Mehrfachvererbung Umbenennung mehrdeutiger Methoden.
OOP II.
Java-Kurs Übung Klassen und Objekte: Vererbung (Fortsetzung)
Grundkurs Informatik 11-13
Es gibt Klassen, die mit der Entwicklungsumgebung ausgeliefert werden
1. Die rekursive Datenstruktur Liste 1
Implementieren von Klassen
 Präsentation transkript:

Abstrakte Klassen, Interface DVG2 - 04 - Abstrakte Klassen, Interface

DVG2 - 04 - Abstrakte Klassen, Interface Beispiel: Vögel Definition von Klassen enthält Abstraktion von den konkreten Objekten. Z.B.: Klasse: Vogel Kann ein Objekt der Klasse Vogel instanziiert werden? Nein, es gibt keine Vögel als solche, es gibt nur Spatzen, Enten, Kakadus, Strauße, Pinguine u.s.w. Vogel ist eine abstrakte Klasse. Die Klasse Vogel definiert allgemeine Eigenschaften aller Vögel. Um eine spezielle Vogelart zu beschreiben, werden zusätzliche Definitionen benötigt. Z.B.: Flugfähigkeit Farben des Gefieders, des Schnabels, der Beine Größe, Gewicht u.s.w. Aber: Um eine konkrete Vogelart beschreiben zu können, müssen diese Eigenschaften definiert werden. Von dieser konkreten Vogelart gibt es dann auch konkrete Realisierungen. DVG2 - 04 - Abstrakte Klassen, Interface

Beispiel: Newton-Verfahren public class Equation { final double eps = 1e-12; public double solve(double x) double dx; do dx=-f(x)/fs(x); x+=dx; } while (Math.abs(dx) > eps*Math.abs(x)); return x; } DVG2 - 04 - Abstrakte Klassen, Interface

DVG2 - 04 - Abstrakte Klassen, Interface Problem: Bei der Definition der Methode solve werden die Methoden f und fs benötigt. f und fs sind noch nicht bekannt Lösung: Bei der Definition von solve ist nur wichtig, welche Schnittstellen f und fs haben, nicht aber welchen Körper. f und fs werden als abstrakte Methoden definiert, d.h. es wird nur der Methodenkopf mit dem Schlüsselwort abstract definiert. DVG2 - 04 - Abstrakte Klassen, Interface

DVG2 - 04 - Abstrakte Klassen, Interface public abstract class Equation { final double eps = 1e-12; public abstract double f (double x); public abstract double fs (double x); public double solve(double x) double dx; do dx=-f(x)/fs(x); x+=dx; } while (Math.abs(dx) > eps*Math.abs(x)); return x; } DVG2 - 04 - Abstrakte Klassen, Interface

DVG2 - 04 - Abstrakte Klassen, Interface Die Klasse Equation ist noch abstrakt. Es hat noch keinen Sinn mit der Klasse Equation ein Problem lösen zu wollen, da f und fs, und damit das zu lösende Problem, noch nicht beschrieben sind. ==> Abstrakte Klassen sind nicht instanziierbar! Um ein konkretes Problem lösen zu können muss eine „konkrete“ Klasse abgeleitet werden, die f und fs definiert. DVG2 - 04 - Abstrakte Klassen, Interface

DVG2 - 04 - Abstrakte Klassen, Interface public class ExpEquation extends Equation { final double rhs = Math.exp(Math.PI); public double f (double x) return Math.exp(x) - rhs; } public double fs (double x) return Math.exp(x); DVG2 - 04 - Abstrakte Klassen, Interface

DVG2 - 04 - Abstrakte Klassen, Interface Die Klasse ExpEquation ist nicht mehr abstrakt. Von ExpEquation kann ein Objekt instanziiert werden. Von diesem Objekt kann die Methode solve aufgerufen werden und damit die Gleichung gelöst werden. public class Newton01 { public static void main (String[]args) ExpEquation ex = new ExpEquation(); System.out.println("Loesung = "+ex.solve(15.0)); } DVG2 - 04 - Abstrakte Klassen, Interface

Vorteile abstrakter Klassen Teile der Klassendefinition können von anderen Teilen getrennt und somit vor dem Anwender verborgen werden. Z.B.: enthält die Klasse Equation unser ganzes know-how darüber, wie nichtlineare Gleichungen gelöst werden können. Dieses können wir vor dem Anwender verbergen. Er fügt nur die fehlenden Teile hinzu und kann sein konkretes Problem lösen. Es bleibt die Überprüfung aller Schnittstellen durch das System garantiert. Es sind keine fehlerhaften Aufrufe oder Parameterlisten möglich, da die Schnittstellen in der abstrakten Klasse definiert sind und in der abgeleiteten Klasse nicht verändert werden können (Überladung). DVG2 - 04 - Abstrakte Klassen, Interface

DVG2 - 04 - Abstrakte Klassen, Interface mehrfache Vererbung Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. farbigerPunkt sollte eine Ableitung sowohl der Klasse Punkt als auch der Klasse Color sein. class farbigerPunkt extends Punkt,Color Problem: Elternklassen könnten die gleichen Methoden (Name, Parameterliste) definieren und diese verschieden implementieren. Welche Methode sollte dann verwendet werden? ==> mehrfache Vererbung ist in JAVA nicht erlaubt Interface abstrakte Klasse ausschließlich abstrakte Methoden statische Konstanten DVG2 - 04 - Abstrakte Klassen, Interface

DVG2 - 04 - Abstrakte Klassen, Interface Interfacedefinition Interfacedefinition besteht aus Interfacekopf Name des Interfaces Modifizierer (public) Ableitung von anderen Interfaces (extends) Interfacerumpf statische Attribute alle Attribute bekommen automatisch die Modifizierer final public static abstrakte Methoden alle Methoden bekommen automatisch die Modifizierer abstract public DVG2 - 04 - Abstrakte Klassen, Interface

DVG2 - 04 - Abstrakte Klassen, Interface Interfacekopf [public] interface Bezeichner [extends Interface ,...,Interface] implizit wird abstract angewendet Interface können von mehreren anderen Interfacen erben. Kein Problem, da keine Implementierungen enthalten sind, sondern nur Schnittstellen. DVG2 - 04 - Abstrakte Klassen, Interface

DVG2 - 04 - Abstrakte Klassen, Interface Attribute Typ [ []...[] ] name = Initialisierer ; Implizit werden public static final angewendet ==> Attribute sind echte Konstanten Attribute müssen immer initialisiert werden. DVG2 - 04 - Abstrakte Klassen, Interface

DVG2 - 04 - Abstrakte Klassen, Interface Methoden Typ Name ( [formaleParameterliste] ) [ []...[] ] [throws Ausnahme,...,Ausnahme] ; Methoden sind immer public abstract ==> keine Implementation DVG2 - 04 - Abstrakte Klassen, Interface

Newtonverfahren mit Interface public interface Function { double f(double x); double fs(double x); } DVG2 - 04 - Abstrakte Klassen, Interface

DVG2 - 04 - Abstrakte Klassen, Interface public class Equation { final double eps = 1e-12; public double solve(double x, Function func) double dx; do dx=-func.f(x)/func.fs(x); x+=dx; } while (Math.abs(dx) > eps*Math.abs(x)); return x; } DVG2 - 04 - Abstrakte Klassen, Interface

DVG2 - 04 - Abstrakte Klassen, Interface public class ExpEquation implements Function { final double rhs = Math.exp(Math.PI); public double f (double x) return Math.exp(x) - rhs; } public double fs (double x) return Math.exp(x); DVG2 - 04 - Abstrakte Klassen, Interface

DVG2 - 04 - Abstrakte Klassen, Interface public class Newton01 { public static void main (String[]args) Equation eq = new Equation(); ExpEquation ex = new ExpEquation(); System.out.println("Loesung = "+eq.solve(15.0, ex)); } DVG2 - 04 - Abstrakte Klassen, Interface

Vorteile von Interfaces Interface trennen die Definition der Schnittstellen von der Implementation der Algorithmen und Verfahren. Änderungen der Implementierung haben daher keine Auswirkung auf andere Klassen. Mehrfachvererbung von Interfacen ist möglich. DVG2 - 04 - Abstrakte Klassen, Interface