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