Kapitel 5 Zustand eines Objekts

Kapitel 5 Zustand eines Objekts
Seite 1 / 6
Kapitel 5 Zustand eines Objekts
Lernziel:
Bedingte Anweisung in Java
Objektzustand
5.1 Unverwundbar soll sichtbar sein
Die Methode VerwundbarSetzen sorgt dafür, dass der Attributwert von verwundbar
entsprechend der Eingabe gesetzt wird. Aber bei der graphischen Darstellung von
mampfi ist nicht sichtbar, ob er verwundbar oder unverwundbar ist. Dies soll sich
ändern. Wenn mampfi unverwundbar wird, soll die Farbe seines Symbols wechseln,
z. B. auf rot.
Aufgabe 5.1
Versuche in Worten zu formulieren, wie sich die Anweisungsfolge im Methodenrumpf
von VerwundbarSetzen ändern muss!
Abhängig vom Eingabewert der Methode VerwundbarSetzen muss der Wert der
Farbe der symbol entweder auf gelb oder auf rot gesetzt werden. In Worten
formuliert
wenn der Eingabewert verwundbarNeu true ist
dann
setze den Wert des Attributs der Farbe der symbol auf „gelb“
sonst
setze den Wert des Attributs der Farbe der symbol auf „rot“
Die Struktur dieser Anweisung ist dir von Robot Karol bekannt, es handelt sich um
eine bedingte Anweisung. Ist die Bedingung erfüllt, so werden die Anweisungen im
„dann-Teil“ ausgeführt. Ist die Bedingung nicht erfüllt, so werden die Anweisungen im
„sonst-Teil“ ausgeführt. Im Folgenden ist einerseits die Syntax1 der bedingten
Anweisung in der Sprache von Robot Karol und andererseits das zugehörige
Struktogramm abgebildet.2
wenn <Bedingung>
<Sequenz1>
sonst
<Sequenz2>
*wenn
true
Abbildung 1: Bedingte Anweisung in der Sprache
von Robot Karol
Abbildung 2: Struktogramm einer bedingten
Anweisung
Bedingung
Sequenz1
false
Sequenz2
1 griechisch: Satzbau; Muster und Regeln nach denen Wörtern zu „Sätzen“ zusammengestellt
werden
2 Solltest du dich nicht so genau daran erinnern, ist es hilfreich nochmals ein Karol-Programm mit
einer bedingten Anweisung anzusehen. In der Menüzeile kann man mit Struktogramm--> Ansehen
sich zu jedem korrekten Programm das zugehörige Struktogramm anzeigen lassen.
© [email protected]
Kapitel 5 Zustand eines Objekts
Seite 2 / 6
In Java sieht die Umsetzung wie folgt aus:
if (verwundbar == true)
{
symbol.FarbeSetzen("gelb");
}
else
{
symbol.FarbeSetzen("rot");
}
if (Bedingung)
{
//dann-Teil
}
else
{
//sonst-Teil
}
Abbildung 3: bedingte Anweisung in Java allgemein und am Beispiel innerhalb der Methode
VerwundbarSetzen
Hinweise:
- In der bedingten Anweisung kann der sonst-Teil auch weggelassen werden.
Bedingte
Anweisungen können
auch geschachtelt
werden.
Bedeutung
Vergleichsoperator
- Eine Bedingung ist in
Java ein beliebiger
Ausdruck, der bei
nur
ungleichseiner Auswertung
!=
den Wert true oder
gleich false ergeben
== kann. Zur
Formulierung werden
kleiner häufig die <
Vergleichsoperatoren
größer verwendet, die
> in
Abbildung 4
aufgelistet
sind.
kleiner gleich
<=
- Vorsicht
Verwechslungsgefahr:
größer gleich
>=
Ein einzelnes
Gleichzeichen "=" steht
AbbildungWertzuweisung
4:
für eine
(Kapitel
Vergleichsoperatoren in Java
3). Der
Vergleichsoperator
besteht aus zwei Gleichzeichen "=="!
Abbildung 5 zeigt als Zusammenfassung das Struktogramm zur Methode
VerwundbarSetzen.
Rumpf der Methode VerwundbarSetzen
verwundbar = verwundbarNeu
verwundbar == true
true
symbol.FarbeSetzen("gelb")
false
symbol.FarbeSetzen("rot")
Abbildung 5: Struktogramm zur Planung der Methode VerwundbarSetzen
Aufgabe 5.2
Ergänze im Methodenrumpf der Methode verwundbarSetzen die bedingte Anweisung
aus Abbildung 3 und teste die Methode!
© [email protected]
Kapitel 5 Zustand eines Objekts
Seite 3 / 6
5.2 Immer wieder Objektkommunikation
Ohne Objektkommunikation funktioniert die Zusammenarbeit von Objekten nicht. Um
die Kommunikation beim Aufruf der Methode verwundbarSetzen zu veranschaulichen, sind in Abbildung 6 Sequenzdiagramme zu sehen.
a)
symbol: KREISFORM:
b)
symbol: KREISFORM:
c)
symbol: KREISFORM:
Abbildung 6: Drei Varianten eines Sequenzdiagramm für den Aufruf der Methode VerwundbarSetzen
Hinweis:
Beachte, dass die Sequenzdiagramme in Abbildung 5 den Methodenrumpf der
Methode VerwundbarSetzen nicht vollständig wiedergeben. Es fehlt die Zuweisung
verwundbar = verwundbarNeu
Dies hat aber seine Richtigkeit, denn ein Sequenzdiagrammdient zur Veranschaulichung der Objektkommunikation. Die Zuweisung ist eine Attributwertänderung
„innerhalb“ eines Objekts. Es tritt keine Kommunikation dabei auf („Das Objekt führt
hier keine Selbstgespräche“).
© [email protected]
Kapitel 5 Zustand eines Objekts
Seite 4 / 6
Aufgabe 5.3
Spiele die Objektkommunikation beim Aufruf der Methode VerwundbarSetzen als
Rollenspiel nach. Zur Kennzeichnung des Werts des Attributs farbe des Objekts
symbol wären verschiedenfarbige Mützen des Schauspielers des Objekts symbol
eine elegante Version.
Aufgabe 5.4
Erkläre Unterschiede bzw. Gemeinsamkeiten der Sequenzdiagramme in der
Abbildung 6. Verwende dabei Fachausdrücke!
Aufgabe 5.5
Ergänze auch in den Methoden VerwundbarMachen und UnverwundbarMachen aus
Aufgabe 4.10 einen Methodenaufruf an das Objekt symbol, damit die Farbe des
Symbols zum Wert des Attributs verwundbar passt.
5.3 Objektzustand
Je nach Blickrichtung und Verwundbarkeit befindet sich mampfi in einem anderen
Zustand. In Abbildung 6 sind drei verschiedene Zustände abgebildet.
mampfi: MAMPFI
mampfi: MAMPFI
mampfi: MAMPFI
positionX = 0
positionY = 0
verwundbar = true
blickrichtung ='N'
positionX = 0
positionY = 0
verwundbar = false
blickrichtung ='N'
positionX = 0
positionY = 0
verwundbar = false
blickrichtung ='O'
Zustand Z1
Zustand Z2
Zustand Z3
Abbildung 7: Unterschiedliche Zustände des Objekts mampfi, sichtbar an den unterschiedlichen
Attributwerten in den Objektkarten (Die Attribute positionX und positionY werden in die Überlegungen
zunächst nicht mit einbezogen)
Zur Veranschaulichung ist zu jedem Objektzustand das passende Objekt der Klasse KREISFORM
abgebildet.
Aufgabe 5.6
Wie viele verschiedene sinnvolle Objektzustände von mampfi gibt es, wenn man nur
die Attribute verwundbar und blickrichtung betrachtet?
© [email protected]
Kapitel 5 Zustand eines Objekts
Seite 5 / 6
Für das Attribut blickrichtung sind vier verschiedene sinnvolle Werte möglich ('O', 'S',
'W', 'N'), für das Attribut verwundbar zwei (true, false). So kann mampfi 4 * 2 = 8
verschiedene Zustände annehmen, wenn man nur diese beiden Attribute betrachtet.
Betrachtet man noch zusätzlich die Attribute positionX und PositionY, so gibt es noch
deutlich mehr verschiedene Zustände.
Aufgabe 5.7
Überlege, wie man die Anzahl der verschiedenen möglichen Zustände eines Objekts
der Klasse KREISFORM ermitteln kann. Wovon hängt diese Anzahl ab? Welche
dieser Zustände sind nicht sinnvoll? Fasse deine Überlegungen in einigen Sätzen im
Heft zusammen.
Hinweis: Es wird hier als Antwort keine konkrete Zahl erwartet, denn die Berechnung
ist ein wenig schwierig. Überlegungen wie man prinzipiell die Berechnung
durchführen muss sind ausreichend.
Ändert sich mindestens ein Attributwert, so ändert sich auch der Zustand eines
Objekts. Man spricht hier auch von einem Zustandsübergang. Stimmen in zwei
Situationen alle Attributwerte überein, dann befindet sich das Objekt im selben
Zustand.
Änderungen von Attributwerten, d.h. Zustandsänderungen eines Objekts sind
möglich durch
a) Zuweisungen
b) geeignete Methodenaufrufe, wenn dort Wertzuweisungen enthalten sind.
Beispiel: Wird die Methode NachSuedenBlicken des Objekts Mampfi aufgerufen, und
blickte er vorher nicht nach Süden, so ändert sich sein Zustand (weil der Wert des
Attributs blickrichtung auf 'S' gesetzt wird) und gleichzeitig auch der Zustand des
Symbols von Mampfi (weil über den Methodenaufruf symbol.StartWinkelSetzen(300)
innerhalb der Methode NachSuedenBlicken beim Symbol-Objekt der Wert des
Attributs Startwinkel geändert wird.)
In der Informatik wird der Begriff Zustand wie folgt definiert:
Der Zustand eines Objekts wird durch die Gesamtheit der Werte aller seiner
Attribute festgelegt. Ein Objekt ändert seinen Zustand, wenn sich der Wert
mindestens einer seiner Attribute ändert.
Aufgabe 5.8
Schreibe die Methodenaufrufe auf, die in Abbildung 7 für einen Zustandsübergang
von Z1 nach Z2 bzw. Z2 nach Z3 sorgen. Welche Zuweisungen sind für die
Zustandsübergänge entscheidend?
Aufgabe 5.9
a) Mampfi ist im Zustand Z3 in Abbildung 7. In welchen Zustand ist er, wenn der
Methodenaufruf mampfi.VerwundbarSetzen(„false“) ausgeführt wurde?
b) Mampfi ist im Zustand Z3 in Abbildung 7. Es werden finden nun folgende
Methodenaufrufe statt:
mampfi.NachSuedenBlicken()
mampfi.VerwundbarSetzen(„true“)
mampfi.NachWestenBlicken()
Zeichne ein Objektdiagramm von dem zustand, in dem sich mampfi nun befindet.
© [email protected]
Kapitel 5 Zustand eines Objekts
Seite 6 / 6
5.4 Zusammenfassung
Aufgabe 5.10
Fasse die wesentlichen Inhalte dieses Kapitels in deinem Heft zusammen. Folgende
wichtigen Begriffe sollten dabei enthalten sein:
bedingte Anweisung, Bedingung, Zustand, Zustandsübergang
Aufgabe 5.11
Mit der bedingten Anweisung ist eine im Vergleich zu Kapitel 4 unterschiedliche
Bewegung von mampfi möglich. Formuliere zusätzlich zu den Methoden
NachOstenBlicken, NachSuedenBlicken, NachWestenBlicken und
NachNordenBlicken neue Methoden RechtsDrehen und LinksDrehen, die eine
Änderung der Blickrichtung abhängig von der aktuellen Blickrichtung umsetzen.
© [email protected]