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 palletPor 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 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.