miércoles, 16 de marzo de 2011

Diagramas UML y Diagramas de Secuencia

Programación Orientada a Objetos - Semana 7 - Reporte 6

Usar diagramas UML resulta bastante útil cuando deseamos programar una aplicación bajo el paradígma orientado a objetos. Dichos diagramas nos ayudan a planear, visualizar y entender la estructura de nuestra aplicación en terminos de clases y jerarquías.

Para realizar los diagramas UML utilice la aplicación UMBRELLO, esta aplicación es capaz de generar código fuente a partir de nuestro diagrama, y viceversa.

DIAGRAMA UML

Aqui les muestro el diseño actual de mi aplicación. Todo está probado, es decir, compila y se ejecuta correctamente.


En él pueden observar la estructura principal del código que estoy implementando. Hasta arriba pueden ver que todas mis clases pertenecen al paquete toBill (facturar).
Después, en el siguiente nivel pueden ver las clases que necesito para hacer funcionar mi código, tengo primeramente la clase Billing que es el módulo principal de facturación, es decir, la clase que generará la interfaz gráfica. En esta clase se implementa otra subclase llamada Proxy que es la encargada de comunicar el módulo de facturación con la base de datos.
También necesito la factura en si, que esta representada por la clase Bill, tenemos como atributos un cliente, un proveedor y una orden (Client, Supplier, Order). Y la factura hasta ahora puede calcular sus totales y descuentos, exportarse a si misma a otros formatos e imprimirse. A partir de Bill se implementas 2 subclases más, Paper (factura en papel) y Electronic (factura digital).
También se especifica a las personas involucradas en la clase Person, la cual tiene como atributos todos los datos personales del cliente y del proveedor. Como se puede ver, apartir de esta clase se implementan dos subclases más: Supplier (o proveedor) y Client (o cliente).
Siguiendo en el segundo nivel, podemos observar la clase Order la cual tiene como atributos un Item (artículo) y numItems (número de artículos). Los métodos de la clase Order permiten: agregar artículos (add()), quitar artículos de la lista (remove()) e imprimir la lista de artículos (toPrintItems()).
Por último, la clase Items es una clase nueva, que implemente al diseñar mejor mi orden como una lista, entonces esto convierte a mis artículos en nodos de una lista. Mi orden es la lista y mis artículos los nodos. Esto me facilito mucho el diseño de la factura.
Como atributos se tiene un root que es el puntero a los nodos, el código del artículo, la descripción, la cantidad y el precio.

DIAGRAMA DE SECUENCIA

Aqui les muestro el diagrama de secuencia en el cual se detalla el proceso actual que se sigue para generar una factura. De igual forma, dicho proceso esta probado y se crean objetos completamente funcionales.



Primeramente, el Usuario va a inicializar el módulo de facturación generando un nuevo objeto Billing, como aún no tengo un menú implementado, el módulo de facturación pasa directamente a la función getData() en donde se pedirán los datos del cliente uno a uno. Después se crea el objeto Client y mediante el constructor se colocan las variables en su lugar.
Despues se va pidiendo la orden, artículo por artículo. Se crea la lista Order y se pide la información de cada Item despues de generán los Items para almacenar la información pedida y a la vez ligarlos a la lista. Mediante un loop while se van pidiendo más y más artículos hasta terminar, también podemos eliminarlos.
Por último se crea una nueva factura Bill y se le envían a su constructor la orden que acabamos de crear y el nuevo cliente. Esto da forma a la factura la cual posteriormente podemos Eliminar, guardar, imprimir o exportar

Espero les haya gustado mi explicación, y le hayan entendido. A mis colegas que estamos compartiendo la misma idea del proyecto, espero que les sirva.

SALUDOS :)

1 comentario: