abstrakte klassen interface n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Abstrakte Klassen, Interface PowerPoint Presentation
Download Presentation
Abstrakte Klassen, Interface

Loading in 2 Seconds...

play fullscreen
1 / 19

Abstrakte Klassen, Interface - PowerPoint PPT Presentation


  • 126 Views
  • Uploaded on

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.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Abstrakte Klassen, Interface' - honora


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
abstrakte klassen interface

Abstrakte Klassen, Interface

DVG2 - 04 - Abstrakte Klassen, Interface

beispiel v gel
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
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

slide4
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

slide5

publicabstractclass 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

slide6
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

slide7

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

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

mehrfache vererbung
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

interfacedefinition
Interfacedefinition
  • Interfacedefinition besteht aus
    • Interfacekopf
      • Name des Interfaces
      • Modifizierer (public)
      • Ableitung von anderen Interfaces (extends)
    • Interfacerumpf
      • statische Attributealle Attribute bekommen automatisch die Modifiziererfinal public static
      • abstrakte Methodenalle Methoden bekommen automatisch die Modifizierer abstract public

DVG2 - 04 - Abstrakte Klassen, Interface

interfacekopf
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

attribute
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

methoden
Methoden

Typ Name ( [formaleParameterliste] ) [ []...[] ] [throws Ausnahme,...,Ausnahme] ;

  • Methoden sind immer public abstract==> keine Implementation

DVG2 - 04 - Abstrakte Klassen, Interface

newtonverfahren mit interface
Newtonverfahren mit Interface

public interface Function

{

double f(double x);

double fs(double x);

}

DVG2 - 04 - Abstrakte Klassen, Interface

slide16

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

slide17

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

slide18

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