Die folgenden Klassen lösen sich von der Komponente Spin
wieder
und sind nicht visuell.
Schreibe ein Objekt Trinkfreund
und Meckermaxe
. Der
Trinkfreund
besitzt eine Property alkoholspiegel
, die
durch die Methode nochEinBier()
um 0,2 erhöht wird.
Schreibe eine Ereignisbehandlung, die die Property alkoholspiegel
mit einem PropertyChangeListener überwacht. Immer dann, wenn der Trinkfreund
nochEinBier()
aufruft, soll ein Ereignis ausgelöst werden, auf das
ein Meckermaxe
-Objekt reagieren kann. Der Meckermaxe
soll
bei einem alkoholspiegel
von 1.0 auf dem Bildschirm "Jetzt ist aber
genug" ausgeben.
Ergänze nochEinBier()
mit einem Vetorecht nach folgendem Muster:
public void nochEinBier() throws PropertyVetoException { }
Der Meckermaxe
soll bei einem Spiegel über 1.0 das nochEinBier()
mit einem Veto verhindern.
Refactoring von Code ist eine wichtige Aufgabe von Entwicklern neben der Neuentwicklung von Programmcode. Die Pflege und Aufarbeitung darf natürlich nicht zum Selbstzweck werden, aber langlebige Software muss zwingend für immer die Kriterien Wartbarkeit und Erweiterbarkeit bewahren und gut dokumentiert und verständlich sein. Den größten Einfluss auf das Thema Refactoring hat das Refactoring-Buch von Martin Fowler, der auf seiner Webseite das Prinzip Refactoring, Refactoring-Tools und News auflistet.
Martin Fowler hat mir erlaubt, seinen Refactoring-Katalog auf Deutsch zu übersetzen: http://www.tutego.com/java/refactoring/catalog/. Gehe kurz über alle Refactorings.
Moderne IDEs erlauben von Haus aus das Refactoring von Code. Im Fall von Eclipse finde zu jedem unterstützten Refactoring ein Beispiel und lasse es von Eclipse umbauen: