miércoles, 4 de enero de 2012

Aprenda Java como si estuviera en primero: Ejemplo 1

Éste es el código del Ejemplo1 del magnífico manual de Java
Aprenda Java como si estuviera en primero
Yo, que ya había programado en Java, he repasado todo y la verdad es que es BASTANTE BUENO. Tiene su poquito de cada cosa y está muy bien explicado.
Lo he programado en Eclipse bajo Guadalinex. Eclipse permite crear el proyecto y las clases desde la interfaz gráfica, así como asignar las interfaces y las superclases a las clases.
Aquí dejo un enlace a los archivos:


Ejemplo 1 de Java
public abstract class Geometria {
    //clase abstracta, no puede tener objetos
    public abstract double perimetro();
    public abstract double area();
}

public class Rectangulo extends Geometria {
    private static int numRectangulos=0;
    protected double x1,y1,x2,y2;
   
    public Rectangulo(double p1x,double p1y,double p2x,double p2y) {
        x1=p1x;
        y1=p1y;
        x2=p2x;
        y2=p2y;
        numRectangulos++;
    }
   
    public Rectangulo() {
        this(0,0,1.0,1.0);
    }
    @Override
    public double area() {
        // TODO Auto-generated method stub
        return (x1-x2)*(y1-y2);
    }

    @Override
    public double perimetro() {
        // TODO Auto-generated method stub
        return 2.0*((x1-x2)+(y1-y2));
    }

}
public class Circulo extends Geometria {
    static int numCirculos=0;
    public static final double PI=3.14159;
    public double x,y,r;
   
    public Circulo(double x, double y, double r) {
        this.x=x;this.y=y;this.r=r;
        numCirculos++;
    }
    public Circulo(double r) {this(0.0,0.0,r);}
    public Circulo(Circulo c) {this(c.x,c.y,c.r);}
    public Circulo() {this(0.0,0.0,1.0);}
    @Override
    public double area() {
        // TODO Auto-generated method stub
        return PI*r*r;
    }

    @Override
    public double perimetro() {
        return 2.0*PI*r;
        // TODO Auto-generated method stub
    }
   
    public Circulo elMayor(Circulo c) {
        if (this.r>=c.r) return this; else return c;
    }
   
    public static Circulo elMayor(Circulo c, Circulo d){
        if (c.r>=d.r) return c; else return d;
    }
}
import java.awt.Graphics;
public interface Dibujable {
    public void setPosicion(double x,double y);
    public void dibujar(Graphics dw);
}
import java.awt.Graphics;
import java.awt.Color;

class RectanguloGrafico extends Rectangulo implements Dibujable {
    Color color;
   
    public RectanguloGrafico(double x1,double y1,double x2,double y2, Color unColor){
        super(x1,y1,x2,y2);
        this.color=unColor;
    }
   
    public void dibujar(Graphics dw) {
        dw.setColor(color);
        dw.drawRect((int)x1, (int)y1, (int)(x2-x1), (int)(y2-y1));
    }
   
    @Override
    public void setPosicion(double x, double y) {
        // TODO Auto-generated method stub

    }

}

import java.awt.Graphics;
import java.awt.Color;

public class CirculoGrafico extends Circulo implements Dibujable {
    Color color;
   
    public CirculoGrafico(double x,double y, double r, Color unColor){
        super(x,y,r);
        this.color=unColor;
    }
    @Override
    public void dibujar(Graphics dw) {
        // TODO Auto-generated method stub
        dw.setColor(color);
        dw.drawOval((int)(x-r), (int)(y-r), (int)(2*r), (int)(2*r));
    }

    @Override
    public void setPosicion(double x, double y) {
        // TODO Auto-generated method stub

    }

}
import java.awt.*;
import java.util.ArrayList;
import java.util.Iterator;

public class PanelDibujo extends Panel {
    private ArrayList v;
   
    public PanelDibujo(ArrayList va){
        super(new FlowLayout());
        this.v=va;
    }
    public void paint(Graphics g){
        Dibujable dib;
        Iterator it;
        it=v.iterator();
        while(it.hasNext()){
            dib=(Dibujable)it.next();
            dib.dibujar(g);
        }
    }
}
import java.awt.*;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;


public class VentanaCerrable extends Frame implements WindowListener {
   
    public VentanaCerrable() {
        super();
    }
    public VentanaCerrable(String title) {
        super(title);
        setSize(500,500);
        addWindowListener(this);
    }
    @Override
    public void windowActivated(WindowEvent arg0) {
        // TODO Auto-generated method stub

    }import java.util.ArrayList;
import java.util.Vector;
import java.awt.*;

public class MGeometria {

    /**
     * @param args
     */
    public static void main(String[] args) throws InterruptedException{
        // TODO Auto-generated method stub
        System.out.println("Comienza main...");
        Circulo c= new Circulo(2.0,2.0,4.0);
        System.out.println("Radio="+c.r+" unidades.");
        System.out.println("Centro=("+c.r+","+c.y+") unidades.");
        Circulo c1=new Circulo(1.0,1.0,2.0);
        Circulo c2=new Circulo(0.0,0.0,3.0);
        c=c1.elMayor(c2);
        System.out.println("El mayor radio es "+c.r+".");
        c=new Circulo();
        c=Circulo.elMayor(c1, c2);
        System.out.println("El mayor radio es "+c.r+".");
       
        VentanaCerrable ventana=new VentanaCerrable("Ventana abierta al mundo...");
        ArrayList<Geometria> v=new ArrayList<Geometria>();
        CirculoGrafico cg1=new CirculoGrafico(200,200,100,Color.red);
        CirculoGrafico cg2=new CirculoGrafico(300,200,100,Color.blue);
       
        RectanguloGrafico rg=new RectanguloGrafico(50,50,450,350,Color.green);
       
        v.add(cg1);
        v.add(cg2);
        v.add(rg);
       
        PanelDibujo mipanel=new PanelDibujo(v);
        ventana.add(mipanel);
        ventana.setSize(500,400);
        ventana.setVisible(true);
        System.out.println("Termina main...");
               
    }

}

    @Override
    public void windowClosed(WindowEvent arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void windowClosing(WindowEvent arg0) {
        // TODO Auto-generated method stub
        System.exit(0);
    }

    @Override
    public void windowDeactivated(WindowEvent arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void windowDeiconified(WindowEvent arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void windowIconified(WindowEvent arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void windowOpened(WindowEvent arg0) {
        // TODO Auto-generated method stub

    }

}

import java.util.ArrayList;
import java.util.Vector;
import java.awt.*;

public class MGeometria {

    /**
     * @param args
     */
    public static void main(String[] args) throws InterruptedException{
        // TODO Auto-generated method stub
        System.out.println("Comienza main...");
        Circulo c= new Circulo(2.0,2.0,4.0);
        System.out.println("Radio="+c.r+" unidades.");
        System.out.println("Centro=("+c.r+","+c.y+") unidades.");
        Circulo c1=new Circulo(1.0,1.0,2.0);
        Circulo c2=new Circulo(0.0,0.0,3.0);
        c=c1.elMayor(c2);
        System.out.println("El mayor radio es "+c.r+".");
        c=new Circulo();
        c=Circulo.elMayor(c1, c2);
        System.out.println("El mayor radio es "+c.r+".");
       
        VentanaCerrable ventana=new VentanaCerrable("Ventana abierta al mundo...");
        ArrayList<Geometria> v=new ArrayList<Geometria>();
        CirculoGrafico cg1=new CirculoGrafico(200,200,100,Color.red);
        CirculoGrafico cg2=new CirculoGrafico(300,200,100,Color.blue);
       
        RectanguloGrafico rg=new RectanguloGrafico(50,50,450,350,Color.green);
       
        v.add(cg1);
        v.add(cg2);
        v.add(rg);
       
        PanelDibujo mipanel=new PanelDibujo(v);
        ventana.add(mipanel);
        ventana.setSize(500,400);
        ventana.setVisible(true);
        System.out.println("Termina main...");
               
    }

}

No hay comentarios:

Publicar un comentario