martes, 9 de abril de 2013

herencia en java clase figura solucion ejercicio 3


package ejercicio3;

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

public class cuadrado extends figura {
    private double lado;
    public static int cantidadCuadrados=0;

public cuadrado()
{
    this.lado=2;
}
public cuadrado(double l)
{
    this.lado=l;
}
    @Override
    public double getArea() {
        return (this.lado*this.lado);
    }

    @Override
    public String getNombre() {
        return "cuadrado";
    }
        public int getNumFiguras()
    {
        return cantidadCuadrados;
    }
       public String toString()
    {
        return "cuadrado de lado " + this.lado;
    }
}
///////////////////////////////////////////////////////////////////////

public class triangulo extends figura{

    private double base, altura;
        public static int cantidadTriangulos=0;

    public triangulo()
    {
        this.base=2;
        this.altura=4;
    }
    public triangulo(double b,double a)
    {
        this.base = b;
        this.altura=a;
    }
    public double getArea() {
        return this.base*this.altura/2;
    }

    @Override
    public String getNombre() {
       return"triangulo";
    }

   
    public int getNumFiguras() {
        return cantidadTriangulos;
    }
    public String toString()
    {
        return "triangulo de base "+ this.base +" y altura " + this.altura;
    }
   
   
}
//////////////////////////////////////////////////////////////////
public class Rectangulo extends figura{
    private double base;
    private double altura;
    public static int cantidadRectangulos=0;
   
    public Rectangulo()
    {
     this.altura=2;
     this.base=4;
    }
    public Rectangulo(double b, double a)
    {
        this.base=b;
        this.altura=a;
    }
    public String getNombre()
    {
        return "rectangulo";
    }
        public int getNumFiguras()
    {
        return cantidadRectangulos;
    }

   
    public double getArea() {
        return base*altura;
        
    }
        public String toString()
    {
        return "Rectangulo de base "+ this.base +" y altura " + this.altura;
    }  
}


////////////////////////////////////////////////
public class Circulo extends figura{

    double r;
    public static int cantidadCirculos=0;
    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;
    }
    
    public String toString()
    {
        return "circulo de radio " + r;
    }

}
///////////////////////////////////////////////////////////////////


public class Vector {
    figura[] figuras;
    public static double sumatoriaAreas=0;
   public Vector(int tamañoVector)
   {
       figuras= new figura[tamañoVector];
   }
   public void addFiguras(int pos)
   {
       int eleccion = SimpleInput.getInteger("[1]circulo [2]cuadrado [3]triangulo [4]rectangulo");
       if (eleccion ==2)
       {
           figura c= new cuadrado(SimpleInput.getDouble("digite el lado"));
           figuras[pos]= c;
           sumatoriaAreas +=c.getArea();
           
       }
              if (eleccion ==1)
       {
           figura c= new Circulo(SimpleInput.getDouble("digite el radio"));
           figuras[pos]= c;
           sumatoriaAreas +=c.getArea();
       }
       if (eleccion ==3)
       {
           figura c= new triangulo(SimpleInput.getDouble("base"), SimpleInput.getDouble("altura"));
           figuras[pos]= c;
           sumatoriaAreas +=c.getArea();
       }
       if (eleccion ==4)
       {
           figura c= new Rectangulo(SimpleInput.getDouble("base"), SimpleInput.getDouble("altura"));
           figuras[pos]= c;
           sumatoriaAreas +=c.getArea();
       }
       
   }


    double getSumatoria() {
        return sumatoriaAreas;
    }

}
////////////////////////////////////////////
public class Buscar {
   public figura[] lista ;
   public  static String busqueda;
    
    public Buscar(figura[] v,String nombreFigura)
    {
        lista=v;
        busqueda=nombreFigura;
    }
    public int BuscarFigura(){
        int pos=-1;
        
      for(int i =0;i<lista.length;i++)
      {
            if(lista[i].getNombre().compareTo(busqueda)==0)
               
            {
               pos =i; 
            }
      }
       return pos;
        
    }
    
}
//////////////////////////////////////////////////
public class main3 {
    public static void main(String[] args) {
     boolean sw=true;
     double sumatoria=0;
     
     Vector v= new Vector(SimpleInput.getInteger("digite la cantidad de figuras a almacenar")); //Crea un objeto vector de
    
     //tipo object donde se almacenan todas las figuras
    
    
    
     //---------------------------------------
     //este es el ciclo for para llenar el vector con todas las figuras
     for(int i =0;i<v.figuras.length;i++)
     {
         v.addFiguras(i);  
     }
     
     
    double sumaAreas= v.getSumatoria();
    System.out.println("la suma de todas las areas ingresadas es de: "+ sumaAreas);
   
    //ciclo for para mostrar cada figura con sus atributos
    for(int i =0;i<v.figuras.length;i++)
     {
         v.figuras[i].toString();  
     }
    
    //este metodo a continuacion es para crear un menu de eleccion
    while (sw)
    { 
       Buscar b;
       System.out.println("[1] conocer area de una figura almacenada");
       System.out.println("[2] obtener propiedades de una figura");
       System.out.println("[3] obtener el numero de figuras que existen de un tipo");
       System.out.println("[4] buscar una figura y eliminar");
       System.out.println("[5] terminar");
       int eleccion = SimpleInput.getInteger("");
       if (eleccion == 1)
       {
           try{
          int posicion = SimpleInput.getInteger("posicion de la figura");
            System.out.println("el area del "+v.figuras[posicion-1]+" en la posicion "+posicion+" es: "+v.figuras[posicion-1].getArea());
            //este es un buscador de objetos y devuelve su posicion
           }
           catch(Exception e)
           {
               System.out.println("no exite tal posicion");
           }
            
       }
       if (eleccion == 2)
       {
           
          int pos = SimpleInput.getInteger("Posicion de la figura");
          if(pos<=v.figuras.length) {
               System.out.println("las propiedades de la figura en la pos "+pos+" es: " +v.figuras[pos-1].toString());
           }
            //este es un buscador de objetos y devuelve su posicion
          
          
            
       }
       if (eleccion == 3)
       {
          String nombre = SimpleInput.getString("nombre de la figura");
          
            b= new Buscar(v.figuras,nombre);
            int pos = b.BuscarFigura();
            if (pos!=-1){
            System.out.println("la cantidad de "+nombre+"s es:" +v.figuras[pos].getNumFiguras());
            //este es un buscador de objetos y devuelve su posicion
          
            }    
            
       }
      if (eleccion == 4)
       {
          String nombre = SimpleInput.getString("nombre de la figura");
          
            b= new Buscar(v.figuras,nombre);
            int pos = b.BuscarFigura();
            if (pos!=-1){
                if(v.figuras[pos].getNumFiguras()>1)
                {
                    v.figuras[pos] =null;
                }
                
            //este es un buscador de objetos y devuelve su posicion
          
            }           
       }
       
    }

            
    
 }

    
}

No hay comentarios:

Publicar un comentario