5 Objektorientiertes Design
5 Objektorientiertes Design
5 Objektorientiertes Design
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
86 3 <strong>Objektorientiertes</strong> <strong>Design</strong><br />
public String getName()<br />
{<br />
return this.name;<br />
}<br />
}<br />
// weitere Getter und Setter ...<br />
Das von der Klasse angebotene API erfordert zur Herstellung eines gültigen Objektzustands<br />
nach der Objektkonstruktion, dass alle Attribute durch Aufruf von set()-<br />
Methoden sukzessive initialisiert werden. Betrachten wir dies anhand des Einlesens aus<br />
einer Datei in der folgenden Methode createSimpleImageFromFile():<br />
public static SimpleImage createSimpleImageFromFile() throws IOException<br />
{<br />
final SimpleImage simpleImage = new SimpleImage();<br />
// ACHTUNG: Nur zur Demonstration Beobachter zu früh registrieren<br />
registerObserver(simpleImage);<br />
final String imageName = readNameFromFile();<br />
simpleImage.setName(imageName);<br />
// Name setzen<br />
try<br />
{<br />
final int imageWidth = readWidthFromFile();<br />
simpleImage.setWidth(imageWidth); // Breite setzen<br />
final int imageHeight = readHeightFromFile();<br />
simpleImage.setHeight(imageHeight); // Höhe setzen<br />
}<br />
catch(final NumberFormatException e)<br />
{<br />
// ACHTUNG: Keine Fehlerbehandlung zur Demonstration<br />
}<br />
final String imageData = readImageDataFromFile();<br />
simpleImage.setImageData(imageDate); // Daten setzen<br />
}<br />
return simpleImage;<br />
Ähnliche Programmausschnitte trifft man in der Praxis immer wieder an. Was daran<br />
problematisch ist, wollen wir nun analysieren:<br />
1. Es werden ungültige Objektzustände sichtbar. Im Beispiel wird dies dadurch ausgelöst,<br />
dass ein Beobachter zu früh – vor Abschluss der Objektkonstruktion und<br />
der Initialisierung – angemeldet wird. Im Allgemeinen werden ungültige Objektzustände<br />
sichtbar, wenn man eine noch nicht vollständig initialisierte Referenz an<br />
andere Komponenten übergibt.<br />
2. Treten Fehler beim Einlesen aus der Datei oder beim Verarbeiten der eingelesenen<br />
Daten auf, so verbleibt das Objekt in einem teilinitialisierten Objektzustand, der<br />
höchstwahrscheinlich keinem gültigen Objektzustand entspricht.