Classes: OO Seaworld - JirkaDellOro/EIA2 GitHub Wiki
Aufgabe
Beleben Sie Ihre Seaworld durch Animation und refaktorieren Sie sie zu einem objektorientierten Programm!
Entwickeln Sie Klassen für die Fische, die Luftblasen und alle anderen bewegten Objekte. Achten Sie darauf, dass eine Instanz (also ein Objekt) der Klasse auch wirklich nur ein Objekt auf dem Bildschirm beschreibt, und nicht ganze Gruppen.
Implementieren Sie die Methoden zum Zeichnen und Bewegen als Objektmethoden in den Klassen. Sie können teilweise leicht Ihre bereits erstellten Methoden in die Klassen verschieben und modifizieren. Achten Sie unbedingt darauf, dass die Parameterlisten jetzt zum größten Teil überflüssig werden, da die Objektmethoden direkt auf die Objekteigenschaften zugreifen können! Es sollen nur Parameter übergeben werden, wenn die entsprechende Information nicht sinnvoll dem Objekt selbst zugeordnet werden kann.
Sorgen Sie dafür, dass Objekte, die den sichtbaren Bereich verlassen, wieder sinnvoll in den Canvas zurückkehren und sich weiter bewegen.
Animieren Sie mindestens 2 verschiedene Fische und Luftblasen. Haben Sie mindestens 10 Fische jederzeit auf dem Canvas sichtbar.
Stillstehende Objekte im Hintergrund sollen nur gezeichnet und deren Abbild mit der Hintergrundgrafik gespeichert werden. Studieren Sie hierzu die Befehle getImageData
und putImageData
. Hiermit können Sie bei jedem Animationsframe den Hintergrund restaurieren ohne das jedesmal aufwendige Zeichenbefehle abgearbeitet werden müssen.
Konzeption
Erstellen Sie für jede Klasse ein kleines Klassendiagramm, in dem Sie den Namen der Klasse, alle erforderlichen Attribute mit Datentypen und die Methoden mit Typ des Rückgabewertes und ggf. der Parameterliste eintragen (Tafelbild aus dem letzten Jahr). Malen Sie außerdem Aktivitätsdiagramme zum Hauptprogramm (inklusive der update Methode) sowie zu den move Funktionen der einzelnen Klassen.
Produktion
Implementieren Sie die Klassen in eigenen Dateien und entfernen Sie den nun überflüssigen Code aus dem Hauptprogramm. Hauptprogramm und Klassen sollen zum gleichen Namespace gehören.
Abgabe
In dieser Woche ist bis Sonntag das Konzept abzugeben, nächste Woche Sonntag dann die implementierte Lösung. Denken Sie jedoch daran, dass nächste Woche keine Veranstaltungen stattfinden, nutzen Sie also den ersten Donnerstag.