You are on page 1of 6

Evaluacin Recuperativa

(Tiempo estimado: 100 minutos)


Clave / Asignatura
Profesor
Perodo
Fecha
Nombre:

: EII147-01-02 Introduccin a las Tecnologas de Informacin


: Enrique Urra (P1) - Rafael Mellado (P2)
: Semestre II 2014
: Diciembre del 2014

____________________________________________________________________ Paralelo:

________________________

La municipalidad de Valparaso quiere mejorar la plataforma a travs de la cul gestiona la compra y distribucin de
los fuegos artificiales usados en el espectculo pirotcnico al final de cada ao. Para esto, le ha pedido implementar un
conjunto de clases que consideren los requerimientos descritos a continuacin.
Cada unidad de Fuego Artificial adquirida tiene un cdigo identificador y nico por unidad (int), un peso en kg.
(double), un precio de compra (double) y un nombre de proveedor (String).
Las unidades de fuegos artificiales se distribuyen en Sectores de la ciudad, desde los cuales se lanzan dichas
unidades a fin de ao. La clase sector es abstracta, y tiene un nombre que lo identifica (String). Un Sector tambin
funciona como una lista simplemente enlazada de unidades de fuegos artificiales, es decir, tiene una referencia head
(protected) a un nodo que guarda como tipo de dato un Fuego Artificial. El Sector funciona con nodo fantasma. Cada
sector tiene un mtodo abstracto publicabstractbooleanagregarFuegoArtificial(FuegoArtificialfa), que
agrega el Fuego Artificial al sector y retorna un resultado acorde a la implementacin de la clase hija. Considere las
siguientes clases hijas de Sector:

SectorConCapacidad: tiene un atributo maxKgsFuegos (double) que es entregado a travs del constructor, y que
indica la capacidad mxima de fuegos en kg. que puede almacenar el sector. Guarda los fuegos artificiales que se
van agregando al final de la lista. Debe verificar que cuando se agrega un fuego artificial, la capacidad
mencionada no se sobrepase. En este tipo de sector, no es necesario verificar si el fuego artificial agregado esta
repetido en la lista.
SectorSimple: Guarda los fuegos artificiales que se van agregando al inicio de la lista. En este tipo de sector, se
debe verificar si el fuego artificial ya est agregado en la lista.

La clase EventoFinAo es la coleccin principal encargada de gestionar la distribucin de los fuegos artificiales. Tiene
un arreglo de Sectores, cuyo largo es inicializado de forma dinmica en el constructor. El arreglo es manejado con
pLibre.
Con la descripcin previa, se le pide:

1. (30 ptos.) Implementar completamente las clases hijas de Sector, lo que incluye sus atributos, constructores y
mtodos.

2. (30 ptos.) Implementar los siguientes mtodos en la clase EventoFinAo (y los mtodos necesarios en las otras
clases, respetando el encapsulamiento):

publicinteliminarFuegosArtificialesSegunPrecio(doubleprecioMin,doubleprecioMax)
Elimina todos los fuegos artificiales de toda la coleccin cuyo precio est entre los dos parmetros entregados. Entrega
como resultado la cantidad de fuegos eliminados.
public int eliminarFuegosArtificialesSegunPrecio(String nombreSector, double precioMin, double
precioMax)
Elimina todos los fuegos artificiales del sector especificado cuyo precio este entre los dos parmetros entregados.
Entrega como resultado la cantidad de fuegos eliminados.
Nota: Asuma que los getter y setter bsicos ya estn implementados.

Clase NodoFuegoArtificial
public class NodoFuegoArtificial
{
private FuegoArtificial dato;
private NodoFuegoArtificial next;
public NodoFuegoArtificial(FuegoArtificial dato, NodoFuegoArtificial next)
{
this.dato = dato;
this.next = next;
}
public FuegoArtificial getDato()
{
return dato;
}
public NodoFuegoArtificial getNext()
{
return next;
}
public void setNext(NodoFuegoArtificial next)
{
this.next = next;
}

Clase Sector
public abstract class Sector
{
private String nombre;
protected NodoFuegoArtificial head; // CON NODO FANTASMA!
public Sector(String nombre)
{
this.nombre = nombre;
this.head = new NodoFuegoArtificial(null, null);
}
public abstract boolean agregarFuegoArtificial(FuegoArtificial fa);

Clase SectorConCapacidad

Clase SectorSimple

Clase EventoFinAo
public class EventoFinAo
{
private Sector[] sectores;
private int pLibre; // ES OBLIGACIN USAR PLIBRE!!
public EventoFinAo(int numSectores)
{
this.sectores = new Sector[numSectores];
}

You might also like