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

10
Figure/.classpath Normal file
View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>

28
Figure/.project Normal file
View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>Figure</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
<filteredResources>
<filter>
<id>1758261738047</id>
<name></name>
<type>30</type>
<matcher>
<id>org.eclipse.core.resources.regexFilterMatcher</id>
<arguments>node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
</matcher>
</filter>
</filteredResources>
</projectDescription>

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);
}
}