Menu
Coddy logo textTech

Riepilogo - Calcolatore di forme

Fa parte della sezione Programmazione orientata agli oggetti del percorso Java di Coddy. Lezione 33 di 87.

challenge icon

Sfida

Facile

Costruiamo un calcolatore di forme che riunisce tutti i concetti di polimorfismo che hai imparato in questo capitolo. Creerai una classe astratta Shape con sottoclassi concrete, poi userai il polimorfismo per calcolare e visualizzare le aree in modo uniforme.

Organizzerai il codice in quattro file:

  • Shape.java: Crea una classe astratta che funge da base per tutte le forme. Ogni forma ha un campo name (String). Includi un costruttore per inizializzarlo, un metodo getter getName() e un metodo astratto getArea() che restituisce un double. Aggiungi anche un metodo describe() che restituisce: [name]: [area] (dove area è formattata con 2 cifre decimali usando String.format("%.2f", getArea())).
  • Circle.java: Crea una classe concreta che estende Shape. I cerchi hanno un campo radius (double). Usa super per passare "Circle" come nome. Implementa getArea() in modo che restituisca l'area usando Math.PI * radius * radius.
  • Rectangle.java: Crea un'altra classe concreta che estende Shape. I rettangoli hanno i campi width e height (entrambi double). Passa "Rectangle" come nome al costruttore della classe padre. Implementa getArea() in modo che restituisca width moltiplicato per height.
  • Main.java: Crea un calcolatore di forme che mostri il polimorfismo in azione. Riceverai tre input: un raggio per il cerchio, una larghezza e un'altezza per il rettangolo.

    Crea un Circle e un Rectangle, poi memorizzali in un array di riferimenti Shape. Scorri l'array e, per ogni forma, stampa la sua descrizione usando il metodo describe().

    Dopo il ciclo, calcola e stampa l'area totale di tutte le forme nel formato: Total area: [sum] (anch'essa formattata con 2 cifre decimali). Usa un ciclo separato o un accumulatore per sommare le aree chiamando getArea() su ogni riferimento alla forma.

Riceverai tre input: il raggio del cerchio (double), la larghezza del rettangolo (double) e l'altezza del rettangolo (double).

L'output deve mostrare tre righe: una descrizione per ogni forma, seguita dall'area totale. Nota come puoi trattare uniformemente forme diverse attraverso il tipo astratto Shape, mentre ogni forma calcola la propria area a modo suo!

Provalo tu

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // Leggi i valori di input
        double radius = scanner.nextDouble();
        double width = scanner.nextDouble();
        double height = scanner.nextDouble();
        
        // TODO: Crea un oggetto Circle usando radius
        
        // TODO: Crea un oggetto Rectangle usando width e height
        
        // TODO: Crea un array di riferimenti a Shape e memorizzaci entrambe le forme
        
        // TODO: Scorri l'array e stampa la descrizione di ogni forma usando describe()
        
        // TODO: Calcola l'area totale di tutte le forme
        // Usa un ciclo o un accumulatore per sommare le aree chiamando getArea() su ogni forma
        
        // TODO: Stampa l'area totale nel formato: "Total area: [sum]"
        // Usa String.format("%.2f", totalArea) per la formattazione
    }
}

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Compilatore Java online