Si crei una classe java denominata Circle contenente il raggio di un

Si crei una classe java denominata Circle contenente il raggio di un cerchio come dato di istanza ed
inoltre i seguenti metodi:
• un costruttore senza parametri che assegna al raggio il valore zero
• un costruttore con un parametro per istanziare un oggetto con raggio pari al valore contenuto nel
parametro
• un metodo per inserire il valore del raggio
• un metodo per prelevare il valore del raggio
• un metodo che renda l’area del cerchio
• un metodo che renda il perimetro della circonferenza
Si costruisca poi un applet java (classe JApplet, package javax.swing) che calcoli l’area di una
corona circolare. Il programma dovrà:
• richiedere all’utente di inserire il raggio interno ed esterno della corona circolare
• istanziare in corrispondenza ai due raggi due oggetti della classe Circle
• calcolare le due aree corrispondenti
• calcolare l’area della corona circolare per differenza
(si può utilizzare la medesima classe Circle impiegata nell’esercizio AreaCorona).
L’applet dovrà inoltre disegnare una corona circolare. La corona circolare disegnata dovrà rispettare
nelle proporzioni i valori inseriti dall’utente, mantenendo il rapporto tra i raggi.
Suggerimenti
1) Per richiedere i raggi all’utente si impieghi il metodo statico showInputDialog della classe
JOptionPane.
2) Per convertire un valore stringa in float si impieghi il metodo statico parseFloat della classe
Float (analogamente, per convertire un valore stringa in double si può impiegare il metodo
statico parseDouble della classe Double).
3) Di norma non si disegna direttamente su un’applet della classe JApplet, ma si pone “sopra”
l’applet un oggetto della classe JPanel e si disegna su quest’ultimo, attraverso il metodo
paintComponent. Si definirà quindi una classe JPanelDisegna che eredita da JPanel e si creerà
all’interno dell’applet un oggetto di tale classe, qui denominato jPanelDisegna, che verrà posto
sopra l’applet come di seguito indicato:
Container c = getContentPane();
c.add(jPanelDisegna);
4) La classe JPanelDisegna conterrà il metodo paintComponent, con la seguente struttura:
protected void paintComponent(Graphics g)
{
super.paintComponent(g); //si chiama il corrispondente metodo della superclasse
………………………………//altre istruzion (di disegno)
}
Si tratta di un metodo specializzato per il disegno. Subito dopo la chiamata al corrispondente
metodo della superclasse, vanno inserite le istruzioni di disegno. Tale metodo viene eseguito
automaticamente da Java ogni volta che sia necessario effettuare un refresh del disegno stesso.
Il parametro g è un riferimento all’ambiente grafico. Si potrà quindi disegnare un cerchio con il
metodo g.fillOval, scrivere una stringa con g.drawString o cambiare il colore del disegno, ad
esempio in blu, con g.setColor(Color.blue). Qualora vi sia necessità di forzare il disegno da
parte di java, si usi il metodo repaint().
5) Si ponga attenzione al fatto che, poiché il disegno viene effettuato nell’oggetto jPanelDisegna,
quest’ultimo dovrà essere a conoscenza dei valori dei raggi interno ed esterno della corona
circolare che vengono assegnati dall’utente (o perlomeno del loro rapporto).