Esercitazione in classe su Cassi, oggetti e metodi.
Ci viene chiesto di realizzare un programma per calcolare l'area di una figura geometrica a scelta tra Triangolo, Quadrato oppure Rettangolo.
Il programma viene realizzato con due classi: la principale che si occupa di interagire con l'utente si chiama FigureDicembre l'altra che si dedica alla gestione dei valori, dei calcoli e della stampa dei risultati si chiama Aree.
Il programmatore crea un pacchetto FigureDicembre in cui inserisce le seguenti variabili:
double b=0, h=0; // necessarie per effettuare i calcoli
char lettera=' '; // per gestire la fiigura geometrica
Nello sviluppo si pensa di chiedere solo le informazioni necessarie all'utente, senza perdere tempo e spazio in memoria.
Pertanto nello sviluppo del programma si chiede di quale figura geometrica vuole calcolare l'area.
Perchè il quadrato non ha bisogno della misura dellatezza (è = alla base)
Si pensa poi che per calcolare l'area del triangolo sia sufficiente dividere per due base per altezza.
Nel programma c'è una riga che presenta una novità lettera = rigaletta.charAt(0);
Attraverso questo metodo è possibile passare una lettera alla variabile char, 0 indica che si passa la prima lettera.
Adesso passiamo a vedere la codifica.
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class FigureDicembre {
public static void main(String[ ] args) {
double b=0, h=0;
char lettera=' ';
//creo oggetto
Aree figura;
figura= new Aree();
InputStreamReader in = new InputStreamReader (System.in);
BufferedReader key = new BufferedReader(in);
System.out.println("Inserisci la misura della base in cm: " );
System.out.println("PROGRAMMA FIGURE GEOMETRICHE ");
System.out.println("Inserire: ");
System.out.println("t per l'area di un triangolo");
System.out.println("r per l'area di un rettangolo");
System.out.println("q per l'area di un quadrato");
try
{ String rigaletta=key.readLine();
lettera = rigaletta.charAt(0);
}
catch (Exception e)
{System.out.println("Dati non corretti " );
}
System.out.println("Inserisci la misura della base in cm: " );
try
{String valore=key.readLine();
b= Double.valueOf(valore).doubleValue();
}
catch (Exception e)
{System.out.println("Dati non corretti " );
}
figura.setBase(b);
if(lettera=='q')
{System.out.println("Bravo hai scelto il quadrato");
figura.setAlte(b);
}
else
{ System.out.println("Inserisci la misura dell'altezza in cm: " );
try
{String valore=key.readLine();
h = Double.valueOf(valore).doubleValue();
}
catch (Exception e)
{System.out.println("Dati non corretti " );
}
figura.setAlte(h);
}
if(lettera=='t')
{System.out.println("Bravo hai scelto il triangolo");
figura.setTri(2);
}
else figura.setTri(1);
System.out.println("\nQuesti sono i calcoli eseguiti Area = ");
System.out.println(figura.stampa());
}
}
e poi abbiamo la classe Aree, con le sue varibili private e con i suoi metodi .....
public class Aree {
private int tria;
private double base,altezza;
public void setBase(double b)
{ base=b;
}
public void setAlte(double h)
{ altezza=h;
}
public void setTri(int t)
{ tria=t;
System.out.println("Mi trovo nella classe Aree e sto inserendo "+t+" nel divisore dell'area");
// System.out.println("Area = " +(base*altezza/tria));
}
public double stampa () {
return (base * altezza)/(double) tria;
}
// public void stampa() { System.out.println("Area = " +(base*altezza/tria)); }
}