[Php-objetos] Me olvidé de una cosa! Re: Posible tesis?

Leonardo Tadei - Pegasus Tech Supply leonardot en pegasusnet.com.ar
Dom Feb 22 20:27:40 ARST 2009


Hola Gerardo,

El dom, 22-02-2009 a las 18:33 -0300, Gerardo Valiani escribió:
>         >         lo que describís es un sistema de hace 15 años de
>         Apple que se
>         >         llama(ba) FileMaker... en la parte de usar
>         "literatura y
>         >         sistemas
>         >         existentes" para entender el dominio del problema,
>         podrías
>         >         buscar por
>         >         ese lado.
>         >
>         > Si, me imagines que alguien ya lo habrian hecho. No es nada
>         nuevo.
>         
>         
>                No, lo que no significa que una versión PHP no sea una
>         buena
>         implementación de una idea que estaba buena, pero cayó en
>         desuso.
> 
> Ahora que veo el FileMaker, me doy cuenta. Estoy haciendo lo mismo.
> Ja! 

	También podés desmoralizarte más, y pensar que estás haciendo MS
Access ;-)
	Te remití al FileMaker porque es la idea original. Casi todo lo demás
fueron imitaciones y hubo unas pocas vueltas de rosca interesantes.


>                Entiendo tu entusiasmo pero es injustificado.
>                El sistema que planteás resuelve problemáticas de uso
>         cotidiano, al
>         igual que MS Access lo hace. Sin embargo cuando hace falta un
>         sistema
>         con un ínfimo grado de complejidad que solo hacer ABML de
>         tablas, hace
>         falta llamar a alguien de sistemas.
>         
>                Una cosa ínfima que todo sistema precisa es informes y
>         totalizadores.
>         Podrá tu sistema de esta forma basada en formularios dar
>         saldos de Cta
>         Cte de Clientes? Defino "el conjunto de datos" de Clientes
>         (nom, ape,
>         dir), defino el de Movimientos de Cuenta (cliente, fecha,
>         debe, haber)
>         Cómo sé cuánto me debe un cliente?
> 
> 
> Y si le agrego un sector de "Crear informes"? Donde haya soluciones
> prefabricadas?

	A ver...

> Voy a crear informes y digo del objeto "Cta Cte" voy a aplicarle la
> solucion prefabricada llamada "Devolver Saldo por cliente" u otra
> solucion "Devolver Saldo Total". Y a esta solucion le digo este es el
> debe y este es el haber. Para que sepa que sumar y a que restar.

	Ahh!!! Pero esto es agregar semántica propia del comportamiento de una
Cuenta Corriente!!!
	Violás la idea de "no me importa lo que se guarde", que refinada quedó
"el usuario debe definir cualquier forma y _sin_saber_cual_es_ de
antemano todo tiene que funcionar.

	En tu ejemplo, además del debe y el haber tenés que conocer el criterio
de agrupación... al final va a ser más fácil aprender SQL que a usar tu
sistema !  }:->

>  Seria como que tengo metodos prefabricados y los adhiero a objetos
> existentes. Con el futuro se prodrian descargar como pluggins que
> serian mas metodos.

	Creo que entiendo la idea, pero hasta ahora todos tus objetos heredan
de "Tabla", entonces para que el pluggin funcione tenés que hacerlo o
para un subclase en particular, lo que significaría que ahora el usuario
no puede poner cualquier nombre a las cosas, o ponerlo en la superclase,
con lo cual todos, incluso los que no tienen debe y haber podrían querer
calcular el saldo...

	Todo esto al final significa que sí te van a importar las cosas que el
usuario cree...

> Y asi ir creando soluciones a problemas recurrentes. Lo digo un poco
> por arriba. Seguro que hay situaciones mas complejas. Si lo que te
> plantie es viable, tirame otro ejemplo para ver problemas que no se me
> ocurren.

	Te tiro algunos rápidos del sistema de la biblioteca que modelamos la
clase pasada:

* Socios con cuota al día.
* Socios que pueden retirar.
* Libro más retirado (por socio).
* Libro más retirado (por cantidad de días).
* Libros retirados por un socio.
* Socios que retiraron un libro.
* Promedio de retiros por mes.
* Ranking de socios que más retiran.
* Libros más retirados según membresía del socio.

	y me estoy ateniendo al enunciado, porque si le agregamos cobranzas
aparecen más todavía.

>                Por otra parte, lo que querés hacer es un sistema.
>         Sería otro el
>         planteo si me dijeras que querés hacer una herramienta para
>         usar como
>         programador, que resuelva la parte trivial y repetitiva de una
>         aplicación, como son los ABML... pero esto es estar pensando
>         "híbrido"
>         porque pensar en los ABML es pensar en Tablas, pero vistas
>         como Objetos,
>         con lo cual volvemos al PHPMyAdmin, pero con una interfaz más
>         simple
>         para ver y un buscar.
>         
>                Si pensás en Tablas, no hay modelo que no sea el modelo
>         relacional...
> 
> Si, es cierto. Ya me convenciste. Con lo de crear informes. Son
> totalmente utiles y necesarios. Si no los hay, el sistema es un
> phpmyadmin.

	Y eso que me estaba guardando el plantearte el tema de la carga de
datos que implique a varios "conjuntos de datos" a la vez que no sean 1
a 1.
	(para una Agenda en que cada contacto tiene varios teléfonos y varias
direcciones posibles por ejemplo)

> No quiero incistir demaciado en el tema. No pretendo sacar oro de una
> pera. Decime que te parece lo de "soluciones prefabricadas" que
> comento antes. Si no te parece bueno. Vos te habras dado cuenta mas o
> menos para que lado quiero correr. 

	Lo de las soluciones prefabricadas habría que seguirlo analizando. Con
lo que me tiraste no me alcanzo a formar una opinión completa, pero como
te digo arriba si la solución pasa por una semántica determinada para
una estructura concreta, te desviaá de la idea original.

> El planteo que habia hecho al principio sobre esta "Intranet" para el
> laburo, es simplemente el phpmyadmin como ya me mencionaste. No lo veo
> muy rico. Con la falta de informes, el sistema termina siendo nada
> flexible. 

	Bueno, si lo acotamos al problema de la intranet para el laburo,
seguramente habrá algunas ideas y conceptos interesantes para modelar, o
al menos una relación intrincada entre las partes, que no es poco.

	Además, siendo el PHPmyadmin GPL, no es difícil sacarle cosas y que se
vea como un ABML. 

> Tenes alguna sugerencia o modificacion?

	Más o menos...
	Creo que a lo que apuntás con "una herramienta que me sirva para otra
cosa después" en un mail anterior, sería un framework o al menos una
jerarquía de clases que puedas especializar para cada caso y armar más
rápido estos benditos ABM.
	En un MVC, podés fácilmente hacer al V resusable (datos tabulados
paginables por ejemplo) y esto serviría para cualquier colección que
respete un protocolo dado.
	Fijate que este enfoque permite que tu modelo sea el necesario para
cada problema, y tenés resuelto el cómo mostrar la mayoría de los datos.

	Además, te estás olvidando de algo... la potencia del reuso, es reusar
ideas, no código!

	A nivel de objetos esto será siempre más rico. Igual hacer un FileMaker
tiene sus vueltas interesantes, pero las complejidades son más de
implementación que de modelado.

> Quiero hacer algo interesante y a la vez desafiante. Pero no encuentro
> una buena idea.

	Dado que "interesante" y "desafiante" son subjetividades, no te
podremos ayudar mucho con esto...
	Si te sirven de inspiración, las tesis que propuse tienen todas
dificultades de modelado interesantes.
	Dado que esto es un curso, que tiene el objetivo de que se aprenda
mucho, tal vez sea bueno buscar algo para "aprender mucho". Para mi
aprender es interesante, y entender bien las cosas que aprendo es un
desafío... los ejercicios o sistemas hechos para llegar a eso objetivo
son solo el camino, no el fin.

	Saludos!

-- 
Leonardo Tadei
leonardot en pegasusnet.com.ar
http://blog.pegasusnet.com.ar
Firma pública: http://www.pegasusnet.com.ar/LeonardoTadei-public.key



Más información sobre la lista de distribución Php-objetos