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]
© Copyright 2024 ExpyDoc