Trabajo Práctico Nivelador

Objetivos

Que el alumno logre:

  • Adquirir habilidades de programación orientada a objetos.

Modalidad de Desarrollo

Individual.

Formato de Presentación

En pepel.

Fecha de Entrega

28/043/2023

Contenido del Informe de Presentación

  • Formato de hoja: A4.

Aspectos de Evaluación

  • Cumplimiento de actividades propuestas y fechas indicadas.

Programación Orientada a Objectos

Definir Clases y Objectos

1 - Agenda Personal

Una agenda personal permita registrar reuniones en las que el usuario va a participar. En tal agenda debe registrarse donde ocurrirá la reunión, quienes van a participar de ella, el tema que van a tratar y la duración de la misma.

2 - Estructuras de datos

Plantee la solución identificando objetos que intervienen, su estado y su comportamiento para las siguientes estructuras.

  • Grafo dirigido, Algoritmos de recorridos BFS, DFS.
  • Árbol N-ario y Árbol Binario, con recorridos en orden, pre-orden y pos orden.
  • Tabla de Hash.
  • Matriz de n dimensiones

3 - Sistema de Control de Gastos Públicos

Un país tiene que controlar el gasto público de las ciudades con más de 100.000 habitantes. Para ello, tiene información del monto recaudado por cada ciudad a través de cinco diferentes tipos de impuestos (denominados, aquí, de imp1, imp2, imp3, imp4 e imp5) e información acerca de gastos realizados en mantenimiento de la ciudad. Este país necesita un sistema que le informe cuales son las ciudades que gastan mas de lo que recaudan, y las provincias que tienen mas de la mitad de las ciudades en condición de déficit.

4 - Reservas de Pasajes Aéreos

Típicamente nuestros clientes son personas que desean viajar cómodamente y rápido por eso utilizan aviones como medio de transporte. En general, ellos no planifican con demasiada anticipación sus viajes y toman la decisión de tomar un vuelo debido a que amigos distantes les reclaman su visita, o lo deciden porque ya ha pasado un tiempo determinado desde la última vez que se tomaron un merecido descanso.

Cuando una persona solicita una reserva no sabe en que vuelo puede hacerlo. La persona especifica la ciudad de destino a la que quiere viajar, la fecha más temprana a partir de la cual quiere hacerlo y la fecha más tardía. Se lo consulta, por la clase (primera, turista, etc.) en la que quiere viajar, y luego por la subsección en la que se sentiría mas cómodo (fumador o no fumador). En base a esto se determinan los vuelos en los que haya lugar disponible en base a sus intereses. Se le pide confirmación por alguno de ellos. Si confirma alguno, se le solicitan sus datos, se asienta la reserva y se emite el pasaje correspondiente. Si a la persona no le satisficiera ninguno de los vuelos ofrecidos, o en caso de no poder determinar ningún vuelo acorde con sus intereses, se lo invita a pasar en otro momento por si surge alguna novedad.

5 - Sistema de encuestas

Una empresa consultora desea desarrollar un sistema el cual le permita informatizar su mecanismo de encuestas. La compañía se encarga de realizar encuestas para empresas de terceros o para el gobierno. Una encuesta se compone de un conjunto de preguntas, una persona encuestada y el empleado que realizo la encuesta. La compañía guarda todas las encuestas realizadas. Los empleados cobran un plus por cantidad de encuestas realizadas, con lo cual la empresa desea conocer el numero de encuestas que realizo cada empleado. Para evitar falsificación de datos en la encuesta figura el numero de documento de la persona, una misma persona no puede llenar dos veces la misma encuesta, pero si una encuesta diferente.

Definir Comportamiento

Para cada una de los siguientes problemas plantee una solución identificando objetos que intervienen, su estado, su comportamiento y las relaciones entre ellos.

1 - Una figura puede estar compuesta por otras figuras básicas, como por ejemplo: triángulos, elipses y cuadriláteros. Se sabe además que un tipo particular de elipse es el círculo, mientras que un tipo particular de cuadrilátero es el rectángulo. A su vez un tipo particular de rectángulo es el cuadrado. Por otra parte, los cuadriláteros y triángulos son tipos de polígonos. Los polígonos tienen un número de lados, y dichos lados están definidos por 2 puntos. Un punto está definido por una coordenada en el eje de las x, y otra en el eje de las y.

2 - Un país tiene provincias, una capital, limita con otros países y se localiza en un continente. Las provincias de un país limitan con otras provincias del mismo país y a su vez pueden limitar con otros países. Las provincias tienen ciudades y una de ellas es su capital.

3 - Una aerolínea ofrece vuelos transportando pasajeros en aviones entre diferentes ciudades. Cada vuelo parte de un aeropuerto de inicio y arriba a un aeropuerto de destino final. Algunos vuelos pueden tener escalas intermedias. Los aeropuertos están localizados en ciudades, pudiendo tener una ciudad más de un aeropuerto. A cada vuelo se le asigna un avión y una tripulación, la cual consta de 2 pilotos, 1 operador de comunicaciones, 2 comisarios de abordo y 4 azafatas. Cada pasajero de un vuelo tiene asignado un asiento.

4 - Para un sistema bancario, implementar las clases caja de ahorro, cliente y banco para que, al menos, se puedan crear cajas de ahorro, depositar y extraer sobre una cuenta particular, listar el saldo de una cuenta, listar las cuentas de un cliente y cerrar cuentas.

5 - Implementar las estructuras de datos planteadas en el punto 2 del práctico 1.

6 - Definir e implementar un conjunto de clases y sus métodos que resuelvan el problema siguiente. Un país tiene que controlar el gasto público de las ciudades con más de 100.000 habitantes. Para ello, tiene información del monto recaudado por cada ciudad a través de cinco diferentes tipos de impuestos (denominados, aquí, de imp1, imp2, imp3, imp4 e imp5) e información acerca de gastos realizados en mantenimiento de la ciudad. Este país necesita un sistema que le informe cuales son las ciudades que gastan mas de lo que recaudan, y las provincias que tienen mas de la mitad de las ciudades en condición de déficit.

4 - Implementar una agenda personal que permita registrar reuniones en las que el usuario va a participar. En tal agenda debe registrarse donde ocurrirá la reunión, quienes van a participar de ella, el tema que van a tratar y la duración de la misma. Considere que la operación de insertar una reunión en la agenda debe analizar si esa incorporación es posible en función de superposiciones y de la localización de la reunión (el involucrado debe tener el tiempo suficiente para el traslado).

5 - Implementar la estructura de datos Array Privado, la cual puede ser utilizada como cualquier arreglo, pero sólo puede ser modificado por su dueño.

6 - Implementar la clase Array Controlado, la cual representa una estructura de datos que es utilizada en forma similar a un arreglo, en la cual se cuenta la cantidad de lecturas y la cantidad de escrituras realizadas sobre cada elemento del arreglo. Adicionalmente, tiene que ser posible averiguar la cantidad de accesos de lectura o escritura realizados sobre cada elemento del arreglo controlado.

7 - Se tiene un procesador el cual recibe tareas, las mismas poseen una prioridad, un uso de memoria, y un uso de CPU. El procesador a medida que las tareas le son suministradas las almacena en una lista de espera ordenada de acuerdo a la prioridad. Existen otros procesadores los cuales ordenan las tareas de acuerdo al uso de memoria o el uso de CPU.

Capa de Acceso a Datos

Botonería “El Cabulero”

La Botonería “El Cabulero”, atendida por su propios dueños, se dedica a la compra y venta de botones. Actualmente menejan diferentes marcas y modelos para abastecer a un mercado relativamente estable de clientes, en los que se encuentran fabricas de calzados, ropas y público en general.

José Antonio, dueño y generente de “El Cabulero” ha seguido muy de cerca el desempeño de la selección Argentina de Futbol en los últimos tiempos y ha determinado que:

  • La final del Mundo del 25 de junio de 1978, Argentina ha sido campeón. 2
  • La final del Mundo del 29 de junio de 1986, Argentina ha sido campeón. 5
  • La final del Mundo del 8 de julio de 1990, Argentina pierde.
  • La final del Mundo del 13 de julio de 2014, Argentina pierde.
  • La final del Mundo del 18 de diciembre de 2022, Argentina ha sido campeón. 2

A raiz de esta fecha, las formaciones de los equipos y diferentes cuestiones esotericas, que por cuestiones de privacidad no han sido compartidas, ha solicitados a los alumnos de esta materia un sistema que funcione diferentes funtes de datos de la siguiente manera:

  • Lunes y Jueves: MySQL
  • Martes: MongoDB
  • Miercoles, Viernes y Sábados: PostgreSQL
  • Domingos: Ninguna de las atereiores.

Manejo de Streams

Para cada uno de los siguientes problemas, genere una solución al mismo y las pruebas que lo comprueban.

Películas y Generos

Dato el siguiente modelo de datos

public class Pelicula {

  private String uuid;

  private String nombre;

  private String genero;

  private List<Actor> actores;

  private List<Puntucion> puntuaciones;
}

public class Actor {

  private long dni;

  private String nombre;

  private String apellido;
}

public class Puntucion {

  private LocalDateTime timestamp;

  private int valor; // [1..5] estrellas
}

Dada la siguiente interfaz para acceder a los datos

public interface PeliculaDao {
  List<Pelicula> findAll();
}

Escriba las clases y métodos para responder a las siguientes preguntas

  1. Obtener todas las películas en las que actua Ricardo Darin.
  2. Obtener un ranking de cantidad de películas por actor.
  3. Obtener un ranking de cantidad de películas por género.
  4. Obtener un ranking de cantidad de películas más punteadas.
  5. Obtener un ranking de cantidad de películas por puntuacion.
  6. Obtener un ranking de cantidad de películas por puntuacion y por año.
  7. Obtener las mejores n películas por género del año actual.

Genere los tests para cada caso.