VideoClub java

Páginas: 6 (1462 palabras) Publicado: 9 de junio de 2013
Caso práctico
Alquiler de películas en un vídeo-club


Supongamos que tenemos que desarrollar una aplicación
que gestione los alquileres de DVDs en un vídeo-club.

Inicialmente, nuestro diagrama de clases sería similar al siguiente:

public class DVD
{
// Constantes simbólicas
public static final int INFANTIL = 2;
public static final int NORMAL
= 0;
public static final int NOVEDAD= 1;
// Variables de instancia
private String _titulo;
private int
_tipo;
// Constructor
public DVD (String titulo, int tipo)
{
_titulo = titulo;
_tipo
= tipo;
}
OOP - Caso práctico: Vídeo-club

-1-

© Fernando Berzal

// Acceso a las variables de instancia
public int getTipo()
{
return _tipo;
}
public void setTipo (int tipo)
{
_tipo = tipo;
}
public String getTitulo (){
return _titulo;
}
}

public class Alquiler
{
private DVD _dvd;
private int _tiempo;
public Alquiler (DVD dvd, int tiempo)
{
_dvd = dvd;
_tiempo = tiempo;
}
public int getTiempo()
{
return _tiempo;
}
public DVD getDVD()
{
return _dvd;
}
}
OOP - Caso práctico: Vídeo-club

-2-

© Fernando Berzal

import java.util.Vector;

public class Cliente
{
// Variables deinstancia
private String _nombre;
private Vector _alquileres =new Vector();
// Constructor
public Cliente (String nombre)
{
_nombre = nombre;
}
// Acceso a las variables de instancia
public String getNombre()
{
return _nombre;
}
// Registrar alquiler
public void nuevoAlquiler (Alquiler alquiler)
{
_alquileres.add(alquiler);
}
// Emitir un informe del cliente
public String
{double
double
int
int
Alquiler
String

informe()
total;
importe;
puntos;
i;
alquiler;
salida;

total = 0;
puntos = 0;
salida = "Informe para " + getNombre() + "\n";

OOP - Caso práctico: Vídeo-club

-3-

© Fernando Berzal

// Recorrido del vector de alquileres
for (i=0; i2)
importe += (alquiler.getTiempo()-2)*1.5;
break;
case DVD.NOVEDAD:
importe += alquiler.getTiempo()* 3;
break;
case DVD.INFANTIL:
importe += 1.5;
if (alquiler.getTiempo()>3)
importe += (alquiler.getTiempo()-3)*1.5;
break;
}
// Programa de puntos
puntos++;
if ( (alquiler.getDVD().getTipo()==DVD.NOVEDAD)
&& (alquiler.getTiempo()>1) )
puntos++;
// Bonificación
// Mostrar detalles del alquiler
salida += "\t" + alquiler.getDVD().getTitulo()
+ "\t" + String.valueOf(importe) + " \n"; 

// Acumular total
total += importe;
}
OOP - Caso práctico: Vídeo-club

-4-

© Fernando Berzal

// Pie del informe
 

salida += "IMPORTE TOTAL = "
+ String.valueOf(total) + "

\n";

salida += "Dispone de "
+ String.valueOf(puntos) + " puntos\n";
return salida;
}
}

Paso 1: Extraer método de informe()
El método informe es excesivamente largo…

public class Cliente…public double precio (Alquiler alquiler)
{
double importe = 0;
switch (alquiler.getDVD().getTipo()) {
case DVD.NORMAL:
importe += 2;
if (alquiler.getTiempo()>2)
importe += (alquiler.getTiempo()-2)*1.5;
break;
case DVD.NOVEDAD:
importe += alquiler.getTiempo() * 3;
break;
case DVD.INFANTIL:
importe += 1.5;
if (alquiler.getTiempo()>3)
importe += (alquiler.getTiempo()-3)*1.5;
break;
}return importe;
}
OOP - Caso práctico: Vídeo-club

-5-

© Fernando Berzal

public String
{
double
double
int
int
Alquiler
String

informe()
total;
importe;
puntos;
i;
alquiler;
salida;

total = 0;
puntos = 0;
salida = "Informe para " + getNombre() +

"\n";

for (i=0; i1))
puntos++;
// Bonificación
// Mostrar detalles del alquiler
salida += "\t" +alquiler.getDVD().getTitulo()
+ "\t" + String.valueOf(importe) + " \n";
 

// Acumular total
total += importe;
}
// Pie del recibo
 

salida += "IMPORTE TOTAL = "
+ String.valueOf(total) + "

\n";

salida += "Dispone de "
+ String.valueOf(puntos) + " puntos\n";
return salida;
}

OOP - Caso práctico: Vídeo-club

-6-

© Fernando Berzal

Debemos comprobar que calculamos correctamente...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Videoclub
  • Videoclub
  • Sistema de videoclub
  • Dfd de videoclub
  • Videoclub
  • Java
  • java
  • javo

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS