public abstract class PoligonoRegular {
protected int numLados;
protected double lado; // longitud de un lado
public PoligonoRegular(int numLados, double lado) {
this.numLados = numLados;
this.lado = lado;
}
public double perimetro() {
return numLados*lado;
}
// este método lo tiene que hacer cada clase derivada;
// depende de cada polígono regular
public abstract double area();
}
_______________________________________________________________________
Código 2: cuadrado.java
import java.awt.*;
public class Cuadrado extends PoligonoRegular implements Pintador {
public Cuadrado(double lado) {
super(4,lado); // constructora de PolígonoRegular
}
public double area() {
return lado * lado;
}
public void pinta(Graphics g,int x, int y,Color color) {
g.setColor(color);
g.fillRect(x,y,(int)lado,(int)lado);
}
public void borra(Graphics g, int x, int y) {
g.clearRect(x,y,(int)lado,(int)lado);
}
}
_____________________________________________________________________________
Código 3: Pintador.java
import java.awt.Graphics; // Graphic sirve para dibujar en un objeto
import java.awt.Color;
public interface Pintador {
// g es el objeto que nos permite dibujar la figura
// (x,y) debe ser la coordenadas de la esquina inferior izquierda
public void pinta(Graphics g,int x,int y, Color color);
// para borrar la figura
public void borra(Graphics g, int x,int y);
}
Código 4: PrincipalInterface.java
import java.awt.*;
public class PrincipalInterface {
public static void main(String[] args) {
Cuadrado c1 = new Cuadrado(40);
// hacemos una ventana para pintar los cuadrados
Frame ventana = new Frame("Ventana con cuadrados");
ventana.setLayout(new FlowLayout());
// le añadimos una etiqueta
Label l = new Label(" ");
l.setBackground(Color.yellow);
ventana.add(l);
ventana.setSize(300,200);
ventana.setVisible(true);
// esto aún no puede entenderse del todo...paciencia
Graphics g = ventana.getGraphics();
// esto funciona por ser Cuadrado un PolígonoRegular
muestraArea(l,c1);
// ...y esto porque Cuadrado implementa Pintador
dibuja(g,c1);
}
public static void dibuja(Graphics g, Pintador p) {
p.pinta(g,30,30,Color.pink);
p.pinta(g,200,90,Color.orange);
p.pinta(g,20,100,Color.green);
p.borra(g,50,40);
p.pinta(g,75,120,Color.blue);
}
public static void muestraArea(Label etiq, PoligonoRegular r) {
etiq.setText(" "+r.area());
}
}
No hay comentarios:
Publicar un comentario