Abstrakte Klassen DVG2 - 02.

Slides:



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

der Universität Oldenburg
Objektorientierte Programmierung
der Universität Oldenburg
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.
Progwerkstatt JAVA Klasse, Objekte, Konstruktoren, Methoden
der Universität Oldenburg
Java: Objektorientierte Programmierung
Indirekte Adressierung
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
FH-Hof Fehlerbehandlung Richard Göbel. FH-Hof Konzept Fehler können mit dem Operator throw einer übergeordneten Funktion signalisiert werden. Parameter.
Abstrakte Klassen.
Konstruktoren.
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.
Einführung in die OOP in Java
Einführung in die Programmierung mit 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 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.
Abstrakter Datentyp in C++ I - Klasse -
Software Design Patterns Creational Patterns Structural Patterns Behavioral Patterns –Behavioral Class Patterns Interpreter Template Method Pattern –Behavioral.
Command Pattern Karola Schäuble,
int dezi = Integer.parseInt(args[0]); boolean vz = (dezi>=0);
1DVG3 - anonyme Klassen Anonyme Klassen. DVG3 - anonyme Klassen 2 Syntax new BasisKlasse(Parameterliste) { Modifikationen und Erweiterungen der Basisklasse.
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 Einführung in Java1 Einführung in JAVA.
DVG Methoden 1 Methoden. 2 int dezi = Integer.parseInt(args[0]); boolean vz = (dezi>=0); dezi = Math.abs(dezi); String Bin = ""; do { } while.
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
Abstrakte Klassen, Interface
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
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.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Bestimmung des ggT zweier Zahlen
Vererbung Einfache Vererbung – Erben von abstrakten Klassen – Implementieren eines Interfaces.
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.
2.4 Rekursion Klassifikation und Beispiele
Unterprogramme in JAVA
EPROG Tutorium #6 Philipp Effenberger
CuP - Java Neunte Vorlesung Entspricht Kapitel 4.2 und 5 des Skriptums
Programmierung von Agenten in Java: Implementierung einer Supply-Chain
Programmiervorkurs WS 2014/15 Methoden
Programmiervorkurs WS 2014/15 Instanzmethoden
3. Beschreibung von Abläufen durch Algorithmen 3.4 Zufall
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
Einführung in die Programmierung mit Java
Abstrakte Klassen und das Interface-Konzept
Objektorientierte Programmierung (OOP)
Tutorium Software-Engineering SS14 Florian Manghofer.
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
Objektorientierung Gliederung von Daten und Funktionen zu Objekten
Java-Kurs - 5. Übung Das Paradigma der Objektorientierung (OO)
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
 Präsentation transkript:

Abstrakte Klassen DVG2 - 02

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. DVG2 - 02

Beispiel: Newton-Verfahren class Equation { final double eps = 1e-12; 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 - 02

f und fs sind noch nicht bekannt Problem: Bei der Definition der Methode solve werden die Methoden f und fs benötigt. f und fs sind noch nicht bekannt 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 - 02

abstract class Equation { final double eps = 1e-12; abstract double f (double x); abstract double fs (double x); 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 - 02

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 muß eine „reale“ Klasse abgeleitet werden, die f und fs definiert. DVG2 - 02

class expEquation extends Equation { final double rhs = Math.exp(Math.PI); double f (double x) return Math.exp(x) - rhs; } double fs (double x) return Math.exp(x); DVG2 - 02

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 - 02

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 - 02