Ver Mensaje Individual
  #6 (permalink)  
Antiguo 19/08/2011, 07:45
drieran
 
Fecha de Ingreso: agosto-2011
Mensajes: 3
Antigüedad: 13 años, 3 meses
Puntos: 3
Respuesta: Object Oriented en la cruda realidad

Ok. Gracias por vuestros comentarios. Deduzco que se hace como cada uno le venga en gana.
Analizando y buscando a fondo, y teniendo como referencia buena este enlace de IBM http://www.ibm.com/developerworks/xml/library/os-php-flexobj/ , creo, deduzco que la programacion OO en estos casos debería ser la opción B:

class Persona {
$id
$nombre
$direccion
$foto
...
}

class Usuario extends Persona {
$nick
$password
...
}

class Cliente extends Persona {
$direccion_entrega
$habitual
...
}

Para la implementación de una BD o similar, creo que debería ser un wrapper a un PDO o AdoDB o cualquier cosa algo como:

class Storage extends PDO {
Insert()
Update()
Delete()
}

de esta forma, puedo utilizar cualquier implementación de BD, o de sockets, o de cualquier modo de guardar información. Supongo en que en fondo sería:

class Persona extends Storage {
Insert() {
...
parent::Insert(...);
...
}
}


Pero me queda la tercera, que aun dudo como hacerlo en el concepto de OO. Si yo quiero listar todos los clientes que tengo puedo hacerlo de la forma A ó B:

a)
class Clientes {
Query(...) { Storage->Query("SELECT * FROM Clientes ..." }
Next() {
...
$Cliente = new Cliente(id)
...
return $Cliente
}

}

b)
class Cliente extends Persona {
$direccion_entrega
$habitual
...
Query() {}
Next() {
$this->id = storage->id;
$this->name = storage->name;
...
}


De la forma a) no me gusta que Clientes acceda a la BD independiente de Cliente
De la forma b) no me gusta aplicar el concepto clientes si la clase es cliente.

Argh! Gracias de nuevo por vuestras aportaciones.