5
Página 1 de 5 Pontificia Universidad Javeriana Departamento de Ingeniería de Sistemas Programación Orientada a Objetos Proyecto 2 El objetivo de este proyecto es la implementación en Java de un problema real cuya solución utilice el paradigma orientado por objetos. Dado el éxito de la aplicación creada por ustedes para la cooperativa JaviPyME, su represetante legal ha decidido contratrarlos nuevamente para realizarle algunas mejoras, en especial, el manejo y clasificación de sus clientes. Recordemos que JaviPyME es una organización sin ánimo de lucro que agrupa un conjunto de PyMEs manufactureras dedicadas a diferentes actividades con el fin de que éstas obtengan más y mayores beneficios. Por ejemplo, una PyME puede aliarse con otra(s) perteneciente(s) a JaviPyME para cumplir pedidos que ella sola no sería capaz de proveer en determinadas circunstancias. Entre las circunstancias podemos citar los tiempos de entrega, el volumen del pedido, materiales a ser utilizados, etc. De una PyME nos interesa conocer su razón social, representante legal, actividad (calzado, alimentos, textiles…) y sus productos. De cada producto se tiene el nombre (común para todas las PyMES que lo produzcan), existencia en inventario, existencia mínima permitida, costo de fabricación y costo de venta. El pedido de un cliente contiene un conjunto de ítems, donde cada ítem se caracteriza por el nombre del producto, la cantidad solicitada y si el cliente se lo pide a una(s) PyME(s) específicas (este campo es opcional). Al hacerse el pedido se valida si la(s) PyME(s) cuentan con la existencia de cada ítem y si es así, se disminuye dicha cantidad en el inventario del producto. Se debe informar al cliente sobre los ítems de los que no se cuente con la existencia suficiente en ese momento e indicarle si a nivel de la cooperativa puede ser satisfecho (es decir, si la PyMe puede aliarse con otra para cumplir con el pedido). Adicionalmente, el sistema debe generar un informe por cada pedido de un cliente. Dicho informe debe contener los datos del pedido del cliente (antes mencionados). Cada producto solicitado debe aparecer con su valor de venta y al final debe aparecer el valor total de su pedido (lo cual facilita el hecho de generarle la cuenta al cliente). Puede presentarse que a nivel de alianzas haya una parte del pedido de un ítem sea a un precio y otra a otro, de acuerdo con el valor del producto en cada PyME. El sistema debe manejar y registrar los clientes que le hacen pedidos. El administrador de JaviPyME ha decidido clasificarlos en una de estas tres categorías: Los clientes fundadores son quienes comenzaron a comprarle a JaviPyME desde sus inicios. Dichos clientes tienen un identificador que los distingue como fundadores. Estos clientes tendrán el derecho de comprar los productos de la cooperativa al costo de fabricación más un 5%. En el caso en el que el costo de venta sea menor, se le venderá el producto a este precio y se le hará un descuento del 15% sobre el valor total del pedido.

Pontificia Universidad Javeriana Departamento de ...acarrillo/POO/Proyecto-POO-2008-1... · Página 3 de 5 7. Consultar la existencia de un producto a nivel de la cooperativa. Se

  • Upload
    lyduong

  • View
    214

  • Download
    0

Embed Size (px)

Citation preview

Página 1 de 5

Pontificia Universidad Javeriana

Departamento de Ingeniería de Sistemas

Programación Orientada a Objetos

Proyecto 2

El objetivo de este proyecto es la implementación en Java de un problema real cuya solución utilice el

paradigma orientado por objetos.

Dado el éxito de la aplicación creada por ustedes para la cooperativa JaviPyME, su represetante legal ha

decidido contratrarlos nuevamente para realizarle algunas mejoras, en especial, el manejo y clasificación

de sus clientes. Recordemos que JaviPyME es una organización sin ánimo de lucro que agrupa un

conjunto de PyMEs manufactureras dedicadas a diferentes actividades con el fin de que éstas obtengan

más y mayores beneficios. Por ejemplo, una PyME puede aliarse con otra(s) perteneciente(s) a JaviPyME

para cumplir pedidos que ella sola no sería capaz de proveer en determinadas circunstancias. Entre las

circunstancias podemos citar los tiempos de entrega, el volumen del pedido, materiales a ser utilizados,

etc.

De una PyME nos interesa conocer su razón social, representante legal, actividad (calzado, alimentos,

textiles…) y sus productos. De cada producto se tiene el nombre (común para todas las PyMES que lo

produzcan), existencia en inventario, existencia mínima permitida, costo de fabricación y costo de

venta.

El pedido de un cliente contiene un conjunto de ítems, donde cada ítem se caracteriza por el nombre del

producto, la cantidad solicitada y si el cliente se lo pide a una(s) PyME(s) específicas (este campo es

opcional). Al hacerse el pedido se valida si la(s) PyME(s) cuentan con la existencia de cada ítem y si es

así, se disminuye dicha cantidad en el inventario del producto. Se debe informar al cliente sobre los

ítems de los que no se cuente con la existencia suficiente en ese momento e indicarle si a nivel de la

cooperativa puede ser satisfecho (es decir, si la PyMe puede aliarse con otra para cumplir con el

pedido). Adicionalmente, el sistema debe generar un informe por cada pedido de un cliente. Dicho

informe debe contener los datos del pedido del cliente (antes mencionados). Cada producto solicitado

debe aparecer con su valor de venta y al final debe aparecer el valor total de su pedido (lo cual facilita el

hecho de generarle la cuenta al cliente). Puede presentarse que a nivel de alianzas haya una parte del

pedido de un ítem sea a un precio y otra a otro, de acuerdo con el valor del producto en cada PyME.

El sistema debe manejar y registrar los clientes que le hacen pedidos. El administrador de JaviPyME ha

decidido clasificarlos en una de estas tres categorías:

Los clientes fundadores son quienes comenzaron a comprarle a JaviPyME desde sus inicios.

Dichos clientes tienen un identificador que los distingue como fundadores. Estos clientes

tendrán el derecho de comprar los productos de la cooperativa al costo de fabricación más un

5%. En el caso en el que el costo de venta sea menor, se le venderá el producto a este precio y

se le hará un descuento del 15% sobre el valor total del pedido.

Página 2 de 5

Los clientes especiales son aquellos que tienen una cierta antigüedad y cuyo valor en pedidos es

uno superior a uno dado como parámetro. A estos clientes se les da una tarjeta especial (con un

identificador) con la que en Marzo, Junio Septiembre y Diciembre se les hace un descuento del

15% sobre el total de sus pedidos.

Los clientes gana-puntos tienen una tarjeta especial en la cual se acumula un punto por cada

$2000= pesos en compras. Al final de cada bimestre se le envía a su dirección de

correspondencia un bono redimible en productos de la cooperativa y se borran los puntos. El

valor de dicho bono se calcula, teniendo en cuenta dos valores v1 y v2 (dados como parámetro)

así: Si el cliente ha acumulado menos de v1 puntos, se le da un bono por $15.000. Si tiene entre

v1 y v2 puntos, se le da un bono de $40.000 y si tiene más de v2 puntos se les da un bono de

$100.000. En el caso en el que tenga acumulado en puntos 2 veces el valor de v2 o más, se le

obsequia adicionalmente una ancheta de productos de JaviPyMe en diciembre.

Dentro de los servicios ofrecidos por el sistema de manejo JaviPyME están:

1. El sistema debe ofrecer un menú de opciones (a través de una interfaz texto) que permita al administrador ser provisto de los servicios que se describen del numeral 2 al 11. Se debe incluir una opción de terminar y que haga que la cooperativa persista (Enviar la información al archivo “JaviPyME.dat”). Al iniciar se debe proveer al usuario la posibilidad de cargar o no la cooperativa de un archivo (“JaviPyME.dat”)

2. Asociar una PyME a la cooperativa JaviPyME: para esto, el sistema solicita al administrador de la

cooperativa los datos de la PyME (es decir, razón social, representante legal, actividad y sus

productos). 3. Crear un producto: El sistema solicita al administrador, el nombre del producto y por cada PyME

que lo fabrica (de la cual se da su nombre) se solicita la existencia mínima permitida, existencia en inventario, valor de fabricación y valor de venta.

4. Crear un cliente con su identificación y nombre. El sistema debe verificar que el cliente no exista, en cuyo caso debe desplegar un mensaje de error.

5. Hacer un pedido(s) por parte del cliente y calcular el valor de cada pedido y el total general de todos los pedidos. Se debe generar por cada pedido una factura y una cuenta que aglomere todas las facturas. El sistema debe desplegar una lista con los clientes, desde la cual se debe seleccionar el cliente que hace el pedido. El sistema requiere los productos que el cliente solicita (nombre, cantidad y de manera opcional, a la(s) PyME(s) a la(s) que se le(s) hace el pedido). La información sobre los productos solicitados por el cliente debe ser cargada de un archivo texto llamado “pedido-nomcliente.txt”. Así mismo se debe generar un informe con los datos del pedido del cliente con su valor de venta (que incluso puede variar para el mismo producto) para luego poderles mostrar su cuenta. La cuenta tiene el nombre del cliente y por cada línea, la cantidad del producto, su nombre, su valor unitario de venta y el total de venta de este producto. Al final debe mostrarse el total de la cuenta y generarse un archivo texto (“cuenta-nomcliente.txt”). Vale la pena resaltar que el total de la cuenta depende también del tipo de cliente.

6. Modificar la existencia de un producto, dado su nombre. Se debe desplegar una lista de los productos existentes y su existencia y luego, el usuario selecciona un producto de dicha lista e introduce el valor de la nueva existencia.

Página 3 de 5

7. Consultar la existencia de un producto a nivel de la cooperativa. Se pide el nombre del producto y se obtiene la existencia actual, la PyME y la cantidad mínima permitida de dicho producto. Se debe generar un archivo texto con este informe llamado “nomproducto.txt”

8. Consultar el inventario de todos los productos manejados por el sistema, dando el nombre, la existencia mínima, la existencia actual, el valor de adquisición, el valor de venta y la(s) PyME(s) que lo produce(n). La consulta anterior debe desplegarse en pantalla, también se debe ofrecer al usuario la posibilidad de crear un archivo texto “inventario.txt”.

9. Consultar todas las PyMEs que se dedican a la misma actividad. 10. Consultar todas las PyMEs que producen el mismo producto. 11. Generar los bonos de los clientes gana-puntos.

a. Se debe desplegar en pantalla el nombre del cliente y el valor del bono b. Se debe desplegar en pantalla al final, el total de todos los bonos de los clientes

Página 4 de 5

1. Fecha

La entrega se hace a través del buzón de transferencia digital del sistema de aprendizaje UVirtual

(BlackBoard) a más tardar el día 5 de mayo de 2008 hasta las 23h59 p.m.

Entregas posteriores a esta fecha no serán tenidas en cuenta.

Si realiza varias entregas en el sistema, sólo se tendrá en cuenta la primera entrega.

2. Grupos

La entrega se realizará en grupos de trabajo de máximo 2 personas. Los grupos no podrán cambiar su

conformación y desde el comienzo dichos grupos estarán identificados plenamente.

3. Entregables

Diagrama de clases mejorado del aplicativo

o Se debe entregar un documento pdf que contenga:

El diagrama de clases con todos los elementos: si el diagrama de clases no se ve en

su totalidad no se tendrá en cuenta para revisión.

Una descripción breve de cada clase

Una descripción breve de cada atributo de la clase

Explicación de los cambios efectuados al diagrama de clases del primer proyecto

Archivo .zip con el código fuente de las clases

Archivo .jar con el código ejecutable del programa

4. Observaciones

Se reducirán puntos por malas prácticas de programación: o código “quemado”. Por ejemplo usar valores constantes en donde no se deba. o No utilización de los criterios de asignación de responsabilidades a las clases

El diagrama de clases y la implementación deben ser concordantes.

Si no hay código el diagrama no se calificará

SUTENTACION INDIVIDUAL: en caso de no ser exitosa la sustentación, se reconocerá el 20% del total obtenido.

Si no se entrega el archivo .jar no se calificará la entrega.

5. Restricciones

No use arreglos para las colecciones

Página 5 de 5

Criterios de Evaluación

Criterio Valor Obtenido

1. Diagrama de clases con todos los elementos : atributos, métodos,

relaciones

2. Documentación del diagrama

20

5

Persistencia: cargar y guardar JaviPyme 5

Implementación del punto 5 20

Implementación del punto 7 15

Implementación del punto 8 15

Implementación del punto 11 20

Total 100

Observaciones:

1. Las categorías de los clientes deben ser manejadas como una jerarquía de herencia.

2. El cálculo del total de la cuenta que depende del cliente debe procesarse polimórficamente.

3. Se debe hacer manejo de excepciones

4. Los valores v1 y v2 de los gana puntos deben manejar se como enumerados

5. Se deben mantener separadas en paquetes las clases de entrada y salida de datos y las clases de

lógica.

6. Se debe crear una interface (podrían crearse varias interfaces) que contenga la definición de los

métodos de la presente entrega, un método para cada punto solicitado en la entrega. Se debe

implementar cada uno de los métodos en las clases correspondientes.