Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Abstrakte Methode Zusammenfassung: Abstrakte Methode

Ähnliche Präsentationen


Präsentation zum Thema: "Abstrakte Methode Zusammenfassung: Abstrakte Methode"—  Präsentation transkript:

1 Abstrakte Methode Zusammenfassung: Abstrakte Methode
definiert nur die Signatur einer Methode besitzt keinen Methodenrumpf ist nicht ausführbar erzwingt eine abstrakte Klasse muss in Unterklassen implementiert werden kann zum Formulieren von Algorithmen eingesetzt werden Schlüsselwort: abstract

2 Abstrakte Klasse Zusammenfassung: Abstrakte Klasse
wird durch nur eine abstrakte Methode erzwungen kann keine Objekte erzeugen muss von (konkreten) Unterklassen implementiert werden muss nicht unbedingt abstrakte Methoden besitzen Schlüsselwort: abstract

3 Interface Sonderfall: Interface ähnelt einer Klasse,
die nur abstrakte Methoden enthält dient nur der Definition einer Benutzungsschnittstelle enthält keine Realisierung Schlüsselwort: interface

4 Interface public interface Vergleichbar {
boolean groesser(Vergleichbar v); } Interface kann zur Typisierung von Referenzen eingesetzt werden: Vergleichbar ref; kann geerbt werden von anderen Interfaces: interface X extends Vergleichbar … kann durch Klassen implementiert werden: class K implements Vergleichbar …

5 Interface Anmerkungen:
Klasse kann Klasse erben und zugleich Interface implementieren Bsp.: class K extends L implements I, J, K … Klasse besitzt höchstens eine Oberklasse, aber Klasse kann mehrere Interfaces implementieren und Interface kann mehrere Interfaces erben

6 Klassen-Interface-hierarchie
Object <<interface>> V <<interface>> W <<interface>> X <<interface>> Y <<abstract>> A <<interface>> Z K

7 Klasse - Interface Warum ist mehrfaches Erben/Implementieren bei Interfaces erlaubt - und nicht bei Klassen?

8 Klasse - Interface Warum ist mehrfaches Erben/Implementieren bei Interfaces erlaubt und nicht bei Klassen? Klasse vererbt implementierte Methoden  zu gleicher Signatur eventuell mehrere Implementierungen Object A B C

9 Klasse - Interface Warum ist mehrfaches Erben/Implementieren bei Interfaces erlaubt und nicht bei Klassen? Klasse vererbt implementierte Methoden  zu gleicher Signatur eventuell mehrere Implementierungen Object toString() toString() A B toString() toString()?? C

10 Klasse - Interface Warum ist mehrfaches Erben/Implementieren bei Interfaces erlaubt und nicht bei Klassen? Klasse vererbt implementierte Methoden zu gleicher Signatur eventuell mehrere Implementierungen JAVA verhindert das Auftreten des Problems

11 Klasse - Interface Warum ist mehrfaches Erben/Implementieren bei Interfaces erlaubt und nicht bei Klassen? Klasse vererbt implementierte Methoden zu gleicher Signatur eventuell mehrere Implementierungen JAVA verhindert das Auftreten des Problems Interface vererbt nur Methodenköpfe (Signaturen) gleiche Signaturen sind textuell gleich gleiche Signaturen fallen beim Erben/Implementieren zusammen das Problem tritt nicht auf!

12 Interfaces und abstrakte Klassen
Was soll der ganze Unfug? Klassen abstrakte Klassen Interfaces erben und vererben implementieren Kompatibilität von Referenzen

13 Idee: Design by Contract
Klasse bietet anderen Klassen Funktionalität/Leistung an durch Methoden

14 Idee: Design by Contract
Klasse bietet anderen Klassen Funktionalität/Leistung an durch Methoden Klasse erwartet Funktionalität/Leistung von anderen Klassen in Form von Methoden

15 Abstimmung erfolgt durch Verhandeln!
Design by Contract Idee: Klasse bietet anderen Klassen Funktionalität/Leistung an durch Methoden Klasse erwartet Funktionalität/Leistung von anderen Klassen in Form von Methoden Abstimmung erfolgt durch Verhandeln!

16 Idee: Design by Contract Abstimmung erfolgt durch Verhandeln!
geht nur mit beiden Partnern einzelner Partner formuliert Anforderungen Interface ist Anforderungsbeschreibung

17

18 Klassen Anmerkung 1: Geerbt-werden kann Klasse nicht verhindern, aber die Redefinition ihrer Methoden in Unterklassen: public class Liste { final public void fuegeAn(…) { … } Schlüsselwort final verhindert erneute Definition in Unterklassen

19 Klassen Anmerkung 1: final kann auch benutzt werden, um Konstante zu definieren! public class Liste { final private int maxLaenge = 50; final public void fuegeAn(…) { … } Schlüsselwort final verhindert eine erneute Zuweisung an Attribut.

20 Klassen Anmerkung 2: Objekte können explizit auf Klassenzugehörigkeit überprüft werden: Element el = new Element(); dann ergeben folgende Ausdrücke true: el instanceof Object el instanceof Element el instanceof Vergleichbar (falls Element Vergleichbar implementiert)

21 Operator Klassen Anmerkung 2:
Objekte können explizit auf Klassenzugehörigkeit überprüft werden: Element el = new Element(); dann ergeben folgende Ausdrücke true: el instanceof Object el instanceof Element el instanceof Vergleichbar (falls Element Vergleichbar implementiert) Operator

22 ? Klassen Anwendung aber häufig schlechter Stil Anmerkung 2:
Objekte können explizit auf Klassenzugehörigkeit überprüft werden: Element el = new Element(); dann ergeben folgende Ausdrücke true: el instanceof Object el instanceof Element el instanceof Vergleichbar (falls Element Vergleichbar implementiert) ? Anwendung aber häufig schlechter Stil

23 Klassen Statische Methoden
bekannt (und genutzt) seit der ersten Vorlesung: public static void main(String[] args) { … }

24 Klassen Statische Methoden
bekannt (und genutzt) seit der ersten Vorlesung: public static void main(String[] args) { … }

25 Klassen Statische Methoden
bekannt (und genutzt) seit der ersten Vorlesung: public static void main(String[] args) { … } Konsequenz: main kann ausgeführt werden, ohne dass ein Objekt der Klasse erzeugt werden muss!

26 Statische methoden K public void m() … public static void s() …

27 Statische methoden K public void m() … r = new K(); m() …
public static void s() … r = new K(); m() …

28 Statische methoden K r public void m() … m() …
public static void s() … m() …

29 Statische methoden K möglich ist: r.m(); r public void m() … m() …
public static void s() … m() … möglich ist: r.m();

30 Statische methoden K möglich ist: möglich ist auch: r.m(); K.s(); r
public void m() … public static void s() … m() … möglich ist: r.m(); möglich ist auch: K.s();

31 Statische methoden K möglich ist: möglich ist auch: r.m();
public void m() … public static void s() … m() … möglich ist: r.m(); und auch: r.s(); möglich ist auch: K.s();

32 Statische Methoden Zusammenfassung: Statische Methoden
können über Referenzen aufgerufen werden können über den Klassennamen aufgerufen werden  benötigen also kein Objekt zur Ausführung  können daher nicht auf Eigenschaften eines Objekts zugreifen, können also keine normalen Methoden oder Attribute nutzen, (die nur in Objekten verfügbar sind)

33 Statische Methoden Zusammenfassung: Statische Methoden
können über Referenzen aufgerufen werden können über den Klassennamen aufgerufen werden  benötigen also kein Objekt zur Ausführung  können daher nicht auf Eigenschaften eines Objekts zugreifen, können also keine normalen Methoden oder Attribute nutzen, (die nur in Objekten verfügbar sind)  statische Methoden benötigen statische Attribute

34 Statische Attribute Beispiel: public class Objektzaehler {
private static int anzahl = 0; public Objektzaehler() { anzahl++; } public static int gibAnzahl() { return anzahl;

35 Statische Attribute Beispiel: public class Objektzaehler {
private static int anzahl = 0; public Objektzaehler() { anzahl++; } public static int gibAnzahl() { return anzahl;

36 Statische Attribute Beispiel: public class Objektzaehler {
private static int anzahl = 0; public Objektzaehler() { anzahl++; } public static int gibAnzahl() { return anzahl;

37 Statische Attribute Beispiel (Fortsetzung): Objektzaehler oz;
oz = new Objektzaehler(); System.out.println(oz.gibAnzahl()); System.out.println(Objektzaehler.gibAnzahl());

38 Statische Attribute Beispiel (Fortsetzung): Objektzaehler oz;
oz = new Objektzaehler(); System.out.println(oz.gibAnzahl()); System.out.println(Objektzaehler.gibAnzahl()); Liefert: 3 3

39 Statische Attribute Anmerkung: System ist eine Klasse
out ist ein statisches Attribut in System, und zwar eine Referenz auf ein Objekt (OutputStream) println ist eine Methode der Klasse OutputStream  System.out.println(…)


Herunterladen ppt "Abstrakte Methode Zusammenfassung: Abstrakte Methode"

Ähnliche Präsentationen


Google-Anzeigen