24.11.2013 Aufrufe

5 Objektorientiertes Design

5 Objektorientiertes Design

5 Objektorientiertes Design

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

84 3 <strong>Objektorientiertes</strong> <strong>Design</strong><br />

Um sicherzustellen, dass wirklich nur Rasterpunkte erreicht werden können, wird durch<br />

Aufruf der Methode snapToGrid(int) eine Modulo-Korrektur vorgenommen.<br />

In der Klasse GridPosition werden jedoch zwei öffentliche set()-Methoden<br />

angeboten, in denen keine Korrektur der Eingabewerte stattfindet. Rufen andere Klassen<br />

diese set()-Methoden statt der Business-Methoden auf, so können beliebige Werte für<br />

die Attribute x und y gesetzt werden. Diese liegen höchstwahrscheinlich nicht auf dem<br />

gewünschten Raster und stellen somit auch keinen gültigen Objektzustand dar.<br />

Tipp: Probleme durch öffentliche set()-Methoden<br />

Häufig findet man in der Praxis eine Vielzahl öffentlicher set()-Methoden, über<br />

die der Objektzustand auf unkontrollierte Weise geändert wird. Dadurch kann ein<br />

gültiger Objektzustand nicht mehr gewährleistet werden.<br />

Daher sollten set()-Methoden in ihrer Sichtbarkeit eingeschränkt oder – wie in diesem<br />

Beispiel leicht möglich – komplett entfernt werden. Zuvor kann die Funktionalität<br />

durch Business-Methoden bereitgestellt werden. Eine Anleitung dazu liefert das<br />

Refactoring ERSETZE MUTATOR- DURCH BUSINESS-METHODE in Abschnitt 13.2.4.<br />

In dieser Klasse wurden bereits Business-Methoden bereitgestellt, die set()-<br />

Methoden jedoch nicht entfernt.<br />

Weitere Komplexitäten durch Multithreading<br />

Methodenaufrufe werden im Bytecode nicht als Ganzes abgearbeitet, sondern in Form<br />

vieler kleiner Zwischenschritte. Dadurch kommt es immer zu Zwischenzuständen im<br />

Objektzustand. Abbildung 3-12 zeigt dies für den Aufruf addOffset(50, 30).<br />

Abbildung 3-12 Objektzustandsübergänge

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!