Ver Mensaje Individual
  #4 (permalink)  
Antiguo 13/10/2014, 13:09
Avatar de Profesor_Falken
Profesor_Falken
 
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: arrayList en constructor

Buenas,

Reserva y Habitacion son un ejemplo claro de composicion.
Deberías mantener la clase Habitacion tal y como está y añadirla dentro de Reserva.

fechaEntrada;
fechaSalida;
numeroDias;
numeroPersonas;
ArrayList<Cliente> listaClientes;
<b>Habitacion habitacion</b>


Para saber las relaciones que hay que aplicar y no tienes experiencia, hay una regla que funciona bien en el 99% de los casos.

Herencia: "es un". Por ejemplo un Coche "es un" Vehiculo al igual que un Camion. Por tanto, tanto Coche como Camion deben extender de Vehiculo.

class Coche extends Vehiculo

¿Una Reserva es una Habitación? No creo...


Asociacion: "usa". Cuando un tipo utiliza otro para su finalidad. Por ejemplo, un Cliente de una tienda usa una TarjetaBancaria.

class Cliente
int id
String nombre
String apellidosO
TarjetaBancaria tarjetaBancaria


Composicion "tiene un". Por ejemplo, un Coche "tiene" 4 Rueda. Un Ordenador "tiene" Teclado. O, en tu caso
una reserva "tiene una" ListadeClientes y ¿una? Habitacion


Como ya habrás pensado, la asociacion y la composición se parecen bastante. ¿La Reserva "tiene" o "usa" una Habitacion? La diferencia está en como lo entiendas funcionalmente. ¿Puede existir una Reserva sin Habitacion? En caso afirmativo es una asociación. En caso contrario, se trata de composición.

Por otro lado, te pregunto: ¿no puede ser que una misma reserva contenga varias habitaciones? (por ejemplo una reserva de grupo)


Un saludo
__________________
If to err is human, then programmers are the most human of us