Así se desarrolla en Smalltalk II |
Recopilado por Germán S. Arduino |
De: "Alejandro F. Reimondo"
Fecha: Mar Oct 22, 2002 10:38 am
Asunto: Re: [objetos] clasificacion
Hola Pablo,
Creo que los problemas se te presentan al querer definir las clases antes de
tener el sistema.
Comenzá construyendo partes del sistema según tu interés, no intentes definir el
sistema con toda precisión ni detalle; construilo "inocentemente" y dandole
tiempo para que el sistema vaya cambiando.
Para comenzar, elegí un objetivo (poco ambicioso), y escribí en un workspace
como te gustaría hacerlo..., imaginate que tenes escritas todos los mensajes y
clases necesarias... luego empeza a construir las partes que son necesarias para
poder evaluar la expresión de partida.
naturaleza en si de Comprobante sino al contexto (Si es de venta o de compra) en que ese comprobante fue emitido/ingresado al sistema.
Modelar el contexto es mas importante que modelar los objetos que participan.
En un sistema como el que comentas es muy importante definir los contextos del
sistema y a partir de ellos estudiar que objetos participan.
No es apropiado pensar alobjeto "en el aire", sino en función de su rol en los
contextos que participan.
Es posible que al comienzo esto te parezca una forma compleja de resolver el
problema, pero con el tiempo espero que puedas valorar su poder. Por ejemplo,
cuando puedas agregar/sacar/modificar contextos dinámicamente en tu sistema y
aplicar políticas a los contextos... es decir, cuando el sistema te quede en
objetos que colaboran en distintas situaciones y no en su código.
Date tiempo y dale tiempo a tu sistema para que pueda mejorar; no intentes
pensarlo bien, arremangate y construí partes del sistema, luego, sentate y
fijate como anda, estudialo y cambia lo que veas que "esta fijo", rústico, o no
sea apropiado.
suerte,
Ale.
From: Pablo Digonzelli
To: smalltalking@gruposyahoo.com.ar
Sent: Saturday, October 19, 2002 10:26 PM
Subject: [objetos] clasificacion
Hola a todos !!!!
Despues de mucho tiempo de ser basicamente lector de la lista y de estudiar
smalltalk, me decidi a desarrollar una aplicacion. Existen gran cantidad de
cosas que no estoy seguro como voy a resolver, pero creo estar lo
suficientemente maduro (en smalltalk , ya que tengo 41) como para empezar.
Si bien considero a Smalltalk excelente, no se si es adecuado para desarrollar
sistemas comerciales tipo E.R.P. ( esto es deudores , proveedores , stock ,
contabilidad , bienes de uso , etc ). Pese a todas mis dudas decidi empezar.
Seleccione Dolphin del cual tengo la version full o profesional.
Enfocandome en Deudores y Proveedores , empiezo definiendo la clase Comprobante.
Ahora bien , con este Objeto empiezan grandes dudas acerca de criterios de
clasificacion. Me explico:
Un comprobante (esto es Factura , Notas de Credito , Notas de Debito , Ajustes ,
etc) puede puede ser generado por mi (facturando por ejemplo, esto es Deudores )
o ser recibido por mi (al comprar algo por ejemplo , esto es Proveedores). En
ambos casos los comprobantes son identicos es decir :
"Todo comprobante tiene un numero que esta definido por su punto de venta mas un
numero secuencial que indica el orden del mismo dentro de este punto de venta"
Ejemplos: 0001-00000001
"Todo comprobante tiene uin importe total que es el importe sin impuestos mas
todos los impuestos que correspondieren de acuerdo a la categoria impositiva del
que emite el comprobante y del que lo recibe. De acuerdo a esto ultimo un
comprobante puede ser A , B , C o X". Por lo tanto puede tener neto , iva ,
ingresos brutos ,etc.
"Un comprobante puede tener naturaleza contable o no ." Es decir se contabiliza
o no .
"Todo comprbante tiene un saldoque debe ser mayor o igual a cero".
Que quiero decir con esto?. Que desde el punto de vista de su conformacion , un
comprobante de Deudores o Proveedores es igual. Pero a la hora de verlos desde
el punto de vista contable o de cuenta corriente son diferentes. Esto es: una
factura emitida por mi a un cliente genera un credito a mi favor (es decir
alguien me debe) y una factura recibida por mi genera un debito contra mi (es
decir le debo a alguien). O sea se invierten los signos.
Ademas si es contable estara incluido en un asiento contable .
Cuando quiero definir mi jerarquia de objetos se me ocurren por lo menos tres
posibilidades:
Comprobante -> Factura , NotaDeCredito , NotaDeDebito, AjusteDeCredito->DeCompra,DeVenta->Contable,
NoContable
Comprobante-> DeCompra (proveedores), DeVenta( Deudores) -> Factura,
NotaDeCredito, etc->Contable,NoContable
Comprobante -> Contable,NoContable->DeCompra,DeVenta,etc
Por mas que lo analizo, ninguna de estas opciones me conforma. De acuerdo a la
clasificacion que realice, siempre tengo que repetir metodos que no hacen a la
naturaleza en si de Comprobante sino al contexto (Si es de venta o de compra) en
que ese comprobante fue emitido/ingresado al sistema.
Ademas , un comprobante contable o no contable son exactamente iguales, difieren
solamente en el hecho de si sera contabilizado o no.
Con este comentario me gustaria discutir ideas acerca de como debe ser
clasificado un sistema de estas caracteristicas. Si alguien quiere discutir esto
en la lista estoy a entera disposicion.
Saludos
Pablo