Sunteți pe pagina 1din 8

Estructuras de Datos 2019 Trabajo Práctico N.

º 2

Cátedra: Estructuras de Datos

Carrera: Licenciatura en Sistemas

Año: 2019 – 2do Cuatrimestre

Trabajo Práctico Nro 2: Facultad de Ciencias de la Administración


Universidad Nacional de Entre Ríos
P.O.O. en Java

Condiciones de Entrega

• El trabajo práctico deberá:


◦ Ser realizado en forma individual o en grupos de no más de dos alumnos.
◦ Ser cargado en la sección del Campus Virtual correspondiente, junto con los archivos
de código fuente que requieran las consignas. Cada uno de ellos en sus respectivos
formatos pero comprimidos en un único archivo con formato zip, rar, tar.gz u otro. Si el
trabajo práctico fue realizado en grupo, deberá especificarse en el nombre de archivo
los apellidos de los integrantes del mismo.
◦ Ser entregado:
▪ El trabajo práctico definitivo el Lunes 2 de Septiembre de 2019.
• El práctico será evaluado:
◦ Con nota conceptual (Excelente, Muy Bueno, Bueno, Regular y Desaprobado),
teniendo en cuenta la exactitud y claridad de las respuestas, los aportes adicionales
fuera de los objetivos de los enunciados y la presentación estética.
• Las soluciones del grupo deben ser de autoría propia. Aquellas que se detecten como
idénticas entre diferentes grupos serán clasificadas como MAL para todos los involucrados
en esta situación que será comunicada en la devolución.
• Los ejercicios que exijan codificación se valorarán de acuerdo a su exactitud, prolijidad
(identación y otras buenas prácticas).

Página 1 de 8
Estructuras de Datos 2019 Trabajo Práctico N.º 2

Ejercicios
1. El Banco Litoral planea ofrecer a sus clientes una nueva línea de créditos y para ello
necesita un sistema informático que registre:

Cliente
Atributo Tipo de Datos
Apellido String
Nombre String
Documento String
Tipo ClienteTipoEnum

ClienteTipoEnum
Atributo Tipo de Datos
Descripción String
Valores posibles: Persona, Comercio, Empresa de Construcción

Crédito
Atributo Tipo de Datos
Número Entero
Tipo CréditoTipo
Cliente Cliente
Monto acordado Double
Plazo en años Entero
Sucursal Sucursal
Total a devolver Double

CréditoTipo
Atributo Tipo de Datos
Descripción String
Monto Mínimo Double
Monto Máximo Double
Años Mínimo Entero
Años Máximo Entero
ClienteTipo ClienteTipoEnum
Tasa de Interés Double

Página 2 de 8
Estructuras de Datos 2019 Trabajo Práctico N.º 2

a) Construya las clases y enumeraciones Java que considere necesarias para dar
solución al problema. Todas ellas deberán contar con:
1. Constructor parametrizado.
2. Método equals().
3. Método toString().

b) Agregue al constructor de la clase Crédito y a los métodos que modifiquen datos los
controles necesarios para que no se otorguen créditos que no cumplan las condiciones
establecidas por el tipo de crédito.

c) El atributo Total a Devolver no será modificable por el usuario y se calculará


multiplicando Monto y Tasa de Interés.

d) Establezca como criterio de comparación por defecto para la clase Crédito el atributo
Número.

e) Establezca los siguientes criterios de ordenación alternativos para Crédito:


1. Cliente
2. Total a devolver

f) Construya la clase CreditosAdmin como clase que extienda a


CreditosAdminAbstract e implemente sus métodos abstractos:

public abstract class CreditoAdminAbstract {

protected List<Credito> creditosList;

public CreditoAdminAbstract(){ this.creditosList = new ArrayList(); }

/** Devuelve la cantidad de elementos en creditosList */


public int size() { return creditosList.size(); }

/** Agrega un credito a creditosList */


public void add(Credito c) { creditosList.add(c); }

/**
* Devuelve el credito ubicado en index.
* @param index
* @return
*/
public Credito get(int index) { return creditosList.get(index); }

/**
* Quita y devuelve el elemento ubicado index.
* @param index
* @return
*/
public Credito remove(int index) { return creditosList.remove(index); }

/**
* Devuelve todos los créditos otorgados a los clientes cuyo tipo es
* pasado por parámetro
* @param tipo
* @return
*/
public abstract List<Credito> creditosPorClienteTipo(ClienteTipoEnum tipo);

Página 3 de 8
Estructuras de Datos 2019 Trabajo Práctico N.º 2

/**
* Devuelve todos los créditos otorgados del tipo y sucursal especificados.
* @param tipo
* @param sucursal
* @return
*/
public abstract List<Credito> creditosPorCreditoTipoySucursal(CreditoTipoEnum tipo,
Sucursal sucursal);

/**
* Devuelve los créditos cuyo monto es inferior a monto.
* @param monto
* @return
*/
public abstract List<Credito> creditosInferioresA(double monto);

/**
* Devuelve los créditos cuyo monto es superior a monto.
* @param monto
* @return
*/
public abstract List<Credito> creditosSuperioresA(double monto);

/**
* Ordena los créditos por el criterio especificado en compareTo()
*/
public abstract void ordenar();

/**
* Ordena los créditos por el criterio pasado por parámetro.
* @param comparator
*/
public abstract void ordenar(Comparator comparator);

/**
* Transforma en String todas las instancias de Credito almacenadas
* en creditosList
* @return
*/
public abstract String toString();
}

g) Programe la clase ClienteCreditos donde cree al menos 5 instancias de crédito y se


pongan a prueba todos los métodos de CreditosAdmin.

Página 4 de 8
Estructuras de Datos 2019 Trabajo Práctico N.º 2

2. Scoops Ahoy necesita realizar un análisis de costos y para tal fin le solicita la construcción
de una aplicación Java que permita registrar las facturas que recibe de sus proveedores.
Se deberá registrar la siguiente información:

Factura
Atributo Tipo de Dato
Tipo de Factura TipoFacturaEnum
Punto de Venta Entero
Número Entero
Fecha Fecha
Proveedor Empresa
Detalle Factura List<FacturaDetalle>
Importe Total Punto Flotante

FacturaDetalle
Atributo Tipo de Dato
Número de ítem Entero
Producto Producto
Cantidad Entero
Precio Unitario Punto Flotante
Sub Total Punto Flotante

TipoFacturaEnum
Valores posibles: Factura A, Factura B, Factura C.

Empresa
Atributo Tipo de Dato
Cuit String
Razón Social String
Situación IVA SituacionIVAEnum

Producto
Atributo Tipo de Dato
Código Entero
Descripción String

SituacionIVAEnum
Valores posibles: Resp. Inscripto, Resp. NO Inscripto, Consumidor Final, Resp. Monotributo

Página 5 de 8
Estructuras de Datos 2019 Trabajo Práctico N.º 2

a) Construya las clases y enumeraciones Java que considere necesarias para dar
solución al problema. Todas ellas deberán contar con:
1. Constructor parametrizado.
2. Método equals().
3. Método toString().

b) Establezca como criterio de comparación por defecto para la clase Factura los datos:
Proveedor, Punto de Venta, Número de Factura.

c) Defina nuevas clases como criterios de comparación alternativos:


1. Fecha de Factura.
2. Proveedor por razón Social.

d) Construya la clase FacturasAdmin como clase derivada de FacturasAdminAbstract


e implemente los métodos abstractos:
public abstract class FacturasAdminAbstract {

protected List<Factura> facturasList;

public FacturasAdminAbstract(){ this.facturasList = new ArrayList(); }

public void add(Factura factura) { this.facturasList.add(factura); }

public void remove(int indice){ this.facturasList.remove(indice); }

/** Busca todas las facturas correspondientes al mes y año pasados por
* parámetro. */
public abstract List<Factura> buscarFacturasPorMesAnio(int mes, int anio);

/** Busca todas las facturas de la empresa pasada por parámetro. */


public abstract List<Factura> buscarFacturasPorProveedor(Empresa empresa);

/** Determina la factura con mayor importe total */


public abstract Factura facturaMasCostosa();

/** Determina los 5 productos que mayor cantidad de veces se compraron */


public abstract List<ProductoCantidad> top5ProductoCantidad();

public String toString(){


String resultado = "";

for (Factura f : facturasList) { resultado += f.toString(); }

return resultado;
}
}

e) Programe la clase ClienteScoopsAhoy donde se pruebe el correcto funcionamiento


de las clases y métodos programados en puntos anteriores.

Página 6 de 8
Estructuras de Datos 2019 Trabajo Práctico N.º 2

3. La compañía de entretenimiento Pro-Star que brinda un servicio de streaming de


películas, ha decidido hacer lo propio con series de televisión. A fines de registrar la
información de las mismas se le encarga a Ud. la programación de las siguientes clases:

Serie
Atributo Tipo de Dato
Título String
Género GeneroEnum
Reparto List<Artista>
Temporadas List<Temporada>
Año de Estreno Entero
Estrellas de calificación Flotante (de 0 a 5)

GeneroEnum
Géneros Válidos: Thriller, Drama, Suspenso, Terror, Comedia, Acción, Ciencia Ficción, Bélica.

Artista
Atributo Tipo de Dato
Apellido String
Nombre String

Temporada
Atributo Tipo de Dato
Número Entero
Cantidad de Episodios Entero

a) Construya las clases y/o enumeraciones que considere necesarias para resolver el
problema.

b) Modifique las clases construidas en el punto anterior de forma que todas ellas cuenten
con:
1. Constructor parametrizado.
2. Métodos de acceso.
3. Métodos equals() y toString().

c) Construya la clase SeriesAdmin y los métodos necesarios para realizar las siguientes
tareas:
1. Ordenar por nombre de la Serie.
2. Ordenar por Género y luego por nombre de Serie.
3. Serie de mayor duración: la serie que mayor cantidad de temporadas tiene.
4. Serie con mayor número de artistas.
5. Series por año de estreno.
6. Peores series (menos de 2 estrellas).

Página 7 de 8
Estructuras de Datos 2019 Trabajo Práctico N.º 2

7. Mejores series (más de 4 estrellas).

d) Construya la clase SeriesCliente en cuyo método main() se pruebe el funcionamiento


de los métodos programados en el punto anterior.

Proyectos de programación
1. Utilizando Swing o JavaFx, programe una aplicación de escritorio para el punto número 2
del trabajo práctico. Además, cada serie deberá tener una imagen con su póster y un link a
IMDB (www.imdb.com).

Página 8 de 8

S-ar putea să vă placă și