Está en la página 1de 3

EJERCICIO 1A:

Desarrollar un programa C# para una agencia de alquiler de Vehculos.

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 miembros de la clase base Vehiculo son las siguientes:


1. un string con la matricula del vehculo y
2. una variable 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 el header siguiente,
public Vehiculo(String matric, boolean alquil) { ... }
2. dos mtodos abstract llamados alquilar( ) y devolver( ) para alquilar y devolver un
vehculo, y 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, las variables miembro de la clase Turismo son las
siguientes:
1. un double con el precio por km (precioKm),
2. un int con el numero de km que tiene el coche cuando se alquila (kmAlquiler) y
3. un int con el numero de km con los que se devuelve (kmDevolucion).
Adems esta clase define unos atributos static de tipo entero que indican el nmero total
de objetos creados de la clase (numTurismos), y el nmero 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.

Nota: Investiga cmo se definen y se manejan variables static.

En la clase Camion los atributos 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
(diaDevolucion). Las dos ltimas son de tipo entero.

La clase Camion tiene unos atributos 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 2000.

Adems cada clase tendr su propio constructor, segn los headers 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:
el tipo de vehculo, es decir la clase a la que pertenece,
la matrcula,
si el vehculo est alquilado o no,
el precio por da o por km,
el nmero total de vehculos que hay de esa clase y
cuntos vehculos de esa clase estn alquilados en ese momento (ver modelo con
el resultado del programa).
El programa principal, se llamara 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.

EJERCICIO 1B.

Cambiar el programa principal.

Crea un nuevo programa principal similar al de la clase AgenciaAlquiler, llamado


NuevaAgenciaAlquiler, que utilice la clase ArrayList para almacenar los vehculos. El
mtodo main( ) deber ser similar al anterior y hacer uso asimismo del polimorfismo.

Nota: Investigar cmo definir y crear un ArrayList de Objetos.

Atte.
Tutor.

También podría gustarte