Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Da hab ich mir heute erst für nen Vortrag in der Schule was dazu überlegt. Also, stell dir mal vor, wir haben eine Klasse Liste, die eine Anzahl beliebiger Objekte speichert. Die Liste soll die gespeicherten Objekte ausgeben und sortieren können.
Wie soll das sortieren denn jetzt funktionieren? Eine einfache Lösung: Wir definieren das Interface Comparable. Ein Objekt, das Comparable implementiert, muss eine Methode bereitstellen, das das Objekt mit einem anderen vergleicht, dadurch kann die Liste die Objekte sortieren. Wir können jetzt die Liste so machen, dass sie nur noch Comparables aufnimmt, und dann ist alles geregelt.
Edit: Args, wieso ist das ne 1:1-Beziehung in dem Diagramm?
ein anderes beispiel ist das Interface List. Da gibts die Implementierungen LinkedList und ArrayList zu.
Nun kann man einfach mit einer List programmieren und erstmal eine ArrayList nehmen und wenn man nun später merkt das ne LinkedList doch besser wäre, ändert man einfach eine zeile im code.
Dieses Interface implementieren wir mal in dieser Klasse:
Code:
public class ConsoleLogger implements Log {
public log(String s) {
System.out.println(s);
}
}
Wir könnten uns jetzt noch viele weitere Logger vorstellen, z.B. einen der den String nicht ausgibt, sondern in eine Datei schreibt. Oder einen der ihn per Mail verschickt.... (ich hoffe du weißt was ich mit Logger meine?)...
Jetzt fehlt uns nur noch eine Klasse die die ganzen möglichen Logger verwaltet:
Code:
public class LogManager {
private LinkedList<Log> logger=new LinkedList<Log>();
public void add(Log log) {
logger.add(log);
}
public void log(String s) {
for(Log log:logger)
l.log(s);
}
}
Mit der Methode add(Log log) können wir dieser Klasse einen Logger hinzufügen. Mit der Methode log(String s) aus LogManager können wir unsere Meldungen ausgeben. Diese werden dann an alle Logger weitergeben....
Hier mal die passende Main-Methode:
Code:
public class LoggerTest {
public static void main(String[] args) {
LogManager lm=new LogManager();
lm.add(new ConsoleLogger());
// und auch andere Logger könnten wir noch hinzufügen
lm.log("Nachricht");
}
}
Das Interface "Log" ermöglicht jetzt, das wir einfach einen neuen Logger schreiben können, ohne existierenden Code zu verändern. Einzig in der Main-Methode müssten wir diesen neuen Logger zu unserem LogManager hinzufügen. Durch das Interface ist es dem LogManager also prinzipiell egal wie der Logger wirklich aussieht - für ihn ist nur wichtig das er das Interface "Log" implementiert - den dadurch weiß er das es die Methode log() geben muss.
Mir fällt da immer das schöne Beispiel mit der Vererbung ein. Du kannst in Jave (gottseidank) nur von einer Klasse erben... aber von einer ganzen Menge Interfaces...