Interfaces "Schreibaufwand"

Status
Nicht offen für weitere Antworten.
S

Spacerat

Gast
Uhh... neee... Es gibt noch andere Dinge die das gewährleisten (Abstrakte Klassen, enums... noch welche?). Interfaces ersetzen in Java die fehleranfällige Mehrfachveerbung (in Java nicht möglich), wie man sie z.B. in C++ kennt.
 

slawaweis

Bekanntes Mitglied
>welchem Interface entspricht fight() in Bauer? Ist A, oder B, oder C, oder doch D?
>
>Slawa

OK, das sehe ich ein. Aber zumindest bei Methoden aus der Java API könnte man doch drauf verzichten, oder nicht. Beispielsweise actionPerformed(). In diesem Fall müsste man doch verbieten können, das ein Benutzer seine Methoden nicht nach Methoden nennen darf, die in der Java API schon definiert sind. Wenn ich also actionPerformed irgendwo implementiere, dann könnte immer davon ausgegangen werden, dass es sich um einnen Listener handelt. Damit wäre eindeutigkeit hergestellt.

um das zu erklären, müssen wir in die Zeit der Dinosaurier zurückreisen. Vor langer langer Zeit gab es nur Assembler mit direkten Maschinenbefehlen, bis jemand auf die Idee kam abstrakte Namen für bestimmte Teilprogramme zu verwenden. So entstanden die imperativen Programmiersprachen. Darin gibt es keine Kapselung, jede Funktion ist global. So wäre ein actionPerformed() wirklich nur einmal definiert und jede weitere Definition würde es entweder überschreiben oder einen Compilerfehler auslösen. Nun wurden damals Programme mit Millionen von Quelltextzeilen geschrieben, von Tausenden von Programmierern, rund um den Globus. Wenn bei einem größeren Projekt mehrere Programmier auf die Idee kamen, in ihrem Teilprojekt eine Funktion gleich zu benennen, gab es später Probleme, wenn diese Teilprojekte zusammengefügt wurden. Kurz gesagt, es entstand ein Haufen Fehler alleine aus der Struktur des Codes und ein sehr großer Verwaltungsaufwand. Software, die über mehrere Generationen entwickelt wurde, glänzte dann mit solchen Sachen:

Code:
function() // Version 1
_function() // Version 2
__function() // Version 3.5
___function() // Version 4.28
____function() // Version 5.99

Kluge Köpfe der damaligen Zeit brüteten über Möglichkeiten das zu vereinfachen und sicherer zu machen. Aus diesen und anderen Problemen entstanden dann die objektorientierten Programmiersprachen, die extra dafür ausgelegt sind, bestimmte Funktionalität und Bezeichnung zu kapseln. Damit konnte man die Programme besser strukturieren. In ungefähr der Zeit entstand auch Java, d.h. man versuche die damaligen aktuellen Probleme und Lösungen brauchbar anzuwenden. So ist eine wichtige Eigenschaft von Java, dass Namen nur in einem Teilbereich eine Rolle spielen und nicht global.

Würde man jetzt Funktionen wie "actionPerformed()" wieder global machen, also dass keiner mehr seine Funktionen so nennen kann, dann wäre es quasi, als ob man eine Zeitmaschine baut und in die Zeit der Dinosaurier zurückreist, um die ganze Entwicklung wieder von vorne durchzumachen. Wobei actionPerformed() auffällig genug ist, aber sehen wir uns noch ein paar andere API-Funktionen an:

Code:
java.lang.Appendable.append()
java.lang.Readable.read()
java.lang.Runnable.run()
java.io.Closeable.close()
java.util.Observer.update()
java.util.Formattable.formatTo()

das ist nur eine kleine Auswahl, aber alle diese Namen, die in den öffentlichen API Interfaces definiert sind, wären für die Programmier quasi blockiert. Weiterhin wiederholen sich die gleichen Namen sogar in der API. Hinzu kommt das Problem, dass wenn in einer neuen Java Version ein neues Interface mit irgend einem neuen, aber einfachen Namen wie "String getName()", hinzukommt, dann wären plötzlich Hunderte von Programmen nicht mehr kompilierbar, weil diese mit dem neuen Interface kollidieren. Das selbe Problem hat Java mit Schlüsselwörtern. Man kann z.B. kein Schlüsselwort "foreach" mehr in die Sprache einführen, weil es bestimmt schon Tausende von Programmierern in ihren Programmen verwendet haben, entweder als Funktionsaufruf oder als Variablennamen. Weiterhin, was ist das API? Alles mit java.* und javax.*?

Interfaces zu implementieren ist keine Qual, sondern etwas sehr nützliches. Wenn man erst mal Programme mit Hunderttausenden von Zeilen und einem über mehrere Orte verteilten Programmiererteam entwickelt, sieht man die Sache schon ganz anders.

Slawa
 

knowledge

Bekanntes Mitglied
Ich hab mir nochmal meine Gedanken gemacht. Ich denke mal ein nicht zu unterschätzender Vorteil ist wirklich dass ich bei "fremden" Klassen oder später auf einen Blick sehe welches Interface implementiert wird und damit (bei guter Dokumentation) auf die Fähigkeiten der Klasse schliessen kann. Sonst müsste ich mir die gesamte Klasse anschauen und wissen welche Menge von Methoden zu welchem Interface gehört bzw. welche Gesamtfunktionalität die Klasse bieten soll.

Desweiteren wird dadurch sichergestellt, dass ich keine Methode vergesse die implementiert werden soll. Angenommen es ändert sich das Interface, dann merk ich das sofort, welche Klassen davon abhängig sind und wo dann die entsprechende Methode auch implementiert werden muss.
 
Zuletzt bearbeitet:
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Interfaces von Interfaces macht das noch Sinn? Java Basics - Anfänger-Themen 21
J Methodenaufrufe abstrakte Klassen, Interfaces Java Basics - Anfänger-Themen 17
M Wozu dient Interfaces? Java Basics - Anfänger-Themen 6
O Mehrfachvererbung auf Spezifikations- und Implementierungsebene in Java. Interfaces Java Basics - Anfänger-Themen 19
U Funktionale Interfaces mit mehreren abstrakten Methoden? Java Basics - Anfänger-Themen 8
M Interfaces Aufgabe Java Basics - Anfänger-Themen 2
I JSON / XML Struktur mit Vererbung / Interfaces Java Basics - Anfänger-Themen 0
I XML und Interfaces aus anderen Projekten Java Basics - Anfänger-Themen 3
8u3631984 Record - Interfaces Java Basics - Anfänger-Themen 4
M Wie kann ich in einem Konstruktor die Methode eines anderen Interfaces mit den jeweiligen Parametern aufrufen? Java Basics - Anfänger-Themen 8
H Sinn von Interfaces Java Basics - Anfänger-Themen 21
B JaxB und Interfaces? Java Basics - Anfänger-Themen 2
M Funktionale Interfaces Java Basics - Anfänger-Themen 3
Kirby.exe Frage zur Verwendung von Interfaces Java Basics - Anfänger-Themen 6
H Frage zu interfaces Java Basics - Anfänger-Themen 1
J Zweck von Interfaces immer noch nicht klar Java Basics - Anfänger-Themen 3
M Klasse erbt von Interfaces Java Basics - Anfänger-Themen 6
T Interfaces in erbenden Klassen Java Basics - Anfänger-Themen 2
T Abstrakte Klasse und Interfaces Java Basics - Anfänger-Themen 12
H Polymorphie Interfaces und statischer Typ Java Basics - Anfänger-Themen 33
T Verständnisfrage zu Interfaces Java Basics - Anfänger-Themen 7
F Exceptions in Interfaces Java Basics - Anfänger-Themen 4
F Interface Warum Interfaces? Java Basics - Anfänger-Themen 5
R interfaces Java Basics - Anfänger-Themen 1
B Interfaces Java Basics - Anfänger-Themen 6
A Vererbung/Interfaces/Generics Java Basics - Anfänger-Themen 12
D Interface Wieso Aufruf aller Methoden eines Interfaces? Java Basics - Anfänger-Themen 11
J Interfaces? Java Basics - Anfänger-Themen 32
M Erstellung Interfaces....totale Anfängerfrage Java Basics - Anfänger-Themen 16
S Erste Schritte Innere Klassen und Interfaces Java Basics - Anfänger-Themen 2
J Wofür dienen Interfaces ? Java Basics - Anfänger-Themen 1
Hijo2006 Frage zu Interfaces Java Basics - Anfänger-Themen 21
Hacer Interfaces implementieren Java Basics - Anfänger-Themen 7
H Implementierung eines Interfaces erweitern Java Basics - Anfänger-Themen 13
L Via Interfaces unterschiedliche Klassen ansprechen Java Basics - Anfänger-Themen 8
A Verwendung von Interfaces Java Basics - Anfänger-Themen 7
J Interfaces Java Basics - Anfänger-Themen 15
D Frage bzgl. Interfaces Java Basics - Anfänger-Themen 10
D Interface Verständnisprobleme von Interfaces Java Basics - Anfänger-Themen 5
D Interface Interfaces und abstrakte Klassen implementieren Java Basics - Anfänger-Themen 4
S Rollen verändern, Interfaces austauschen wie? Java Basics - Anfänger-Themen 10
K Interfaces/Klassen etc. Java Basics - Anfänger-Themen 6
F Implementierung von Interfaces -> Problem mit main Java Basics - Anfänger-Themen 12
S Verständnisproblem bei Interfaces Java Basics - Anfänger-Themen 6
I Interface Verständnisfrage Interfaces (Bsp.: Enumeration) Java Basics - Anfänger-Themen 2
M Frage zu Generics in Klassen, Abstrakten Klassen und Interfaces Java Basics - Anfänger-Themen 5
O Java Interfaces für andere Programmiersprachen zur Verfuegung stellen? Java Basics - Anfänger-Themen 2
K Interface Generics, Interfaces und Listen - ich bin verwirrt. Java Basics - Anfänger-Themen 7
G Instanzen eines Interfaces erzeugen Java Basics - Anfänger-Themen 7
M Compiler-Fehler Alle Methoden eines Interfaces Implementiert dennoch Fehler Java Basics - Anfänger-Themen 3
V Interface Interfaces und abstrakte Klassen Java Basics - Anfänger-Themen 3
F Best Practice UML/Planung eines Projektes (Klassen, Interfaces, ...) Java Basics - Anfänger-Themen 0
V Vererbung Vererbung, Interfaces und OOP... Java Basics - Anfänger-Themen 10
C Sinn eines Interfaces? Java Basics - Anfänger-Themen 4
A Interface Poymorphismus bei Interfaces Java Basics - Anfänger-Themen 2
Pentalon Eclipse JUNO keine Vorschläge von Methoden bzw. Interfaces der eigenen Klassen Java Basics - Anfänger-Themen 5
R Mehrere Interfaces(Comparable, ...) Java Basics - Anfänger-Themen 2
J Interfaces Abstrakte Klassen Java Basics - Anfänger-Themen 15
D Interfaces und allgemeingültige Methodenaufrufe Java Basics - Anfänger-Themen 6
H Erste Schritte 2 User Interfaces für eine Anwendung Java Basics - Anfänger-Themen 7
S OOP Wann Proxies und Interfaces? Java Basics - Anfänger-Themen 3
M Interface @Inject mit Interfaces? Java Basics - Anfänger-Themen 2
F Interface Unterschied von Attributen und Methoden bei abstrakten Klassen und Interfaces Java Basics - Anfänger-Themen 5
V mehrfachvererbung unter interfaces Java Basics - Anfänger-Themen 10
J Interface Wie funktioniert das mit den Interfaces. Ich verstehe es einfach nicht! :( Java Basics - Anfänger-Themen 15
T Interfaces und Implementierungen Java Basics - Anfänger-Themen 12
S Interface mehrere Interfaces Java Basics - Anfänger-Themen 2
M Vererbung Problem bei Interfaces Java Basics - Anfänger-Themen 8
H Dynamische Bindung mit Interfaces und LinkedList Java Basics - Anfänger-Themen 7
F Interfaces Java Basics - Anfänger-Themen 4
M Frage zu Interfaces Java Basics - Anfänger-Themen 3
N Generics und Interfaces Java Basics - Anfänger-Themen 5
D Abstrakte Klassen und Interfaces als Paramter in Funktionen Java Basics - Anfänger-Themen 3
P OOP Aufruf eines Interfaces Java Basics - Anfänger-Themen 4
N OOP Vererbung von Interfaces Java Basics - Anfänger-Themen 12
S Verständnisfrage zu Interfaces Java Basics - Anfänger-Themen 2
D Sinn von Interfaces - Wozu? Java Basics - Anfänger-Themen 9
P Frage zu Interfaces Bsp. Java Basics - Anfänger-Themen 9
A Deklarationen in abstrakten Klassen und Interfaces Java Basics - Anfänger-Themen 11
R Adapterklassen vs Interfaces Java Basics - Anfänger-Themen 6
P Interfaces -> eins oder mehrere für eine Anwendung? Java Basics - Anfänger-Themen 9
2 Interfaces, Polymorphie und Methoden. Java Basics - Anfänger-Themen 14
A Obstlager Interfaces Java Basics - Anfänger-Themen 7
K Theor. Frage zu Interfaces Java Basics - Anfänger-Themen 30
T Frage zu Interfaces und Abstrakten Klassen Java Basics - Anfänger-Themen 4
J Interfaces Java Basics - Anfänger-Themen 14
L Interfaces Java Basics - Anfänger-Themen 5
J spiel "Gefangenendilemma" Probleme mit Interfaces Java Basics - Anfänger-Themen 8
H Interfaces in java? Java Basics - Anfänger-Themen 2
A OOP Interfaces mit gleichem Methoden Java Basics - Anfänger-Themen 15
T Interfaces: Braucht man abstrakte Klassen eigentlich noch? Java Basics - Anfänger-Themen 3
S Implementierung gegen Interfaces / List, ArrayList, LinkedList Java Basics - Anfänger-Themen 11
D Interfaces / Schnittstellen Java Basics - Anfänger-Themen 8
I Probleme mit Interfaces Java Basics - Anfänger-Themen 4
I Interfaces Java Basics - Anfänger-Themen 34
bigbasti Warum genau braucht man Interfaces? Java Basics - Anfänger-Themen 10
A Programmieren gegen Interfaces Java Basics - Anfänger-Themen 4
I Frage zu Collection und List Interfaces Java Basics - Anfänger-Themen 2
7 Interfaces - Aufbau Java Basics - Anfänger-Themen 9
G Interfaces mit gleichen Methoden Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben