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:
- 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).
- 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.