Duda getters

Iniciado por HastatusXXI, 15 Agosto 2016, 17:30 PM

0 Miembros y 1 Visitante están viendo este tema.

HastatusXXI

Hola.

Tengo una pequeña duda con un código de un libro que estoy leyendo de desarrollo de Android, pero el problema que tengo es simplemente de Java. El código es el siguiente:

Código (java) [Seleccionar]

public class Workout {
    private String name;
    private String description;

    public static final Workout[] workouts = {
            new Workout("The Limb Loosener",
                    "5 Handstand push-ups\n10 1-legged squats\n15 Pull-ups"),
            new Workout("Core Agony",
                    "100 Pull-ups\n100 Push-ups\n100 Sit-ups\n100Squats"),
            new Workout("The Wimp Special",
                    "5 Pull-ups\n10 Push-ups\n15 Squats"),
            new Workout("Strength and Length",
                    "500 meter run\n21 x 1.5 pood kettleball swing\n21 x pull-ups")
    };

    //Each workout has a name and a description
    private Workout(String name, String description) {
        this.name = name;
        this.description = description;
    }

    public String getDescription() {
        return description;
    }

    public String getName() {
        return name;
    }

    public String toString() {
        return this.name;
    }
}


Mi duda está en la diferencia entre el método getName() y el método toString(). Según lo que tenía entendido hasta ahora, el toString daría el nombre de un objeto Workout ya instanciado (por el this) ¿Alguien me puede aclarar esto?

engel lex

(si funciona como c)

name te dará como retorno el valor de una variable global llamada name... this.name te dará el valor de la variable name en esta clase... lo que no tenga "this" referenciará a globales, cualquier interno necesita el this para se llamado
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

+ 1 Oculto(s)

si estas programando en POO entonces no deberas abusar de setter y getters

http://stackoverflow.com/questions/9416245/how-to-avoid-getters-and-setters

HastatusXXI

Cita de: engel lex en 15 Agosto 2016, 18:35 PM
(si funciona como c)

name te dará como retorno el valor de una variable global llamada name... this.name te dará el valor de la variable name en esta clase... lo que no tenga "this" referenciará a globales, cualquier interno necesita el this para se llamado

Entiendo que al decir variable global name te refieres a una definida fuera de la clase. El caso es que el getter (sin this) devuelve el valor del atributo name del array de tipo Workout indicado, por ejemplo:
println(workouts[0].getName()) imprimiría por pantalla "TheLimbLoosener". Cabe decir que en el libro se define el método toString() (con el this), pero, al menos de momento, no se ha usado. De todos modos, mi duda sigue siendo respecto al uso o no del this.

HastatusXXI

Cita de: rn3w en 15 Agosto 2016, 18:48 PM
si estas programando en POO entonces no deberas abusar de setter y getters

http://stackoverflow.com/questions/9416245/how-to-avoid-getters-and-setters

Grosso modo según he visto más o menos es por tema de seguridad, ¿no? Pero no todo el mundo los desaconseja, por lo que veo, si no que hay que distinguir bien en qué situaciones hay que usar uno de los dos, ambos, o ninguno, no poner sistemáticamente setter y getter a todas las clases, ¿no?

+ 1 Oculto(s)

 :-X :-X :-X

por ahi lei pero no encuentro donde...... ;D ;D que los setters y getters contradicen a alguno de los principios de SOLID

aca una lectura de solid...... ;-) ;-)
https://scotch.io/bar-talk/s-o-l-i-d-the-first-five-principles-of-object-oriented-design


saludos ::)

Juanfernandez0032

Hola, yo mas que respuestas tengo dudas  ;D ;D ;D ;D

La siguiente linea no seria el constructor de la clase ???

private Workout(String name, String description)


un constructor puede ser private ?



HastatusXXI

Cita de: rn3w en 15 Agosto 2016, 21:45 PM
:-X :-X :-X

por ahi lei pero no encuentro donde...... ;D ;D que los setters y getters contradicen a alguno de los principios de SOLID

aca una lectura de solid...... ;-) ;-)
https://scotch.io/bar-talk/s-o-l-i-d-the-first-five-principles-of-object-oriented-design


saludos ::)

Ni siquiera conocía SOLID. Nunca he programado en POO, solo aprendí un poco con Python y Java solo lo he trabajado en el paradigma imperativo. Me veo forzado a utilizar POO para aprender a desarrollar para Android. Gracias  :D

+ 1 Oculto(s)

hola acabo de leer tu mensaje, si entiendes solid de a poco estaras programando en POO, yo personalmente solo aplique S.O y D los otros 2 principios no les entendi muy bien,  :P :P :P