Buenas,
En primer lugar yo creo que esta pregunta debería ir en el foro OOP.
En segundo lugar, voy a dar mi simple opinión como novato de la OOP :P así que mil disculpas si no es acertada.
De las opciones, yo elegiría la opción B o C. Son las que cumplen según mi parecer con la OOP.
Aunque creo que me quedaría con la opción B. ¿Me equivoco? Qué algun experto responda :P
Cita: Vale, ahora vamos a la segunda parte. Nos quedamos con la clase User y nos olvidamos de Empleados, Clientes ...
Un usuario se guarda en la tabla Usuarios de la BD. Supongo que de alguna forma debería heredar de otra clase cómo guardar y extraer la info de la BD. En el fondo haríamos algo como User->LoadByNick("nickname"), o bien User->Save()
¿ como hacerlo independiente de tipo de BD o formato ? Si en vez de usar Mysql quisiera grabar en un fichero ascii ? Debería heredar ? o bien obtener de una variable mas global el objeto "storage" y que este manejara si es una BD o un fichero ascii ...
Con
PDO o
adodb puedes hacer que tu código trabaje para MySQL, Postgre, etc.
Cita: Teniendo en cuenta que la clase User sólo contiene la información de un usuario ¿ hay que hacer una clase por encima que sea UsersList ?
La clase User debería de tener todo lo concerniente a un usuario. Sus datos personales, actividad, etc. Luego, podrías crear una clase llamada Usuarios, que sirva a nivel general y, ahí, introducir métodos como por ejemplo listar todos los usuarios, filtrar por X, etc.
Un saludo,