Einstieg - Animation der Ampel
Ampel mit Lampen
Bisher wurden die Ampelzustände in kodierter Form als Attributwerte der Objekte ampel_auto
und ampel_fussgaenger
angezeigt.
Ansprechender wäre natürlich eine Darstellung mit Lampen, die der Realität näher käme.
Zu einer realistischeren Darstellung der Ampeln könnte man kommen, wenn man die Objekte ampel_auto
und ampel_fussgaenger
mit geeigneten Kostümen ausstatten würde. Zu jedem Ampelzustand könnte dann das passende Kostüm angezeigt werden.
Wir wählen hier einen anderen Weg. Die einzelnen Lampen der Ampeln sollen als eigenständige Objekte
konzipiert werden. So soll etwa ein
Objekt rot_auto
die rote Lampe der Auto-Ampel darstellen. Es benötigt zwei Kostüme - die
man schnell selbst zeichnen kann -, eines für den Fall,
dass die Lampe an ist und eines für den Fall, dass die Lampe aus ist.
Nachdem die Lampen-Objekte erzeugt sind, muss die Zusammenarbeit zwischen ihnen und dem Ampel-Objekt festgelegt werden. Wir zeigen im Folgenden zwei verschiedene Wege auf, wie die Zusammenarbeit realisiert werden kann.
Weg 1: Ampel benachrichtigt die Lampen
Die Operationen des Objekts ampel_auto
werden wie folgt abgeändert und ergänzt:
Die Objekte zur Darstellung der Lampen werden um geeigneten Operationen erweitert:
Weg 2: Die Lampen greifen auf die Ampel zu
Die Operationen des Objekts ampel_auto
werden wie folgt abgeändert:
Die Objekte zur Darstellung der Lampen werden um geeigneten Operationen erweitert:
Aufgabe 1
Im vorliegenden Fall erledigen mehrere Objekte gemeinsam eine Aufgabe. Wo zeigt sich das in den Operationen?
Aufgabe 2
Spielt die Vorgänge, die bei einem Zustandswechsel der Ampel zur neuen Lampenanzeige führen, selbst einmal nach: Eine Person übernimmt die Rolle des Ampel-Objekts, drei andere Personen übernehmen die Rollen der Lampenobjekte. Worin unterscheiden sich die Vorgänge bei den beiden gezeigten Wegen?
Aufgabe 3
Gib die oben gezeigten Programme in Scratch ein und probier die beiden gezeigten Versionen selbst einmal aus. Entwickle jeweils auch entsprechende Fußgängerampeln.