Autor Tema: If else, if else if - Ejercicio (CU00636B)  (Leído 847 veces)

Magore

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 26
    • Ver Perfil
If else, if else if - Ejercicio (CU00636B)
« en: 24 de Mayo 2023, 19:19 »
Buenas tardes.

Adjunto mi propuesta de solución para el ejercicio CU00636B. Pero querría hacer una observación: he visto en las soluciones aportadas por otros compañeros que, al contrario de como yo he hecho, no utilizan parámetros de entrada para el método comprobarDimensiones. ¿Es esto correcto? ¿Debería quitar los parámetros al método?

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 = "";
    }
   
// Setters:
    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;
    }
   
// Getters:
    public String getTipo() {
        return tipo;
    }
    public double getGrosor() {
        return grosor;
    }
    public double getDiametro() {
        return diametro;
    }
    public String getMarca() {
        return marca;
    }
   
// Método de comprobación de dimensiones:
    public void comprobarDimensiones(double diametro, double grosor){
        if (diametro > 1.4) {
            System.out.println ("La rueda es para un vehículo grande");}
        else if (diametro > 0.8 && diametro <= 1.4) {
            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 ((diametro > 1.4 && grosor < 0.4) ||
           (diametro > 0.8 && diametro <= 1.4 && grosor < 0.25)) {
               System.out.println ("El grosor para esta rueda es inferior al recomendado");
        }
    }
}

Un saludo y muchas gracias de antemano por vuestra atención.

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 988
    • Ver Perfil
Re: If else, if else if - Ejercicio (CU00636B)
« Respuesta #1 en: 25 de Mayo 2023, 11:17 »
Cuando al método de una clase le ponemos parámetros de entrada, es porque esperamos que esos parámetros provengan desde el "exterior", es decir, no son datos que existan dentro de esta clase y tenemos que recibirlos desde fuera.

Pero en este caso, esos datos existen dentro de esta clase.
Queremos comprobar el grosor de "esta Rueda", así que podemos actuar directamente con sus atributos de clase sin tener que recibir ningún parámetro de entrada.

Sería distinto si quisiéramos comprobar el grosor de "otra Rueda" distinta a "esta Rueda". Para ello, "esta Rueda" sí tendría que recibir parámetros de entrada, ya que no tiene acceso a los atributos de "otras Ruedas" y por tanto se los tendrían que proporcionar.


Si escribiéramos un código con tu Rueda, ya notarías que algo chirría.
Mira, creamos una Rueda:

Código: [Seleccionar]
Rueda miRueda = new Rueda();
miRueda.setTipo("Mojado");
miRueda.setMarca("Dunlop");
miRueda.setDiametro(0.9);
miRueda.setGrosor(0.6);

Ahora queremos comprobar las dimensiones que le hemos dado.
Pues si usamos tu método que pide parámetros de entrada, resulta que tenemos que indicarle otra vez el grosor y el diámetro:
Código: [Seleccionar]
miRueda.comprobarDimensiones(0.9, 0.6);
¿Ves? No tiene mucho sentido. El objeto miRueda ya contiene en su interior los valores de esos datos, ¿por qué pedirlos otra vez como parámetro de entrada?

Por eso este método no necesita recibir nada externo, ha de operar con los atributos internos a los cuáles puede acceder sin que le tengan que llegar como parámetros de entrada.
Código: [Seleccionar]
miRueda.comprobarDimensiones();
Espero haberme explicado bien.
Un saludo


NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

Magore

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 26
    • Ver Perfil
Re: If else, if else if - Ejercicio (CU00636B)
« Respuesta #2 en: 25 de Mayo 2023, 13:17 »
Entendido, Kabuto.

Muchas gracias por tu detallada y clarificadora respuesta.

Un saludo.

 

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".