Comunidad de diseño web y desarrollo en internet online

[Pregunta] - Diferencias entre Get/Set y Public

Citar            
MensajeEscrito el 31 Ene 2014 07:44 am
Hola amigos, quería hacerles una pregunta ¿Alguien podría explicar la diferencia entre éstos metodos/funciones (get-set) y la variable public?.

Seguramente alguno me direccionara al Google. Pero he investigado no llego acá sin preguntar, la respuesta que vi fue ésta:

Métodos descriptores de acceso (captador y definidor)
Las funciones descriptoras de acceso get y set, también denominadas captadores y definidores, permiten implementar los principios de programación relacionados con la ocultación de información y encapsulación a la vez que ofrecen una interfaz de programación fácil de usar para las clases que se crean. Estas funciones permiten mantener las propiedades de clase como privadas de la clase ofreciendo a los usuarios de la clase acceso a esas propiedades como si accedieran a una variable de clase en lugar de llamar a un método de clase.

Pero sigo sin ver diferencia. En una clase puedo hacer dos cosas:

1)

Código Flex :
public class miClase
public var variableNecesaria;

y llamarla desde otra clase por ejemplo Main

Código Flex :
public class Main
miClase.variableNecesaria;

2)

Código Flex :
public class miClase
private var _variableNecesaria:Boolean;

public function get variableNecesaria():Boolean{
return _variableNecesaria;
}

y llamarla desde la otra clase de la misma manera que antes

Código Flex :
public class Main
miClase.variableNecesaria;


Calculo que el tema debe venir por tener variables privadas en la clase, pero igual las estaría pudiendo obtener desde cualquier lado que llame a esta clase.

¿Sugerencias o algún ejemplo práctico?

Saludoss!

Por jasinski

5 de clabLevel



 

chrome
Citar            
MensajeEscrito el 31 Ene 2014 04:51 pm
Hola,
en primer lugar usando getters y setters la variable no es accesible desde fuera de la clase. De este modo, por ejemplo, si tienes una variable que sólo debería tomar valores del 0 al 100 (vamos, hacer una validación de la variable), si usas una variable public puedes asignarle otro valor diferente, lo cual produciría algún error en tu programa. Usando set, en la propia función set puedes gestionar el que la variable esté en el rango válido.

Otro ejemplo de las ventajas de usar get y set es que puedes crear variables de sólo lectura o escritura. En el código que has puesto sólo está definida la función get, pero no set, de modo que sólo podrás leer el valor de la variable de esa instancia que has creado, pero no se puede cambiar su valor desde fuera de la clase.

Otra ventaja es que si creas instancias de esa clase en múltiples lugares, y quieres hacer un trace de los valores de variableNecesaria en todas las instancias, si usas una variable public tendrías que buscar todas las asignaciones del valor de la variable en todas las clases y poner el trace en todos los lugares, mientras que con el set sólo tendrías que ponerlo una vez dentro de la función set (aunque más o menos es como lo de la validación que he puesto en primer lugar).

No se me ocurren más ejemplos, pero seguro que los hay ...

Por isidoro

Claber

498 de clabLevel

2 tutoriales

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 31 Ene 2014 08:42 pm
Muchisimas gracias Isidoro por la respuesta, tenía la idea básica pero había cosas que tenía medio confusas, ahora con tu explicación me queda mucho mas claro todo !

Por jasinski

5 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.