Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Agente_007 en 24 de Abril 2016, 05:12

Título: Qué es la cohesión en un método Java significado de get prefijo método CU00636B
Publicado por: Agente_007 en 24 de Abril 2016, 05:12
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);
    }
}

Título: Re:Qué es la cohesión en un método Java significado de get prefijo método CU00636B
Publicado por: Alex Rodríguez en 26 de Abril 2016, 08:52
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
Título: Re:Qué es la cohesión en un método Java significado de get prefijo método CU00636B
Publicado por: Agente_007 en 26 de Abril 2016, 17:29
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.
Título: Re:Qué es la cohesión en un método Java significado de get prefijo método CU00636B
Publicado por: Alex Rodríguez en 29 de Abril 2016, 08:52
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