Java Videotraining Werbung

Videotraining Spring 3 Boot Werbung

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önnen

  • Aufgabe 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:

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 …​

Draw polygons

Aufgabe:

  1. Lege eine neue Klasse BermudaTriangle mit einer main(…​)-Methode an.

  2. 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";
  3. Erzeuge ein java.awt.Polygon-Objekt.

  4. Ein Polygon besteht aus Punkten, die mit einer Methode hinzugefügt werden. Wie heißt diese Methode?

  5. Erzeuge ein Dreieck für das geheimnisvolle Bermudadreieck. Bleibe bei den Koordinaten im Wertebereich von 0 bis 50.

  6. Wenn die Position des Schiffs ein Punkt ist, wie kann herausgefunden werden, ob ein gewählter Punkt innerhalb des Dreiecks liegt?

  7. 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 java.base-Modul eingebunden, und dieses enthält keine GUI-Typen. AWT-Typen sind Teil von Desktop-Modul java.desktop. Wer Module nutzt (eine Datei module-info.java existiert im Hauptverzeichnis der Anwendung), muss das Modul java.desktop einbinden:

module com.tutego.bermuda {
  requires java.desktop;
}

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.

Build triangles

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
    }