Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Magore en 24 de Mayo 2023, 19:19

Título: If else, if else if - Ejercicio (CU00636B)
Publicado por: Magore 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.
Título: Re: If else, if else if - Ejercicio (CU00636B)
Publicado por: Kabuto 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


Título: Re: If else, if else if - Ejercicio (CU00636B)
Publicado por: Magore en 25 de Mayo 2023, 13:17
Entendido, Kabuto.

Muchas gracias por tu detallada y clarificadora respuesta.

Un saludo.