Ver Mensaje Individual
  #2 (permalink)  
Antiguo 30/07/2006, 04:56
Avatar de enriqueplace
enriqueplace
 
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 19 años
Puntos: 32
Cita:
Iniciado por zsamer
hola tengo una duda, no se si lo que hago es correcto.

Tengo una clase y dentro de ella necesito utilizar el objeto de otra clase (abstracion de base de datos).
Por lo que estuve leyendo, tienes dos opciones (y ya lo comenté en una respuesta reciente): puedes recibir por parámetros el objeto, o tenerlo internamente como parte de la estructura del objeto que lo usa (un atributo).

Cita:
Iniciado por zsamer
Por el momento hago lo siguiente y funciona bien, pero nose si es correcto:
definir globales en los metodos:
Agh! Nunca uses variables globales cuando trabajes Orientado a Objetos (ni siquiera cuando trabajes estructurado). Estás rompiendo una de las estrategias del la OO: el Encapsulamiento.

Si quieres leer las demás, lee el capítulo de la Wikipedia que trata el tema.

Para tu caso, puedes usar dos estrategias:
  1. Crear un objeto DB como parte del atributo de tu clase Config (y lo inicias en el constructor o en el método que realmente lo usa).
  2. Recibir por parámetros el objeto DB, creado fuera de la clase Config

Ninguna es mejor que otra, depende de tu contexto.

Pero si tuviera que dar mi opinión (ojo, no conozco tu contexto) usaría la primer opción, así la clase Config queda completamente aislada del mundo exterior (es una clase independiente externamente), y quién la usa, no debe proveerle una instancia de conexión del objeto; es un detalle interno de la clase Config que solo ella debe conocer, escondiendo la complejidad a sus clases "clientes".

Volvemos nuevamente al Encapsulamiento:
  • Modularidad - el código fuente de un objeto puede ser escrito y mantenido independientemente del código de otros objetos, de la misma forma, un objeto puede ser transferido alrededor del sistema sin alterar su estado y conducta.
  • Ocultamiento de la información - un objeto tiene una "interfaz pública" que otros objetos utilizan para comunicarse con él; el objeto puede mantener información y métodos privados serán cambiados en cualquier momento sin afectar a los otros objetos que dependan de ello.

Nota: muchas veces encuentro desarrolladores que le dan prioridad al lenguaje y a conocerse de memoria todas las funciones que este provee (como en el caso de PHP). Aquí, lo más importante, teniendo en cuenta la POO, son los conceptos alrededor de los Objetos, no las particularidades del lenguaje de turno para programarlos.

Trata de tener primero claro los conceptos básicos de la POO (una fuente puede ser la Wikipedia) y luego trata de aprender algo de UML (que facilita enormemente la abstracción), y cada vez que necesites de funciones del lenguaje, abres una solapa del navegador y buscas la función en la sección correspondiente (y no necesitas aprenderla de memoria).

Si cambias de lenguaje, podrás seguir programando OO pues los conceptos serán los mismos, pero las funciones y la sintaxis del lenguaje cambiarán, lo cual la experiencia anterior te servirá de poco.
__________________
Blog phpsenior.com Cursos a Distancia surforce.com

Última edición por enriqueplace; 30/07/2006 a las 07:59