Ver Mensaje Individual
  #10 (permalink)  
Antiguo 27/01/2009, 06:40
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

Cita:
el tema es que la navegabilidad no la conozco.
En si me parece que sí, lo que tu tienes es un buscador de Libros con diversos filtros, no un buscador de autores, por lo tanto el Libro --conoce-> Autor

Cita:
el usuario puede seleccionar escribir un titulo para conocer sus atributos, como ser autores.
Ok, un conjunto de filtros que se aplican en base a los atributos de un Libro.

Cita:
Me encuentro con el tema de navegabilidad en lo que respecta a OO y con problemas de join si hablamos de la bd, ya que hay que jugar con los inner outter, left etc, porque si busca un autor y no marcó un titulo y yo definí un inner join no va a mostrar los datos aunque existan autores
Como te comentaba al principio, depende como lo quieras hacer, si lo haces 100% OO pero la solución dependen del funcionamiento de un Modelo Relacional (base de datos), tal vez te convenga hacerlo desde esa óptica.

Lo que puedes hacer es:
  1. Capa de presentación, crear un formulario que obtiene todos los filtros
  2. Estos datos pasan de la capa de Dominio a la capa de Persistencia, donde llegan los filtros y se genera la consulta dinámica (sql).
  3. Con los datos obtenidos (array) la persistencia entrega al dominio los datos para que este construya una colección de objetos "Libro" y se la entregue a la capa de presentación.
Ten en cuenta que ya estás detectando un "foco de cambio" en el sistema, que son la creación de filtros nuevos que aún desconoces y que continuamente puede ser que se agreguen. Ahí tienes que aplicar el principio de diseño "Abierto / Cerrado" para poder "solo incorporando código nuevo" (sin modificar el código existente) obtener la extensión de la funcionalidad del buscador.

Básicamente debes abstrar en clases "Filtro" el algoritmo de búsqueda que decide si el objeto es "seleccionable" para obtener el resultado.
__________________
Blog phpsenior.com Cursos a Distancia surforce.com