Autor Tema: Qué es la cohesión en un método Java significado de get prefijo método CU00636B  (Leído 3288 veces)

Agente_007

  • Sin experiencia
  • *
  • Mensajes: 14
    • Ver Perfil
Agradecería saber, si está correcta mi solución a dicho Ejercicio. Gracias.  :D

Código: [Seleccionar]

public class Rueda {
    private String tipo;
    private double grosor;
    private double diametro;
    private String marca;

    public Rueda () {
        tipo = "";
        grosor = 0;
        diametro = 0;
        marca = "";
    }

    //Métodos para establecer los atributos de la rueda
    public void setTipo (String valorTipo){
        tipo = valorTipo;
        System.out.println("El tipo de rueda ha cambiado a: " + tipo);
    }

    public void setGrosor (double valorGrosor){
        grosor = valorGrosor;
        System.out.println("El grosor de esta rueda ahora es de: " + grosor);
    }

    public void setDiametro (double valorDiametro){
        diametro = valorDiametro;
        System.out.println("El diametro de esta rueda ha cambiado a: " + diametro);
    }

    public void setMarca (String valorMarca){
        marca = valorMarca;
        System.out.println("La marca de esta rueda ha cambiado a: " + marca);
    }

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

    public double getGrosor () {return grosor;}

    public double getDiametro () {return diametro;}

    public String getMarca () {return marca;}

    //Método tipo función para comprobarDiamtro
    public double getComprobarDiametro (){
        if (diametro>1.5){
            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");}
        return diametro;
    }
    //Método tipo función para comprobarGrosor
    public double getComprobarGrosor () {
        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");}
        else {}
        return (grosor);
    }
}

« Última modificación: 26 de Abril 2016, 08:51 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola Agente007

Para ir introduciendo principios de diseño en tu código debes tener en cuenta lo siguiente:

Un método set tiene un fin: establecer el valor del atributo. Y nada más. No debe mostrar mensajes por pantalla (a no ser que específicamente lo pida el ejercicio). Esto es un principio de programación denominado principio de cohesión: cada método debe encargarse de su cometido, y no de otras cosas (como mostrar mensajes por pantalla).

Esto se extiende a todos los métodos. Cada método se encarga de una cosa.

Por otro lado, tu ejercicio no está bien resuelto. El ejercicio pedía: "Crea un método denominado comprobarDimensiones..."

Este método debe encargarse de comprobar las dimensiones. No has creado el método.

No tiene sentido que un método se llame getComprobarDiametro. get significa recuperar. El prefijo get se usa para recuperar algo, normalmente atributos de una clase. Por ejemplo getDiametro es correcto, es el método para recuperar el diámetro.

En este hilo puedes ver una solución al ejercicio: https://www.aprenderaprogramar.com/foros/index.php?topic=1214.0

Si te quedan dudas sobre algún aspecto consulta de nuevo.

Saludos

Agente_007

  • Sin experiencia
  • *
  • Mensajes: 14
    • Ver Perfil
Que tal Alex , lo acomodé y ahora si creo q está correcto...

Tengo dos dudas...

1) Al final con el uso del else, yo creo q da lo mismo colocarlo vacío q no colocarlo verdad? xq no me arrojo error cuando lo quite, aunque lo deje puesto.
2)  Cuando me dicen..."Crea un método denominado comprobarDimensiones"... yo digo bueno ... O es procedimiento set o función get... pero en este caso no lleva ningunas xq ya se modificaron y obtuvieron los atributos mas arriba en el código por lo tanto solo pongo el tipo de dato y la variable.... Pero me confunde el hecho de q una signatura no lleve ni set ni get en un método... Cómo se le llamarían a este tipo de métodos q no llevan ninguno de los dos osea, solo el indicador+tipoDato+variable??? Procedimiento también??..



Código: [Seleccionar]

public class Rueda {
    private String tipo;
    private double grosor;
    private double diametro;
    private String marca;
   
   public Rueda (){
       tipo = "";
       grosor = 0;
       diametro = 0;
       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 String getTipo () {return tipo;}
       public double getGrosor () {return grosor;}
       public double getDiametro () {return diametro;}
       public String getMarca () {return marca;}
       
       public void comprobarDimensiones (){
           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 ((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");}
           else {}
        }
    }


Gracias.

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola, ahora el ejercicio está bien resuelto. Los métodos pueden ser tipo procedimiento (void, no devuelven nada, no tienen return) o tipo función (devuelven algo, tienen return).

Los prefijos set se usan para indicar que se establece algo, y los prefijos get para indicar que se recupera algo. Por convención, setNombreAtributo se usa para establecer los nombres de atributo y getNombreDeAtributo para recupearar los atributos. El resto de métodos pueden tener el nombre que nosotros queramos, aunque a medida que vayas avanzando con el curso te irás dando cuenta de que también existen algunas convenciones. Por ejemplo cuando queremos añadir algo es común que el método empiece con add. El método comprobarDimensiones es void, no tiene return, por tanto es tipo procedimiento. No todos los métodos tienen que llevar set o get, al contrario, muchos métodos tendrán nombres diversos que no tienen por qué empezar por esos prefijos.

El else es un elemento opcional. Por tanto da lo mismo ponerlo vacío que no ponerlo, el efecto es el mismo.

Saludos y a continuar avanzando

 

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