Академический Документы
Профессиональный Документы
Культура Документы
Objeto: lapicero
Operacin: escribir en cuaderno.
Atributos: Longitud, Marca.
UNS
2.2. Encapsulamiento
El encapsulamiento oculta como las cosas funcionan dentro de un objeto
Solo nos comunicamos con el objeto a travs sus mtodos
Los mtodos son una interfaz que permite ignorar como estn implementados.
No es posible evadir el encapsulamiento en OO
El cajero automtico es un objeto que entrega dinero.
El cajero encapsula todas las operaciones a las tarjetas poseedores.
Evadir este encapsulamiento es un robo al cajero.
Ejercicio
Complete con operaciones y atributos lo siguiente:
Objeto
Operaciones
Cajero automtico
Universidad
Computadora
Auto de carreras
DVD
Satlite
Atributos
Cliente
o
Transmisor
Mensaje
getEdad()
Persona
getEdad
getNombre
Edad
getDireccion Nombre
setEdad
Direccion
setNombre
setDireccion
UNS
Radar
en Tierra
Nueva posicin
Cambio de
orbita Satlite
Monitorear
Ejemplos:
El radar en tierra monitorea el satlite. El satlite es monitoreado por el radar en tierra.
Un cliente tiene una cuenta de ahorros. La cuenta de ahorros pertenece a un cliente.
El cajero automtico es un
objeto.
El cajero es del Banco de la
Nacin.
2.4. Clases
Una clase es una molde para crear objetos.
Para definir una clase se tiene que indicar las operaciones y atributos
Los objetos son instancias de la clase.
Cuando se cree un cajero automtico no se requiere indicar sus operaciones y atributos.
Solo se requiere indicar a que clase pertenece.
Clase
Atributos
Mtodos
Cliente
int edad
String nombre
String direccin
cambiarDireccion()
Pelcula
String titulo
double precio
String categoria
cambiarPrecio()
Identificacin de clases
Reconocer una estructura y comportamiento comunes entre varios objetos.
Objeto
Operaciones
Atributos
Escribir
Cantidad de tinta
Recargar
Color de tinta
Lapicero rojo
UNS
Escribir
Recargar
Cantidad de tinta
Color de tinta
Pluma y tinta
Ejercicio
A que clase pertenecen estos dos objetos?
Clases y Objetos.
Las clases son definiciones estticas que nos permite entender todos los objetos de esa clase.
Los objetos son entidades dinmicas que existen en el mundo real y en simulaciones del
mundo real.
2.5. Herencia
Entre diferentes clases pueden haber similitudes
La herencia es una relacin entre clases donde una es padre de otra.
Las propiedades comunes definen la superclase. Clase padre.
Las subclases heredan estas propiedades. Clase hijo.
Un objeto hijo es un-tipo-de una superclase.
Un Helicptero es un tipo de Nave Area.
Nave Area
Jumbo
Helicptero
Globo
Dirigible
Ejercicio
Indique que propiedades tiene la clase Nave Area.
2.6. Polimorfismo
Significa que la misma operacin se realiza en las clases de diferente forma.
Estas operaciones tienen el mismo significado, comportamiento.
Internamente cada operacin se realiza de diferente forma.
UNS
Abordar pasajeros
Barco
Tren
Helicptero
Ejemplos
Enviar calcularIntereses a objetos como: Cuenta de Ahorros, Cuenta CTS, Cuenta Corriente.
En java se representa como: cuenta.calcularIntereses();
Ejercicio
Determine las clases, mtodos, atributos y asociaciones del siguiente problema. Puede aplicar
herencia o polimorfismo?
Tacora Films esta en el negocio de alquiler de pelculas a sus clientes. Y ahora esta
automatizando el proceso de alquiler. El cliente escoge las pelculas en la tienda y las lleva a
la caja para proceder con el alquiler. El empleado de la tienda solicita la TacoraCard al cliente
para identificarlo y escanea el cdigo de barras de cada pelcula que esta alquilando.
Los clientes tienen que ser socios de Tacora Film Club para poder alquilar pelculas. Al
suscribirse al club entregan datos como nombre, direccin, telfono. TacoraCard tiene un
nico numero impreso que identifica al cliente.
Cada alquiler tiene un numero nico para identificarlo y en el acuerdo se indica la fecha de
inicio del alquiler y la lista de pelculas que se estn alquilando. No se puede alquilar mas de
10 pelculas. No se sabe cuando exactamente el cliente devolver la pelcula.
El gerente de Tacora esta considerando emplear el mismo programa para alquilar otros
artculos como libros, reproductores de VHS y de DVD, CDs de juegos.
Cada articulo tiene un precio de alquiler, numero de das que puede ser alquilado, el titulo de
la pelcula, una descripcin breve, el tipo de pelcula (Familiar, Accin, Comedia...)
2.7.1. Paquetes
Un paquete es un contenedor (agrupador) de clases que estn relacionadas lgicamente.
Un paquete tiene sus clases en un mismo directorio
Varias clases pueden tener el mismo nombre pero en diferente paquete.
UNS
Directorio:
C:/alquiler
Archivos en C:/alquiler
Pelcula.java
Contrato.java
Cliente.java
Paquete
NO
almacen
NO
private
SOLO
SI
HEREDA
SOLO
SI
protected HEREDA
SI
public
SI
SI
NO
Odisea 2001
Ciencia Ficcion
El Padrino
Drama
UNS
2.Los objetos se crean con el operador new.
Pelcula
Pelcula
Pelicula pelicula1 =
La Strada
Drama
pelicula1
new
Pelicula();
int i;
Pelicul
a
pelicu
pelicul
la1
a1;
3
Dias de
nu
ll
int j = 3;
Radio
jPelicula
pelicula2
pelicula2
- Se puede comparar un
objeto con null
2.
7.
5.
Asignando referencias
Se puede asignar una variable referencia a otra resultado en dos referencias al mismo objeto.
Pelicula pelicula1 = new Pelicula("Betty Blue");
Pelcula pelicula2 = pelicula1;
6. Las variables de instancia se declaran en la clase. Estos son atributos de la clase.
public class Pelicula {
7
UNS
public String titulo;
public String tipo;
}
7. Las variables publicas de instancia se acceden con el operador punto.
Pelicula pelicula1 = new Pelicula();
pelicula1.titulo = "Kramer vs Kramer";
if (pelicula1.titulo.equals("El planeta de los simios")
pelicula1.tipo = "Ciencia Ficcion";
2.9. Mtodos
Un mtodo es equivalente a una funcin o subrutina de otros lenguajes.
Los mtodos solo se definen dentro de una clase.
modificador tipoDeRetorno nombreMetodo (ListaDeArgumentos) {
// desarrollo del mtodo;
}
2.9.1. Argumentos
En la definicin del mtodo se indica el tipo y el nombre de los argumentos del mtodo.
public void setTipo (String nuevoTipo) {
tipo = nuevoTipo;
}
Si el mtodo tiene varios argumentos, estos se separan por comas.
UNS
}
2.9.3. Recursividad
Un mtodo recursivo es aquel que directa o indirectamente se llama a si mismo.
Como ejemplo til se puede presentar el clculo de factorial y sumatorias
Factorial de 0 = 1
Factorial de N = N * Factorial de N - 1
Sumatoria de 0 = 0
Sumatoria de N = N + Sumatoria de N - 1
Un mtodo recursivo debe tener al menos un caso no recursivo y otros casos recursivos que
se aproximen al caso no recursivo para evitar la recursion infinita.
Recursion.java
public class Recursion {
public static void main (String[] args) {
System.out.println( factorial(5) );
System.out.println( sumatoria(5) );
}
public static int factorial (int numero) {
if (numero == 0)
return 1;
if (numero > 0 )
return ( numero * factorial (numero 1) );
}
public static int sumatoria (int numero) {
if (numero == 0)
return 0;
if (numero > 0 )
return ( numero + sumatoria (numero 1) );
}
}
Laboratorio
Pelicula.java
public class Pelicula {
private String titulo,tipo;
//...
public String getTipo () {
return tipo;
}
public String setTipo (String nuevoTipo) {
tipo = nuevoTipo;
}
9
UNS
}
PruebaPeliculas.java
public class PruebaPeliculas {
public static void main (String[] args) {
Pelicula pelicula1 = new Pelicula();
pelicula1.setTipo("Comedia");
if (pelicula1.getTipo().equals("Drama")) {
System.out.println("La pelicula es un drama");
}
else {
System.out.println("La pelicula no es un drama");
}
}
}
2.10. Encapsulamiento
1. Las variables de instancia de una clase deberan ser declaradas como privadas
Solo un mtodo debera acceder a las variables privadas.
No se debe acceder a las variables de instancia directamente, sino a travs de un mtodo.
Pelicula pelicula1 = new Pelicula();
if
(pelicula1.titulo.equals("Los doce del patibulo")) {
pelicula1.setTipo("Accion");
}
Cual de estas lneas no cumple con el encapsulamiento?
2. Cdigo de una clase.
Laboratorio
Pelicula.java
public class Pelicula {
private String titulo;
private String tipo;
//metodos settitulo,settipo,gettipo y gettipo, tostring
public void setTitulo (String nuevoTitulo) {
titulo = nuevoTitulo;
}
public void setTipo (String nuevoTipo) {
tipo = nuevoTipo;
}
public String getTitulo () {
return titulo;
}
public String getTipo () {
return tipo;
}
10
UNS
Laboratorio
TestPrimitivas.java
public class TestPrimitivas {
public static void main (String[] args)
{
Laboratorio
TestReferencias.java
public class TestReferencias {
public static void main (String[] args)
{
UNS
Que muestra el programa?
Ejercicio
1. Cree la clase Cliente con los atributos cdigo, nombre, direccin, telfono encapsulados
(mtodos set y get).
2. Agregue a la clase Cliente el mtodo toString que muestre en pantalla todos los datos
de la clase Cliente.
3. Cree la clase Pelicula con los atributos cdigo, titulo, tipo, precio de alquiler. Incluya el
mtodo toString.
4. Cree un programa como TacoraFilms.java y cree como objetos a dos clientes con
datos de sus familiares. (cliente1 y cliente2)
5. Agregue al programa principal objetos de dos pelculas que haya visto recientemente.
(pelicula1, pelicula2)
6. Al final del programa coloque lo siguiente:
System.out.println(cliente1);
System.out.println(cliente2);
System.out.println(pelicula1);
System.out.println(pelicula2);
Que muestra el programa?
12
UNS
// implicito
// explicito
// implicito
13
UNS
3.1.3. Constructores
Para una adecuada iniciacin de variables de instancia, la clase debe tener un constructor.
Un constructor se invoca automticamente cuando se crea un objeto.
Se declaran de forma pblica.
Tiene el mismo nombre que la clase.
No retorna ningn valor.
Si no se codifica un constructor, el compilador crea uno por defecto sin argumentos que solo inicia las
variables de instancia.
Laboratorio
Pelicula.java
TestConstructores.java
UNS
TestThis.java
public class TestThis {
public static void main (String[] args) {
Pelicula pelicula1 = new Pelicula();
Pelicula pelicula2 = new Pelicula("Todo sobre mi madre");
System.out.println(pelicula1.getTitulo());
System.out.println(pelicula2.getTitulo());
}
}
15
UNS
Para una iniciacin compleja se usara un bloque static
public Class Pelicula {
// iniciacin explicita
private static double precioMinimo = 3.29;
}
Laboratorio
Pelicula.java
import java.util.*;
public class Pelicula {
private static int numeroDias = 3;
// iniciacin compleja
private static double precioMinimo;
static {
Date hoy = new Date();
if (hoy.getDay() == 0) //si es Domingo
precioMinimo = 5.10;
else
precioMinimo = 3.29;
}
public int getNumeroDias() {
return numeroDias;
}
public double getPrecioMinimo() {
return precioMinimo;
}
}
TestStatic.java
public class TestStatic {
public static void main (String[] args) {
Pelicula pelicula = new Pelicula();
System.out.println(pelicula.getNumeroDias());
System.out.println(pelicula.getPrecioMinimo());
}
}
16
UNS
return precio;
}
}
TestStatic2.java
public class TestStatic2 {
public static void main (String[] args) {
Pelicula.setPrecio(3.98f);
Pelicula oscar = new Pelicula("Ben Hur");
System.out.println(oscar.getPrecio());
oscar.setPrecio(4.98f);
System.out.println(Pelicula.getPrecio());
}
}
Que resultados se obtienen?
3.2 EJERCICIOS
Ejercicio 1
Cree la clase Cliente que tendr los siguiente datos cdigo (int) nombre, direccin, telfono
(String)
La clase debe contar con dos constructores.
Uno sin argumentos para autogenerar el cdigo (que inicia en 2000).
Otro que aceptara los datos nombre, direccin, telfono.
El cdigo del cliente debe ser automtico e incrementarse en uno cada vez que se cree una
instancia. Los cdigos inician en 2001
Agregue los mtodos set y get para estos atributos.
Tambin agregue el mtodo toString() para mostrar los datos del cliente asi como el cdigo
creado automticamente.
Cree la clase Pelicula con los siguientes datos: codigo (int) titulo, tipo (String) precio (float)
La clase debe contar con dos constructores.
Uno sin argumentos para autogenerar el cdigo (que inicia en 9000).
Otro que aceptara los datos titulo, tipo, precio .
El cdigo de la pelicula debe ser automtico e incrementarse en uno cada vez que se cree una
instancia. Los codigos inician en 9001
Agregue los mtodos set y get para estos atributos.
Tambin agregue el mtodo toString() para mostrar los datos de la pelicula incluido el cdigo
autogenerado.
Defina la clase BaseDeDatos donde creara 4 clientes (nombres familiares) y 6 pelculas (que haya
visto en cine o televisin).
Finalmente cree el programa TestClases que muestre toda la base de datos (haciendo uso de la
ventaja del mtodo toString() ). Tambin muestre el ultimo cdigo autogenerado tanto en clientes
como en pelculas que deber obtener directamente de sus clases.
Cliente.java
public class Cliente {
private int id;
//...
private static int ultimoId = 2000;
//...
public Cliente() {
this.id = ...
17
UNS
ultimoId++;
}
public Cliente(String nombre...) {
this();
this.nombre = ...
}
}
Pelicula.java
public class Pelicula {
private int id;
//...
private static int ultimoId = 9000;
//...
public static int getUltimoId() {
return ultimoId;
}
}
BaseDeDatos.java
public class BaseDeDatos {
Cliente cliente1 = new Cliente("Daneel Olivaw","Solaria4","11-2542");
//...
Pelicula pelicula1 = new Cliente("El Padrino","Drama",5.30f);
//...
}
TestClases.java
public class TestClases {
public static void main
(String[] args) {
Ejercicio 2
Cree la clase Vendedor con los siguientes atributos nombre, edad, ventas, sueldoFijo. La clase
tambin contara con un atributo esttico para contar la cantidad de vendedores que se vayan
creando. La clase cuenta con un constructor que recibe nombre, edad, ventas, sueldoFijo como
argumentos. En este constructor se incrementara el contador de vendedores creados.
Contara con un mtodo esttico que retornara la cantidad actual de vendedores creados
getCantidad(). Otro mtodo retornara el sueldo del vendedor getSueldo(). El sueldo es el 0.25% de
las ventas mas el sueldo fijo.
Agregue otro constructor con dos argumentos como nombre y ventas nicamente.
En el programa AplicacionVendedor.java se encuentra lo siguiente:
...
Vendedor vendedorHari = new Vendedor("Hari Seldon",8000);
Vendedor vendedorSalvor= new Vendedor("Salvor Hardin",30,5000,1300);
System.out.println(Vendedor.getCantidad());
System.out.println(vendedorHari.getSueldo());
System.out.println(vendedorSalvor.getSueldo());
18
UNS
...
5.1. HERENCIA
5.1.1 Definicin
Permite a una clase compartir la misma estructura de datos y comportamiento de otra clase.
La herencia minimiza la necesidad de duplicar cdigo.
El Polimorfismo permite utilizar el mtodo de acuerdo al objeto heredado.
Item
Superclase
Pelicula
Libro
Subclase
Equipo
(DVD, VHS)
19
UNS
// Inicia variables de la clase Pelicula. Constructor por defecto.
Defina las subclases Libro y Equipo.
Como declarara las clases:
Hombre > Homnido > Primate > Placentario
Perro > Canino > Carnivoro > Placentario
Placentario > Mamfero > Vertebrado > Animal > Ser Vivo.
5.1.4. Mtodos
La superclase define los mtodos para todas las subclases.
La subclase puede especificar mtodos propios.
Item0.java
public class Item0 {
protected float precio = 0;
Item0 (float precio) {
this.precio = precio;
}
public float getPrecio() {
return precio;
}
}
Pelicula0.java
public class Pelicula0 extends Item0
{
private String titulo = "";
Pelicula0 (float precio, String titulo) {
super(precio);
this.titulo = titulo;
}
public String getTitulo()
{
return titulo;
}
}
20
UNS
TestSuper.java
public class TestSuper {
public static void main (String[] args) {
Item0 item = new Item0(1.1f);
System.out.println( item.getPrecio() );
Pelicula0 pelicula = new Pelicula0(2.2f,"Zelig");
System.out.println( pelicula.getPrecio() );
System.out.println( pelicula.getTitulo() );
}
}
Que diferencia existe entre this y super?
Se puede reemplazar super(precio); por this.precio = precio; ?
Que mtodos puede invocar una subclase?
La subclase hereda todos los mtodos del padre.
La subclase puede re-escribir un mtodo del padre.
Item1.java
public class Item1 {
public float calcularImporte(int
return 50;
}
}
Pelicula1.java
public class Pelicula1 extends Item1
public float calcularImporte(int
if (cliente < 500)
return 10;
else
return 30;
}
}
TestSobrescribir.java
public class TestSobrescribir {
public static void main (String[]
cliente) {
{
cliente) {
args) {
21
UNS
public class Equipo2 extends Item2 {
public float calcularImporte(int cliente) {
float seguroEquipo = 25;
float alquiler = super.calcularImporte(cliente);
return seguroEquipo + alquiler;
}
}
TestSuper2.java
public class TestSuper2 {
public static void main (String[] args) {
Item2 articulo = new Item2();
System.out.println( articulo.calcularImporte(599) );
Equipo2 vhs = new Equipo2();
System.out.println( vhs.calcularImporte(599) );
}
}
5.2. Polimorfismo
Permite efectuar una misma operacin dependiendo del tipo de objeto.
Ejemplo
TacoraFilms inicia sus operaciones alquilando nicamente pelculas.
Tres meses despus amplia el alquiler a equipos, juegos y libros.
El alquiler de una pelicula es 2 soles por da de alquiler.
El alquiler de un equipo consta de un seguro de 50 soles adems de 5 soles por da.
El alquiler de juegos depende del fabricante. PlayStation 2soles/da Nintendo 1sol/da
Los libros no se alquilan, se prestan uno a la vez, mientras sean clientes de la tienda.
Explique por que se obtienen los resultados
Alquiler3.java
public class Alquiler3 {
private int dias;
public Alquiler3(int dias) {
this.dias = dias;
}
public int getDias () {
return dias;
}
}
Item3.java
public class Item3 {
protected float calcularImporte(Alquiler3 contrato) {
return 0;
}
}
Pelicula3.java
public class Pelicula3 extends Item3 {
protected float calcularImporte(Alquiler3 contrato) {
int importe = 2*contrato.getDias();
return importe;
}
}
Equipo3.java
public class Equipo3 extends Item3 {
22
UNS
protected float calcularImporte(Alquiler3 contrato) {
int seguroEquipo = 50;
int importe = seguroEquipo + 5*contrato.getDias();
return seguroEquipo + importe;
}
}
Juego3.java
public class Juego3 extends Item3 {
String fabricante;
public Juego3(String fabricante) {
this.fabricante = fabricante;
}
public String getFabricante() {
return fabricante;
}
protected float calcularImporte(Alquiler3 contrato) {
String fabricante = this.fabricante;
int tasa = 0;
if (fabricante.equals("PlayStation")) tasa = 2;
if (fabricante.equals("Nintendo"))
tasa = 1;
int importe = tasa*contrato.getDias();
return importe;
}
}
Libro3.java
public class Libro3 extends Item3 {
protected float calcularImporte(Alquiler3 contrato) {
return 0;
}
}
TestPolimorfismo.java
public class TestPolimorfismo {
public static void main (String[] args) {
Alquiler3 contrato = new Alquiler3(10);
Pelicula3 oscar = new Pelicula3();
System.out.println( oscar.calcularImporte(contrato) );
Equipo3 vhs = new Equipo3();
System.out.println( vhs.calcularImporte(contrato) );
Juego3 mu = new Juego3("Nintendo");
System.out.println( mu.calcularImporte(contrato) );
Libro3 agua = new Libro3();
System.out.println( agua.calcularImporte(contrato) );
}
}
23
UNS
testOperador(vhs);
testOperador(mu);
testOperador(agua);
}
public static void testOperador (Item3 articulo) {
if (articulo instanceof Juego3) {
Juego3 juego = (Juego3) articulo;
System.out.println(juego.getFabricante());
}
else {
System.out.println("No tiene Fabricante");
}
}
}
24
UNS
public final static float
PI = 3.141592f;
5.6. Ejercicio
Encuentre los errores en el siguiente cdigo.
Item.java
1. package alquiler;
2. public class Item {
3.
public final int MAXIMO = 5;
4.
public
String getNombre() return "";
5.
private
String getColor()
return "";
6.
protected String getImporte() return "";
7.
String getAlias() return "";
8.
public final String getFabricante() return "";
9. }
Pelicula.java
1. package alquiler;
2. public class Pelicula extends Item {
3.
public final int MAXIMO = 5;
4.
public
String getNombre() return super.getNombre();
5.
private
String getColor()
return super.getColor();
6.
protected String getImporte() return super.getImporte();
7.
String getAlias() return super.getAlias();
8.
public final String getFabricante()
9.
return super.getFabricante();
10. }
Juguete.java
1. package almacen;
2. public final class Juguete {
3.
Item item = new Item("");
4.
public
String getNombre() return item.getNombre();
5.
public
String getColor()
return item.getColor();
6.
protected String getImporte() return item.getImporte();
7.
String getAlias() return item.getAlias();
8. }
25
UNS
Pelota.java
1. package almacen;
2. public final class Pelota extends Juguete {
3.
public
String getNombre() return super.getNombre();
4.
public
String getColor()
return super.getColor();
5.
protected String getImporte() return super.getImporte();
6.
String getAlias() return super.getAlias();
7. }
5.7. Laboratorio.
Cree una clase Item.java con los siguientes atributos: id (int); titulo, descripcin, ranking, categora (String) ,
precio de alquiler por dia (double). Todos estos atributos seran protected.
Agregue un atributo entero privado esttico que inicia en 1000 para autogenerar el Id del item.
Agregue un constructor sin parmetros que autogenere un id para el item en base al atributo esttico.
Agregue un segundo constructor con argumentos titulo, descripcin, precio, ranking y categora. Este constructor
invocara al primer constructor para asignar el id. Ademas asignara los argumentos a los atributos.
Agregue todos los mtodos 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 automticamente.
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, descripcin, precio, ranking, numero de dias, categora, duracin
y director. Este constructor invocara al constructor de la superclase y luego asignara los dos ultimos argumentos
a sus atributos privados.
Agregue todos los mtodos set y get para sus dos atributos privados.
26
UNS
Agregue el mtodo 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, descripcin, precio, ranking, numero de dias, categora, 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 mtodos set y get para sus dos atributos privados.
Agregue el mtodo 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 pelculas y los juegos.
BaseDeDatos.java
public class BaseDeDatos {
private static Cliente[] cliente = new Cliente [4];
private static 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) {
for (...) {
break;
}
return cliente[];
}
27
UNS
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 esttico entero ser el contador de id que iniciara en 500.
Una constante ser el mximo 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. Tambin creara el arreglo de
tems, y su numero de alquiler.
Un mtodo para agregar tems al arreglo de tems del alquiler.
Un mtodo 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();
}
}
28
UNS
new Pelicula();
29