miércoles, 30 de marzo de 2016

Uso de arrays en JAVA - 1 de 2



Suponga que se desea almacenar en arrays el catálogo de vehículos y la relación de clientes de una empresa de alquiler de vehículos. Para esto es necesario definir una nueva clase, EmpresaAlquilerVehiculos, que almacene la información detallada de la empresa, los clientes y el catálogo de vehículos.

public class EmpresaAlquilerVehiculos {
private String cif;
private String nombre;
private String paginaWeb;
private int totalClientes;
private Cliente[] clientes;
private int totalVehiculos;
private Vehiculo[] vehiculos;
private int totalAlquileres;
private VehiculoAlquilado[] alquileres;
// se omiten los métodos ‘get’ y ‘set’ de la clase
public EmpresaAlquilerVehiculos (String cif,
String nombre,
String paginaWeb) {
this.cif = cif;
this.nombre = nombre;
this.paginaWeb = paginaWeb;
this.totalClientes = 0;
this.clientes = new Cliente[50];
this.totalVehiculos = 0;
this.vehiculos = new Vehiculo[50];
this.totalAlquileres = 0;
this.alquileres = new VehiculoAlquilado[100];
}
}

La clase EmpresaAlquilerVehiculos está compuesta de arrays de objetos de las clases Cliente, Vehiculo y VehiculoAlquilado. A continuación se incluye la declaración de los atributos de estas clases, se omite la declaración de los métodos constructores y los métodos ‘get’ y ‘set’.

public class Cliente {
private String nif;
private String nombre;
private String apellidos;
}

public class Vehiculo {
private String matricula;
private String marca;
private String modelo;
private String color;
private double tarifa;
private boolean disponible;
}

public class VehiculoAlquilado {
private Cliente cliente;
private Vehiculo vehiculo;
private int diaAlquiler;
private int mesAlquiler;
private int añoAlquiler;
private int totalDiasAlquiler;
}

La clase EmpresaAlquilerVehiculos declara tres arrays para registrar a sus clientes, vehículos y el histórico de vehículos alquilados. El array clientes puede almacenar hasta 50 objetos de tipo Cliente, el array vehiculos puede almacenar hasta 50 objetos de tipo Vehiculo y el array alquileres tiene capacidad para almacenar 100 objetos de tipo VehiculoAlquilado.

Las variables numéricas totalClientes, totalVehiculos y totalAlquileres se utilizan para almacenar el total de objetos almacenados en cada uno de los arrays. Estas variables se inicializan a cero en el método constructor de la clase.

La clase EmpresaAlquilerVehiculos declara los siguientes métodos para realizar operaciones:

  • registrarCliente(Cliente cliente). Añade un nuevo cliente a la lista de clientes de la empresa.
  • registrarVehiculo(Vehiculo vehiculo). Añade un vehículo al catálogo de vehículos de la empresa.
  • imprimirClientes(). Muestra la relación de clientes de la empresa.
  • imprimirVehiculos(). Muestra el catálogo de vehículos de la empresa.
  • alquilarVehiculo(String matricula,String nif,int dias).
  • Modifica la disponibilidad del vehículo para indicar que está alquilado y añade un objeto de tipo VehiculoAlquilado al array de vehículos alquilados. Este array almacena el cliente, el vehículo y los días de alquiler de cada vehículo alquilado.
  • recibirVehiculo(String matricula). Modifica la disponibilidad del vehículo para que se pueda alquilar de nuevo.


El método registrarCliente(Cliente cliente) almacena un objeto de la clase Cliente en la última posición del array clientes, dada por la variable totalClientes y a continuación incrementa la variable totalClientes.

public void registrarCliente(Cliente cliente) {
this.clientes[this.totalClientes] = cliente;
this.totalClientes++;
}

El método registrarVehiculo(Vehiculo vehiculo) almacena un objeto de la clase Vehiculo en la última posición del array vehiculos, dada por la variable totalVehiculos y a continuación incrementa la variable totalVehiculos.

public void registrarVehiculo(Vehiculo vehiculo) {
this.vehiculos[this.totalVehiculos] = vehiculo;
this.totalVehiculos++;
}

El método imprimirClientes() muestra la relación de clientes de la empresa de alquiler.

public void imprimirClientes() {
System.out.println("NIF cliente\tNombre\n");
for (int i=0; i<this.totalClientes; i++)
System.out.println(clientes[i].getAtributos());

El método imprimirVehiculos() muestra el catálogo de vehículos de la empresa de alquiler. El método getAtributosInforme() muestra el detalle de atributos del vehículo.

public void imprimirVehiculos() {
System.out.println("Matricula\tModelo " +
"\tImporte Disponible\n");
for (int i=0; i<this.totalVehiculos; i++)
System.out.println(
vehiculos[i].getAtributosInforme());
}

Para registrar el alquiler de un vehículo por un cliente se usa el método alquilarVehiculo(String matricula, String nif, int dias).
Este método modifica la disponibilidad del vehículo para indicar que está alquilado. El método getCliente(String nif) busca la referencia del cliente con el NIF dado en el array clientes. De forma similar, el método getVehiculo(String matricula) busca la referencia del vehículo con la matrícula dada en el array vehiculos. Una vez encontrado el vehículo con la matrícula indicada, se verifica si está disponible para alquilar y se modifica su disponibilidad. A continuación, almacena un objeto de tipo VehiculoAlquilado en el array alquileres. Este objeto relaciona un cliente, un vehículo, la fecha actual y los días de alquiler.

El método getCliente(String nif).

private Cliente getCliente(String nif) {
for (int i=0; i<this.getTotalClientes(); i++)
if (this.clientes[i].getNIF() == nif)
return this.clientes[i];
return null;
}



Espero haber ayudado en algo. Hasta la próxima oportunidad!











  

No hay comentarios:

Publicar un comentario en la entrada