20260130 EjercicioHoteles_2 - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
Vale, pues este método ahora, este método ahora de recuperar una reserva con estos datos y estas habitaciones reservadas, vamos a dejarlo porque como ahora estamos trabajando, hemos cambiado tu aplicación para que trabaje con código, vale, vamos a dejarlo.
00:00:00
es que igual ni lo vamos a usar
00:00:23
entonces este método por ahora lo voy a quitar
00:00:24
cuando lo necesitemos ya veremos
00:00:26
como lo hacemos
00:00:28
si es que lo necesitamos
00:00:31
claro, entonces
00:00:31
actualizar habitación
00:00:34
o sea, meterle camas
00:00:36
o meterle precios o meterle lo que sea
00:00:39
entonces actualizar habitación
00:00:41
has buscado la habitación con este número
00:00:43
y a la habitación con ese número
00:00:45
le has
00:00:47
dado
00:00:49
has creado una nueva
00:00:50
vale, hombre, aquí
00:00:54
casi sería mejor en lugar de crear una nueva
00:00:56
y hacer que otra pierda la referencia
00:00:58
y tengas ahí al recolector de basura
00:01:00
limpiando basura, pues
00:01:01
la haces en el solo set
00:01:03
o sea, a la habitación
00:01:05
con este número le cambias el número
00:01:08
de camas, porque la clave primaria no la puedes
00:01:10
cambiar
00:01:12
claro, si yo lo que digo es que una vez que la has encontrado
00:01:12
en lugar de esto
00:01:18
Tú haces tu set
00:01:19
Set bed counter
00:01:21
Bed counter y
00:01:24
Ah, pues ya está
00:01:25
Pues mucho mejor así
00:01:28
O sea, simplemente cuando la encuentre
00:01:29
Sobrescribe esa y crea
00:01:33
Claro, pero eso es a lo que voy
00:01:35
Que lo que estás haciendo físicamente es
00:01:36
Crear un objeto nuevo
00:01:38
Claro, pero la posición de la misma
00:01:40
La relación antiguo se borra
00:01:41
No, no, no
00:01:43
La posición de la raíz sí, pero la del objeto no
00:01:46
O sea, lo que tú estás haciendo
00:01:48
físicamente es esto
00:01:49
a ver, tú tienes aquí tu array
00:01:51
cada array
00:01:54
apunta una habitación
00:01:56
vale, entonces
00:01:57
cuando tú encuentras
00:01:59
encontramos la habitación
00:02:01
con ese número
00:02:04
¿qué haces? te creas un objeto nuevo
00:02:05
y haces que este apunte aquí
00:02:08
y este se queda aquí
00:02:09
perdido y no pasa nada, ya desaparecerá
00:02:11
ah, no sabía que pasaba eso
00:02:14
claro, cada vez que tú haces un new
00:02:15
el objeto se crea nuevo
00:02:17
con una dirección nueva
00:02:19
entonces este objeto con la dirección nueva
00:02:20
al asignarlo aquí, lo que significa
00:02:23
es que este empieza a apuntar aquí
00:02:25
y no pasa nada, o sea, funciona
00:02:27
pero se queda este aquí
00:02:29
que tampoco pasa nada porque el
00:02:31
colector de basura cada ciertos milisegundos
00:02:33
tira a la basura
00:02:36
los objetos que se han quedado sin nadie
00:02:37
que les apunte
00:02:39
¿vale? pero sin embargo
00:02:40
si hacemos lo del set, una vez que has
00:02:43
encontrado el objeto, a este mismo
00:02:45
le cambias los datos
00:02:47
y ya está.
00:02:48
Que tiene quizá un poquito más de sentido.
00:02:50
Vale, pues entonces este método.
00:02:54
Este método de aquí.
00:03:02
Busca en el array
00:03:05
la habitación con ese número.
00:03:06
Una vez que la ha encontrado
00:03:09
le cambia el número de camas
00:03:11
y le cambia
00:03:13
el precio por noche.
00:03:15
Y ya está.
00:03:19
Vale.
00:03:21
Vale, actualizar reserva.
00:03:25
Este vamos a dejarlo por ahora,
00:03:27
pero como ahora vamos por código,
00:03:29
pues cambiaría bastante la idea.
00:03:32
Fuera.
00:03:34
Delete reserva.
00:03:36
Bueno, se le pasa un objeto reserva
00:03:37
y recorres el array,
00:03:43
uno con una posición menos,
00:03:46
copias todos en el nuevo,
00:03:48
saltándote el que hay que borrar.
00:03:50
Vale, lo de siempre.
00:03:53
Aquí inicializar.
00:04:02
el array de habitaciones
00:04:04
con un tamaño
00:04:06
esto
00:04:06
generar un número aleatorio
00:04:11
de habitación
00:04:14
y ahora
00:04:14
y ahora vámonos
00:04:17
al que nos interesa
00:04:24
en este sí que es en el que quiero
00:04:25
que nos pongamos a pensar
00:04:27
¿vale? en lugar de
00:04:29
pensar en nuestras cosas
00:04:32
¿no?
00:04:34
¿no?
00:04:35
Vale. Ahora ya hemos llegado al método que nos interesa que todos pensemos en él. El de mirar si hay disponibilidad para esta fecha para todas esas personas. Ese es el método que nos interesa.
00:04:36
Método raro
00:04:53
Porque es el método que tiene que ir
00:04:57
Habitación por habitación
00:04:58
Si la habitación está libre
00:05:01
La incorporo a una reserva
00:05:04
Virtual que estoy haciendo por ahora
00:05:07
La incorporo
00:05:10
Cuando consiga completar mi reserva
00:05:11
Con tantas habitaciones necesarias
00:05:14
Como necesito para esas personas
00:05:16
Mi método ya puede terminar devolviendo la reserva
00:05:18
Si no consigo completar la reserva
00:05:21
y he terminado todo mi array de habitaciones libres del hotel
00:05:23
sin completar la reserva para esa fecha, devuelvo el mail.
00:05:27
Esa sería la idea del método, ¿no?
00:05:30
Vale.
00:05:40
Vamos a Reservation.
00:05:42
Y ya sé que duele, pero como nos va a costar entender tu código,
00:05:49
lo van a hacer tus amigos.
00:05:55
Vale.
00:05:56
Entonces, ¿aquí qué es lo primero que vamos a hacer?
00:05:57
vamos a crearnos un objeto reserva
00:05:59
con esa cosa
00:06:02
con la idea de irle metiendo a las habitaciones
00:06:04
a ver si conseguimos completarlo
00:06:06
que es lo primero que se me ocurre a mí sobre la marcha
00:06:08
vale
00:06:10
no sé cómo lo habréis enfocado vosotros
00:06:11
pues venga, vamos a construir
00:06:13
nuestro objeto reserva
00:06:15
que no tienes constructor sin parámetros
00:06:17
pues se lo vamos a hacer
00:06:31
que es muy útil
00:06:32
vamos a hacerle un constructor sin parámetros
00:06:33
a reserva
00:06:37
ala, ya está
00:06:43
vale
00:06:51
este va a ser el que devolvamos en el futuro
00:06:53
este o un null, depende de si lo hemos podido
00:06:57
completar o no, este o un null
00:07:01
pero bueno, lo pongo ya aquí esto para
00:07:02
que se me quede orden de compilación
00:07:04
ahora, a la reserva le ponemos ya la fecha
00:07:06
la fecha que será la que me han dado
00:07:09
date
00:07:12
y a la reserva le ponemos ya
00:07:14
el otro parámetro que necesita
00:07:16
que es
00:07:18
el número de
00:07:20
gente alojada
00:07:22
que será este parámetro.
00:07:24
Y ahora,
00:07:27
ahora me viene el problema de
00:07:28
empezar a buscar habitaciones en el hotel
00:07:30
que estén libres en esa
00:07:32
cesta e irlas incorporando
00:07:34
a ver si consigo
00:07:37
completar con su número de plazas totales
00:07:38
el
00:07:41
número
00:07:42
de invitados que necesito.
00:07:44
Entonces, se me ocurre, vamos a poner aquí
00:07:47
el número de
00:07:48
¿lo puedo poner en español o te ofende?
00:07:51
El número de personas
00:07:54
que conseguimos ir alojando
00:07:57
según vamos metiendo habitaciones en la reserva.
00:07:59
Inicialmente cero.
00:08:02
Según vayamos metiendo
00:08:04
habitaciones en la reserva,
00:08:05
esto se irá sumando
00:08:07
y cuando alcancemos la situación
00:08:08
en que esta variable
00:08:11
es igual que esta,
00:08:13
ya está, ya puedo devolver
00:08:16
esa reserva.
00:08:17
si hemos terminado
00:08:18
el array de habitaciones del hotel
00:08:20
y no he conseguido
00:08:21
que el número de personas alcance
00:08:23
a las que necesito, devuelvo nudo
00:08:25
esa podría ser
00:08:28
la primera versión así sobre la marcha
00:08:30
vale, ahora sí que tenemos que recorrer
00:08:32
sí o sí las habitaciones
00:08:34
recorremos
00:08:36
habitaciones del hotel
00:08:40
¿con qué objetivo?
00:08:44
para encontrar
00:08:46
libres en esa fecha
00:08:48
vale
00:08:52
entonces
00:08:54
esto lo haríamos
00:08:56
para cada habitación
00:08:59
como se llama tu array
00:09:01
de habitaciones room
00:09:10
vaya pues que mal elegido
00:09:12
entonces
00:09:13
para cada habitación
00:09:15
r
00:09:18
en mi array de habitaciones
00:09:22
que nos interesa ver aquí
00:09:25
está libre en esta fecha
00:09:29
magnífico, si está libre en esta fecha
00:09:31
la añado a la reserva
00:09:34
y sumo mi número de personas que ya he conseguido
00:09:35
alojar con las plazas totales de la habitación
00:09:38
vale, pues ojalá
00:09:40
tuviéramos un método
00:09:41
que fuera
00:09:43
si está libre
00:09:45
está libre
00:09:46
la habitación R
00:09:55
en la fecha
00:09:57
date, se llama date
00:10:04
vale, pues ahora lo buscamos
00:10:06
y le cambiamos el nombre
00:10:11
porque si está libre
00:10:11
la habitación R
00:10:14
en esta fecha date
00:10:16
resulta que está libre, pues entonces ya
00:10:18
a la reserva esta que yo estoy haciendo
00:10:20
a la reserva
00:10:22
a sus habitaciones
00:10:24
reservadas, inicialmente
00:10:27
serán cero, le añado
00:10:28
tenías aquí un método
00:10:31
o deberías tener
00:10:32
en habitaciones reservadas
00:10:34
ah bueno
00:10:37
es que la propia reserva ya tenías un método
00:10:38
que era añadir
00:10:40
habitación a la reserva, R
00:10:42
ya está, vale
00:10:44
si esa habitación está libre
00:10:45
en esta fecha, es habitación
00:10:48
a la reserva, magnífico
00:10:50
y ahora vamos a
00:10:52
sumar a num personas
00:10:55
num personas
00:10:56
más igual
00:10:59
esta habitación R
00:11:00
punto plazas totales
00:11:02
que
00:11:04
¿cómo se llama ese método?
00:11:06
Ah, Spot
00:11:10
Es que con esos nombres
00:11:12
De Star Trek
00:11:15
Pues se hace todo muy raro
00:11:16
Ni sabéis quién es Star Trek, lógicamente
00:11:17
No tenéis pasado
00:11:20
¿No conocéis Star Trek?
00:11:22
¿Y vosotros os creéis frikis?
00:11:24
¿Vosotros os creéis frikis?
00:11:26
¿Ah, sí?
00:11:30
Vale
00:11:36
Es el número de
00:11:37
Es el número de plazas
00:11:40
Que tiene esta habitación
00:11:43
Entonces ya
00:11:43
Bueno, depende
00:11:47
Si es familiar o no
00:11:49
No nos estamos metiendo
00:11:50
Porque estamos metiendo a la gente en camas doble
00:11:51
Junta, eso nos da igual
00:11:54
Y ahora ya
00:11:55
Sí que podríamos hacer
00:11:58
Si número de personas
00:12:01
Ha alcanzado ya
00:12:03
Es mayor o igual
00:12:04
si el número de personas que he conseguido
00:12:06
alojar con esas plazas totales
00:12:10
resulta que es mayor
00:12:12
o igual que las que me han
00:12:14
dado que tengo que alojar, que es esta
00:12:16
es mayor o igual que esto
00:12:17
pues ya está, ya he completado la reserva
00:12:24
¿vale? entonces ya
00:12:26
puedo salir de este bucle for
00:12:28
¿vale?
00:12:30
entonces
00:12:36
este
00:12:36
for each que he hecho por comodidad
00:12:38
muy mal elegido
00:12:40
porque yo quiero salir de este for
00:12:42
voy a querer salir seguramente
00:12:45
antes de recorrer todas las habitaciones
00:12:47
entonces este for it es muy feo
00:12:49
porque si yo quiero mantener el for it
00:12:51
tengo que hacer una cosa
00:12:53
bastante horrible
00:12:55
tú también lo has sentido, ¿verdad?
00:12:56
claro
00:13:01
entonces, ¡oh, qué feo!
00:13:02
no quiero hacer eso, ¡qué horrible!
00:13:04
entonces voy a cambiar esto a un bucle de índice
00:13:07
y sea menor
00:13:09
que
00:13:15
room.le
00:13:16
incrementando
00:13:22
y
00:13:25
ahora, y hará esto
00:13:26
mientras
00:13:29
le pongo aquí la condición
00:13:30
y mientras
00:13:32
num personas sea menor
00:13:34
que
00:13:37
guest counter
00:13:39
este
00:13:40
y esto ya
00:13:41
no tengo que ponerlo
00:13:49
y ahora esta R se cambia a
00:13:50
RUN de I
00:13:54
y esta R se cambia
00:13:56
a RUN de I
00:14:02
y esta R se cambia
00:14:03
a RUN de I
00:14:06
¡Hala! Pues este sería
00:14:07
el método
00:14:11
vamos a dejarlo
00:14:12
ahí
00:14:15
Vale, ahora ya devuelvo reserva o devuelvo null en función de si el número de personas es mayor o igual, ¿vale?
00:14:15
Que el número de este de aquí, si null personas es mayor o igual que las que yo tenía que alojar
00:14:45
entonces si he conseguido
00:14:53
completar con éxito la reserva
00:14:56
la he conseguido completar con éxito
00:14:58
devuelvo res, pero si no la he conseguido
00:15:00
completar con éxito devuelvo null
00:15:02
¿vale?
00:15:04
si he completado con éxito
00:15:07
la reserva
00:15:09
es decir, he podido incrementar esto
00:15:10
hasta una cantidad que superaba
00:15:12
los invitados, porque me ha podido llegar
00:15:14
a una habitación con un montón de camas, solo me faltaba una
00:15:16
pero bueno, la he conseguido completar
00:15:18
si la he conseguido completar
00:15:21
devuelvo esa reserva
00:15:23
si no la he conseguido
00:15:24
completar, devuelvo null, porque no he conseguido
00:15:27
completarla para esa fecha
00:15:29
entonces este método ya estaría
00:15:30
creo, pero claro, nos hemos
00:15:32
apoyado en este
00:15:34
y este ahora tendremos que crearlo
00:15:35
que es un método de hotel
00:15:38
porque yo lo he llamado aquí sin nadie
00:15:41
colgando delante, eso significa que es un método
00:15:43
de la clase hotel, tiene sentido que ese
00:15:44
método está en hotel, porque es, oye, tú hotel
00:15:47
tú eres el afectado por esto
00:15:49
tu hotel, ¿tienes libre
00:15:51
esta habitación en esa fecha?
00:15:53
¿vale?
00:15:56
entonces
00:15:57
el método está
00:15:58
libre, en lugar de pasar
00:16:00
la habitación completa, hombre
00:16:02
que feo también, vamos a pasarle el código
00:16:04
de la habitación
00:16:07
get room
00:16:07
number, el número de habitación
00:16:11
este sí, pero es que como con el negro
00:16:12
este no da nada, no sé cuál selecciona
00:16:17
y cuál no selecciona
00:16:19
¿vale? vamos a hacer el método
00:16:20
de todas maneras, tú le pasas un código de habitación,
00:16:23
una fecha, y te dice si está libre.
00:16:25
Un método que sí, efectivamente,
00:16:28
su sitio para
00:16:30
estar ubicado es la clase
00:16:31
hotel, porque son
00:16:33
habitaciones del hotel.
00:16:35
Entonces, por eso yo lo he llamado aquí
00:16:37
sin nadie delante, porque ya es su puesto
00:16:39
de partida que ese método iba a estar en la
00:16:41
clase hotel.
00:16:43
Entonces, no hace falta
00:16:45
que lo llame con nadie delante.
00:16:46
Vale, pues entonces,
00:16:49
este hotel
00:16:51
Dices que lo tienes ya hecho
00:16:52
¿Cuál sería?
00:16:56
Este
00:16:58
Ah, pero aquí no le pasas la fecha
00:16:58
Ah, este
00:17:01
Entonces tú lo tienes hecho
00:17:02
Que es, le pasas una fecha y una habitación
00:17:04
Vale
00:17:06
Entonces voy a llamarlo
00:17:08
Con tu nombre
00:17:10
Habitación libre en esa fecha
00:17:12
Y ahora miramos a ver si está bien
00:17:15
En lugar de está libre
00:17:16
Lo voy a llamar como tú lo has llamado
00:17:21
Habitación libre en esa fecha
00:17:22
Lo que pasa es que yo como le he pasado el código
00:17:26
Vamos a
00:17:30
Habitación libre en esa fecha
00:17:32
Bueno, para dejar tu código
00:17:41
Porque si no, así
00:18:04
Vamos a pasarle la habitación directamente y ya está
00:18:06
y así no te lo tocamos
00:18:10
vale
00:18:12
y tú tienes primero
00:18:15
pasada la fecha y luego tienes pasada
00:18:18
la habitación, ¿verdad?
00:18:20
ahí
00:18:24
vale
00:18:24
adiós
00:18:30
ala
00:18:32
y ahora el método
00:18:34
es este, vamos a ver si este
00:18:36
método hace lo que
00:18:38
él dice que hace
00:18:40
¿Qué es? Le paso una habitación, una fecha
00:18:41
Vamos a ver si está libre en esa fecha
00:18:44
Recorremos el array de reservas del hotel
00:18:45
Para todas las reservas
00:18:49
Miramos a ver primero
00:18:52
Si la fecha es de la que me han dado
00:18:54
Y ahora
00:18:57
Para cada reserva cuya fecha sea igual
00:18:58
Que la que me han dado
00:19:01
Voy recorriendo
00:19:01
Todas las habitaciones de esa reserva
00:19:04
Si hay alguna habitación
00:19:07
Que sea igual
00:19:09
a la que me han dado
00:19:10
pues ya está
00:19:12
la he encontrado
00:19:13
con lo cual
00:19:16
no está libre
00:19:18
¿vale?
00:19:19
¿qué se te ha olvidado?
00:19:22
ah bueno, vale
00:19:25
podríamos añadir aquí eso pero está bien hecho
00:19:27
entonces desde el momento
00:19:29
en que encuentras una habitación
00:19:31
reservada en el array
00:19:33
para esta fecha
00:19:35
pues ya avisas
00:19:37
Y ahora ya ese aviso lo utilizas para informar. Si ese aviso ha sido true, entonces es que efectivamente hay una habitación reservada para esa fecha. O sea, no está libre, perdón. No está libre, entonces devuelves falsi.
00:19:38
si nunca nunca jamás
00:19:55
entraste aquí nunca en este if
00:19:57
nunca entraste jamás
00:19:59
false seguirá estando
00:20:00
false cuando llegue aquí porque nunca
00:20:03
entraste aquí entonces como nunca
00:20:05
entraste ahí significará que no encontraste
00:20:07
ninguna habitación igual
00:20:09
que esta para esta fecha
00:20:11
entonces devuelves false
00:20:13
vale aquí
00:20:15
lo estás
00:20:16
haciendo con un equals comparar
00:20:19
esta habitación de la reserva
00:20:21
Observa con la que te pasan como parámetro porque tienes implementado el equals por código, ¿vale? Porque tienes implementado el equals por código. Que aquí lo mismo, que complicación de vida, ¿vale? Mejor así. Y falta el punto y coma. Y sobra o falta algo, ¿no?
00:20:23
vale, pues ya está
00:20:51
este método de comprobar disponibilidad
00:20:56
que nos angustiaba tanto
00:21:00
que ya ni sabemos dónde está, pues ya está
00:21:02
bueno, pues entonces voy a eliminar
00:21:12
de este proyecto todo lo que no hemos mencionado nosotros
00:21:17
porque como ya he subido a la virtual, por si alguien lo quiere usar
00:21:20
y luego a partir de este proyecto, si alguien
00:21:23
no lo ha hecho todavía a su manera lo que sea
00:21:25
lo puede completar
00:21:28
como ejercicio.
00:21:29
¿Vale?
00:21:32
Dime.
00:21:33
Pues sí,
00:21:43
porque te facilitaría muchísimo.
00:21:45
Claro,
00:21:48
efectivamente,
00:21:49
tendría muchísimo sentido.
00:21:49
Aquí llega,
00:21:51
tendrías la misma información
00:21:52
codificada en dos sitios,
00:21:53
pero no pasa nada.
00:21:54
Es decir,
00:21:56
puedes llegar a ver
00:21:56
si una habitación está libre
00:21:57
por la vía fácil
00:21:58
que es disponibilidad
00:21:59
o por la otra
00:22:00
que es con la raíz de reservas.
00:22:01
Entonces,
00:22:02
aquí lo importante
00:22:03
en la aplicación
00:22:03
es que fuera siempre
00:22:04
consistente, pero es que no hay problema
00:22:06
en que es fácil que sea consistente
00:22:09
porque cuando creamos una reserva nueva
00:22:11
pues esa reserva
00:22:13
cuando coge la habitación
00:22:15
que marque el set de disponible
00:22:17
lo marque a falso y ya está
00:22:19
entonces efectivamente
00:22:21
se facilitaría muchísimo las cosas
00:22:22
ah bueno, espérate, porque habitación
00:22:25
si tienes razón, habitación
00:22:40
no sería
00:22:44
donde tenemos habitación
00:22:46
rumbo, donde está rumbo, aquí, ah vale
00:22:49
claro, esta es la habitación, entonces
00:22:50
disponible o no, efectivamente depende
00:22:54
de la fecha, claro
00:22:56
es verdad
00:22:58
vale, claro
00:23:00
tendríamos que llegar a partir de reservas
00:23:07
vale, pues voy a
00:23:08
lo que he dicho, voy a cortar
00:23:11
todos los métodos y todas las cosas de ahí que no hemos
00:23:12
visto y quien quiera completar a partir de aquí
00:23:15
o quien lo esté haciendo a su manera
00:23:17
pues lógicamente a su manera
00:23:19
¿Dudas o algo?
00:23:20
El ROM, claro
00:23:24
- Materias:
- Programación
- Niveles educativos:
- ▼ Mostrar / ocultar niveles
- Formación Profesional
- Ciclo formativo de grado superior
- Primer Curso
- Subido por:
- Raquel G.
- Licencia:
- Todos los derechos reservados
- Visualizaciones:
- 1
- Fecha:
- 1 de febrero de 2026 - 19:22
- Visibilidad:
- Clave
- Centro:
- IES ROSA CHACEL
- Duración:
- 23′ 25″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 101.57 MBytes