#73 Negativo. Lo de usar accesores públicos es para, si en algún momento cambia la implementación interna del objeto, no tener que cambiar también su interfaz (y por tanto romper todo el resto del programa que accedía a los miembros públicos.)
Eso solo pasa en los mundos de yupi. En el 99% de las veces vas a tener que cambiar código fuera de ese accesor.
E.g.: ¿qué pasa si en algún momento un miembro de tu objeto deja de existir como tal para pasar a ser un valor calculado? Si tienes el setter/getter puedes cambiar su implementación, no rompes la API, el miembro ya no existe y todo el mundo está contento.
Si no es ya un miembro el médodo que se use no se consideraría accesor pues estaría usando un algoritmo de calculo. Lo mismo soy de marte pero un accesor es un método para acceder a una variable miembro de una clase:
accesor:
getA()
{
return this.a;
}
No es un accesor:
getArea()
{
return calculaArea(blablabal);
}
me referia a un accesor público, eso rompe la encapsulación de objetos.
No. No lo hace. Si tienes un setter público es porque necesitas acceder al miembro del objeto de alguna forma. ¿La diferencia? El setter no te permite modificar el valor directamente. Es decir, no te permite "bypassear" el mecanismo impuesto por el objeto.
El setter no te permite modificarlo directamente?. Que beneficio te da un setA de un objeto.a =?
Deberia existir un método público que no haga referencia a ellos mismos del tipo getData(blablabla),setData(blablabla).
No sé si te he entendido bien. Los objetos tienen miembros de salida, si no tendríamos objetos que sólo interactúan por métodos pero son completamente ciegos a los datos de otros objetos (y si no son ciegos es porque has hecho un accesor, aunque sea más complejo que un simple return... sigue siendo un accesor.)
Te comento lo mismo, para mi un accesor solo lee/escribe la variable miembro, no realiza más operaciones.