public Reserva(
     String id,
     float preu,
     boolean penalitzacioTemps,
     boolean penalitzacioMoto,
     float penalitzacio,
     String dataInicial,
     String horaInicial,
     String dataFinal,
     String horaFinal,
     Local localInicial,
     Local localFinal,
     Client clientReserva,
     String idMoto) {
   this.id = id;
   this.preu = preu;
   this.penalitzacioTemps = penalitzacioTemps;
   this.penalitzacioMoto = penalitzacioMoto;
   this.penalitzacio = penalitzacio;
   this.dataInicial = Data.crearData(dataInicial, horaInicial);
   this.dataFinal = Data.crearData(dataFinal, horaFinal);
   this.localInicial = localInicial;
   this.localFinal = localFinal;
   this.clientReserva = clientReserva;
   if (localFinal.getMoto(idMoto) != null) {
     this.motoReserva = localFinal.getMoto(idMoto);
   } else {
     this.motoReserva = localInicial.getMoto(idMoto);
   }
 }
  /**
   * UC 5_1 Metode que calcula el preu final de la reserva, tenint en compte totes les possibles
   * penalitzacions. Tambe canvia el estat de la moto.
   */
  public void cobrarReserva() {
    String diaActual, horaActual;
    Consola.escriu("Introdueix la data 'actual' (dd/mm/aaaa):");
    diaActual = Consola.llegeixString();
    Consola.escriu("Introdueix la hora 'actual' (hh:mm:ss): ");
    horaActual = Consola.llegeixString();
    Data dataEntrega = Data.crearData(diaActual, horaActual);

    // Data dataEntrega = new Data(); //es pot seleccionar aquesta opcio si es vol fer automatic.

    float diferencia;
    clientReserva.setEstat("NO RESERVA");

    diferencia = dataEntrega.calcularDiferencia(dataFinal);

    if (diferencia > 0.0f) {
      penalitzacio = diferencia * 2;
      Consola.escriu("La moto s'ha entregat amb retras.\n La reserva tindra un preu adicional de ");
      Consola.escriu(penalitzacio);
      penalitzacioTemps = true;
      preu += penalitzacio;
      Consola.escriu("€ tinguent un preu final de ");
      Consola.escriu(preu);
      Consola.escriu("€.\n");
    }

    gestionarAveria();
  }
 /**
  * UC 4_1 Metode que comprova si una reserva es activa segons la hora passada per parametre. La
  * hora passada per parametre sera o la hora actual o una introduida per un usuari.
  *
  * @param diaActual Data que es suposa la actual.
  * @param horaActual
  * @return Retorna si aquesta data es troba dins del periode de la reserva.
  */
 public boolean isActiva(String diaActual, String horaActual) {
   Data dataActual = Data.crearData(diaActual, horaActual);
   return dataActual.compara(dataInicial) >= 0 && dataActual.compara(dataFinal) <= 0;
 }