Autor Tema: Ejercicio CU00636B: Esquema de decisión condicional if else, if else if Java.  (Leído 5296 veces)

B4rduck

  • Sin experiencia
  • *
  • Mensajes: 29
    • Ver Perfil
Hola!
Dando seguimiento al Curso "Java desde 0", quiero dejar para revisión el ejercicio del apartado que se enuncia en el asunto de este tema.

Código: [Seleccionar]
public class Rueda {
   
    public String tipo;
    public double grosor;
    public double diametro;
    public String marca;
   
   
    // Constructor
    public Rueda () {
        tipo = "";
        grosor = 0.0d;
        diametro = 0.0d;
        marca = "";
       
    } // Cierre del constructor
   
    // Métodos para establecer valores a los atributos.
    public void setValorTipo (String valorTipo){
        tipo = valorTipo;
    }
   
    public void setValorGrosor (double valorGrosor){
        grosor = valorGrosor;
    }
   
    public void setValorDiametro (double valorDiametro){
        diametro = valorDiametro;
    }
   
    public void setValorMarca (String valorMarca){
        marca = valorMarca;
    }
    // Cierre de los métodos de asignación de valores a los atributos.
   
    // Método para comprobación de las dimensiones de los objetos tipo "Rueda".
    public void comprobarDimensiones (){
        // If con else if y cláusula final else
       if (diametro > 1.4){
        System.out.println ("La rueda es para un vehículo grande");
    }
   
    else if (diametro <= 1.4 && diametro > 0.8) {
        System.out.println ("La rueda es para un vehículo mediano");
    }
   
    else {
        System.out.println ("La rueda es para un vehículo pequeño");
    }
   
    // If sencillo
        if (diametro > 1.4 && grosor < 0.4 || diametro <= 1.4 && diametro > 0.8 && grosor < 0.25){
            System.out.println ("El grosor para esta rueda es inferior al recomendado");
        }
        }
    }

Desde ya, agradezco todos sus comentarios, sugerencias y por supuesto, la amabilidad de tomarse el tiempo para revisar mi trabajo.

Saludos!
« Última modificación: 29 de Noviembre 2014, 16:40 por Jorge lopez »

Jorge lopez

  • Sniper
  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 248
  • @SniperOfElite
    • Ver Perfil
 Hola Arja!

Aunque tu programa funciona correctamente en relación a lo que pide el enunciado, (comprobar dimensiones) en tu código se pueden notar algunos puntos que se pueden corregir.

1ro: Declaras las variables como public. Lo correcto es declarar toda variable como private y no como public, mas adelante conforme avances en el curso veras en que circunstancias es preferible declarar una variable como public o private o protected, por ahora y mientras no domines este tema, acostúmbrate a declarar toda variable como private.

2do: En el constructor de la clase, a las variables de tipo double le agregas una "d" al final del valor inicial asignado, (diametro = 0.0d;) esto no es que sea incorrecto pero si es opcional, agregar o no agregar la "d" al final no afecta el funcionamiento del código, a diferencia de las variables de tipo float donde si es obligatorio incluir una "f" al final para que el compilador no arroje un error de tipo: incompatible types. interpretando que estamos intentando asignar un valor booleano (0.0) a una variable que espera un valor float. (0.0f) Esto te lo comento solo para que tengas conocimiento sobre el asunto, pero en tu codigo es opcional que uses 0.0 y/o 0.0d.

3ro: Los nombres que asignas a los métodos setters no son de un todo correctos, el nombre de un método set o un método get ha de ser exactamente el mismo nombre de la variable relacionada a este, mas el prefijo get o set ante puesto a el nombre de dicha variable.
Ejemplo: setDiametro(double valorDiametro); en lugar de setValorDiametro(double valorDiametro); para la variable diametro donde valorDiametro es el nombre de un parámetro requerido por este método y que no debe de tener relación con el nombre del método en si.

4to: No has incluido los métodos getters en este ejercicio, a parte de que el enunciado lo requiere, acostumbrarte a incluir los metodos getters correspondientes a cada clase, te ayudara mucho en tus futuros códigos, mi consejo es que siempre incluyas los métodos setter y getters correspondientes en todas las clases que diseñes.

En cuanto al uso de condicionales if else y if con else if, veo que lo has dominado muy bien en este ejercicio.

Corrige estos puntos en tus futuros ejercicios y continua adelante.

Saludos!
while(estesVivo)
{
  aprende();
  ayuda();
  enseña();
}
if(mueres){teRecordaran();}

B4rduck

  • Sin experiencia
  • *
  • Mensajes: 29
    • Ver Perfil
Es excelente Sniper, te agradezco tus observaciones! Y de haber comprendido los puntos señalados en tu respuesta anterior, creo haber realizados los cambio apegándome a ellos; aquí el código para que puedas revisarlo y si en un dado caso hiciese falta algo o se reflejase algo incorrecto, espero contar con tu valiosa ayuda para corregirlo.

Código: [Seleccionar]
public class Rueda {

    private String tipo;
    private double grosor;
    private double diametro;
    private String marca;

    // Constructor
    public Rueda(){
        tipo = "";
        grosor = 0.0;
        diametro = 0.0;
        marca = "";

    } // Cierre del constructor

    // Métodos para establecer valores a los atributos.
    public void setTipo(String valorTipo){
        tipo = valorTipo;
    }

    public void setGrosor(double valorGrosor){
        grosor = valorGrosor;
    }

    public void setDiametro(double valorDiametro){
        diametro = valorDiametro;
    }

    public void setMarca(String valorMarca){
        marca = valorMarca;
    }
    // Cierre de los métodos de asignaci?n de valores a los atributos.

    // Métodos para obtener los valores de los atributos
    public String getTipo(){
        return tipo;
    }

    public double getGrosor(){
        return grosor;
    }

    public double getDiametro(){
        return diametro;
    }

    public String getMarca(){
        return marca;
    } // Cierre de los métodos getters.

    // Método para comprobación de las dimensiones de los objetos tipo "Rueda".
    public void comprobarDimensiones(){
        // If con else if y cl?usula final else
        if(diametro > 1.4){
            System.out.println("La rueda es para un vehículo grande");
        }

        else if(diametro <= 1.4 && diametro > 0.8){
            System.out.println("La rueda es para un vehículo mediano");
        }

        else{
            System.out.println("La rueda es para un vehículo peque?o");
        }

        // If sencillo
        if(diametro > 1.4 && grosor < 0.4 || diametro <= 1.4 && diametro > 0.8 && grosor < 0.25){
            System.out.println("El grosor para esta rueda es inferior al recomendado");
        }
    }
}

Desde ya, muy agradecido con tu apoyo!

Saludos!

rodrigo_avia

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 8
    • Ver Perfil
Hola.Tengo una duda con respecto al ejercicio.¿Seria correcto poner el método para obtener los valores antes de los getters?Como en el siguiente código o ¿Estaría mal?






Código: [Seleccionar]
public class Rueda {
    private String tipo;
    private double grosor;
    private double diametro;
    private String marca;

public Rueda (){
    tipo="";
    grosor=0.00;
    diametro=0.00;
    marca="";
   }
public void setTipo(String valorTipo){
    tipo=valorTipo;
}
public void setGrosor(double valorGrosor){
    grosor=valorGrosor;
}
public void setDiametro(double valorDiametro){
    diametro=valorDiametro;
}
public void setMarca(String valorMarca){
    marca=valorMarca;
}
public void comprobarDimensiones(){
    if (diametro>1.4){
          System.out.println("La rueda es para un vehiculo grande");
    }
    else if(diametro<=1.4 && diametro > 0.8){
          System.out.println("La rueda es para un vehiculo mediano");           
    }
    else{
          System.out.println("La rueda es para un vehiculo pequeño");
    }
    if (diametro >1.4 && grosor < 0.4 || diametro <= 1.4 && diametro >0.8 && grosor <0.25){
          System.out.println("El grosor para esta rueda es inferior al recomendado");
    }
   }
public String getTipo(){
    return tipo;
}
public double getGrosor(){
    return grosor;
}
public double getDiametro(){
    return diametro;
}
public String getMarca(){
    return marca;
}

}



Gilding

  • Sin experiencia
  • *
  • Mensajes: 44
    • Ver Perfil
Hola Rodrigo_avia.

Realmente no afecta al funcionamiento del programa donde situas los métodos setters y getters. Sin embargo es recomendable ponerlos juntos. Dependiendo de tus gustos o preferencias, o de lo te exijan en un puesto de trabajo, se pueden colocar antes o después del resto de métodos o funciones de la clase. No importa si pones antes los getters y después los setters o lo haces al revés. También puedes poner un método set y a continuación su método get, y así sucesivamente con cada atributo de la clase.

Personalmente yo normalmente establezco los métodos setters y getters tras la declaración de los constructores de la clase (salvo algún caso particular). Y suelo intercalarlos: establezco el set y el get para un atributo, después el del siguiente, etc etc. Todo ello con el fin de facilitar la lectura y comprensión del código.

Una vez dicho esto... sientete libre de hacerlo como prefieras.

Un saludo!

Jorge lopez

  • Sniper
  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 248
  • @SniperOfElite
    • Ver Perfil
 Ahora esta mucho mejor Arja  ;)

Saludos!
while(estesVivo)
{
  aprende();
  ayuda();
  enseña();
}
if(mueres){teRecordaran();}

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".