Ayudantia 01 – Ejercicio Retail-1

Anuncio
PUCV - Escuela de Ingeniería Industrial
EII 210, Arquitecturas de Software
Profesor: Claudio Cubillos
Ayudantes: Pablo Donoso - Daniela Gaete – Carla Morales
Segundo Semestre 2011
__________________________________________________________________
Ayudantía N°1
Una empresa dedicada al retail por departamentos (como Ripley, Falabella, Almacenes Paris, etc.) posee un
sistema de gestión y control de las ventas para el mes en sus distintas sucursales. Dicho sistema utiliza una
serie de clases que se detallan a continuación:
Clase Retail: Posee el nombre de la empresa y una colección de sucursales( que implementa la interfaz
Colección2).
Clase Sucursal: Posee el nombre de la sucursal, la ciudad y dirección, además de un Array de
departamentos. Se sabe que una sucursal no puede tener más de 12 departamentos.
Clase Departamento: Posee el nombre del departamento, su código (entero), un array de productos y una
colección de vendedores (implementada con la interfaz Colección1).
Clase Producto: El producto posee un SKU (código numérico), la marca, el modelo, además del precio
unitario del producto (en CLP$).
Clase Vendedor: Almacena el rut y nombre del vendedor, además de sus ventas en el mes. Para ello se
maneja una matriz de ventas. La primera dimensión se refiere al día del mes (con max. 31 días) y la segunda
almacena el orden de las ventas, de la primera a la última venta del día. Se sabe que muy raramente alguien
realiza más de 35 ventas en un día y que ambas dimensiones se manejan de manera compactada (sin nulls
entremedio).
Venta: Contiene el SKU del producto vendido, su cantidad (o número de unidades) y provee un método que
retorna el total de la venta (CLP$), llamado calcularTotal. Existen 2 tipos de venta:
 Normal: posee también un porcentaje de descuento; al calcularTotal multiplica el precio del producto
por la cantidad, aplica el descuento y retorna el total.
 A Domicilio: posee además la dirección de quien compró los productos, costo de envío y su dirección;
al calcularTotal suma el costo de envío al total de la compra y lo retorna.
Clase ArrayList
Es una clase que implementa la interfaz List, definiendo una colección ordenada (mantiene la posición en que
se agrega cada elemento) y que permite valores duplicados.
public boolean add(Object o): Agrega el elemento indicado al final de la lista.
public void add(int index, Object o): Inserta el elemento indicado en la posición indicada de la lista.
public Object get(int index): Retorna el elemento de la posición indicada de la lista.
public Object remove(int index): Remueve el elemento de la posición indicada de la lista.
public int size(): Retorna el número de elementos de la lista.
Interfaz Coleccion1
Establece el conjunto de operaciones sobre una colección de elementos, en donde se maneja una
identificación (referencia) al dato actual de la colección tanto para agregar como para obtener los elementos
de dicha colección:
public void add(Object o): agrega un elemento en la posición actual.
public void next(): mueve actual a la sgte posición.
public Object currValue(): retorna el elemento de la posición actual .
public boolean eol(): es true si actual se encuentra al final de la lista.
public void setFirst(): mueve actual a la primera posición.
Interfaz Coleccion2
Establece el conjunto de operaciones sobre una colección de elementos. Se maneja una identificación
(referencia) al dato actual de la colección para obtener sus elementos, mientras que se agrega siempre al final
de la colección:
public void append(Object o): Agrega a object o al final de la lista
public int length(): Entrega el largo de la lista
public Object currValue(): Retorna el elemento actual
public void setPos(int pos): Setea actual a la posición pos.
Desarrolle en java los siguientes métodos en la clase Retail.
a) Implemente la jerarquía de herencia de Venta.
b) public boolean realizarVenta(Vendedor v, Venta venta, int dia): agrega una venta al sistema, para
esto recibe por parámetro una referencia a un vendedor, una venta y el día en que se realiza. De la
venta obtiene el SKU del producto, con él verifica que tanto el vendedor como el producto
pertenezcan al mismo departamento, de cumplirse intenta agregar la venta al vendedor, si lo logra
retorna true, si no (es decir no hay espacio suficiente o no pertenecen al mismo departamento)
retorna false. Modularizar en al menos los siguientes métodos: buscar vendedor en departamento,
buscar producto en departamento, agregar venta en vendedor.
c) public Array obtenerMasVentasADomicilio(): busca en cada sucursal el departamento con más
ventas a domicilio, y luego retorna un array con estos departamentos. Modularizar en al menos los
siguientes métodos: recorrer y contar ventas a domicilio en vendedor, recorrer y contar ventas a
domicilio en departamento.
d) public String sucursalConMenosUtilidades(): busca la sucursal con menor utilidad, y retorna el
nombre de esta. Modularizar en al menos los siguientes métodos: recorrer ventas y calcular utilidad
en vendedor, recorrer vendedores y calcular utilidad en departamento, recorrer departamentos y
calcular utilidad en sucursal, y recorrer sucursales y calcular utilidad.
public interface Coleccion1 {
public class ArrayList {
public void add(Object o);
public boolean add(Object o);
public void next();
public void add(int index, Object o);
public Object currValue();
public Object get(int index);
public boolean eol();
public Object remove(int index);
public void setFirst();
public int size();
public class Sucursal {
private String nombre,ciudad,direccion;
private ArrayList departamentos;
public class Departamento {
private String nombre;
private int codigo;
private Coleccion1 vendedores;
private ArrayList productos;
…
}
public class Vendedor {
private int rut;
private String nombre;
private Venta[][] ventas;
...
}
public class Retail {
private String nombre;
private Coleccion2 sucursales;
public interface Coleccion2 {
public void append(Object o);
public int length();
public Object currValue();
public void setPos(int pos);
}
public class Producto {
private int SKU,precio;
private String marca,modelo;
...
}
Descargar