Menu
Coddy logo textTech

Zusammenfassung – Formenrechner

Teil des Abschnitts Objektorientierte Programmierung der Java-Journey von Coddy — Lektion 33 von 87.

challenge icon

Aufgabe

Einfach

Lassen Sie uns einen Formenkalkulator erstellen, der alle Polymorphismus-Konzepte zusammenführt, die Sie in diesem Kapitel gelernt haben. Sie werden eine abstrakte Klasse Shape mit konkreten Unterklassen erstellen und dann Polymorphismus verwenden, um Flächen einheitlich zu berechnen und anzuzeigen.

Sie werden Ihren Code über vier Dateien organisieren:

  • Shape.java: Erstellen Sie eine abstrakte Klasse, die als Grundlage für alle Formen dient. Jede Form hat ein Feld name (String). Fügen Sie einen Konstruktor zur Initialisierung, eine Getter-Methode getName() und eine abstrakte Methode getArea() hinzu, die einen double-Wert zurückgibt. Fügen Sie außerdem eine Methode describe() hinzu, die Folgendes zurückgibt: [name]: [area] (wobei die Fläche mit String.format("%.2f", getArea()) auf 2 Dezimalstellen formatiert ist).
  • Circle.java: Erstellen Sie eine konkrete Klasse, die Shape erweitert. Kreise haben ein Feld radius (double). Verwenden Sie super, um "Circle" als Namen zu übergeben. Implementieren Sie getArea(), um die Fläche mit Math.PI * radius * radius zurückzugeben.
  • Rectangle.java: Erstellen Sie eine weitere konkrete Klasse, die Shape erweitert. Rechtecke haben die Felder width und height (beide double). Übergeben Sie "Rectangle" als Namen an den Eltern-Konstruktor. Implementieren Sie getArea(), um die Breite multipliziert mit der Höhe zurückzugeben.
  • Main.java: Erstellen Sie einen Formenkalkulator, der Polymorphismus in Aktion demonstriert. Sie erhalten drei Eingaben: einen Radius für den Kreis, eine Breite und eine Höhe für das Rechteck.

    Erstellen Sie einen Circle und ein Rectangle und speichern Sie diese in einem Array von Shape-Referenzen. Durchlaufen Sie das Array in einer Schleife und geben Sie für jede Form deren Beschreibung mit der Methode describe() aus.

    Berechnen und geben Sie nach der Schleife die Gesamtfläche aller Formen im Format Total area: [sum] aus (ebenfalls auf 2 Dezimalstellen formatiert). Verwenden Sie eine separate Schleife oder einen Akkumulator, um die Flächen zu summieren, indem Sie getArea() für jede Formenreferenz aufrufen.

Sie erhalten drei Eingaben: den Radius des Kreises (double), die Breite des Rechtecks (double) und die Höhe des Rechtecks (double).

Ihre Ausgabe sollte drei Zeilen enthalten - eine Beschreibung für jede Form, gefolgt von der Gesamtfläche. Beachten Sie, wie Sie verschiedene Formen einheitlich über den abstrakten Typ Shape behandeln können, während jede Form ihre Fläche auf ihre eigene Weise berechnet!

Probier es selbst

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // Eingaben lesen
        double radius = scanner.nextDouble();
        double width = scanner.nextDouble();
        double height = scanner.nextDouble();
        
        // TODO: Erstelle ein Circle-Objekt unter Verwendung von radius
        
        // TODO: Erstelle ein Rectangle-Objekt unter Verwendung von width und height
        
        // TODO: Erstelle ein Array von Shape-Referenzen und speichere beide Formen darin
        
        // TODO: Durchlaufe das Array und gib die Beschreibung jeder Form mit describe() aus
        
        // TODO: Berechne die Gesamtfläche aller Formen
        // Verwende eine Schleife oder einen Akkumulator, um die Flächen durch Aufrufen von getArea() für jede Form zu summieren
        
        // TODO: Gib die Gesamtfläche im Format "Total area: [sum]" aus
        // Verwende String.format("%.2f", totalArea) für die Formatierung
    }
}

Alle Lektionen in Objektorientierte Programmierung