Mostrando entradas con la etiqueta programacion orientada a objetos. Mostrar todas las entradas
Mostrando entradas con la etiqueta programacion orientada a objetos. Mostrar todas las entradas

viernes, 22 de marzo de 2013

ejemplo de herencia en programación orientada a objetos

esta seria la clase madre


package ejercicio3;

public abstract class figura {
//se declara clase  abstracta
    private  String nombre;
    private double area;
    public figura(){};
    public abstract double getArea();
    public abstract String getNombre();
    public abstract int getNumFiguras();   
   
}

esta es la clase circulo que es una hija de la clase figura 
y te preguntas pero como asi que una hija?
ósea que la clase circulo es una figura pero sus métodos tienen ya información.
Esto nos sirve para crear varias clases con los mismos nombres de métodos 
pero con diferentes procesos. OJO esto no es sobrecarga de métodos, es herencia
por eso los tienen los mismos métodos aunque cada figura puede tener diferentes atributos

public class Circulo extends figura{

    double r;
    public static int cantidadCirculos=0; //esto de static quiere decir que cada vez que crees una clase de este tipo esa variable siempre va a ser la misma para todas las clases.
    public Circulo()
    {
        cantidadCirculos+=1;
        this.r=2;
    }
    public Circulo(double radio)
    {
        this.r= radio;
        cantidadCirculos+=1;
    }
   
    public double getArea() {
        return Math.PI*r*r;
    }

   
    public String getNombre() {
        return"circulo";
    }
    public int getNumFiguras()
    {
        return cantidadCirculos;//este metodo me devuelve la cantidad de circulos del array(vector)
    }
   
    public String toString()
    {
        return "circulo de radio " + r;
    }

}
cree una clase vector para que me almacenara todo tipo de figuras 
public class Vector {

    figura[] figuras;// declaración de un vector en java
  public static double sumatoriaAreas=0;
   public Vector(int tamañoVector)
   {
       figuras= new figura[tamañoVector];
   }



jueves, 21 de febrero de 2013

Clase Fecha y sus metodos

este algoritmo esta programado en java
es para mostrar como podemos crear objetos de tipo fecha y sus  atributos.
un algoritmo que  por si mismo no hace nada pero si implementas otro algoritmo en otra clase que invoque a esta y le llame sus metodos entonces crea fechas.

package ejerciciofechas;

public class Fecha {
    public int dia,mes,año;
    public Fecha(int d, int m, int a)
    {
       this.dia=d;
       this.mes=m;
       this.año=a;
    }
    //fin del primer constructor y comienzo del nuevo
    public Fecha()
    {
        this.dia=13;
        this.mes= 8;
        this.año=2012;
        
    }

    //fin de los constructores

    public int diferencia(Fecha f2)
    {
        int resultado;
        resultado = (this.dia- f2.dia)+ (this.mes- f2.mes)*30+(this.año-f2.año)*365;
        return resultado;
    }
    public int getDias()
    {
        return (this.dia);
    
    }

//fin metodo

    public String getNombreMes()
    {
        switch (this.mes)
        {
            case 1:
                return("Enero");
                
            case 2:
                return("Febrero");
            case 3:
                return"Marzo";
                
            case 4:
                return("Abril");
                
             case 5:
                return"Mayo";
                
            case 6:
                return("Junio");
                
            case 7:
                return"Julio";
                
                
            case 8:
                return("Agosto");
                
            case 9:
                return"Sptiembre";
                
                
            case 10:
                return("Octubre");
                
            case 11:
                return("Noviembre");
                
            case 12:
                return("Diciembre");
            default:
                return("no existe");
                        
                
        }
        
    }
    //fin del metodo

    public int getAño()
    {
        return(this.año);
    }

    //fin del metodo
    
    public void sumarDias(int x)
    {

        
        while (x>30&&x>0)
        {
            this.mes+=1;
            x=x-30;
            if (this.mes>12)
            {
                this.año+=1;
                this.mes=1;
            }
        }
       

        //este es por si es negativo y un numero grande
        
        while (x<-30&&x<0)
        {
           this.mes-=1;
            x=x+30;
            if (this.mes<1)
            {
                this.año-=1;
                this.mes=12;
            }
            
        } //controla que este dentro de un rango de 30
               
        if (x<30&&x>0)
        {
            this.dia += x;
            if(this.dia>30)
            {
                this.mes+=1;
                this.dia -=30;
                if (this.mes>12)
                {
                    this.año+=1;
                    this.mes -=12;
                }
            }
        }

        //estos dos if me controlan que no halla problemas con los multiplos de 30
        if (x==30)
        {
            
            this.mes+=1;
           
            if (this.mes>12)
            {
                año+=1;
                
            }

            
        }
        if (x==-30)
        {
            
            this.mes-=1;
           
            if (this.mes<1)
            {
                año-=1;
                
            }

            
        }

       
        
    }
    //fin del metodo
    
    
    
    public void cambiarMes( int x)
    {
        if (this.mes<12&&this.mes>0)
        {
            this.mes=x;
        }
        else
        {
            System.out.println("no es posible esto no existe tal mes");
        }
    }
    
    
    //fin del metodo
    
    
        public boolean bisiesto()
    {
        boolean sw;
         sw=false;
        if (this.mes%4==0)
        {
            if (this.mes %100==0)
            {
                if(this.mes%400==0)
                {
                    sw= false;
                }
                else
                {
                    sw= true;
                }               
            }
        }
        else
        {
            sw=false;
        }
        return sw;
    }
        //fin del metodo
        
    public int[] getFecha()
    {
        int[] arreglo = new int[3];
        arreglo[0]=this.dia;
        arreglo[1]=this.mes;
        arreglo[2]=this.año;
        
        return arreglo;
    }
    public Fecha mañana()
    {
        Fecha nueva= new Fecha();
       nueva.sumarDias(1);
        return nueva;
    }
    public Fecha Ayer()
    {
       Fecha nueva= new Fecha();
       nueva.sumarDias(-1);
        return nueva;
    }
    public Fecha nuevaFecha(int x)
    {
       Fecha nueva= new Fecha();
       nueva.sumarDias(x);
        return nueva;
    }

}