This commit is contained in:
2025-10-10 08:02:07 +02:00
parent 37f913480f
commit 9099666b07
3 changed files with 150 additions and 0 deletions

112
Figure/src/FiguraMain.java Normal file
View File

@@ -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 uninterfaccia Figura
che definisce un metodo per calcolare larea double calcolaArea();
e String descrizione(); che scrive il nome della figura
Le figure devono estendere una classe astratta FiguraAstratta
che implementa linterfaccia 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 larea totale delle figure nella griglia.
4) Gestire eventuali eccezioni con try-catch (es. inserimento in posizione fuori dallarray).
*/
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);
}
}