esercizio 3
Questo esercizio disegna oggetti che estendono la classe astratta Forma nella finestra grafica dell'applet. Le classe Cerchio, Ellisse, Quadrato e Rettangolo rappresentano gli oggetti da disegnare con i dati sulla posizione e il raggio o i lati. La disegnabilità é garantita dall'implementazione del metodo paint della classe astratta Forma.
package corsoDrZito.lez2.es3;
import java.applet.Applet;
import java.awt.*;
public class esercizio3 extends Applet
{
public void init()
{
forma = new Forma[4];
Dimension d = getSize();
forma[0] = new Cerchio ( 30, 20, 35); // centro e raggio
forma[1] = new Quadrato (110, 60, 45); // centro e lato
forma[2] = new Rettangolo(180, 120, 150, 80); // centro lati
forma[3] = new Ellisse (220, 220, 150, 60); // centro raggi
setBackground(new Color(48,64,96));
}
public void paint(Graphics g)
{
for(int i=0;i<forma.length;i++)
forma[i].paint(g);
}
private Forma[] forma;
}
package corsoDrZito.lez2.es3;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Dimension;
public abstract class Forma
{
public Forma(int x, int y, int r1, int r2)
{
xx = x - r1 / 2;
yy = y - r2 / 2;
this.r1 = r1;
this.r2 = r2;
c = new Color( (int)(191+64*Math.random()), (int)(191+64*Math.random()), (int)(191+64*Math.random()) );
}
public Forma(Dimension d)
{
x = (int)(Math.random()*(d.width - r1));
y = (int)(Math.random()*(d.height - r2));
r1 = (int)(Math.random()*Math.min(d.width, d.height) / 6.) + 5;
r2 = (int)(Math.random()*Math.min(d.width, d.height) / 6.) + 5;
xx = x - r1 / 2;
yy = y - r2 / 2;
c = new Color( (int)(191+64*Math.random()), (int)(191+64*Math.random()), (int)(191+64*Math.random()) );
}
abstract public void paint(Graphics g);
protected int x, y, r1 ,r2;
protected int xx, yy;
protected Color c;
}
package corsoDrZito.lez2.es3;
public class Cerchio extends Forma
{
public Cerchio(int x, int y, int r)
{
super(x,y,r,r);
}
public void paint(java.awt.Graphics g)
{
g.setColor(c);
g.fillOval(xx, yy, r1, r1);
}
}
package corsoDrZito.lez2.es3;
public class Ellisse extends Forma
{
public Ellisse(int x, int y, int r1, int r2)
{
super(x,y,r1,r2);
}
public void paint(java.awt.Graphics g)
{
g.setColor(c);
g.fillOval(xx, yy, r1, r2);
}
}
package corsoDrZito.lez2.es3;
public class Quadrato extends Forma
{
public Quadrato(int x, int y, int l)
{
super(x,y,l,l);
}
public void paint(java.awt.Graphics g)
{
g.setColor(c);
g.fillRect(xx, yy, r1, r1);
}
}
package corsoDrZito.lez2.es3;
public class Rettangolo extends Forma
{
public Rettangolo(int x, int y, int r1, int r2)
{
super(x,y,r1,r2);
}
public void paint(java.awt.Graphics g)
{
g.setColor(c);
g.fillRect(xx, yy, r1, r2);
}
}