Saltar navegación

20260130 EjercicioHoteles_1 - 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.

2 visualizaciones

Descargar la transcripción

Este enunciado es un enunciado feo, para mi gusto. 00:00:00
Esto tiene, vale, esto tiene, esto tiene, no, esto, que coño, no quiero esto. 00:00:07
Ahí, vale. 00:00:30
Ahora, pues a ver, nos hacemos una primera lectura, que esa lectura ya os la habéis hecho, porque estáis trabajando con él. 00:00:33
¿Qué tenemos? Clases 00:00:40
Ya nos dicen lo que tenemos 00:00:43
Las clases que tenemos que hacer 00:00:45
Bueno, pues nada, la clase de habitación 00:00:46
O el que ver de más 00:00:49
Vale, con propiedades 00:00:50
El número de la habitación, cuántas camas tiene 00:00:52
Lo que cuesta cada noche 00:00:55
Y las plazas totales 00:00:56
Las plazas totales en principio uno podría pensar 00:00:59
Que es una por cama, pero bueno 00:01:01
Depende, a lo mejor una cama cabe en tres o cuatro 00:01:03
Entonces 00:01:04
Habitación familiar 00:01:06
es una cama en la cual 00:01:09
además de camas normales 00:01:13
tiene camas dobles 00:01:15
entonces plazas totales aquí es distinto 00:01:16
porque en la habitación 00:01:19
normal 00:01:21
las plazas totales 00:01:22
te devolverá 00:01:26
te hará el retorno 00:01:27
del número de camas 00:01:29
y sin embargo 00:01:31
en la habitación familiar 00:01:33
te tendrá que multiplicar por dos 00:01:34
las camas dobles y sumarlas a las otras 00:01:37
Entonces, habrá que sobreescribir ese método, pero lo demás en principio, salvo añadir esto y eso implica automáticamente sobreescribir esto, este método, pues en principio por ahora parece que nada más. 00:01:40
Vale, habitaciones ya estaría esto de aquí. ¿Qué más tiene? Además de habitaciones se pueden hacer reservas. Vale, pues la reserva tiene la fecha, un date, un local date, lo que sea, fecha. 00:01:52
la fecha, las habitaciones 00:02:10
que hemos reservado en esa 00:02:12
reserva, esto es lo que está 00:02:14
muy mal especificado, habitaciones 00:02:16
a qué se refiere, al número de habitaciones 00:02:18
a las habitaciones reales 00:02:20
a lo que sea, entonces 00:02:22
aquí cómo podríamos hacerla, bueno pues podríamos hacer 00:02:24
un array, por ejemplo 00:02:26
de números, vale 00:02:30
un array de números, y ya está 00:02:32
entonces, las 00:02:34
habitaciones reservadas en esta reserva 00:02:35
son las que yo tenga en mi array de números. 00:02:38
Esto tiene sentido si número de habitación es clave primaria de habitación 00:02:40
y si es la clave primaria, la identifica de forma única. 00:02:47
La identifica de forma única, es clave primaria. 00:02:51
Luego, en habitaciones reservadas, pues esto debería ser un array. 00:02:54
Podría ser un array directamente de objetos habitación, 00:03:00
pero es quizás complejo. 00:03:03
No hay necesidad, puede ser un array con el número 00:03:05
y a través de los números 00:03:08
pues ya podemos tirar, localizar 00:03:10
la habitación que sea o algo así 00:03:13
vale, a ver 00:03:14
la reserva solamente tiene 00:03:17
eso, las habitaciones que tengo en la reserva 00:03:19
ah bueno, sí, las personas 00:03:21
lo que pasa es que 00:03:22
el número de personas 00:03:26
es que va a ser 00:03:28
en realidad es una información 00:03:29
redundante, porque lo podría 00:03:32
sacar yéndome a cada 00:03:34
habitación y sumando las plazas totales 00:03:36
Bueno, no, no es redundante porque si podéis 00:03:38
emplear una habitación no se ocupa la ciudad. 00:03:40
Vale, entonces no es redundante. Vale, vale. 00:03:42
Vale. Y luego, ¿qué más entidades 00:03:44
tenemos? Pues el hotel. 00:03:46
Entonces, el hotel es el que tiene 00:03:49
un montón de 00:03:50
habitaciones 00:03:52
y tiene un montón de reservas. 00:03:53
Vale. Y las 00:03:56
reservas, pues, son las que tienen dentro un 00:03:58
array que a su vez me puede conducir 00:04:00
a mí a los datos de la habitación. 00:04:02
ya está. Entonces, el 00:04:06
modelo es ese. 00:04:09
Un poco raro, a lo mejor. 00:04:12
Seguramente, para gestionar 00:04:14
un hotel, reservas y habitaciones 00:04:15
se podría hacer un modelo 00:04:17
un poquito más claro y mejor que este. 00:04:19
Pero bueno, con este es con el que vamos a trabajar 00:04:21
porque es el que nos dicen aquí. 00:04:23
Vale, y ahora 00:04:26
la clase hotel tiene 00:04:27
un método 00:04:29
que 00:04:30
recibes un número de personas 00:04:31
el día en el que quieres ir 00:04:35
y te tiene que buscar a ver 00:04:37
si hay habitaciones libres 00:04:39
suficientes para alojar 00:04:41
a todo el mundo 00:04:42
entonces, aquí 00:04:43
esto en principio ya lo vemos un poco complicado 00:04:50
porque tendríamos que ir 00:04:52
habitación por habitación 00:04:54
cada habitación ver si está reservada 00:04:56
aquí 00:04:58
esto ya se complica, con lo cual no pasa nada 00:04:59
lo hago un método auxiliar 00:05:02
un método auxiliar que sea 00:05:04
que ponga, está reservada 00:05:05
y le paso un objeto a habitación 00:05:08
pues habitación por habitación, llamo a ese método 00:05:09
está reservada, que a su vez implicará 00:05:11
un buitrear por aquí. 00:05:14
Si no está reservada, 00:05:16
la incorporo. Así hasta 00:05:18
que incorpore tantas 00:05:20
como necesito para alojar 00:05:21
a todas estas personas. 00:05:23
Si lo consigo, fenomenal. 00:05:25
Disponibilidad 00:05:28
devolverá 00:05:29
una reserva creada con esas habitaciones 00:05:33
y esa fecha. Y si no, devolverlo. 00:05:36
Entonces, bueno, este método 00:05:38
Es un poco extraño 00:05:39
Y luego aquí abajo había 00:05:41
Luego se puede hacer un main con gestiones de cosas 00:05:42
Imagino 00:05:46
Es que yo no sé si abajo 00:05:47
Aquí había main o había algo 00:05:50
Yo creo que no había nada 00:05:52
Había aquí un montón de cosas 00:05:56
00:05:57
Había 00:05:59
¿Eh? 00:06:01
¿Cómo que esto es hospital? 00:06:03
Crear una clase 00:06:05
Reserva larga 00:06:06
Primer día atributo de disponibilidad 00:06:08
¿Qué es esto? 00:06:09
Ah, pero este sí que es 00:06:12
O sea, esta 00:06:13
Esto sí que es 00:06:14
Vale, pero bueno 00:06:17
Con que nos quedamos con ese de ahí 00:06:18
Suficiente 00:06:21
Vale 00:06:23
Entonces aquí 00:06:31
Sugiere 00:06:32
Usar el objeto local date en lugar de date 00:06:34
Que está en el paquete java time 00:06:37
Que está más actualizado que java útil 00:06:39
Que es el que tiene el date normal 00:06:40
con métodos para crear la fecha, 00:06:42
comprar unas con otras, etc. 00:06:44
Pero bueno. 00:06:46
Vale, pues entonces, 00:06:48
ese podría ser un enfoque de esta aplicación 00:06:50
y de ese método. 00:06:52
Que es el que habéis empezado a hacer 00:06:54
o incluso hecho. 00:06:56
¿Vale? 00:06:58
Entonces, 00:06:59
tú lo has hecho, 00:07:00
pero no te funciona 00:07:01
o no acabas de ver por qué no te funciona, ¿no? 00:07:02
No, a ver, 00:07:04
lo he hecho exactamente lo que he querido, 00:07:05
lo he hecho, 00:07:06
me he empezado un poco a reír, 00:07:07
por así decirlo. 00:07:09
Pero... 00:07:10
Pero el método buscar disponibilidad lo has hecho 00:07:10
Sí, eso sí 00:07:12
Pues venga, vamos a revisártelo y vamos a ver si te lo aprobamos o no te lo aprobamos 00:07:13
No sufras, no sufras 00:07:17
Que te lo vamos a aprobar 00:07:21
Tú tranquilo 00:07:23
¿Tú estás seguro que me lo has subido? 00:07:25
00:07:35
No, no, no, solo se lo he subido 00:07:36
A ver 00:07:42
Ah, que tengo que entrar aquí 00:07:43
Vale, pero no me aparece un listado 00:07:49
Tengo que ir así, no me lo puedo creer 00:07:55
Habrá un listado aquí en las tareas 00:07:56
Ver todos los envíos 00:07:58
Ah, vale, vale 00:08:00
Vale, aquí está 00:08:01
Entonces 00:08:03
Eres tú y eres este 00:08:04
Vale, espera, vamos a 00:08:12
Habitación 00:08:14
Número de habitación 00:08:18
El número de camas 00:08:20
Y lo que cuesta por noche 00:08:22
Muy bien 00:08:24
Constructor con los tres parámetros 00:08:25
Y luego aparte has sobrescrito equals, muy bien, a través del número de habitación porque es la clave primaria. 00:08:27
Puede ser útil ese método. 00:08:35
Has sobrescrito toStream y camas de personas disponibles. 00:08:37
Spot, aparte de mancha, ¿qué significa? 00:08:45
Spot significa hueco. 00:08:48
Hueco, vale. 00:08:51
Vale, número de camas, muy bien. 00:08:52
La familia room. 00:08:56
añade esto, con lo cual sobrescribe, más que sobrescribe, hace su nuevo constructor 00:08:57
y luego efectivamente sobrescribe este método, método sobrescrito. 00:09:04
Ala, la reserva, la reserva, fecha en la que he reservado, 00:09:10
número de habitaciones, o sea, habitaciones reservadas. 00:09:19
Vale, en lugar de optar por el array de números enteros, que podría ser, 00:09:22
directamente toda la habitación 00:09:28
entera en el array. 00:09:30
También estará dentro su número, lógicamente, 00:09:32
porque está dentro del objeto. Bueno, vale, pues 00:09:35
todas las habitaciones de la reserva, ahí. 00:09:36
Inicialmente, 00:09:40
cuando tú 00:09:41
crees una reserva nueva, tal y como 00:09:43
lo has hecho, inicialmente, cuando 00:09:44
creamos una reserva, se va a crear 00:09:46
sin ninguna habitación, 00:09:49
sin ninguna todavía, 00:09:51
se supone que habrá que irlas introduciendo, 00:09:52
pero al menos el array existe. 00:09:55
aunque no tenga espacio para ninguna habitación 00:09:56
al menos no es null 00:09:59
lo cual es recomendable 00:10:00
y esto 00:10:02
la reserva tenía 00:10:05
fecha, número de habitaciones 00:10:06
y dice aquí 00:10:08
que alguna otra 00:10:10
reserva, ¿dónde está reserva? 00:10:12
fecha 00:10:20
y número de personas de la reserva 00:10:21
ya te estaba yo regañando 00:10:23
¿por qué te inventas propiedades? eso es lo peor 00:10:25
que se puede hacer, inventarte una propiedad 00:10:27
O sea, que no sea necesaria 00:10:30
Que no identifique al objeto 00:10:32
Porque entonces automáticamente pierde 00:10:33
Su sentido el modelo 00:10:36
Pero no te lo has inventado 00:10:38
El número de habitaciones, perdón, el número de personas de la reserva 00:10:39
Vale, ay, que feo 00:10:42
Este asterisco, ya sé que a ChaGPT 00:10:44
Le gustan mucho los asteriscos 00:10:46
Ah, bueno, pues quien sea 00:10:47
Que feo 00:10:50
Te daba pereza 00:10:51
Pero si solamente era para importar room 00:10:54
Bueno 00:10:56
Solo por esto, dime 00:11:00
para que sea única 00:11:02
Sí, porque para 00:11:13
el método de comprobar disponibilidad 00:11:22
en particular no hace falta 00:11:24
pero efectivamente, claro, para comprobar disponibilidad 00:11:25
pero si la reserva la dejamos así 00:11:28
lo único 00:11:32
que se queda como clave primaria 00:11:34
en la reserva ahora mismo 00:11:36
sería la combinación 00:11:37
de estas dos 00:11:41
luego se queda una clave primaria muy complicada 00:11:41
porque para identificar una reserva 00:11:44
lo que la distingue de otra es 00:11:46
o sea, si dos reservas 00:11:48
tienen 00:11:51
comparten 00:11:51
una habitación en la misma fecha 00:11:55
entonces son la misma 00:11:56
efectivamente se queda un equals muy raro 00:11:57
y un código, una clave primaria muy rara 00:12:00
entonces efectivamente 00:12:02
tienes toda la razón que este modelo 00:12:04
es bastante feo, como ya os he dicho al principio 00:12:07
no el tuyo, el del enunciado 00:12:10
ya he dicho desde el principio 00:12:12
que ese enunciado era muy feo 00:12:14
estaba muy mal analizado 00:12:16
y efectivamente 00:12:17
por esto es una de las cosas 00:12:18
vamos a dejarlo bonito 00:12:21
por si luego lo subimos, por si alguien lo necesita 00:12:23
o lo usa, pues ya está 00:12:26
un código de reserva 00:12:27
código de reserva para que lo identifique 00:12:29
fecha, número de habitaciones y patatín 00:12:33
Y ya está 00:12:35
Y le ponemos aquí el código de reserva 00:12:37
Pero sí, muy bien visto 00:12:40
Soy muy espabiloso 00:12:49
Vale 00:12:52
Vale, constructor 00:12:56
Constructor con número de habitaciones 00:12:59
Has hecho un montón de constructores 00:13:02
Vale, no pasa nada 00:13:05
Uno sin la 00:13:09
00:13:12
Vale 00:13:13
Constructor sin el array 00:13:16
Ahora, las fechas 00:13:18
No sé qué 00:13:20
El equals 00:13:22
Lo has hecho por 00:13:23
Habitaciones reservadas, ¿verdad? 00:13:26
Se coincide solo una habitación 00:13:28
Pero si es en diferente fecha 00:13:30
Ah, la fecha, también la has tenido en cuenta 00:13:32
Claro, era justo lo que decíamos 00:13:34
Que el equals se basa en fecha 00:13:37
Y una de las habitaciones 00:13:38
Un equals que se complica mucho 00:13:40
poniendo el código, que es como realmente 00:13:41
habría que hacerlo poniendo el código 00:13:44
pues este equals te lo vamos a pisar, no te molesta 00:13:45
no es que haga falta o no haga falta 00:13:48
no sobra 00:13:52
no sobra un equals 00:13:53
le da mucha semántica 00:13:56
al modelo 00:13:59
le da mucha semántica porque le da un criterio de igualdad 00:13:59
y a lo mejor 00:14:02
en el código en particular 00:14:04
que te he hecho en tu mail, no lo usas 00:14:06
pero en cualquier ampliación sí que empiezas 00:14:08
a usarlo, sobre todo como lo empieces a 00:14:10
meter en colecciones 00:14:12
ahí ya es imprescindible, como ya veremos 00:14:13
a partir del lunes, pero 00:14:16
no te estoy contestando a la última pregunta 00:14:18
que me querías preguntar 00:14:20
¿por qué hace falta el for en un igual? 00:14:21
¿por qué hace falta el qué? 00:14:24
es que he ido buscando 00:14:26
si no recuerdo mal 00:14:27
un segundito, es que no lo he oído 00:14:29
yo cuando voy sobre escrito de igual 00:14:31
no hago for 00:14:34
a ver, el ha hecho for 00:14:35
pues ha hecho for porque en su caso 00:14:38
quería identificar si había alguna 00:14:40
habitación compartida entre el DIS y este 00:14:42
otro, solo una, entonces para eso 00:14:44
pues ha hecho un for 00:14:45
Claro, no compara directamente una RAI 00:14:46
con el otro, compara que al menos 00:14:56
una de estas y al menos una de estas 00:14:58
sean iguales, entonces tiene que hacer un for 00:14:59
pero efectivamente esto 00:15:01
vamos a 00:15:04
cambiarlo 00:15:07
a return this.código 00:15:10
igual a 00:15:19
resurrection de o obj.código. 00:15:22
¡Hala! 00:15:41
Este igual es más cómodo. 00:15:42
Ahora, vale. 00:15:44
Has sobrescrito tu string. 00:15:45
Este método es para devolver la fecha de la reserva 00:15:49
No, perdón, para comprobar si la reserva, este método que has puesto aquí es un método útil, un método útil que es para comprobar si la reserva, bueno, aparte luego pedí el anunciado, si esta reserva es para el día que le pasemos. 00:15:53
nos va a ser muy útil luego en los if 00:16:10
para ver si hay alguna rehabilitación reservada en ese día 00:16:12
o no 00:16:14
bueno 00:16:14
pero puede ser útil, le pasamos una fecha 00:16:16
¿por qué no 00:16:21
returneas, como diría tu amiga 00:16:23
directamente date.equals 00:16:25
y ya está 00:16:28
¿no? 00:16:29
ah, sí, también, ¿verdad? 00:16:31
claro, ¿no? devuelves directamente 00:16:33
esto 00:16:40
y ya está 00:16:41
y falta el punto y coma 00:16:43
y sobra 00:16:48
vale, pues estupendo 00:16:52
comprobar si una reserva es 00:16:55
de la fecha que le pasamos 00:16:58
es este equals 00:17:00
vale, entonces vosotros 00:17:00
podréis decir 00:17:04
jolines, pero 00:17:05
un método para esta línea 00:17:06
cuando yo en algún momento necesite 00:17:09
comprobar si una reserva 00:17:12
es para una fecha 00:17:13
pues en ese punto 00:17:15
me hago yo el equals y ya está 00:17:17
fecha1.getDate 00:17:18
equals 00:17:21
la fecha que me han pasado 00:17:23
lo pongo ahí y ya está 00:17:25
pues sí, porque no deja de ser una línea 00:17:26
pero 00:17:28
esta versión hace la aplicación 00:17:29
más, de nuevo 00:17:33
repito la palabra, más escalable 00:17:35
porque ahora mismo 00:17:37
la fecha de la reserva 00:17:38
está directamente aquí metida en una propiedad 00:17:40
pero en un momento dado puede que cambiemos la reserva 00:17:43
porque la aplicación ha incorporado algunas funcionalidades 00:17:47
y ahora mi objeto reserva 00:17:51
pues le cambio sus propiedades 00:17:53
y la fecha a lo mejor está metida dentro de otro objeto 00:17:55
de otra propiedad 00:17:58
porque yo he decidido cambiar el diseño 00:17:59
para incorporar esas nuevas funcionalidades 00:18:02
entonces 00:18:04
si yo tengo el comprobar fecha en un método aquí 00:18:06
pues me vengo aquí y cambio 00:18:10
este nuevo equals 00:18:13
que será metiéndose en la otra propiedad 00:18:15
sacando la fecha, lo que sea, lo cambio aquí 00:18:17
y se acabó 00:18:19
si yo no he hecho este método y en las zonas 00:18:20
de mi main o por ahí donde yo compruebo 00:18:23
si una reserva es de una fecha 00:18:26
estoy tirando de esta línea 00:18:27
voy a tenerme que ir a todas partes 00:18:29
a cambiar esa línea, lo cual es un rollo 00:18:31
¿vale? 00:18:33
entonces, casi todo 00:18:35
tiene su porqué 00:18:37
Vale, y aquí 00:18:38
Esto es 00:18:41
Para meter una habitación en la reserva 00:18:44
Vale, para meter una habitación 00:18:46
En la reserva, que efectivamente también es un método útil 00:18:48
Porque cuando estamos construyendo una reserva 00:18:50
Con habitaciones que están libres 00:18:51
Pues bueno, vale 00:18:53
Entonces, créate 00:18:54
Yo lo llamaría 00:18:58
No os pegaría más 00:18:59
Añadir, porque estás añadiendo 00:19:02
No decías que el cruz 00:19:03
Era como esto 00:19:06
pero aquí no estás haciendo en realidad 00:19:07
un CRUD 00:19:13
porque no estás creando 00:19:14
una habitación 00:19:17
la habitación ya existe, está en el hotel 00:19:17
y estás incorporándola 00:19:20
a tu array de opciones reservadas 00:19:22
es una cosa más propia de la aplicación 00:19:24
es una cosa propia de la aplicación 00:19:25
que es coger de un array 00:19:29
una habitación, la meto aquí 00:19:30
entonces no es que estés haciendo 00:19:32
aparecer una habitación 00:19:34
entonces 00:19:35
bueno 00:19:39
¿me permites? 00:19:42
sí, sí, sí 00:19:46
no pasa nada 00:19:46
porque ahora te lo vamos a cambiar 00:19:49
vale, añado una habitación 00:19:50
y aquí añadir una habitación 00:19:52
pues lo mismo, te haces una raya auxiliar 00:19:54
con una posición más 00:19:57
copias 00:19:58
el antiguo en el nuevo 00:20:01
copias el este 00:20:03
Pero te falta sustituir 00:20:06
Te falta 00:20:08
Bucket room igual aux 00:20:10
Está bien porque el de primera 00:20:13
Se ha hecho aux igual a book room 00:20:16
Se lo he hecho al revés 00:20:18
Pero, claro, pero es que 00:20:20
Esto no puede ir aquí 00:20:22
Porque si es bucket room 00:20:23
Entonces estás aquí 00:20:25
O sea, es que está aquí 00:20:27
A ver, espérate 00:20:30
Pero a ver 00:20:35
Es que estás pisando 00:20:37
Claro, pero aún se queda con eso 00:20:38
¿Cómo que se queda con eso? 00:20:40
A ver, estás aquí 00:20:42
Tu array, bucket room 00:20:44
Lo has tirado a la basura 00:20:46
Ha desaparecido, las habitaciones que tenías reservadas 00:20:48
De antes se han ido fuera 00:20:50
No lo copies, es que ya no puedes copiarlo 00:20:51
Ah, que lo tienes en un aux 00:20:54
Vale, vale, vale 00:20:56
Lo tienes en un aux 00:20:57
Vale, vale 00:20:58
Entonces 00:21:03
Este es el bueno, el que queremos que sea bueno 00:21:04
Lo que tenía hasta ahora 00:21:07
Lo has copiado en uno 00:21:09
Te haces uno limpio 00:21:10
En ese limpio 00:21:12
Copias lo antiguo 00:21:14
Y en la añadida 00:21:17
Le copias esto, vale 00:21:19
Vale 00:21:20
Le copias la nueva 00:21:22
Sí, que sí, sí 00:21:24
Lo que pasa es que nosotros, lo pongo aquí 00:21:28
Por si alguien se lía 00:21:30
Nosotros siempre lo habíamos hecho así, ¿no? 00:21:31
Lo pongo aquí, aunque sea 00:21:35
Por si alguien se hace un lío 00:21:36
habíamos hecho, esto siempre lo primero 00:21:37
un array auxiliar 00:21:40
con una posición más 00:21:42
vale 00:21:43
un array con una posición más 00:21:45
ahora 00:21:48
hacíamos la copia 00:21:49
de en este 00:21:51
nuevo array aux 00:21:57
copiábamos 00:21:58
lo que tenía el viejo 00:22:00
ahora en la extra de aux 00:22:02
en la extra, porque aux tiene 00:22:08
una más, en la extra 00:22:09
copiábamos la nueva habitación 00:22:12
que estábamos metiendo, que era R 00:22:14
y ahora el array bueno y bonito 00:22:15
que es aux, sustituye 00:22:17
a bucket room 00:22:20
¿vale? entonces 00:22:25
lo de arriba y lo de abajo 00:22:27
es lo mismo, pero 00:22:29
hecho de otra manera, entonces 00:22:31
comento uno de los dos 00:22:33
¿vale? en principio 00:22:37
hacen lo mismo 00:22:39
¿vale? 00:22:39
vale 00:22:44
bueno, pues esto es, añadir habitación 00:22:45
a la reserva en la que estamos 00:22:48
y ya está, y reserva no tiene nada más 00:22:50
y ahora 00:22:53
vámonos al hotel 00:22:55
el hotel que está aquí 00:22:55
vale 00:22:58
a ver, has llamado al paquete repositorio 00:23:02
en realidad esto no es 00:23:05
esto no son los datos, o sea esto es 00:23:06
la clase hotel, los datos serían 00:23:09
en todo caso el objeto hotel 00:23:11
esto sería una clase 00:23:13
repositorio, en este caso lo más parecido 00:23:15
a simular la situación, una clase repositorio 00:23:17
que tiene su variable estática hotel 00:23:19
que ese ya es el dato real 00:23:20
esto es la clase hotel, aquí todavía no hay ningún dato 00:23:23
esta es la plantilla de lo que va a tener el hotel 00:23:26
vale 00:23:28
entonces, el hotel 00:23:29
que todavía no existe ninguno, esta es la plantilla 00:23:33
para que exista uno habrá que hacer un 00:23:35
new hotel 00:23:37
en un main, en un repositorio de datos 00:23:38
para que se quede ahí donde sea 00:23:41
vale, bueno pues nuestro hotel 00:23:42
tiene 00:23:45
mogollón de habitaciones 00:23:46
y mogollón de reservas 00:23:48
cuando el hotel se cree limpio 00:23:51
inicialmente ninguna, 0 y 0 00:23:53
vale 00:23:56
ahora 00:23:57
este método es para meterle habitaciones 00:23:58
al hotel, ahora lo estamos construyendo 00:24:02
estamos poniendo los ladrillos del hotel 00:24:04
cuando hayamos terminado de poner los ladrillos 00:24:06
no tiene 00:24:09
todavía ni habitaciones ni reservas 00:24:12
tiene sentido que 00:24:14
incorporemos métodos para 00:24:15
construir, poner los ladrillos 00:24:17
de las habitaciones, vamos a poner los 00:24:19
los pladures para hacer las habitaciones 00:24:21
y luego ya a partir de ahí 00:24:23
ya vamos a reservarlas, a hacer lo que sea 00:24:25
pues venga, vamos a poner aquí 00:24:27
los pladures de las habitaciones 00:24:29
¿qué otra vez lo has hecho a lo raro? 00:24:31
pero bueno, ya, o sea, a tu manera 00:24:34
pero como ya lo hemos entendido de antes 00:24:36
no hay problema 00:24:37
esta es una nueva habitación que se va 00:24:39
al hotel 00:24:41
que ya se reservará en el futuro, ¿no? 00:24:42
¿vale? entonces 00:24:45
mis habitaciones viejas se van al auxiliar 00:24:47
Mis nuevas habitaciones 00:24:49
Copio las viejas 00:24:52
Y añado la nueva 00:24:53
En la última posición 00:24:56
¿Vale? 00:24:57
Ponerlo así para que se vea mejor 00:24:59
Vale 00:25:05
Bueno, pues esto es para irle metiendo habitaciones al hotel 00:25:10
Ya que luego serán reservadas o no 00:25:14
Hacer una reserva 00:25:16
Hacer una reserva 00:25:19
Le pasas el objeto enterito 00:25:22
¿Vale? El objeto enterito 00:25:23
Pues habrá que pedirle los datos al usuario 00:25:25
que fecha, lo que sea 00:25:27
pero ya se lo pasamos hecho 00:25:28
y de nuevo hacemos lo mismo 00:25:30
crear una reserva será 00:25:32
meter esta reserva 00:25:34
en su array 00:25:36
de reservas 00:25:39
este de aquí, en su array de reservas 00:25:40
pues venga 00:25:42
creamos una reserva haciendo lo mismo 00:25:44
guardamos nuestro 00:25:46
array de reservas viejo 00:25:48
aquí 00:25:50
nuestro array de reservas lo hacemos 00:25:51
nuevo, limpio, con una posición más 00:25:54
copiamos las antiguas 00:25:57
y una vez que hemos copiado 00:25:59
las antiguas, copiamos 00:26:01
la que falta, en la última posición 00:26:02
ala, en el hotel 00:26:05
ya tenemos como meter habitaciones 00:26:11
como construirlas ahí con los ladrillos 00:26:13
para que tenga habitaciones 00:26:15
y como incorporarle reservas 00:26:16
reservas que se habrán hecho previamente 00:26:18
claro, reservas que se habrán instanciado previamente 00:26:21
venga, como crearle reservas 00:26:23
vale 00:26:25
y que más métodos tienes 00:26:26
devolver una habitación 00:26:28
dado su número. 00:26:32
Bueno, pues 00:26:35
dado su número, recorremos 00:26:36
el array de habitaciones. 00:26:38
En cuanto encontramos una habitación 00:26:40
con ese número, 00:26:42
lo marcamos 00:26:43
para abandonar el for. 00:26:45
Lo marcamos para abandonar el for. 00:26:47
La guardamos aquí 00:26:49
y cuando ya el for ha terminado, devolvemos 00:26:50
Que podría ser nulo, ¿no? Depende. 00:26:55
depende de si hemos salido del for 00:26:57
a través del found 00:26:59
o si hemos salido 00:27:02
del for 00:27:03
porque se ha acabado ya esto 00:27:05
y no hemos encontrado 00:27:09
bueno, pues este método 00:27:11
de aquí, te devuelve 00:27:13
el objeto enterito, habitación 00:27:15
que se corresponde con un número 00:27:17
en concreto, imagino que lo has hecho 00:27:19
porque lo usarás en algún momento 00:27:21
Pero no va a seguir buscando 00:27:23
Las veces que se hace 00:27:48
Las RAIs son las mismas 00:27:50
Lo pongas así o no lo pongas así 00:27:52
En todo caso 00:27:54
Te refieres para que no pase 00:27:58
A la segunda cláusula 00:28:00
Eso sí, pero las iteraciones 00:28:01
de la raíz van a ser iguales, pero puesto así 00:28:04
cuando encuentres la habitación, esto va a ser true 00:28:08
con lo cual la máquina virtual se ve obligada a entrar aquí, pero aquí ya 00:28:12
será falso, si lo ponemos al revés, cuando encuentres 00:28:16
la habitación, esto ya va a ser falso, con lo cual 00:28:20
ni evalúa esta, entonces es verdad que te ahorras evaluar esto, pero ciclos del 00:28:24
for se hacen los mismos 00:28:28
Vale, pues ya está 00:28:30
Ahora 00:28:35
Esto es construir una reserva 00:28:36
¿Cómo que buscar? 00:28:40
Así como se veía más real 00:28:43
A buscarla dentro del array 00:28:44
Vale, buscar una reserva 00:28:47
Para esta fecha con esas habitaciones 00:28:50
Claro 00:28:52
Este es el lío de que 00:28:53
Si buscamos por código 00:28:56
Lógicamente es mucho más fácil 00:28:57
Pero tú no tenías código 00:28:59
cuando has hecho esta aplicación 00:29:02
el código de reserva 00:29:03
lo que hemos incorporado 00:29:05
claro, hemos incorporado un código 00:29:07
¿vale? de reserva 00:29:09
pero bueno, este método 00:29:11
lo que te hace es 00:29:12
te busca 00:29:14
una reserva dentro del array de reservas 00:29:15
que se corresponda con esta fecha 00:29:19
y además se corresponda 00:29:21
con estas habitaciones 00:29:23
exactamente, ¿no? 00:29:25
es lo que has hecho, entonces para eso 00:29:27
has recorrido el array de reservas 00:29:28
Si las habitaciones reservadas 00:29:31
Lo que pasa es que has usado este método 00:29:46
Que no hemos visto aquí 00:29:59
Pero bueno 00:30:03
Aquí el tema es que hay que ir reserva por reserva 00:30:06
Cada reserva tiene todo un array entero. 00:30:11
Entonces, para cada reserva hay que comparar la fecha, 00:30:15
que eso es fácil, con el equals, 00:30:18
y un array de reservas entero con otro array de reservas. 00:30:21
Entonces, ahí uno en principio lo podría hacer 00:30:25
con otro for anidado, que es me voy uno por uno 00:30:28
a ver si son iguales, pero es un rollo. 00:30:33
Entonces, este método equals de la clase arrays 00:30:36
Ya te dice si este array 00:30:41
Tiene exactamente 00:30:45
Lo mismo que este otro 00:30:48
No tenemos que ir nosotros comparando 00:30:49
Habitación por habitación si una está en la otra 00:30:52
Que es un lío 00:30:54
Como cuál 00:30:55
Que no, que es crear una 00:30:59
Una nueva 00:31:00
Un nuevo objeto de reserva 00:31:02
Con los parámetros 00:31:04
Y hacer un ícone 00:31:06
Sí, pero como tienes 00:31:08
un equals en reserva 00:31:11
Claro, como tienes un equals 00:31:12
en reserva, entonces 00:31:15
vamos a hacerlo así porque es que 00:31:16
esto se hace un poco lío 00:31:18
y este a raíz de igual es mejor ahora mismo 00:31:21
ahora mismo todavía no 00:31:22
Vale, entonces 00:31:24
Entonces 00:31:26
Vale, pues entonces 00:31:35
tenemos que ver 00:31:39
si una reserva 00:31:41
con estos datos 00:31:44
es igual 00:31:44
que 00:31:46
a ver, ¿qué querías 00:31:48
hacer con esto? 00:31:52
Ah, vale, entonces 00:31:54
pero 00:31:56
no, no, no, ya, pero 00:31:59
pero con datos 00:32:01
a ver, pero esto es 00:32:03
consultar 00:32:11
una reserva dentro de tu array de reservas 00:32:13
Sí, buscar una reserva 00:32:15
Dentro del array estático de reservas 00:32:16
¿Cómo que del array estático? 00:32:18
No, es que esto no tiene que ser estático 00:32:25
¿Por qué no? 00:32:27
No, porque esto caracteriza de forma única el hotel 00:32:28
Lo que tiene que ser estático 00:32:31
ya es el objeto hotel 00:32:33
Claro, es que estás confundiendo 00:32:34
los datos de la aplicación 00:32:37
Ahora mismo no hay datos 00:32:38
Ahora mismo estamos en la descripción de los datos 00:32:40
en la descripción 00:32:42
un hotel tiene 00:32:44
un conjunto de habitaciones y un conjunto de reservas 00:32:46
pero imagínate que ahora queremos 00:32:49
trabajar con cuatro hoteles distintos 00:32:51
cada hotel tiene 00:32:52
la raíz de habitaciones 00:32:55
o la raíz de reservas 00:32:57
entonces no tiene sentido que sea estático 00:32:58
ahora ya sí que 00:33:01
podríamos hacer, vale 00:33:03
yo ahora tengo ya mi aplicación 00:33:04
con mis datos, vamos a añadirle aquí 00:33:07
por ejemplo 00:33:09
un momentito, ahora paramos 00:33:12
y ahora, aquí ya van a estar 00:33:14
mis datos, entonces, mis datos 00:33:18
ahora ya sí estoy hablando de datos 00:33:20
¿cuáles van a ser mis datos? pues mis datos es 00:33:25
un hotel o 00:33:27
muchos, no lo sé, un hotel o muchos 00:33:29
voy a suponer que es solamente uno, vale 00:33:30
aquí está mi dato 00:33:37
este es mi dato, que podrían ser muchos 00:33:39
si yo trabajara con muchos, pero bueno, en este 00:33:46
caso trabajamos solo con un hotel, este 00:33:48
es mi dato, y aquí es donde yo 00:33:50
ahora podría empezar a plantearme los métodos 00:33:52
hacer cosas con este dato. 00:33:55
Pero en este caso es que es un solo 00:33:59
objeto. Entonces el CRUD pierde un poco 00:34:00
el sentido. 00:34:02
Entonces, ahora 00:34:05
mismo no te líes mucho con el tema del CRUD. 00:34:06
Piénsalo como métodos que 00:34:08
hacen las funcionalidades de mi aplicación. 00:34:10
Ya está. No te 00:34:13
líes con el CRUD porque eso te puede llevar a 00:34:14
pensar en nombres que igual no se adaptan bien 00:34:16
o lo que sea. Pero bueno, vamos a parar 00:34:18
unos... 00:34:20
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:
2
Fecha:
1 de febrero de 2026 - 19:21
Visibilidad:
Clave
Centro:
IES ROSA CHACEL
Duración:
34′ 22″
Relación de aspecto:
1.78:1
Resolución:
1920x1080 píxeles
Tamaño:
375.78 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid