Saltar navegación

20260130 EjercicioHoteles_2 - Contenido educativo

Ajuste de pantalla

El ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:

Subido el 1 de febrero de 2026 por Raquel G.

1 visualizaciones

Descargar la transcripción

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
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
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
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

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid