Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: ronal.d87 en 10 de Agosto 2015, 06:48

Título: Ejercicio curso Java tipos enumerados como si fueran una clase CU00682B
Publicado por: ronal.d87 en 10 de Agosto 2015, 06:48
Hola a todos, he aqui el desarrollo del ejercicio.

clase TipoPiedra

Código: [Seleccionar]

package ejemplo;
/**
 * @author Ronald Mosquera
 */
//clase tipo enum
public enum TipoPiedra {
    CALIZA ("Caliza",1200),
    MARMOL ("Marmol", (float) 1423.55),
    PIZARRA ("Pizarra",1325),
    CUARZITA ("Cuarzita",(float) 1466.22);
   
    private final String piedra ;
    private final float peso;
   
    //metodo constructor
    TipoPiedra(String piedra, float peso){
        this.piedra=piedra;
        this.peso=peso;
    }
   
    public String getPiedra(){
        return piedra;
    }
    public float getPeso(){
        return peso;
    }   
}


clase TestPiedra

Código: [Seleccionar]
package ejemplo;

/**
 * @author Ronald Mosquera
 */
public class TestPiedra {
   
    public static void main(String [] args){
       
        TipoPiedra tipoPiedra = TipoPiedra.CALIZA;
         System.out.println ("La piedra elegida por el usuario es " + tipoPiedra.getPiedra()
                 + "\ncon un peso especifico ");         
         
         for (TipoPiedra tpiedra: TipoPiedra.values() ) {
             System.out.println ("La piedra "+tpiedra.toString() + " el palet pesa "+tpiedra.getPeso() +" kg");
        }
    }   
}

Título: Re:EJERCICIO CU00682B REALIZADO
Publicado por: RaGa en 12 de Agosto 2015, 16:50
Hola Ronald:

Estuve revisando tu ejercicio y está bien, pero tendríamos que revisar algunas cosas.

Respecto de la clase TipoPiedra:
No es necesario declarar un campo nombre, ya que podemos utilizar el objeto mismo cuando se requiera representar el nombre de las distintas piedras. Esto se hace utilizando el método toString() sobre el objeto tipo TipoPiedra.
Por otro lado, el campo peso que declaras sería mejor bautizarlo como pesoEspecifico ya que es lo que representa. Además al momento de asignarle su valor puedes utilizar la letra 'f' como sufijo del número para indicar al compilador que se trata de un tipo float y no de un tipo double.

Código: [Seleccionar]

package ejemplo;
/**
 * @author Ronald Mosquera
 */
//clase tipo enum
public enum TipoPiedra {
    CALIZA (1200f),
    MARMOL (1423.55f),
    PIZARRA (1325f),
    CUARZITA (1466.22f);
   
    private final float pesoEspecifico;
   
    //metodo constructor
    TipoPiedra(float pesoEspecifico){
        this.pesoEspecifico=pesoEspecifico;
    }
   
    public float getPesoEspecifico(){
        return pesoEspecifico;
    }   
}


Respecto de la clase TestPiedra:
Aquí utilizamos el método toString() sobre el objeto tipo TipoPiedra para imprimir por consola el nombre de la piedra (como lo indicábamos anteriormente).
Fíjate que también habría que hacer una pequeña operación matemática de multiplicación para saber cuánto pesan los distintos palet.

Código: [Seleccionar]

package ejemplo;
/**
 * @author Ronald Mosquera
 */
public class TestPiedra {
   
    public static void main(String [] args){
       
        TipoPiedra tipoPiedra = TipoPiedra.CALIZA;
         System.out.println ("\fLa piedra elegida por el usuario es " + tipoPiedra.toString()
                 + "\ncon un peso especifico de " + tipoPiedra.getPesoEspecifico() +" kg/m3" + "\n");         
         
         for (TipoPiedra tpiedra: TipoPiedra.values() ) {
             System.out.println ("Un palet de piedra " + tpiedra.toString() + " pesa " + 2.27*tpiedra.getPesoEspecifico() +" kg");
        }
    }   
}


Analízalo y cualquier duda lo seguimos analizando.