Prova
This commit is contained in:
10
Figure/.classpath
Normal file
10
Figure/.classpath
Normal 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
28
Figure/.project
Normal 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
112
Figure/src/FiguraMain.java
Normal 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 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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user