Cursos‎ > ‎Cursadas Anteriores‎ > ‎2014‎ > ‎Mañ-Sábado‎ > ‎

TP Objetos 2 y 3

CAMIONES


Una empresa de transporte de cargas necesita un software que la ayude a organizarse con el llenado de los camiones que maneja. La empresa tiene varios depósitos, en cada depósito hay varios camiones.


Parte I (TP2)


La empresa puede recibir bultos, cajas sueltas y bidones que transportan líquido.

  • Un bulto es un “pallet” (estructura base de madera) que tiene arriba un montón de cajas, se envuelve todo con plástico para que no se desbanden las cajas. Todas las cajas de un bulto pesan lo mismo. El peso de un bulto es: (peso de una caja * cant. cajas) + peso del pallet Por ejemplo, un bulto de 50 cajas de 12 kg. cada una con una estructura de 70 kg. pesa en total 670 kg.

  • Para cada bulto se informa qué elemento es lo que llevan las cajas, por ejemplo “ketchup”. Todas las cajas de un mismo bulto llevan lo mismo.

  • De cada caja suelta se informa el peso individualmente, son todas distintas. También se informa qué llevan, igual que los bultos.

  • El peso de un bidón es su capacidad en litros por la densidad (o sea, cuántos kg pesa un litro) del líquido que se le carga. Por ejemplo, si a un bidón de 200 litros lo lleno de aceite, y el aceite tiene densidad 0,8, entonces su peso es 160 kg. Los bidones van siempre llenos hasta el tope.


Cada camión puede llevar hasta una carga máxima medida en kg. Además, cada camión puede:

  • estar disponible para la carga (en cuyo caso ya puede tener cosas cargadas),

  • estar en reparación, o

  • estar de viaje.


Se pide modelar, en base a lo descripto anteriormente, lo necesario para resolver los requerimientos detallados.

Realizar el diagrama de clases del modelo y los tests que demuestran que cada uno de los puntos funciona como se espera.


Importante (¡tips!):

  • Es bueno separar el comportamiento que cambia en base al estado del camión de aquel comportamiento que se mantiene igual en todos los estados. Aquel comportamiento que cambia debería estar modelado en un objeto aparte, para permitir su reemplazo por otro objeto. Si tienen dudas sobre cómo hacerlo, consulten al docente a cargo de su grupo.

  • Implementar sus propios métodos para crear los objetos en forma inicializada les puede hacer facilitar el armado de los tests.


Se pide:


  1. Cargar el camión con un “coso”, donde ese “coso” puede ser un bulto, una caja suelta, o un bidón.

  2. Saber si un camión puede aceptar un coso. Un camión puede aceptarlo si con lo que le preguntan más lo que ya tiene cargado no supera su carga máxima, y además está disponible para la carga. Notar que no se espera un efecto colateral en este punto.

  3. Modificar la carga del camión para que solo se cargue si puede hacerse. Por ejemplo, si un camión con capacidad para 150 kg. que ya tenía 140 kg. se le pide que cargue un bulto de 10 kg. lo haga, pero si se pide que cargue un bidón de 25 kg no lo haga porque con este superaría su capacidad.

  4. Realizar las acciones correspondientes para representar cada uno de estos cambios de estado, cada uno a partir de un único mensaje al objeto que corresponda:

    • un camión sale de reparación, en cuyo caso queda disponible para la carga.

    • un camión entra en reparación.

    • un camión sale de viaje.

    • un camión vuelve de viaje, en cuyo caso queda disponible para la carga.
      Ignorar los pedidos inválidos. Por ejemplo, si se quiere hacer que un camión vuelva de viaje, pero el mismo está en reparación, no se hace nada.

  5. Saber si un camión está listo para partir, que se cumple cuando está disponible para la carga y, además, el peso total de lo que tiene cargado es de al menos 75% de su carga máxima.

  6. Saber para un depósito el peso total de carga que está viajando, o sea la suma de lo que llevan todos los camiones de ese depósito que están de viaje.

  7. Saber los elementos que están cargados en un determinado camión.

  8. Saber en qué camiones de un depósito se están cargando un determinado elemento, por ejemplo ketchup o aceite. Decimos que un camión se está cargando cuando no está listo para partir.

  9. Dados dos camiones, obtener los elementos que se transportan en ambos. Por ejemplo, si yo tengo un camión que transporta galletitas, insecticida, alfajores y aceite y tengo otro que transporta agua, galletitas, dentífrico y aceite lo que debería obtener es un conjunto con aceite y galletitas.

  10. Para un camión, saber el coso (bulto, caja o bidón) más liviano que está siendo transportado.

  11. Para un depósito saber el camión que transporta mayor cantidad de cosos.

  12. Obtener, para dos depósitos, el conjunto de "cosos" (de cualquiera de ellos) que contienen elementos que están almacenados en los dos, ordenados por el peso de cada coso en forma ascendente. Por ejemplo: El depósito 1 tiene una caja de mayonesa y un bidón de aceite, y el depótiso 2 tiene un bulto de cajas de mayonesa y un bidón de quitamanchas. El único elemento presente en ambos es la mayonesa, por lo tanto se espera obtener una colección con la caja de mayonesa, del depósito 1, y el bulto de cajas de mayonesa, del 2, ordenada por peso en forma ascendente.


Parte II (TP3)


Los requerimientos de la empresa van cambiando, como siempre pasa, y se necesita adaptar el modelo en base a las siguientes observaciones:


Se modifican los bultos para mayor flexibilidad. Ahora pueden tener distintas cajas de productos, y las mismas pueden ser de distintos elementos. Se mantiene que son de un único elemento por caja, lo que cambia es el bulto, no la caja.


También se modifican los camiones, ahora reutilizables. Los camiones tienen uno o muchos destinos (siempre depósitos). Para cada destino se sabe qué cosos (bulto, bidón o caja) de los que se transportan están dirigidos al mismo.


Por último, se agregan camiones frigoríficos, los cuales pueden transportar productos de hasta una cierta temperatura máxima (además de la restricción de peso que se sigue manteniendo). La temperatura máxima es la misma para todos los camiones frigoríficos, pero puede cambiar. Una vez que cambia para uno, cambia para todos. Todos los productos tienen una temperatura máxima que pueden soportar. La temperatura máxima soportada por un coso es la menor temperatura de los productos que contiene. Por ejemplo si en un bulto hay lechuga, cuya temperatura máxima es de 17°, y manteca, cuya temperatura máxima es de 10°, la temperatura máxima de ese bulto será de 10°. Para que un camión frigorífico pueda cargar un coso la temperatura máxima de ese coso tiene que ser menor a su propia temperatura máxima, y además cumplirse el resto de condiciones que se cumplen para los camiones comunes.


Se pide:


  1. Adaptar los bultos para adecuarlos a la nueva descripción.

  2. Agregar los camiones frigoríficos al modelo.

  3. Hacer que un camión llegue a un destino y descargue sólo lo que le corresponde a ese destino (tener en cuenta que tanto en el depósito destino como en el camión se tiene que actualizar los cosos que tiene almacenado). Considerar que sólo puede hacerlo estando de viaje.

  4. Hacer que un camión haga un viaje completo, saliendo de viaje, yendo a todos sus destinos y volviendo al depósito al que pertenece para una nueva carga.

  5. Agregar gestión mediante excepciones para los puntos 3, 4, 15 y 16. Para los puntos de la Parte I, considerar también los agregados y las modificaciones de la Parte II. Agregar estas consideraciones:

    • Un camión sólo puede salir de viaje si está listo para partir.

    • Un camión no puede entrar en reparación si tiene mercadería cargada.


Importante: No olviden actualizar el diagrama de clases y completar los tests con los casos nuevos.