Materialā€Ž > ā€ŽGuĆ­as de ejerciciosā€Ž > ā€Ž

Trenes y Depósitos

Una administradora ferroviaria necesita unaaplicación que le ayude a manejar las formaciones que tiene disponibles endistintos depósitos.

Ā 

Una formación es lo que habitualmente llamamos ā€œuntrenā€, tiene una o varias locomotoras, y uno o varios vagones. Hay vagones depasajeros y vagones de carga.

Ā 

En cada depósito hay: formaciones ya armadas, ylocomotoras sueltas que pueden ser agregadas a una formación.

Ā 

De cada vagón de pasajeros se conoce el largo enmetros, y el ancho útil también en metros. La cantidad de pasajeros que puedetransportar un vagón de pasajeros es:

  • Si el ancho Ćŗtil es de hasta 2.5 metros: metros de largo * 8.
  • Si el ancho Ćŗtil es de mĆ”s de 2.5 metros: metros de largo * 10.

P.ej., si tenemos dos vagones de pasajeros, los dosde 10 metrosde largo, uno de 2 metrosde ancho Ćŗtil, y otro de 3 metros de ancho Ćŗtil, entonces el primero puede llevar80 pasajeros, y el segundo puede llevar 100.

Un vagón de pasajeros no puede llevar carga.

Ā 

De cada vagón de carga se conoce la carga mÔxima quepuede llevar, en kilos. Un vagón de carga no puede llevar ningún pasajero.

Ā 

No hay vagones mixtos.

Ā 

El peso mÔximo de un vagón, medido en kilos, secalcula así:

  • Para un vagón de pasajeros: cantidad de pasajeros que puede llevar * 80.
  • Para un vagón de carga: la carga mĆ”xima que puede llevar + 160 (en cada vagón de carga van dos guardas).

Ā 

De cada locomotora se sabe: su peso, el peso mƔximoque puede arrastrar, y su velocidad mƔxima.

P.ej. puedo tener una locomotora que pesa 1000 kg, puede arrastrarhasta 12000 kg,y su velocidad mĆ”xima es de 80 km/h. Obviamente se tiene que arrastrar a ella misma,entonces no le puedo cargar 12000 kg de vagones, solamente 11000; diremos que este es suā€œarrastre Ćŗtilā€.

Ā 

Modelar la situación descripta de acuerdo alparadigma de objetos, escribiendo el código en lenguaje Smalltalk, de manera depoder saber:

  1. El total de pasajeros que puede transportar una formación.
  2. CuÔntos vagones livianos tiene una formación; un vagón es liviano si su peso mÔximo es menor a 2500 kg.
  3. La velocidad mÔxima de una formación, que es el mínimo entre las velocidades mÔximas de las locomotoras.
  4. Si una formación es eficiente; es eficiente si cada una de sus locomotoras arrastra, al menos, 5 veces su peso (el de la locomotora misma).
  5. Si una formación puede moverse. Una formación puede moverse si el arrastre útil total de las locomotoras es mayor o igual al peso mÔximo total de los vagones.
  6. CuĆ”ntos kilos de empuje le faltan a una formación para poder moverse, que es: 0 si ya se puede mover, y (peso mĆ”ximo total de los vagones – arrastre Ćŗtil total de las locomotoras) en caso contrario.
  7. Dado un depósito, el conjunto formado por el vagón mÔs pesado de cada formación; se espera un conjunto de vagones.
  8. Si un depósito necesita un conductor experimentado.
    Un depósito necesita un conductor experimentado si alguna de sus formaciones es compleja.
    Una formación es compleja si: tiene mÔs de 20 unidades (sumando locomotoras y vagones), o el peso total (sumando locomotoras y vagones) es de mÔs de 10000 kg.

Y de poder hacer lo siguiente

  1. Agregar, dentro de un depósito, una locomotora a una formación determinada, de forma tal que la formación pueda moverse.
    Si la formación ya puede moverse, entonces no se hace nada.
    Si no, se le agrega una locomotora suelta del depósito cuyo arrastre útil sea mayor o igual a los kilos de empuje que le faltan a la formación. Si no hay ninguna locomotora suelta que cumpla esta condición, no se hace nada.

Ā 

O sea: indicar quƩ clases se necesitan, quƩvariables de instancia se necesitan en cada clase, quƩ mensajes van a entenderlas instancias de cada clase, y escribir los mƩtodos correspondientes.

Ā 

Para cada punto, indicar a quƩ objeto se le pide loque se indica, con quƩ mensaje, quƩ parƔmetros, y quƩ devuelve.

Ā 

Para el punto 8, indicar en qué otros objetos delegael responsable de hacer lo que se pide, y qué delega (indicar lo que se delegaen castellano). Si hay una cadena de delegaciones (al objeto 1 le piden algo,entonces delega algo en el objeto 2, y el objeto 2 para hacer lo que le pidióel 1 tiene que delegar otra cosa en otro objeto 3) indicarla.