20260130 EjercicioHoteles_1 - 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:
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
Y
00:04:06
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
Uy
00:05:53
Había aquí un montón de cosas
00:05:56
Sí
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
Sí
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
no
00:11:28
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
Eh
00:13:07
Uno sin la
00:13:09
Sí
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
y
00:16:20
¿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
un
00:16:51
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
R.
00:26:53
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
de
00:33:54
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