Ver Mensaje Individual
  #8 (permalink)  
Antiguo 26/01/2009, 11:29
Avatar de enriqueplace
enriqueplace
 
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 19 años
Puntos: 32
Respuesta: Busqueda cuando se trata de poo

Que tal Moron

Cita:
Por ejemplo, necesito todos los libros del autor josé.
Como primera puntualización, si es un sistema OO deberían existir -por lo menos- los objetos involucrados en el problema, es decir, Autor y Libro.

Luego es un problema de paradigmas distintos, por un lado OO y por otro DER/MER, y cual es la filosofía, si aprovechamos el poder de la base de datos en detrimento de un sistema 100% POO o no nos importa la base de datos y queremos un sistema 100% POO consistente en todas sus capas.

Cita:
a: Voy a la base de datos y me traigo todos los libros con sus correspondientes autores y busco en todos los objetos libros cual de ellos tiene como autor a josé.
Más que un tema de OO, es un tema de lógica en la resolución. Si quieres los libros del autor "José", en sí la navegación está definida: debes poder saber primero el nombre del autor para preguntar por sus libros.

Código PHP:

$autor 
= new Autor('José');

foreach(
$autor->getLibros() as $libro){
   echo 
$libro;

Distinto sería si tienes un conjunto de libros y poder saber a quienes pertenecen (distinta navegación).

Código PHP:

$libros 
Libro:getAll();

foreach(
$libros as $libro){

   if(
$libro->getAutor()->getNombre() == 'José'){
      echo 
$libro;
   }

El punto está en "la letra del problema que quieres resolver", tratando de definir la navegación según tus necesidades y evitar al máximo tener "bidireccionalidad" entre los objetos: Libro -> Autor y Autor -> Libro (debes decidir por una sola).

Cita:
b: voy a la base de datos y busco mediante el motor de la base de datos a josé y genero los objetos libros en función de la relación josé -->libro
Tu capa de persistencia debe poder obtener los datos de los libros filtrados por el autor, pero en algún momento tu dominio debería convertir los datos en objetos.






Lo ideal es ver todo el tema de diseño y relaciones a través de un diagrama UML.
__________________
Blog phpsenior.com Cursos a Distancia surforce.com