viernes, 5 de marzo de 2010

Problema sobre herencia y polimorfismo en Java (05.07.01)

Cree una clase Item.java con los siguientes atributos: id (int); titulo, descripción, ranking, categoría (String) , precio de alquiler por dia (double).
Todos estos atributos seran protected.
Agregue un atributo entero privado estático que inicia en 1000 para autogenerar el Id del item.
Agregue un constructor sin parámetros que autogenere un id para el item en base al atributo estático.
Agregue un segundo constructor con argumentos titulo, descripción, precio, ranking y categoría.
Este constructor invocara al primer constructor para asignar el id. Ademas asignara los argumentos a los atributos.
Agregue todos los métodos set y get para cada atributo.

Item.java
public class Item {
private static int siguienteId = 1000;
protected int id;
...
public Item() {
this.id = ++siguienteId;
}
public Item(String titulo... ) {
this();
this.titulo = titulo...
}
public int getId()...
...
public void setTitulo(String titulo)...
public String getTitulo()...
...
public static int getSiguienteId()...
}

La clase Cliente contara con 2 atributos, su id y su nombre. El id se generara automáticamente.
Cliente.java
public class Cliente {
private static int siguienteId = 2000;
protected int id;
...
public Cliente() {
this.id = ++siguienteId;
}
public Cliente(String nombre) {
this();
this.nombre...
}
public int getId()...
public String getNombre()...
}

Cree una clase Pelicula.java que herede de Item.java con los siguientes atributos: duracion (int) y director (String). Estos atributos seran privados.
Agregue un constructor con argumentos titulo, descripción, precio, ranking, numero de dias, categoría, duración y director.
Este constructor invocara al constructor de la superclase y luego asignara los dos ultimos argumentos a sus atributos privados.
Agregue todos los métodos set y get para sus dos atributos privados.
Agregue el método toString() que devuelva todos los atributos privados y heredados

Pelicula.java
public class Pelicula extends Item {
private String director;
private int duracion;
public Pelicula(String titulo ... int duracion) {
super(...);
this.director = director;
this.duracion = duracion;
}
public void setDirector...
public String getDirector...
public void setDuracion...
public String getDuracion...
public String toString...
}

Cree una clase Juego.java que herede de Item.java con los siguientes atributos: memoria (int) y tipo (String). Estos atributos seran privados.
Agregue un constructor con argumentos titulo, descripción, precio, ranking, numero de dias, categoría, memoria y tipo.
Este constructor invocara al constructor de la superclase y luego asignara los dos últimos argumentos a sus atributos privados.
Agregue todos los métodos set y get para sus dos atributos privados.
Agregue el método toString() que devuelva todos los atributos privados y heredados

Juego.java
public class Juego extends Item {
private int memoria;
private String tipo;
public Juego(String titulo ... String tipo) {
super(...);
this.memoria=...;
this.tipo=...;
}
...setMemoria...
...getMemoria...
...setTipo...
...getTipo...
public String toString...
}

En la base de datos se encontraran la lista de películas y los juegos.

BaseDeDatos.java
public class BaseDeDatos {

Cliente[] cliente = new Cliente [4];
Items[] item = new Item [4];

public BaseDeDatos() {

cliente[0] = new Cliente("Daneel Olivaw");
//...
item[0] = new Pelicula("La caravana del valor",...);
item[1] = new Pelicula("En las lunas de Endor",...);
item[2] = new Juego("Mu Online",...);
item[3] = new Juego("War Craft",...);
//...
}

public static Cliente getCliente(int id) {
Cliente cliente1 = null;
for (...) {
break;
}
return cliente1;
}

public static Item getItem(int id) ...
}


La clase Alquiler.java contara con los siguientes atributos: un arreglo de Ítems que se alquilaran (Item) el cliente que alquila (Cliente) un numero de alquiler id (int), la cantidad de ítems alquilados (int) y la cantidad de dias de alquiler (int).
Un atributo de clase privado estático entero será el contador de id que iniciara en 500.
Una constante será el máximo numero de ítems a alquilar que es 10.
Una constante será el impuesto del alquiler de 19%.
Un constructor asignara el cliente por argumento y el numero de dias de alquiler. También creara el arreglo de ítems, y su numero de alquiler.
Un método para agregar ítems al arreglo de ítems del alquiler.
Un método imprimira todo el detalle del alquiler en pantalla.
Alquiler.java
public class Alquiler {
private static int siguienteAlquilerId = 500;
private int alquilerId;
private int numeroDias;
private int clienteId;
private int cantidadItems;
private int[] itemId;
private final static int MAXITEMS = 10;
private final static double IMPUESTO = 0.19;
...
public Alquiler(int clienteId, int numeroDias) {
this.alquilerId = ...
this.clienteId = ...
...
itemId = new int[MAXITEMS];
}
public void agregarItem(int item) {
if (...) {
itemId[...] = item;
cantidadItems++;
}
else System.out.println("Demasiados ítems!");
}
public void imprimirReporte() {
/*
Cliente Id: 2000 Nombre: Salvor Hardin
Dias alquiler: 5
Detalle
1. El Padrino Precio = 1.10
2. Odisea 2001 Precio = 2.20
3. Aeropuerto 77 Precio = 3.30
Importe venta = 33.00
Importe total = 39.27
*/
}
}

El programa TacoraFilms realizara el alquiler
public class TacoraFilms {
public static void main(String[] args) {
Alquiler alquiler = new Alquiler(2001,5);
alquiler.agregarItem(1001);
alquiler.agregarItem(1002);
alquiler.agregarItem(1003);
alquiler.imprimerReporte();
}
}
Compartir:

1 comentario:

  1. He intentado desarrollar este interesante ejercicio pero sin resultados... si pudieran colgar la resolucion de este ejercicio estaria genial para saber donde estan las fallas

    ResponderEliminar