1. Klassen, Objekte, Pakete
In den Aufgaben der vorherigen Kapitel haben wir Klassen als Behälter für statische Methoden eingesetzt. Bewusst neue Objekte mit new
aufgebaut haben wir nicht. In diesem Kapitel folgen Aufgaben zum Erzeugen neuer Objekte, zu den Objektreferenzen und zu der besonderen null
-Referenz.
Voraussetzungen
Unterschied zwischen Objekttyp und Referenztyp kennen
new
einsetzen könnenAufgabe und grundlegende Arbeitsweise der automatischen Speicherbereinigung (Garbage Collector) kennen
Objekte an Methoden übergeben und zurückliefern können
Pakete aufbauen können
Typen importieren können
Gleichwertigkeit und Identität trennen können
Problem mit der
null
-Referenz verstehen
Verwendete Datentypen in diesem Kapitel:
Noch mehr Aufgaben findest du im Buch: ›Captain CiaoCiao erobert Java: Das Trainingsbuch für besseres Java. 300 Java-Workshops, Aufgaben und Übungen mit kommentierten Lösungen‹
1.1. Objekte erzeugen
Für die folgenden Beispiele greifen wir auf die Klassen Point
und Polygon
aus dem Paket java.awt
zurück. Das Paket java.awt
enthält unterschiedliche Klassen, viele für grafische Oberflächen. Der Punkt und das Polygon sind allerdings nicht grafisch, und wir werden auch keine grafischen Oberflächen programmieren. Die Java-Typen für Punkte und Polygone sind aber schöne einfache Datentypen, die öffentlich zugängliche Objektvariablen haben sowie gut verständliche Objektmethoden, sodass sie für unsere ersten Übungen ganz gut geeignet sind. Wir werden im Aufgabenbuch keine weiteren Datentypen aus dem java.awt
-Paket nutzen.
1.1.1. Polygone zeichnen ⭐
Ein Polygon ist ein geschlossener Linienzug. Die Java-Bibliothek hält für Polygone eine Klasse java.awt.Polygon
bereit, die wir mit Punkten »füttern« können.
Captain CiaoCiao fährt mit dem Schiff in die Nähe des Bermudadreiecks und sucht den Wassergeist Undine. Doch das Bermudadreieck ist gefährlich und voller Killerkraken. Die Seefahrer müssen den Bereich auf jeden Fall meiden. Gut wäre jetzt eine Karte …
Aufgabe:
Lege eine neue Klasse
BermudaTriangle
mit einermain(…)
-Methode an.Deklariere in der Methode drei Konstanten:
final int DIMENSION = 50; final String RAINBOW = "\uD83C\uDF08"; final String FOG = "\uD83C\uDF2B"; final String OCTOPUS = "\uD83D\uDC19";
Erzeuge ein
java.awt.Polygon
-Objekt.Ein Polygon besteht aus Punkten, die mit einer Methode hinzugefügt werden. Wie heißt diese Methode?
Erzeuge ein Dreieck für das geheimnisvolle Bermudadreieck. Bleibe bei den Koordinaten im Wertebereich von 0 bis 50.
Wenn die Position des Schiffs ein Punkt ist, wie kann herausgefunden werden, ob ein gewählter Punkt innerhalb des Dreiecks liegt?
Schachtele zwei Schleifen für 0 <= x < 50 und 0 <= y < 50, und erzeuge damit ein rechteckiges Raster. Im Rumpf teste:
Wenn die x-y-Koordinate den Rand des virtuellen Bildschirms trifft, schreibe ein Regenbogenzeichen (
RAINBOW
).Wenn die x-y-Koordinate einen Punkt im Polygon liegt, gib eine Krake (
OCTOPUS
) aus, sonst ein Nebelzeichen (FOG
).
Ab Java 9 gibt es das Modulsystem. Standardmäßig sind nur die Typen aus dem
|
1.2. Import und Pakete
Pakete ordnen Typen thematisch. Kein Typ sollte in einem Standardpaket liegen. Typen in Paketen können wir voll qualifizieren oder über die import
-Deklaration in der Compilationseinheit bekannt machen.
1.3. Arbeiten mit Referenzen
Nach dem Erzeugen eines Objekts mit new
bekommen wir eine Referenz auf die Instanz zurück. Diese Referenz lässt sich anderen Methoden übergeben, und Methoden können auch Referenzen zurückgeben.
1.3.1. Dreiecke aufbauen ⭐
Captain CiaoCiao ist sich sicher, dass die gefährlichen Stellen im Bermudadreieck zufällig sein können — er muss auf alles vorbereitet sein.
Aufgabe:
Lege in der vorhandenen Klasse
BermudaTriangle
eine neue statische Methode an:static Polygon resetWithRandomTriangle( Polygon polygon ) { // return gesetztes Dreieck }
Diese Methode soll das übergebene
java.awt.Polygon
, das noch Punkte enthalten könnte, erst leeren, dann mit einem zufälligen Dreieck belegen und am Ende zurückgeben.Schreibe eine weitere statische Methode, welche ein neues zufälliges Dreieck zurückgibt:
static Polygon createRandomTriangle() { // return beliebiges Dreieck }
Noch mehr Aufgaben findest du im Buch: ›Captain CiaoCiao erobert Java: Das Trainingsbuch für besseres Java. 300 Java-Workshops, Aufgaben und Übungen mit kommentierten Lösungen‹