Ver Mensaje Individual
  #6 (permalink)  
Antiguo 06/06/2008, 13:59
Avatar de Lord Kazuky
Lord Kazuky
 
Fecha de Ingreso: junio-2006
Ubicación: 7F.00.00.01
Mensajes: 123
Antigüedad: 17 años, 10 meses
Puntos: 5
Pregunta Respuesta: Visibilidad de Propiedades y Metodos

Mi duda es: " ¿Para el Correcto Diseño según la Metodología de Programación orientada a Objetos es valido que dentro de una clase puedas instanciar una clase del mismo tipo y acceder a sus métodos privados?"

Naturalmente estoy de acuerdo que todo depende de como se piense y como se utilice. Pero mi duda es concretamente para el diseño.

Bueno yo creería que esto es valido siempre que NO este creando un acceso indirecto al método privado. Por ejemplo crear un método público que internamente llame a un método privado pasándole los parámetros que yo recibí del método público.

Código PHP:
private function procesoEspecialprivado($var){ ........ }
public function 
backdoor($var){ $this->procesoEspecialprivado($var); } 
O como dice Enrique:

Cita:
si tenemos todos los atributos privados y hacemos todos los métodos set y get, tenemos indirectamente un "atributo público" (ya que desde el exterior cualquiera puede modificarlo y accederlo).
Digamos una posible utilidad de poder hacer esto es si en una clase: ‘Item’ con un método Item::ConsultarItems (id)'
El cual me crea una lista con todos los objetos ítems que encuentre con un mismo ‘id’. Por cada instancia de 'Item' que el método cree, podría ejecutar métodos privados (como algunos que permitan establecer algunas propiedades). Estos métodos privados se definieron como tal para que desde 'Afuera' de la clase no pudieran ser utilizados (por ejemplo establecer esas propiedades), de todas formas 'ConsultarItems()' es un método que se encuentra dentro de la misma clase 'Item' y en ese mismo método se definen los posibles valores de los parámetros de los otros métodos ‘privados’ que se llamen.

Pero como mencione, la duda es si en un diseño "Correcto" puedo tener en cuenta este detalle o característica. También me gustaría saber si esto se podría hacer en otros lenguajes OO, pues si en todos o la mayoría se puede entonces podría pensarse que es valido.

Gracias ;)
__________________
Saludos.
"Cualquier tonto puede escribir código que un computador entiende. Los buenos programadores escriben código que los humanos pueden entender. ;)"