From 9099666b07920aef6954ecf6f18e7b0d282ae31e Mon Sep 17 00:00:00 2001 From: Vichingo455 Date: Fri, 10 Oct 2025 08:02:07 +0200 Subject: [PATCH] Prova --- Figure/.classpath | 10 ++++ Figure/.project | 28 ++++++++++ Figure/src/FiguraMain.java | 112 +++++++++++++++++++++++++++++++++++++ 3 files changed, 150 insertions(+) create mode 100644 Figure/.classpath create mode 100644 Figure/.project create mode 100644 Figure/src/FiguraMain.java diff --git a/Figure/.classpath b/Figure/.classpath new file mode 100644 index 0000000..57bca72 --- /dev/null +++ b/Figure/.classpath @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/Figure/.project b/Figure/.project new file mode 100644 index 0000000..abdbe9d --- /dev/null +++ b/Figure/.project @@ -0,0 +1,28 @@ + + + Figure + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + + + 1758261738047 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + + diff --git a/Figure/src/FiguraMain.java b/Figure/src/FiguraMain.java new file mode 100644 index 0000000..308c090 --- /dev/null +++ b/Figure/src/FiguraMain.java @@ -0,0 +1,112 @@ +/* +Progettare un sistema per gestire una griglia bidimensionale di figure geometriche. +Ogni cella della griglia può contenere una figura (come un cerchio o un quadrato), +oppure essere vuota. +- +Ogni figura deve implementare un’interfaccia Figura +che definisce un metodo per calcolare l’area double calcolaArea(); +e String descrizione(); che scrive il nome della figura + +Le figure devono estendere una classe astratta FiguraAstratta +che implementa l’interfaccia Figura e fornisce un metodo descrizione() da sovrascrivere. + +Nel main, dovrai: +-- +1) Creare un array bidimensionale di Figura (Figura[][] griglia = new Figura[3][3];) +2) Inserire alcune figure nella griglia. +3) Calcolare l’area totale delle figure nella griglia. +4) Gestire eventuali eccezioni con try-catch (es. inserimento in posizione fuori dall’array). +*/ + +interface Figura { +double calcolaArea(); +String descrizione(); +} + +abstract class FiguraAstratta implements Figura { +protected String nome; + +public FiguraAstratta(String nome) { +this.nome = nome; +} + +public abstract double calcolaArea(); + +public String descrizione() { +return "Figura: " + nome; +} +} + +class Cerchio extends FiguraAstratta { +private double raggio; + +public Cerchio(double raggio) { +super("Cerchio"); +this.raggio = raggio; +} + +@Override +public double calcolaArea() { +return Math.PI * raggio * raggio; +} + +@Override +public String descrizione() { +return super.descrizione() + " con raggio " + raggio; +} +} + +class Quadrato extends FiguraAstratta { +private double lato; + +public Quadrato(double lato) { +super("Quadrato"); +this.lato = lato; +} + +@Override +public double calcolaArea() { +return lato * lato; +} + +@Override +public String descrizione() { +return super.descrizione() + " con lato " + lato; +} +} + +public class FiguraMain { + + public static void main(String[] args) { + Figura[][] griglia = new Figura[3][3]; + +try { +griglia[0][0] = new Cerchio(2.0); +griglia[1][1] = new Quadrato(3.0); +griglia[2][2] = new Cerchio(1.5); + +// Prova inserimento fuori dai limiti per scatenare un'eccezione +griglia[3][3] = new Quadrato(4.0); // ArrayIndexOutOfBoundsException + +} catch (ArrayIndexOutOfBoundsException e) { +System.out.println("Errore: tentativo di accesso fuori dai limiti dell'array."); +} catch (Exception e) { +System.out.println("Errore generico: " + e.getMessage()); +} + +double areaTotale = 0.0; + +for (int i = 0; i < griglia.length; i++) { +for (int j = 0; j < griglia[i].length; j++) { +if (griglia[i][j] != null) { +System.out.println("Figura in posizione [" + i + "][" + j + "]: " ++ griglia[i][j].descrizione() + " - Area: " + griglia[i][j].calcolaArea()); +areaTotale += griglia[i][j].calcolaArea(); +} +} +} + +System.out.println("Area totale delle figure nella griglia: " + areaTotale); +} + + } \ No newline at end of file