Está en la página 1de 4

Programacin Orientada a

Objetos.




Ejercicio: Desarrollar un programa en C# .Net para una agencia de
alquiler de vehculos.



Pasemos al enunciado de este ejercicio. Una agencia de alquiler de vehculos sin
conductor dispone de camiones y de turismos.
La figura anterior muestra la jerarqua de clases. En la misma figura se incluyen los atributos
y mtodos que es necesario considerar.
Los atributos de la clase base Vehiculo son las siguientes:
1. un String con la matricula del vehculo y
2. un atributo boolean (true, false) llamada alquilado que indica si ese vehculo est
alquilado o no en un determinado momento.
Los mtodos pblicos de Vehiculo son los siguientes:
1. un constructor (no mostrado en la figura) con la firma siguiente,
public Vehiculo(String matric, boolean alquil) { ... }
2. dos mtodos abstract llamados alquilar( ) y devolver( ) para alquilar y devolver
un vehculo, y
3. un mtodo abstract llamado showInfo( ) para mostrar informacin de un vehculo.
Este
mtodo se definir en cada una de las clases de las que pueden existir objetos, es
decir
en Camion y Turismo.

El alquiler de turismos se factura por kilmetros, mientras que el de camiones se factura por
das. Por esta razn, los atributos miembro de la clase Turismo son las siguientes:
1. un double con el precio por km (precioKm),
2. un int con el nde km que tiene el coche cuando se alquila (kmAlquiler) y
3. un int con el nde km con los que se devuelve (kmDevolucion).

Adems esta clase define unos atributos miembro static enteras que indican el ntotal de
objetos creados de la clase (numTurismos), y el n de vehculos de esa clase que estn
alquilados en un determinado momento (numTurAlquilados). Los mtodos de la clase
debern mantener actualizadas estas variables en todo momento.
En la clase Camion los atributos miembro correspondientes son un double con el precio por
da (precioDia), el da en el que se alquila (diaAlquiler) y el da en el que se devuelve
(diaD evolucion). Los dos ltimos atributos que son de tipo entero.
La clase Camion tiene unos atributos miembros static anlogas (numCamiones y
numCamAlquilados), que tambin son enteras.
No se pueden definir objetos de la clase Vehiculo puesto que es
abstract. Las clases Turismo y Camion disponen de los dos mtodos
siguientes,
1. El mtodo void alquilar (int), que recibe como argumento un entero que representa los km
que tiene el vehculo cuando se alquila (kmAlquiler) para turismos, o el da en el que se
alquila (diaAlquiler) para camiones. Este mtodo imprime por consola noticia del tipo de
alquiler realizado.
2. El mtodo void devolver(), que tiene un argumento anlogo (kmDevolucion para
turismos
y diaDevolucion para camiones). Este mtodo calcula e imprime por consola el coste que
ha supuesto el alquiler del vehculo.
Para la clase Camion los das se cuentan como nmeros enteros a partir del 1 de Enero de
2009.
Adems cada clase tendr su propio constructor, segn las firmas siguientes:
public Turismo(String matric, boolean alquil, double prKm) {...}
public Camion(String matric, boolean alquil, double prDia) {...}
Todas las clases de las que se crean objetos tienen tambin un mtodo showInfo()
que imprime los siguientes datos:
1. el tipo de vehculo, es decir la clase a la que pertenece,
2. la matrcula,
3. si el vehculo est alquilado o no,
4. el precio por da o por km,
5. el nmero total de vehculos que hay de esa clase y
6. cuntos vehculos de esa clase estn alquilados en ese momento.



El programa principal, definido en la clase AgenciaAlquiler, realiza las siguientes funciones:

1. Crea 4 objetos de las clases Camion y Turismo pasndole al constructor los
argumentos necesarios.
2. Se alquilan dos de los vehculos creados.
3. Se hace un listado de la situacin todos los vehculos de la empresa.
4. Se devuelven los vehculos creados anteriormente.

A continuacin exponemos algunas lneas de cdigo del programa principal:

class AgenciaAlquiler {

public static void main(String [] arg)
{
Vehiculo [ ] avis = new Vehiculo[4];

avis[0] = new Camion("SS-4386-AN", false, 100);
avis[1] = new Turismo("BI-6666-ZZ", false, 0.3);
avis[2] = new Turismo("HU-1976-A", false, 0.4);
avis[3] = new Camion("VI-1234-HL", false, 120);
Console.WriteLine("\nSE ALQUILAN DOS VEHICULOS:");
avis[2].alquilar(23000); // alquilar turismo con 23000 km
avis[3].alquilar(5); // alquilar camion el dia 5
Console.WriteLine ("\nSE IMPRIMEN LOS DATOS DE LOS VEHICULOS:");
for (int i=0; i<avis.length; i++)
avis[i].showInfo();
Console.WriteLine ("\nSE DEVUELVEN DOS VEHICULOS:");

avis[2].devolver(25000); // devolver turismo con 25000 km
avis[3].devolver(9); // devolver camion el dia 9
Console.WriteLine ("\nYa he terminado");
Console.Write ("Pulse la tecla Intro para terminar:");
Console.ReadKey( );

} // fin de main()
}
Crea un nuevo programa principal similar al de la clase AgenciaAlquiler, llamado
NuevaAgenciaAlquiler, que utilice la clase ArrayList en vez de un array para almacenar los
vehculos. El mtodo main() deber ser similar al anterior y hacer uso asimismo del
polimorfismo.

El profesor.;

También podría gustarte