Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Jlinos en 11 de Junio 2018, 14:53

Título: cómo deben inicializarse los objetos en Java diferencia constructores CU00637B
Publicado por: Jlinos en 11 de Junio 2018, 14:53
Buenas tardes. Envío el ejercicio CU00637B del tutorial pdf de programación java de aprenderaprogramar. Si pueden revisar el trabajo y me dicen si voy en el buen camino.
Muchas gracias.

Código: [Seleccionar]
public class Motor
{
    //Atributos
    private int tipoBomba;
    private String tipoFluido;
    private String combustible;

    public Motor(int valorTipoBomba, String valorTipoFluido, String valorCombustible){
        tipoBomba = 0;
        tipoFluido = "";
        combustible = "";
    }
    //Método dimeTipoMotor
    public void dimeTipoMotor(){
        switch(tipoBomba){
            case 0:
            System.out.println("No hay establecido un valor definido para el tipo de bomba.");
            break;
            case 1:
            System.out.println("La bomba es una bomba de agua.");
            break;
            case 2:
            System.out.println("La bomba es una bomba de gasolina.");
            break;
            case 3:
            System.out.println("La bomba es una bomba de hormigón.");
            break;
            case 4:
            System.out.println("La bomba es una bomba de pasta alimenticia.");
            break;
            default:System.out.println("No existe un valor válido para tipo de bomba");
            break;
        }
    }
    //Métodos setter y getter
    public void setTipoBomba(int valorTipoBomba){
        tipoBomba = valorTipoBomba;
    }
    public int getTipoBomba(){
        return tipoBomba;
    }
    public void setTipoFluido(String valorTipoFluido){
        tipoFluido = valorTipoFluido;
    }
    public String getTipoFluido(){
        return tipoFluido;
    }
    public void setCombustible(String valorCombustible){
        combustible = valorCombustible;
    }
    public String getCombustible(){
        return combustible;
    }   
}// Cierre de la clase Motor
Título: Re:cómo deben inicializarse los objetos en Java diferencia constructores CU00637B
Publicado por: Alex Rodríguez en 08 de Julio 2018, 13:27
Hola, este ejercicio no está bien resuelto.

El problema está en que aquí tienes un constructor que recibe parámetros, pero sin embargo has escrito:

Código: [Seleccionar]
    public Motor(int valorTipoBomba, String valorTipoFluido, String valorCombustible){
        tipoBomba = 0;
        tipoFluido = "";
        combustible = "";
    }

Los parámetros sirven para inicializar los campos de un objeto cuando se crea. Por ejemplo, voy a crear un objeto y le paso como parámetros tipo bomba 3, tipo fluido "liquido" y combustible "gasolina". Esos parámetros se usarán para inicializar el objeto. Sin embargo con tu código da igual los parámetros que le pases que el tipo bomba será cero, el tipo fluido ninguno (cadena vacía) y combustible ninguno (cadena vacía). ¿Entonces para qué sirven los parámetros? La inicialización a ceros o cadenas vacías se hace cuando no hay parámetros y por tanto no sabemos con qué valores se deben inicializar los objetos. Pero si el constructor tiene parámetros, será para utilizarlos.

Por otro lado, visto lo que ocurre cabe deducir que no has probado tu código. Es importante que cuando crees código lo pruebes. En este caso deberías haber creado un objeto en BlueJ como se explica en el curso y haberle introducido por ejemplo como tipo de bomba 3, y así comprobar que el código no funciona como debería.

Este código debería corregirse. Para ello puedes repasar tanto el curso como otros hilos del foro.

Saludos
Título: Re:cómo deben inicializarse los objetos en Java diferencia constructores CU00637B
Publicado por: Jlinos en 08 de Julio 2018, 15:34
Buenas tardes y gracias Alex.
No entendí el enunciado en cuanto al constructor, no tenía que pasarle parámetros.
Ahora lo he entendido y lo he corregido.También me faltó crear el objeto.
Código: [Seleccionar]
public class Motor
{
    //Atributos
    private int tipoBomba;
    private String tipoFluido;
    private String combustible;

    public Motor(){
        tipoBomba = 0;
        tipoFluido = "";
        combustible = "";
    }
    //Método dimeTipoMotor
    public void dimeTipoMotor(){
        switch(tipoBomba){
            case 0:
            System.out.println("No hay establecido un valor definido para el tipo de bomba.");
            break;
            case 1:
            System.out.println("La bomba es una bomba de agua.");
            break;
            case 2:
            System.out.println("La bomba es una bomba de gasolina.");
            break;
            case 3:
            System.out.println("La bomba es una bomba de hormigón.");
            break;
            case 4:
            System.out.println("La bomba es una bomba de pasta alimenticia.");
            break;
            default:System.out.println("No existe un valor válido para tipo de bomba");
            break;
        }
    }
    //Métodos setter y getter
    public void setTipoBomba(int valorTipoBomba){
        tipoBomba = valorTipoBomba;
    }

    public int getTipoBomba(){
        return tipoBomba;
    }

    public void setTipoFluido(String valorTipoFluido){
        tipoFluido = valorTipoFluido;
    }

    public String getTipoFluido(){
        return tipoFluido;
    }

    public void setCombustible(String valorCombustible){
        combustible = valorCombustible;
    }

    public String getCombustible(){
        return combustible;
    }   
}// Cierre de la clase Motor
Título: Re:cómo deben inicializarse los objetos en Java diferencia constructores CU00637B
Publicado por: Alex Rodríguez en 08 de Julio 2018, 18:50
Ahora bien! Es importante que pruebes tu código, un buen programador nunca deja su código sin probar.

Saludos