14 Lebenszyklus von Objekten

Speicherverwaltung in JVM-Sprachen Bevor wir uns genauer mit dem Lebenszyklus von Objekten auseinander setzen, wollen wir erst verstehen, wie denn zur Laufzeit des Programms (innerhalb der JVM) Objekte (oder Werte) gespeichert werden. Grundsätzlich werden alle Objekte (in Kotlin ist alles ein Objekt) zur Laufzeit im Hauptspeicher des Computers abgelegt. Ein Enten-Objekt, welches wir auf diese…

Tastatur- und Mauseingaben

Tastatureingaben Das Singleton Keyboard bildet alle momentan gedrückten Tasten ab. Man kann sie sehr einfach abfragen. Etwa in der animate()-Funktion der CanvasElements oder der Bodies: override suspend fun animate() { super.animate() if (Keyboard.isKeyDown(Key.DOWN)) { radius– } if (Keyboard.isKeyDown(Key.UP)) { radius++ } } Zusätzlich kann das Interface KeyEventReacteable eingebunden werden. Dies funktioniert ähnlich den Mouse-Events (siehe…

13 Übung: Planetensystem

Allgemeines Wir wollen Planetensystem animieren, in welchem Planeten um die Sonne kreisen. Hier werden wir abstrakte Klassen kennen lernen und eine etwas kompliziertere Berechnung für die Animation. Vorbereitungen Erstellen Sie die Klassen Stern, Planet, Gasplanet, Gesteinsplanet und Umlaufbahn nach dem folgenden Klassendiagramm. Informieren Sie sich ggf. über die Unterschiede zwischen Gesteins- und Gasplaneten. Das <<abstract>>…

CanvasElemente anzeigen lassen

Um CanvasElemente anzeigen zu lassen, muss man erstmal eines erstellen. Da es sich bei CanvasElementum eine abstrakte Klasse handelt, kann man hiervon keine eigene Instanz (kein Objekt) erzeugen. Hierfür stehen die vorgefertigen Klassen wie Kreis oder Rechteck zur Verfügung. (Hinweis: Klassen für CanvasElemente besitzen Deutsche Namen und Properties, Klassen für Objekte, die der Physik-Simulation gehorchen…

CanvasElemente animieren

Um CanvasElemente zu animieren kann man zwei Varianten wählen. Subklasse erzeugen (Beispiel) Man erzeugt eine Subklasse vom CanvasElement, welches man animieren möchte. Zum Beispiel AnimierterKreis, welche von Kreiserben soll. In dieser Subklasse kann die animate()Funktion überschrieben werden. class AnimierterKreis : Kreis(){ override suspend fun onEveryFrame() { super.animate() x++ y++ } } Animationsroutine hinzufügen (Beispiel) Will…

10 Übung: CanvasElemente animieren

Nachdem Sie in der Lage sind, Subklassen der Klasse CanvasElement zu erzeugen und diese anzeigen können, sollen diese Elemente nun animiert werden. Hierzu sehen wir uns die dafür notwendigen Funktionsaufrufe an. Hinweis: Im folgenden Klassendiagramm sind einige Properties und Methoden nicht aufgeführt, falls diese für diese Aufgabe unnötig sind. Die abstrakte Klasse CanvasElement hat eine…

06 Funktionen, Semantik vs. Syntax

Allgemeines zu Funktionen Funktionen helfen ein Programm in Unterprogramme zu strukturieren. In der Objektorientierten Programmierung dienen Funktionen (bzw. Methoden, hierzu gleich mehr) dazu, das Verhalten von Objekten abzubilden. Methode vs. Funktion Diese Begriffe sind sehr eng verwandt. In der Programmiersprache Java verwendet man sog. Methoden. Diese sind immer an ein Objekt gebunden und modellieren dessen…