1 00:00:00,000 --> 00:00:02,600 Bueno, pues os habréis quedado efectivamente 2 00:00:02,600 --> 00:00:04,360 con la gran incógnita de qué pasa aquí. 3 00:00:04,879 --> 00:00:06,960 Y es que efectivamente es una situación 4 00:00:06,960 --> 00:00:08,839 que se nos puede dar. 5 00:00:09,880 --> 00:00:10,839 Necesitamos un dato 6 00:00:10,839 --> 00:00:14,359 que el mejor sitio para guardarlo 7 00:00:14,359 --> 00:00:15,400 es una variable primitiva, 8 00:00:15,759 --> 00:00:16,800 como un numerito entero, 9 00:00:17,500 --> 00:00:18,460 como un numerito decimal. 10 00:00:19,500 --> 00:00:20,780 El mejor sitio es una variable primitiva, 11 00:00:21,179 --> 00:00:23,640 un int, un short, un byte, un double. 12 00:00:24,420 --> 00:00:27,060 Pero también quiero poder guardar 13 00:00:27,060 --> 00:00:29,460 la posibilidad de que esa variable 14 00:00:29,460 --> 00:00:31,700 no tenga nada, esté vacía 15 00:00:31,700 --> 00:00:33,859 eso con una variable 16 00:00:33,859 --> 00:00:35,679 primitiva no se puede, si yo declaro 17 00:00:35,679 --> 00:00:37,620 un int, ese int siempre va a tener algo 18 00:00:37,620 --> 00:00:39,399 porque va a tener bits, va a tener ceros 19 00:00:39,399 --> 00:00:41,060 o uno o menos dos, no existe 20 00:00:41,060 --> 00:00:43,219 el concepto de nada 21 00:00:43,219 --> 00:00:45,480 en una variable primitiva, sí que 22 00:00:45,480 --> 00:00:47,400 existe en variable objeto, pero no existe en variable 23 00:00:47,400 --> 00:00:49,600 primitiva, luego en situaciones 24 00:00:49,600 --> 00:00:51,359 como esta nos quedamos que no tenemos 25 00:00:51,359 --> 00:00:53,260 una variable que se adapta 26 00:00:53,260 --> 00:00:55,719 no pasa nada, se inventa 27 00:00:55,719 --> 00:00:57,500 se inventa 28 00:00:57,500 --> 00:00:59,079 ¿vale? pues eso es lo que se ha hecho Java 29 00:00:59,079 --> 00:01:01,439 inventarse esto, se ha inventado una cosa 30 00:01:01,439 --> 00:01:02,140 que se llaman 31 00:01:02,140 --> 00:01:05,500 creo que lo mencionamos alguna vez al principio de curso 32 00:01:05,500 --> 00:01:07,560 cuando vimos las primitivas, pero lógicamente 33 00:01:07,560 --> 00:01:08,480 lo tendréis olvidado 34 00:01:08,480 --> 00:01:11,500 dije, ya esto ya volveremos 35 00:01:11,500 --> 00:01:13,259 a ello cuando veamos objetos, bueno, pues 36 00:01:13,259 --> 00:01:15,519 hemos vuelto a ello el 13 de febrero 37 00:01:15,519 --> 00:01:17,259 bueno, pues Java 38 00:01:17,259 --> 00:01:19,420 efectivamente, para solucionar este tipo 39 00:01:19,420 --> 00:01:21,340 de situaciones, todo tiene 40 00:01:21,340 --> 00:01:22,959 una motivación, todo se hace por algo 41 00:01:22,959 --> 00:01:25,480 ¿vale? no estudiéis diciendo esto, esto 42 00:01:25,480 --> 00:01:27,560 esto, no, todo está motivado por una razón 43 00:01:27,560 --> 00:01:29,500 si entendemos por qué está motivado 44 00:01:29,500 --> 00:01:31,299 se nos encenderá la lucecita 45 00:01:31,299 --> 00:01:32,760 de cuándo aplicarlo más rápido 46 00:01:32,760 --> 00:01:34,780 ¿vale? tú me vas a decir algo 47 00:01:34,780 --> 00:01:35,920 que te he congelado, ¿verdad? 48 00:01:37,219 --> 00:01:37,740 perdón 49 00:01:37,740 --> 00:01:40,820 quítate 50 00:01:40,820 --> 00:01:43,060 vale 51 00:01:43,060 --> 00:01:45,120 bueno, pues Java entonces 52 00:01:45,120 --> 00:01:47,640 motivado por esta situación 53 00:01:47,640 --> 00:01:51,060 se inventa 54 00:01:51,060 --> 00:01:58,700 los 55 00:01:58,700 --> 00:02:01,379 wrappers 56 00:02:01,379 --> 00:02:03,760 o envolventes, como os guste a vosotros llamarles. 57 00:02:05,379 --> 00:02:07,060 ¿Y qué son los envolventes? 58 00:02:07,060 --> 00:02:09,180 Pues son tipos objetos 59 00:02:09,180 --> 00:02:11,199 diseñados 60 00:02:11,199 --> 00:02:12,840 para guardar dentro 61 00:02:12,840 --> 00:02:14,080 variables primitivas. 62 00:02:15,520 --> 00:02:17,000 Entonces, cada tipo primitivo 63 00:02:17,000 --> 00:02:19,240 tiene un tipo objeto envolvente 64 00:02:19,240 --> 00:02:21,140 asociado, por ejemplo 65 00:02:21,140 --> 00:02:22,800 vamos a 66 00:02:22,800 --> 00:02:24,900 me voy a hacer yo aquí 67 00:02:24,900 --> 00:02:27,159 en paralelo mi main de pruebas 68 00:02:27,159 --> 00:02:28,939 para las chorraditas que nos vayan saliendo 69 00:02:28,939 --> 00:02:33,200 me voy a hacer aquí mi main 70 00:02:33,200 --> 00:02:35,520 de pruebitas para las chorraditas 71 00:02:35,520 --> 00:02:38,780 ¿vale? jolines 72 00:02:38,780 --> 00:02:41,000 tengo que quitar esto para que no me saque el constructor 73 00:02:41,000 --> 00:02:41,580 todo el rato 74 00:02:41,580 --> 00:02:45,400 vale, pues entonces 75 00:02:45,400 --> 00:02:47,560 está claro esto como se usa 76 00:02:47,560 --> 00:02:49,000 yo tengo una variable entera 77 00:02:49,000 --> 00:02:51,479 en la que puedo meter un numerito entero, lo que quiera. 78 00:02:51,560 --> 00:02:52,080 Eso está claro. 79 00:02:52,780 --> 00:02:55,680 Vale, pero es que tengo asociado a cualquier tipo primitivo, 80 00:02:56,180 --> 00:02:58,939 in double float, tengo el envolvente correspondiente, 81 00:02:59,080 --> 00:02:59,539 el grouper. 82 00:02:59,860 --> 00:03:01,439 ¿El envolvente de lint cuál es? 83 00:03:02,360 --> 00:03:02,800 Este. 84 00:03:05,580 --> 00:03:06,259 Este es. 85 00:03:07,420 --> 00:03:10,599 Este es el tipo de dato y este es un tipo de dato objeto. 86 00:03:11,020 --> 00:03:12,420 Un tipo de dato objeto. 87 00:03:13,099 --> 00:03:15,599 Y yo puedo declararme una variable objeto así. 88 00:03:16,360 --> 00:03:16,599 ¿Vale? 89 00:03:16,599 --> 00:03:19,280 Entonces esta es una variable de tipo objeto 90 00:03:19,280 --> 00:03:20,719 ¿Y para qué sirve? 91 00:03:21,239 --> 00:03:23,359 Sirve para guardar un número entero 92 00:03:23,359 --> 00:03:24,379 Para eso sirve 93 00:03:24,379 --> 00:03:27,539 Pero aquí lo guardaré en modo objeto 94 00:03:27,539 --> 00:03:29,919 Y aquí lo guardo en modo primitivo 95 00:03:29,919 --> 00:03:31,539 Pero el valor que guarda es lo mismo 96 00:03:31,539 --> 00:03:32,079 Es un número 97 00:03:32,079 --> 00:03:34,240 Lo que pasa es que aquí lo guarda en modo objeto 98 00:03:34,240 --> 00:03:35,780 ¿Qué gano? 99 00:03:36,579 --> 00:03:37,479 Gano dos cosas 100 00:03:37,479 --> 00:03:40,939 Primero, poder guardar la idea de que ahí no hay nada 101 00:03:40,939 --> 00:03:42,939 Aquí es imposible 102 00:03:42,939 --> 00:03:45,039 Guardar la idea de que ahí no hay nada 103 00:03:45,039 --> 00:03:45,900 No se puede 104 00:03:45,900 --> 00:03:48,360 en una variable primitiva no puedo meterle 105 00:03:48,360 --> 00:03:50,219 nada, pero en una variable 106 00:03:50,219 --> 00:03:52,040 objeto como esta sí 107 00:03:52,040 --> 00:03:53,360 y yo puedo hacer 108 00:03:53,360 --> 00:03:56,540 n2 igual a nul 109 00:03:56,540 --> 00:03:58,500 esto sí que puedo 110 00:03:58,500 --> 00:04:00,319 porque n2 111 00:04:00,319 --> 00:04:01,319 es un tipo objeto 112 00:04:01,319 --> 00:04:02,960 esto sí que puedo hacerlo 113 00:04:02,960 --> 00:04:06,319 y con esto diré, oye que el numerito n2 no tiene nada 114 00:04:06,319 --> 00:04:07,659 fenomenal, no tiene nada 115 00:04:07,659 --> 00:04:10,400 aquí el numerito n no podría 116 00:04:10,400 --> 00:04:11,980 decir, ¿tiene algo? ¿no tiene nada? 117 00:04:12,120 --> 00:04:14,000 no, siempre va a tener algo, siempre 118 00:04:14,000 --> 00:04:18,540 es un tipo objeto, o sea, no es como un string 119 00:04:18,540 --> 00:04:20,300 porque guarda otra cosa, pero efectivamente 120 00:04:20,300 --> 00:04:22,120 es un tipo objeto como un string 121 00:04:22,120 --> 00:04:24,839 entonces, gano la posibilidad de que tenga null 122 00:04:24,839 --> 00:04:26,720 como el string, que también puede tener null 123 00:04:26,720 --> 00:04:28,899 puede decir, no tengo nada, no tengo ningún texto 124 00:04:28,899 --> 00:04:30,759 pues esto igual, esto puede 125 00:04:30,759 --> 00:04:31,459 no tener nada 126 00:04:31,459 --> 00:04:34,259 y también gana el que 127 00:04:34,259 --> 00:04:36,180 al ser objeto, tiene métodos 128 00:04:36,180 --> 00:04:38,899 el que hizo la clase integer, ya de hecho le metió métodos 129 00:04:38,899 --> 00:04:40,899 pues si uno quiere hacer cosas con numeritos 130 00:04:40,899 --> 00:04:42,560 entonces, pues si uno 131 00:04:42,560 --> 00:04:44,660 los cotillea, pues bueno 132 00:04:44,660 --> 00:04:46,639 aquí tiene métodos para hacer cosas 133 00:04:46,639 --> 00:04:48,839 con los enteros, ya hemos usado 134 00:04:48,839 --> 00:04:50,519 uno, muchas veces 135 00:04:50,519 --> 00:04:52,740 ¿no recordáis que 136 00:04:52,740 --> 00:04:54,560 a veces cuando queríamos convertir 137 00:04:54,560 --> 00:04:56,319 una cadena a entero 138 00:04:56,319 --> 00:04:57,160 hacíamos esto? 139 00:05:05,500 --> 00:05:06,779 pues este es 140 00:05:06,779 --> 00:05:08,399 un método estático 141 00:05:08,399 --> 00:05:10,379 de la clase íntegra 142 00:05:10,379 --> 00:05:12,639 es estático porque lo llamo con el nombre de la clase 143 00:05:12,639 --> 00:05:14,560 ¿y qué hace este método estático de la clase 144 00:05:14,560 --> 00:05:16,699 íntegra? le paso una cadena 145 00:05:16,699 --> 00:05:18,540 y me lo devuelve en el 146 00:05:18,540 --> 00:05:20,120 número entero que representa 147 00:05:20,120 --> 00:05:22,360 entonces, esta llamada 148 00:05:22,360 --> 00:05:24,319 ya la hemos usado otras veces cuando 149 00:05:24,319 --> 00:05:26,779 leíamos del teclado y queríamos pasar a entero 150 00:05:26,779 --> 00:05:27,699 o algo así 151 00:05:27,699 --> 00:05:32,279 vale, ya lo hemos hecho otras veces 152 00:05:32,279 --> 00:05:34,740 entonces, la clase íntegra 153 00:05:34,740 --> 00:05:36,600 esta de aquí me vale para dos cosas 154 00:05:36,600 --> 00:05:38,560 primero, para guardar un número 155 00:05:38,560 --> 00:05:39,920 entero pero en modo objeto 156 00:05:39,920 --> 00:05:41,860 de forma que yo pueda 157 00:05:41,860 --> 00:05:43,480 meterle un null también si me da la gana 158 00:05:43,480 --> 00:05:45,720 y también me vale 159 00:05:45,720 --> 00:05:47,920 porque tiene métodos dentro para hacer cosas 160 00:05:47,920 --> 00:05:49,819 entonces mi objeto 161 00:05:49,819 --> 00:05:51,860 n de arriba no puede 162 00:05:51,860 --> 00:05:53,819 llamar a métodos, es imposible porque es una variable 163 00:05:53,819 --> 00:05:55,780 primitiva y las variables primitivas no pueden 164 00:05:55,780 --> 00:05:57,819 llamar a métodos, pero mi variable 165 00:05:57,819 --> 00:05:58,759 n2 166 00:05:58,759 --> 00:06:01,259 claro que puede llamar a métodos 167 00:06:01,259 --> 00:06:03,680 entonces tengo 168 00:06:03,680 --> 00:06:05,400 utilidades ahí, que me he sacado de la manga 169 00:06:05,400 --> 00:06:07,220 solo porque n2 está en tipo objeto 170 00:06:07,220 --> 00:06:08,860 entonces yo a n2 171 00:06:08,860 --> 00:06:12,500 por ser de tipo objeto 172 00:06:12,500 --> 00:06:14,379 aunque sea un numerito lo que tiene 173 00:06:14,379 --> 00:06:15,060 porque tiene un número 174 00:06:15,060 --> 00:06:18,699 n2 tiene cosas a las que puedo llamar 175 00:06:18,699 --> 00:06:20,240 pues convertirlo 176 00:06:20,240 --> 00:06:21,660 en double 177 00:06:21,660 --> 00:06:24,240 ver si es igual que otro número 178 00:06:24,240 --> 00:06:26,139 pero bueno eso con el doble igual del primitivo 179 00:06:26,139 --> 00:06:28,199 también, pues bueno tiene unos metoditos para hacer 180 00:06:28,199 --> 00:06:30,300 cosas con él, convertirlo a float 181 00:06:30,300 --> 00:06:32,259 cosas que yo no puedo hacer con la 182 00:06:32,259 --> 00:06:33,240 variable primitiva n 183 00:06:33,240 --> 00:06:35,960 bueno pues con esta variable por ser objeto 184 00:06:35,960 --> 00:06:37,340 puedo hacer dos o tres chorradas 185 00:06:37,340 --> 00:06:39,780 pero a ver, sobre todo la utilidad 186 00:06:39,780 --> 00:06:41,520 también son los métodos estáticos 187 00:06:41,520 --> 00:06:43,360 la clase ínteger 188 00:06:43,360 --> 00:06:45,700 tiene 189 00:06:45,700 --> 00:06:47,260 métodos estáticos hechos 190 00:06:47,260 --> 00:06:50,600 para ver cositas 191 00:06:50,600 --> 00:06:53,760 ¿no? pues me permite aquí comparar 192 00:06:53,760 --> 00:06:55,660 dos números, a ver cuál es mayor o menor 193 00:06:55,660 --> 00:06:56,480 chorradas 194 00:06:56,480 --> 00:06:59,600 ¿vale? me permite con esto 195 00:06:59,600 --> 00:07:01,620 obtener el máximo valor entero a codificar 196 00:07:01,620 --> 00:07:02,380 o el mínimo 197 00:07:02,380 --> 00:07:05,680 la clase ínteger, bueno pues ya que 198 00:07:05,680 --> 00:07:06,600 está hecha esa clase 199 00:07:06,600 --> 00:07:09,620 Pues esa clase me permite 200 00:07:09,620 --> 00:07:11,740 Acceder a utilidades 201 00:07:11,740 --> 00:07:12,700 ¿Vale? 202 00:07:12,760 --> 00:07:15,760 Esta clase si uno la cotillea por aquí 203 00:07:15,760 --> 00:07:17,780 Integer, pues bueno, tiene todas sus cosas 204 00:07:17,780 --> 00:07:20,140 Y esta clase para lo que vale 205 00:07:20,140 --> 00:07:22,120 Es para guardar en realidad 206 00:07:22,120 --> 00:07:23,080 Un numerito 207 00:07:23,080 --> 00:07:26,000 Un numerito que irá guardado en una variable 208 00:07:26,000 --> 00:07:28,720 Que estará por ahí 209 00:07:28,720 --> 00:07:30,060 Una int 210 00:07:30,060 --> 00:07:32,160 Que estará por ahí 211 00:07:32,160 --> 00:07:33,420 Que es la que guarda el numerito 212 00:07:33,420 --> 00:07:34,100 ¿Vale? 213 00:07:34,100 --> 00:07:36,020 bueno 214 00:07:36,020 --> 00:07:38,300 pues entonces 215 00:07:38,300 --> 00:07:40,580 y lo que aplica para integer 216 00:07:40,580 --> 00:07:42,800 aplica para cualquier variable primitiva 217 00:07:42,800 --> 00:07:44,660 silencio 218 00:07:44,660 --> 00:07:46,840 también existe el tipo envolvente 219 00:07:46,840 --> 00:07:47,460 este de aquí 220 00:07:47,460 --> 00:07:49,540 también existe este tipo 221 00:07:49,540 --> 00:07:51,520 este tipo vale 222 00:07:51,520 --> 00:07:53,820 para guardar un número double 223 00:07:53,820 --> 00:07:55,480 pero guardarlo en modo objeto 224 00:07:55,480 --> 00:07:57,439 guardarlo en modo objeto también 225 00:07:57,439 --> 00:07:59,960 de forma que yo le pueda asignar un null 226 00:07:59,960 --> 00:08:02,700 entonces los tipos integer 227 00:08:02,699 --> 00:08:04,379 en realidad, o sea, todos los tipos 228 00:08:04,379 --> 00:08:06,599 primitivos tienen todo su envolvente 229 00:08:06,599 --> 00:08:07,979 que en todos los casos 230 00:08:07,979 --> 00:08:11,039 el nombre de la clase es la misma que el primitivo 231 00:08:11,039 --> 00:08:12,779 pero con mayúscula 232 00:08:12,779 --> 00:08:15,120 salvo esta, que esta cambia un poco más 233 00:08:15,120 --> 00:08:16,300 pasa de índa a íntegra 234 00:08:16,300 --> 00:08:18,779 pero las demás son el short, tiene el short 235 00:08:18,779 --> 00:08:20,879 con la S mayúscula, el float tiene el float 236 00:08:20,879 --> 00:08:22,419 con la F mayúscula 237 00:08:22,419 --> 00:08:24,480 esta es la única que cambia un poco el nombre 238 00:08:24,480 --> 00:08:26,779 ¿vale? entonces, trabajar 239 00:08:26,779 --> 00:08:28,919 con los, la clase está hecha 240 00:08:28,919 --> 00:08:30,699 para que uno pueda pasar 241 00:08:30,699 --> 00:08:32,639 fácilmente de uno a otro, incluso 242 00:08:32,639 --> 00:08:33,899 sin casting y sin nada 243 00:08:33,899 --> 00:08:36,419 igual que al string 244 00:08:36,419 --> 00:08:38,340 al string le podemos asignar una cadena de texto 245 00:08:38,340 --> 00:08:40,399 aunque sea objeto, sin ponerle new string 246 00:08:40,399 --> 00:08:42,240 pues integer también está hecha 247 00:08:42,240 --> 00:08:44,480 para permitir trabajar 248 00:08:44,480 --> 00:08:45,379 con primitivos 249 00:08:45,379 --> 00:08:45,759 y 250 00:08:45,759 --> 00:08:49,120 integrar fácilmente 251 00:08:49,120 --> 00:08:51,059 por ejemplo yo a este 252 00:08:51,059 --> 00:08:52,679 le puedo asignar el n 253 00:08:52,679 --> 00:08:53,899 directamente 254 00:08:53,899 --> 00:08:56,019 puedo hacer esto 255 00:08:56,019 --> 00:08:58,080 n es un primitivo 256 00:08:58,080 --> 00:09:00,939 y se lo estoy asignando a este tipo entero 257 00:09:00,940 --> 00:09:02,880 pero esta clase ya está pensada 258 00:09:02,880 --> 00:09:04,840 para que lo que hace entonces es 259 00:09:04,840 --> 00:09:06,240 coge este número primitivo 260 00:09:06,240 --> 00:09:08,840 crea el objeto, crea el objeto 261 00:09:08,840 --> 00:09:10,940 integer y mete este numerito 262 00:09:10,940 --> 00:09:12,960 dentro, vale, ya está 263 00:09:12,960 --> 00:09:14,960 pensada para darnos esa facilidad de uso 264 00:09:14,960 --> 00:09:16,860 no tener que instanciarlo 265 00:09:16,860 --> 00:09:18,900 todo el rato con new integer y nada de eso 266 00:09:18,900 --> 00:09:21,100 como la string, que no la instanciamos 267 00:09:21,100 --> 00:09:22,680 con new string porque es un rollo 268 00:09:22,680 --> 00:09:24,700 a la string 269 00:09:24,700 --> 00:09:26,920 le hacemos esto 270 00:09:26,920 --> 00:09:27,440 siempre 271 00:09:30,940 --> 00:09:31,760 ¿Verdad? 272 00:09:32,020 --> 00:09:33,460 Podríamos hacer esto también. 273 00:09:42,460 --> 00:09:44,760 Y estaríamos haciendo lo mismo que arriba. 274 00:09:44,980 --> 00:09:45,420 Lo mismo. 275 00:09:46,000 --> 00:09:48,600 Pero, hombre, la clase string, ya dijimos que como se usa tanto, 276 00:09:49,180 --> 00:09:52,580 nos facilita las cosas para poder yo instanciarla así. 277 00:09:53,360 --> 00:09:54,060 Pues, está igual. 278 00:09:54,460 --> 00:09:56,880 No es necesario que yo haga el new integer ni nada. 279 00:09:56,879 --> 00:09:59,759 la puedo instanciar directamente dándole 280 00:09:59,759 --> 00:10:01,139 el número entero que contiene 281 00:10:01,139 --> 00:10:03,939 y así sobre la marcha uno puede comprobar 282 00:10:03,939 --> 00:10:04,700 que es muy flexible 283 00:10:04,700 --> 00:10:07,639 que puede comparar y integrar 284 00:10:07,639 --> 00:10:09,019 y enteritos 285 00:10:09,019 --> 00:10:11,419 sin hacer casting 286 00:10:11,419 --> 00:10:13,399 con otro, etcétera 287 00:10:13,399 --> 00:10:15,340 bueno, pues entonces 288 00:10:15,340 --> 00:10:18,320 esta, esto nos resuelve 289 00:10:18,320 --> 00:10:19,879 este problema 290 00:10:19,879 --> 00:10:20,679 que teníamos aquí 291 00:10:20,679 --> 00:10:21,980 ¿verdad? 292 00:10:22,980 --> 00:10:25,620 ¿qué tipo de dato le ponemos 293 00:10:25,620 --> 00:10:26,460 a este método? 294 00:10:26,879 --> 00:10:28,439 yo tengo que volver un número 295 00:10:28,439 --> 00:10:30,980 o también la posibilidad de volver null 296 00:10:30,980 --> 00:10:32,000 si es que 297 00:10:32,000 --> 00:10:34,039 no se cumple la condición 298 00:10:34,039 --> 00:10:36,500 pues ya está, entonces ínteger es la que le pega 299 00:10:36,500 --> 00:10:37,399 ¿vale? 300 00:10:38,080 --> 00:10:39,879 es la que le pega y un pedazo de ínteger 301 00:10:39,879 --> 00:10:41,539 pues venga 302 00:10:41,539 --> 00:10:46,720 le ponemos un 303 00:10:46,720 --> 00:10:48,820 ínteger y listo 304 00:10:48,820 --> 00:10:49,879 ¿vale? 305 00:10:50,559 --> 00:10:52,340 solucionado ese ínteger será null 306 00:10:52,340 --> 00:10:54,360 o será un valor entero 307 00:10:54,360 --> 00:10:56,580 que es el número de habitaciones reservadas 308 00:10:56,580 --> 00:10:57,720 para esta fecha 309 00:10:57,720 --> 00:11:00,120 ¿vale? y ahora ya ese método 310 00:11:00,120 --> 00:11:02,620 la clase principal main lo usará 311 00:11:02,620 --> 00:11:04,560 como quiera, pues tendrá 312 00:11:04,560 --> 00:11:06,639 un montón de reservas, para cada reserva 313 00:11:06,639 --> 00:11:08,639 comprobará la disponibilidad para cada una 314 00:11:08,639 --> 00:11:10,240 de ellas, para una fecha 315 00:11:10,240 --> 00:11:12,940 obtendrá las habitaciones para esa fecha 316 00:11:12,940 --> 00:11:14,840 ya la clase main lo que sea 317 00:11:14,840 --> 00:11:16,660 ahora mismo lo que vemos 318 00:11:16,660 --> 00:11:17,800 es simplemente es un método que 319 00:11:17,800 --> 00:11:21,000 dada una reserva concreta, dada una reserva 320 00:11:21,000 --> 00:11:22,500 mira si para esa reserva 321 00:11:22,500 --> 00:11:23,720 la fecha es esta 322 00:11:23,720 --> 00:11:25,920 si lo es devuelve las habitaciones 323 00:11:25,919 --> 00:11:28,159 y si no lo es, devuélvelo, ya está 324 00:11:28,159 --> 00:11:31,679 pues hala 325 00:11:31,679 --> 00:11:36,199 la clase reserva 326 00:11:36,199 --> 00:11:39,839 parece que 327 00:11:39,839 --> 00:11:41,919 está 328 00:11:41,919 --> 00:11:48,519 vale, comprueba disponibilidad 329 00:11:48,519 --> 00:11:50,379 ya está, ahora ya viene 330 00:11:50,379 --> 00:11:51,159 el hotel 331 00:11:51,159 --> 00:11:56,159 pues bueno, el hotel 332 00:11:56,159 --> 00:11:58,679 lo mismo, después de hacer el análisis 333 00:11:58,679 --> 00:11:59,939 toda la historieta nos dicen 334 00:11:59,939 --> 00:12:01,980 del hotel lo único que nos interesa 335 00:12:01,980 --> 00:12:03,360 guardar es 336 00:12:03,360 --> 00:12:06,379 el conjunto de habitaciones que tiene 337 00:12:06,379 --> 00:12:08,219 y el conjunto de reservas que tiene 338 00:12:08,219 --> 00:12:10,500 el único que nos interesa es el hotel, nos da igual la dirección 339 00:12:10,500 --> 00:12:11,839 donde está, el nombre 340 00:12:11,839 --> 00:12:14,339 la verdad es que es un poco feo eso 341 00:12:14,339 --> 00:12:15,799 vamos a ponerle un nombre por lo menos 342 00:12:15,799 --> 00:12:18,000 es que tanto tanto simplificar 343 00:12:18,000 --> 00:12:19,819 vamos a darle un sentido más real 344 00:12:19,820 --> 00:12:21,420 venga, vamos a añadirle un nombrecito 345 00:12:21,420 --> 00:12:24,140 más que nada por facilitar, si luego hacemos un main de prueba 346 00:12:24,140 --> 00:12:26,200 para probar esto, que aquí no está incorporado 347 00:12:26,200 --> 00:12:27,400 si luego hacemos un main de prueba 348 00:12:27,400 --> 00:12:30,260 pues hombre, crear un hotel con un nombre, algo así 349 00:12:30,260 --> 00:12:32,120 venga, vamos a hacer 350 00:12:32,120 --> 00:12:33,760 la clase hotelillo 351 00:12:33,760 --> 00:12:37,460 a ver 352 00:12:49,820 --> 00:12:55,280 La clase hotel 353 00:12:55,280 --> 00:12:57,360 La clase hotel, vamos a ponerle un nombre 354 00:12:57,360 --> 00:13:03,520 No hijo, no, eso eran tus sueños 355 00:13:03,520 --> 00:13:05,340 Ah no, habitación, perdón 356 00:13:05,340 --> 00:13:10,540 Vale, nombre del hotel 357 00:13:10,540 --> 00:13:13,140 Eh, jolines, es que 358 00:13:13,140 --> 00:13:16,940 No quito eso en la pestaña 359 00:13:16,940 --> 00:13:19,180 Y me sale y lo meto siempre donde no es 360 00:13:19,180 --> 00:13:21,380 Ahí, vale, ya está 361 00:13:21,380 --> 00:13:23,840 Vale, hotel 362 00:13:23,840 --> 00:13:24,880 Tampoco hereda de nadie 363 00:13:24,880 --> 00:13:26,300 Esto es un desmadre 364 00:13:26,300 --> 00:13:28,760 Pues venga, vamos a ponerle un constructor 365 00:13:28,760 --> 00:13:30,740 Ah, bueno, me faltan los otros dos parámetros 366 00:13:30,740 --> 00:13:33,100 Número de habitaciones 367 00:13:33,100 --> 00:13:35,020 Vale, a ver si ya 368 00:13:35,020 --> 00:13:36,980 Ahora mismo 369 00:13:36,980 --> 00:13:39,020 A ver si nos quitamos ya los arrays de encima 370 00:13:39,020 --> 00:13:41,040 Ahora mismo 371 00:13:41,040 --> 00:13:43,120 No nos queda más remedio que guardar 372 00:13:43,120 --> 00:13:44,560 Un conjunto de cosas en un array 373 00:13:44,560 --> 00:13:45,920 Porque es que no sabemos otra cosa 374 00:13:45,920 --> 00:13:48,140 Pues ala 375 00:13:48,139 --> 00:13:50,939 Las habitaciones ahí 376 00:13:50,939 --> 00:13:54,399 Y las reservas 377 00:13:54,399 --> 00:13:59,620 Ahí 378 00:13:59,620 --> 00:14:04,259 Reservas 379 00:14:04,259 --> 00:14:08,220 El hotel solo nos interesa eso 380 00:14:08,220 --> 00:14:10,000 Su nombre, las habitaciones que tiene 381 00:14:10,000 --> 00:14:11,220 Y las reservas que tiene 382 00:14:11,220 --> 00:14:12,259 Se acabó 383 00:14:12,259 --> 00:14:14,460 Vale, aquí de nuevo 384 00:14:14,460 --> 00:14:16,700 los famosos 385 00:14:16,700 --> 00:14:18,280 null pointer exception 386 00:14:18,280 --> 00:14:22,720 cuando el hotel arranca 387 00:14:22,720 --> 00:14:24,820 si no inicializamos esto 388 00:14:24,820 --> 00:14:25,800 a través del constructor 389 00:14:25,800 --> 00:14:28,720 porque lo instanciamos por ejemplo así 390 00:14:28,720 --> 00:14:30,840 pues 391 00:14:30,840 --> 00:14:32,580 su conjunto de habitaciones 392 00:14:32,580 --> 00:14:33,600 es un objeto null 393 00:14:33,600 --> 00:14:36,000 y su conjunto de reservas es un objeto null 394 00:14:36,000 --> 00:14:38,440 no es que tenga un número de habitaciones 395 00:14:38,440 --> 00:14:39,180 cero 396 00:14:39,180 --> 00:14:41,780 y un número de reservas cero, no 397 00:14:41,780 --> 00:14:43,660 es que directamente es null 398 00:14:43,659 --> 00:14:46,039 no tiene ni capacidad para tener habitaciones y reservas 399 00:14:46,039 --> 00:14:47,399 no pasa nada 400 00:14:47,399 --> 00:14:50,319 el momento en el que le agreguemos la primera habitación 401 00:14:50,319 --> 00:14:51,699 le creamos esa capacidad 402 00:14:51,699 --> 00:14:53,639 le hacemos que ya no sea null 403 00:14:53,639 --> 00:14:55,679 podría ocurrir 404 00:14:55,679 --> 00:14:58,039 pero hombre, si ya directamente 405 00:14:58,039 --> 00:14:59,679 inicializamos con un array 406 00:14:59,679 --> 00:15:01,980 que aunque no tenga posiciones no sea null 407 00:15:01,980 --> 00:15:04,219 pues seguramente nos evitemos 408 00:15:04,219 --> 00:15:06,159 null pointer exception si es que 409 00:15:06,159 --> 00:15:07,959 algo se nos escapa 410 00:15:07,959 --> 00:15:09,299 más adelante y no reservamos 411 00:15:09,299 --> 00:15:12,059 el objeto, etcétera 412 00:15:12,059 --> 00:15:12,799 entonces hombre 413 00:15:12,800 --> 00:15:15,820 no es que las cosas haya que hacerlas así 414 00:15:15,820 --> 00:15:17,720 porque yo lo diga, yo lo que os trato 415 00:15:17,720 --> 00:15:19,120 es de que entendáis las cosas 416 00:15:19,120 --> 00:15:21,160 luego cada uno va seleccionando 417 00:15:21,160 --> 00:15:23,620 en un momento determinado, en un contexto 418 00:15:23,620 --> 00:15:25,680 determinado, pues qué es lo que quiere 419 00:15:25,680 --> 00:15:27,820 hacer, bueno pues yo voy aquí 420 00:15:27,820 --> 00:15:29,380 a crear ya 421 00:15:29,380 --> 00:15:30,800 instanciar ya un array 422 00:15:30,800 --> 00:15:33,700 instanciarlo ya, aunque no le voy a dar 423 00:15:33,700 --> 00:15:35,580 todavía espacio para ninguna 424 00:15:35,580 --> 00:15:37,460 habitación, porque el hotel de partida 425 00:15:37,460 --> 00:15:39,400 no tiene habitaciones, ya se las iré yo 426 00:15:39,400 --> 00:15:40,140 incorporando 427 00:15:40,139 --> 00:15:43,379 lo único que he arreglado con esto 428 00:15:43,379 --> 00:15:44,519 evito lo único que arreglo 429 00:15:44,519 --> 00:15:47,059 es que ese objeto habitaciones 430 00:15:47,059 --> 00:15:48,159 no sea null 431 00:15:48,159 --> 00:15:50,559 y al no ser null 432 00:15:50,559 --> 00:15:53,439 si alguien le hace un punto lenza así rápidamente 433 00:15:53,439 --> 00:15:55,360 lo que sea, pues no le va a salir null.except 434 00:15:55,360 --> 00:15:56,299 y la aplicación no se va a parar 435 00:15:56,299 --> 00:15:59,259 porque el problema de las excepciones es 436 00:15:59,259 --> 00:16:01,639 que si no se capturan con try-catch 437 00:16:01,639 --> 00:16:02,379 correctamente 438 00:16:02,379 --> 00:16:04,500 detienen la aplicación 439 00:16:04,500 --> 00:16:06,620 y eso es lo último que queremos en una aplicación 440 00:16:06,620 --> 00:16:08,100 lo que queremos en una aplicación es que 441 00:16:08,100 --> 00:16:09,659 como mucho te diga 442 00:16:09,659 --> 00:16:11,579 pues inténtalo más adelante 443 00:16:11,579 --> 00:16:13,439 hay un error, pero que la aplicación no se pare 444 00:16:13,439 --> 00:16:15,579 entonces no, queremos evitar 445 00:16:15,579 --> 00:16:16,419 las excepciones 446 00:16:16,419 --> 00:16:19,519 pues nada, aquí lo mismo, voy a evitar 447 00:16:19,519 --> 00:16:21,439 un null, porque el null 448 00:16:21,439 --> 00:16:22,879 pointer exception es 449 00:16:22,879 --> 00:16:25,519 silencio por ahí 450 00:16:25,519 --> 00:16:27,399 atrás, el null pointer exception 451 00:16:27,399 --> 00:16:28,600 es muy desagradable 452 00:16:28,600 --> 00:16:31,519 es muy desagradable 453 00:16:31,519 --> 00:16:33,639 vale, venga, nos vamos a hacer un constructor 454 00:16:33,639 --> 00:16:35,919 con parámetros, por si alguien quiere de partida 455 00:16:35,919 --> 00:16:37,679 crear un hotel ya con 456 00:16:37,680 --> 00:16:40,720 con su array de habitaciones, su array de reservas, etc. 457 00:16:42,280 --> 00:16:44,400 Bueno, vamos a hacer un constructor con parámetros. 458 00:16:47,520 --> 00:16:50,180 Este sería para hacer un hotel ya con un array enterito, 459 00:16:50,380 --> 00:16:52,420 pisando entonces el que acabo de inicializar. 460 00:16:53,000 --> 00:16:54,920 Con este array enterito, pisando el que acabo de inicializar. 461 00:16:55,040 --> 00:16:58,040 Bueno, si alguien quiere hacer un hotel de partida ya con dos arrays concretos, 462 00:16:58,760 --> 00:16:59,980 pues puedo usar este constructor. 463 00:16:59,980 --> 00:17:05,980 Y aquí, en este caso, tendría muchísimo sentido 464 00:17:05,980 --> 00:17:07,500 sentido hacer un constructor 465 00:17:07,500 --> 00:17:09,299 solo con el nombre 466 00:17:09,299 --> 00:17:12,000 para yo crear un hotel 467 00:17:12,000 --> 00:17:13,779 con su nombre, por ahora sin 468 00:17:13,779 --> 00:17:15,880 habitaciones ni reservas, que ya las haré más 469 00:17:15,880 --> 00:17:16,460 adelante 470 00:17:16,460 --> 00:17:19,160 ¿vale? 471 00:17:20,420 --> 00:17:21,860 bueno, y Getty Set, pues eso 472 00:17:21,860 --> 00:17:23,700 sí que sí, si las he puesto privadas 473 00:17:23,700 --> 00:17:25,940 ahí sí que 474 00:17:25,940 --> 00:17:27,000 no hay otra 475 00:17:27,000 --> 00:17:30,059 y bueno 476 00:17:30,059 --> 00:17:31,720 vamos a hacer un to stream solo con el nombre 477 00:17:31,720 --> 00:17:33,920 el hotel es patatín, que no 478 00:17:33,920 --> 00:17:35,680 muestro lista de habitaciones y reservas 479 00:17:35,680 --> 00:17:37,140 Porque nos vamos a volver locos 480 00:17:37,140 --> 00:17:39,580 Vamos a hacer un toestring solo con el nombre 481 00:17:39,580 --> 00:17:43,860 Le quitamos habitaciones y reservas 482 00:17:43,860 --> 00:17:45,840 Un toestring 483 00:17:45,840 --> 00:17:47,360 Que me muestre el nombre del hotel 484 00:17:47,360 --> 00:17:48,880 Y ya está 485 00:17:48,880 --> 00:17:52,220 Vale, esto describe el hotel 486 00:17:52,220 --> 00:17:53,840 Lo describe 487 00:17:53,840 --> 00:17:55,440 Nombre, habitaciones, reservas 488 00:17:55,440 --> 00:17:57,560 Vale, pero que queremos hacer con el hotel 489 00:17:57,560 --> 00:17:59,180 Que queremos hacer, queremos hacer reservas 490 00:17:59,180 --> 00:18:01,259 Queremos meter las habitaciones, que queremos hacer con el hotel 491 00:18:01,259 --> 00:18:03,900 Lo habremos decidido 492 00:18:03,900 --> 00:18:05,640 después de toda esa sesión 493 00:18:05,640 --> 00:18:08,200 de todas esas reuniones 494 00:18:08,200 --> 00:18:10,180 con los que van a hacer la aplicación 495 00:18:10,180 --> 00:18:11,580 y los que la han pedido, lo habremos decidido 496 00:18:11,580 --> 00:18:13,680 y como aquí ya se ha decidido 497 00:18:13,680 --> 00:18:15,759 pues nos dicen aquí 498 00:18:15,759 --> 00:18:17,360 una serie de métodos para hacer 499 00:18:17,360 --> 00:18:21,380 vale, a ver 500 00:18:21,380 --> 00:18:24,700 tiene dos 501 00:18:24,700 --> 00:18:28,240 tiene busca disponibilidad 502 00:18:28,240 --> 00:18:32,060 y tiene un método 503 00:18:32,060 --> 00:18:32,820 disponibilidad 504 00:18:32,819 --> 00:18:37,059 son las dos únicas 505 00:18:37,059 --> 00:18:38,939 funcionalidades que tiene el hotel 506 00:18:38,939 --> 00:18:41,139 disponibilidad 507 00:18:41,139 --> 00:18:43,460 recibe 508 00:18:43,460 --> 00:18:46,019 una cantidad de personas 509 00:18:46,019 --> 00:18:47,819 y un día 510 00:18:47,819 --> 00:18:50,740 y tiene que mirar 511 00:18:50,740 --> 00:18:52,220 si hay habitaciones libres 512 00:18:52,220 --> 00:18:54,460 para todas las personas 513 00:18:54,460 --> 00:18:56,480 es decir, si todas las personas tienen acomodo 514 00:18:56,480 --> 00:18:58,720 no hace falta que sean la misma habitación 515 00:18:58,720 --> 00:19:00,119 no hace falta 516 00:19:00,119 --> 00:19:01,439 sino si tienen acomodo 517 00:19:01,440 --> 00:19:03,759 en dos habitaciones diferentes, en lo que sea 518 00:19:03,759 --> 00:19:05,259 ¿vale? tienen acomodo 519 00:19:05,259 --> 00:19:10,259 si no hay habitaciones, devuélvenlo 520 00:19:10,259 --> 00:19:12,039 y si no, devuelve 521 00:19:12,039 --> 00:19:13,779 una reserva, a ver, con una reserva 522 00:19:13,779 --> 00:19:14,740 ¿qué quiere decir esto? 523 00:19:19,759 --> 00:19:21,620 bueno, devuelve una reserva o varias 524 00:19:21,620 --> 00:19:23,900 con lo que yo he dicho, si yo interpreto 525 00:19:23,900 --> 00:19:25,299 de ahí, si yo interpreto 526 00:19:25,299 --> 00:19:27,340 que hay acomodo para todas 527 00:19:27,340 --> 00:19:29,840 devolvería varias, podría devolver 528 00:19:29,839 --> 00:19:31,799 varias, ¿verdad? No sé cómo lo habéis 529 00:19:31,799 --> 00:19:33,819 hecho Miguel y Diego 530 00:19:33,819 --> 00:19:35,879 este método. Habéis mirado si hay solo 531 00:19:35,879 --> 00:19:37,480 una habitación para todas, ¿no? 532 00:19:38,279 --> 00:19:39,740 No. Ah, vale, vale. 533 00:19:41,740 --> 00:19:43,759 Ah, vale, sí, perdón, perdón, perdón, perdón, sí que 534 00:19:43,759 --> 00:19:45,439 si hablar y pensar 535 00:19:45,439 --> 00:19:47,919 me cuesta. O hablo 536 00:19:47,919 --> 00:19:48,899 o pienso. Vale. 537 00:19:51,379 --> 00:19:51,959 Vale, pues 538 00:19:51,959 --> 00:19:53,199 entonces, buscar disponibilidad. 539 00:19:53,599 --> 00:19:54,839 La reserva te dice 540 00:19:54,839 --> 00:19:57,799 si hay 541 00:19:57,799 --> 00:19:59,679 habitaciones libres y te devuelve 542 00:19:59,680 --> 00:20:01,360 perdón, efectivamente una sola reserva 543 00:20:01,360 --> 00:20:03,240 con las habitaciones que sean, las que hayan hecho falta 544 00:20:03,240 --> 00:20:04,560 1, 2, 3, las que sean 545 00:20:04,560 --> 00:20:07,140 ¿vale? venga, pues entonces 546 00:20:07,140 --> 00:20:08,140 busca disponibilidad 547 00:20:08,140 --> 00:20:11,100 la cabecera del método será 548 00:20:11,100 --> 00:20:15,120 la cabecera del método 549 00:20:15,120 --> 00:20:15,860 será 550 00:20:15,860 --> 00:20:21,400 te devuelve una reserva, que puede ser nulo o no 551 00:20:21,400 --> 00:20:23,120 claro, te devuelve una reserva 552 00:20:23,120 --> 00:20:23,740 eso está claro 553 00:20:23,740 --> 00:20:27,200 busca disponibilidad 554 00:20:29,680 --> 00:20:31,840 Y que recibe un número de personas. 555 00:20:36,840 --> 00:20:38,440 Y recibe una fecha. 556 00:20:51,480 --> 00:20:52,000 Fecha. 557 00:20:54,000 --> 00:20:54,920 Recibe esto. 558 00:20:57,120 --> 00:20:57,640 Entonces. 559 00:20:59,680 --> 00:21:02,620 Tendrá que buscar 560 00:21:02,620 --> 00:21:05,160 A ver 561 00:21:05,160 --> 00:21:11,080 Cada habitación tiene 562 00:21:11,080 --> 00:21:14,400 En función de las habitaciones que sea 563 00:21:14,400 --> 00:21:15,940 Las camas que tiene y todo eso 564 00:21:15,940 --> 00:21:17,420 Entonces 565 00:21:17,420 --> 00:21:18,940 Y tendrá que buscar 566 00:21:18,940 --> 00:21:20,600 La reserva tiene 567 00:21:20,600 --> 00:21:23,900 El número de habitación 568 00:21:23,900 --> 00:21:25,100 Vale 569 00:21:25,100 --> 00:21:27,840 Pues tendrá que buscar 570 00:21:27,840 --> 00:21:28,920 Si hay 571 00:21:28,920 --> 00:21:31,140 en esa fecha 572 00:21:31,140 --> 00:21:33,259 habitaciones dentro de la RAI 573 00:21:33,259 --> 00:21:35,220 de habitaciones que no tengan 574 00:21:35,220 --> 00:21:37,380 reserva en las que quepan todas esas 575 00:21:37,380 --> 00:21:38,660 personas, ¿vale? 576 00:21:39,200 --> 00:21:40,800 Es decir, no es un método 577 00:21:40,800 --> 00:21:43,460 fácil de plantear. 578 00:21:44,880 --> 00:21:47,240 Es un método retorcido, ¿vale? 579 00:21:47,700 --> 00:21:48,940 Vale, pues entonces 580 00:21:48,940 --> 00:21:51,620 ahora 581 00:21:51,620 --> 00:21:54,380 más o menos yo creo que 582 00:21:54,380 --> 00:21:57,460 la estructura de la aplicación, las clases que tiene 583 00:21:57,460 --> 00:21:59,640 y lo que tiene que hacer este método está claro. 584 00:22:00,299 --> 00:22:02,400 Ahora lo que hay que pensar es cómo plantearía uno ese método. 585 00:22:02,840 --> 00:22:03,799 ¿Cómo lo plantearía uno? 586 00:22:04,140 --> 00:22:05,200 Con los datos que tiene. 587 00:22:05,840 --> 00:22:08,660 El hotel, para buscar la disponibilidad, 588 00:22:09,360 --> 00:22:10,100 tiene estos datos. 589 00:22:10,299 --> 00:22:10,539 Tiene 590 00:22:10,539 --> 00:22:16,960 el número de personas a alojar, 591 00:22:17,500 --> 00:22:19,279 el número de personas y la fecha. 592 00:22:20,180 --> 00:22:21,559 Y tiene que navegar 593 00:22:21,559 --> 00:22:23,940 por sus habitaciones 594 00:22:23,940 --> 00:22:26,799 en las que sabe cuántas personas caben 595 00:22:26,799 --> 00:22:28,799 en cada habitación, dependiendo de si 596 00:22:28,799 --> 00:22:30,659 las que saben en cada habitación 597 00:22:30,659 --> 00:22:32,180 y por las reservas 598 00:22:32,180 --> 00:22:35,200 tiene que navegar por ambas cosas, por habitaciones y reservas 599 00:22:35,200 --> 00:22:36,759 ¿vale? 600 00:22:36,779 --> 00:22:38,079 y si encuentra acomodo 601 00:22:38,079 --> 00:22:40,700 creará una reserva nueva 602 00:22:40,700 --> 00:22:42,200 creará una reserva nueva 603 00:22:42,200 --> 00:22:44,779 ¿vale? creará una reserva nueva 604 00:22:44,779 --> 00:22:47,079 con las 605 00:22:47,079 --> 00:22:48,919 habitaciones 606 00:22:48,919 --> 00:22:49,980 y personas ¿vale? 607 00:22:51,240 --> 00:22:52,779 un momentito que me entra a mi la duda de si 608 00:22:52,779 --> 00:22:54,619 el número de habitaciones es de las habitaciones de la reserva 609 00:22:54,619 --> 00:22:56,359 o el número de habitación de la reserva 610 00:22:56,360 --> 00:22:58,320 un momentito, a ver 611 00:22:58,320 --> 00:23:00,980 claro, es que me ha entrado 612 00:23:00,980 --> 00:23:03,040 mi duda al verlo, a ver 613 00:23:03,040 --> 00:23:08,400 reserva 614 00:23:08,400 --> 00:23:10,620 no, habitaciones reservadas 615 00:23:10,620 --> 00:23:12,760 claro, ah, habitaciones 616 00:23:12,760 --> 00:23:15,020 reservadas, vale, vale, vale, habitaciones 617 00:23:15,020 --> 00:23:16,540 reservadas 618 00:23:16,540 --> 00:23:18,780 vale, habitaciones reservadas 619 00:23:18,780 --> 00:23:19,800 entonces es 620 00:23:19,800 --> 00:23:22,880 varias, pero el número de 621 00:23:22,880 --> 00:23:24,980 cada una, ¿cómo guardaríamos esta propiedad? 622 00:23:26,360 --> 00:23:31,560 Sí, o sea, yo la he interpretado 623 00:23:31,560 --> 00:23:33,240 así muy alegremente según lo iba leyendo 624 00:23:33,240 --> 00:23:35,180 ¿Número de habitaciones? Pues tres habitaciones reservadas 625 00:23:35,180 --> 00:23:39,180 Pero no 626 00:23:39,180 --> 00:23:41,420 Habitaciones reservadas entiendo que se refiere 627 00:23:41,420 --> 00:23:43,600 a la habitación 628 00:23:43,600 --> 00:23:45,040 1, la 7 y la 12 629 00:23:45,040 --> 00:23:48,820 Luego habitaciones reservadas 630 00:23:48,820 --> 00:23:51,220 ¿En qué tipo de datos 631 00:23:51,220 --> 00:23:52,400 lo tendríamos que guardar? 632 00:23:54,400 --> 00:23:55,700 En una raíz de enteros 633 00:23:55,700 --> 00:23:56,260 ¿Verdad? 634 00:23:56,360 --> 00:23:58,940 Habitaciones reservadas son la 7, la 12 y la 15 635 00:23:58,940 --> 00:24:00,640 La 4, la 9 o la 10 636 00:24:00,640 --> 00:24:02,340 La 3 y la 8 637 00:24:02,340 --> 00:24:03,860 La 9 y la 5 638 00:24:03,860 --> 00:24:04,700 ¿Verdad? 639 00:24:07,260 --> 00:24:08,860 Es decir, una raíz de números 640 00:24:08,860 --> 00:24:10,880 Una raíz de números de habitaciones 641 00:24:10,880 --> 00:24:11,220 ¿Verdad? 642 00:24:12,180 --> 00:24:13,700 ¿Sí? ¿Vale? 643 00:24:17,940 --> 00:24:19,340 Habitaciones reservadas 644 00:24:19,340 --> 00:24:22,540 Fecha y número de personas 645 00:24:22,540 --> 00:24:23,700 Vale, pues entonces 646 00:24:23,700 --> 00:24:29,740 esto 647 00:24:29,740 --> 00:24:36,380 tendría que ser 648 00:24:36,380 --> 00:24:40,220 así 649 00:24:40,220 --> 00:24:46,039 y ahora esto simplemente cambia 650 00:24:46,039 --> 00:24:49,900 el constructor 651 00:24:49,900 --> 00:24:51,840 le tengo que pasar esto 652 00:24:51,839 --> 00:24:55,779 y 653 00:24:55,779 --> 00:24:58,319 aquí le tengo que pasar 654 00:24:58,319 --> 00:24:59,299 esto 655 00:24:59,299 --> 00:25:02,319 vale 656 00:25:02,319 --> 00:25:04,980 y aquí le tengo que pasar esto 657 00:25:04,980 --> 00:25:11,139 comprueba disponibilidad 658 00:25:11,139 --> 00:25:12,939 devuelve 659 00:25:12,939 --> 00:25:14,319 vale, vale, vale 660 00:25:14,319 --> 00:25:16,699 entonces 661 00:25:16,699 --> 00:25:18,959 devuelve la habitación de reserva 662 00:25:18,959 --> 00:25:20,879 entonces aquí lo que devolvería sería 663 00:25:20,880 --> 00:25:25,240 numHabitaciones.length 664 00:25:25,240 --> 00:25:26,300 ¿verdad? 665 00:25:27,300 --> 00:25:28,540 Sí, también está cambiado. 666 00:25:29,580 --> 00:25:30,180 Dime. 667 00:25:30,340 --> 00:25:30,880 Es el método. 668 00:25:32,560 --> 00:25:33,120 ¿Cuál? 669 00:25:34,060 --> 00:25:35,120 O sea, este, 670 00:25:35,740 --> 00:25:36,440 claro, 671 00:25:36,920 --> 00:25:38,480 este lo tengo que cambiar 672 00:25:38,480 --> 00:25:39,740 a que me devuelva 673 00:25:39,740 --> 00:25:41,680 el tamaño de ese array. 674 00:25:46,240 --> 00:25:47,780 Bueno, le puedes poner un disk delante 675 00:25:47,780 --> 00:25:49,280 si quieres, pero vamos, opcional. 676 00:25:50,540 --> 00:25:50,700 ¿Vale? 677 00:25:50,880 --> 00:25:54,420 Vale, creo que la clase reserva 678 00:25:54,420 --> 00:25:54,940 Creo 679 00:25:54,940 --> 00:25:57,620 Que ya estaría toda modificada 680 00:25:57,620 --> 00:25:59,020 Número de habitaciones 681 00:25:59,020 --> 00:26:05,200 Está todo cambiado a RAI 682 00:26:05,200 --> 00:26:07,100 Comprueba disponibilidad 683 00:26:07,100 --> 00:26:09,180 Te devuelven uno de habitaciones reservadas 684 00:26:09,180 --> 00:26:09,820 O nulo 685 00:26:09,820 --> 00:26:10,660 Vale 686 00:26:10,660 --> 00:26:14,840 Y esto a habitación no le afecta 687 00:26:14,840 --> 00:26:17,620 A hotel tampoco le afecta 688 00:26:17,620 --> 00:26:18,940 ¿Verdad? 689 00:26:19,520 --> 00:26:20,860 Y ahora ya se nos queda este método 690 00:26:20,860 --> 00:26:21,760 Vale, esta sería 691 00:26:21,760 --> 00:26:24,540 Esto que hemos hecho hasta ahora 692 00:26:24,540 --> 00:26:27,260 Pues podría ser un examen normal y corriente 693 00:26:27,260 --> 00:26:29,160 Este podría ser el proceso 694 00:26:29,160 --> 00:26:30,960 Vuestro de un examen, vais haciendo las clases 695 00:26:30,960 --> 00:26:32,940 Vais viendo, uno puede tener 696 00:26:32,940 --> 00:26:35,060 Un main al lado para ir probando 697 00:26:35,060 --> 00:26:37,040 A ver si algún método que ha hecho, por ejemplo 698 00:26:37,040 --> 00:26:38,840 Aquí podría probar 699 00:26:38,840 --> 00:26:40,880 Uy, si es que no lo sabe ya 700 00:26:40,880 --> 00:26:45,100 ¿Qué método era el que comparábamos fechas? 701 00:26:45,360 --> 00:26:46,780 Estaba en reserva, ¿verdad? 702 00:26:46,940 --> 00:26:49,000 Sí, aquí, uy, realmente 703 00:26:49,000 --> 00:26:51,579 ¿Y cuál será el que yo le doy dos locales y no son iguales? 704 00:26:51,619 --> 00:26:53,099 Pues a lo mejor lo podría comprobar en un main 705 00:26:53,099 --> 00:26:54,599 Pero vamos, ya os digo yo que sí 706 00:26:54,599 --> 00:26:57,859 De hecho se puede meter uno en el equals de local date 707 00:26:57,859 --> 00:26:59,420 ¿Veis? 708 00:26:59,440 --> 00:27:01,339 Este es el equals de local date 709 00:27:01,339 --> 00:27:03,200 Que sobrescribe el equals de object 710 00:27:03,200 --> 00:27:04,180 Que lo sobrescribe 711 00:27:04,180 --> 00:27:06,000 Y fijaos como está hecho 712 00:27:06,000 --> 00:27:08,619 Pues está llamando al compare to 713 00:27:08,619 --> 00:27:11,740 Que el compare to si os metéis 714 00:27:11,740 --> 00:27:14,299 Veréis que devuelve cero si las fechas son iguales 715 00:27:14,299 --> 00:27:15,920 Pues sí, tiene toda la pinta de que el equals 716 00:27:15,920 --> 00:27:18,039 Si dos objetos fecha 717 00:27:18,039 --> 00:27:20,720 en direcciones distintas 718 00:27:20,720 --> 00:27:22,759 contiene en el mismo día, mes y año 719 00:27:22,759 --> 00:27:24,680 contiene en el mismo, pues te va a dar 720 00:27:24,680 --> 00:27:26,639 el equals true, tiene toda la pinta de que sí 721 00:27:26,639 --> 00:27:28,879 pero uno podría comprobarlo en un main aparte 722 00:27:28,879 --> 00:27:30,240 si tiene dudas, lo que sea 723 00:27:30,240 --> 00:27:32,519 ¿vale? bueno, entonces 724 00:27:32,519 --> 00:27:34,420 y ahora ya llegaría a la parte más 725 00:27:34,420 --> 00:27:36,180 complicada, que yo no sé si 726 00:27:36,180 --> 00:27:38,759 pondríamos quizá algo tan complicado 727 00:27:38,759 --> 00:27:40,779 en un examen, depende de cómo salga, a lo mejor luego lo hacéis 728 00:27:40,779 --> 00:27:42,539 y os sale facilísimo, no lo sé 729 00:27:42,539 --> 00:27:44,460 ¿vale? pues venga 730 00:27:44,460 --> 00:27:46,839 poneos a ello, a ver cómo sale este método 731 00:27:46,840 --> 00:27:48,820 que aquí ya sí que hay que ponerse a pensar 732 00:27:48,820 --> 00:27:51,600 cómo recorro el array, cómo lo miro 733 00:27:51,600 --> 00:27:52,040 cómo 734 00:27:52,040 --> 00:27:54,140 venga 735 00:28:16,840 --> 00:28:26,100 Hay que intentar entenderlo yo también 736 00:28:26,100 --> 00:28:27,660 Porque no te creas que me ha quedado muy claro 737 00:28:27,660 --> 00:28:29,480 Lo que tiene que hacer 738 00:28:29,480 --> 00:28:35,300 ¿Tú lo has completado este método, Miguel? 739 00:28:37,400 --> 00:28:39,440 Es que no te creas que está muy claro lo que tiene que hacer 740 00:28:39,440 --> 00:28:39,880 Pero vamos 741 00:28:46,840 --> 00:28:47,840 Gracias. 742 00:29:16,840 --> 00:29:17,840 Gracias. 743 00:29:46,840 --> 00:29:55,880 asumimos claro que las personas 744 00:29:55,880 --> 00:29:58,620 da igual en qué habitaciones caigan 745 00:29:58,620 --> 00:30:00,260 o sea, si caen todas 746 00:30:00,260 --> 00:30:01,220 en una 747 00:30:01,220 --> 00:30:04,280 de tres personas, o sea, son tres 748 00:30:04,280 --> 00:30:05,580 y hay una de tres personas ahí 749 00:30:05,580 --> 00:30:07,620 vale, da igual 750 00:30:07,620 --> 00:30:10,560 no hay que buscarles 751 00:30:10,560 --> 00:30:12,500 no hay, no pueden elegir 752 00:30:12,500 --> 00:30:13,820 pues no sería muy complicado 753 00:30:13,820 --> 00:30:15,940 pero bueno, sí 754 00:30:15,940 --> 00:30:17,580 Yo creo que sí, que no es tan complicado 755 00:30:17,580 --> 00:30:24,220 Ahí la idea sería 756 00:30:24,220 --> 00:30:26,080 El hotel tiene una serie de reservas 757 00:30:26,080 --> 00:30:27,240 Tenéis una fecha 758 00:30:27,240 --> 00:30:30,620 Pues habría que ir reserva por reserva 759 00:30:30,620 --> 00:30:33,100 Viendo las habitaciones que quedan libres 760 00:30:33,100 --> 00:30:35,059 Y ver si las que quedan libres 761 00:30:35,059 --> 00:30:36,980 Suman 762 00:30:36,980 --> 00:30:40,019 Un total de plazas disponibles 763 00:30:40,019 --> 00:30:41,900 Para lo cual hay un método de plazas disponibles 764 00:30:41,900 --> 00:30:43,600 Superior o igual a las personas que hay 765 00:30:45,940 --> 00:30:49,460 Aquí está. 766 00:31:11,140 --> 00:31:11,539 ¿Vale? 767 00:31:11,640 --> 00:31:13,220 Es decir, ahí te dan una fecha. 768 00:31:13,220 --> 00:31:17,940 O sea, cada reserva tiene las habitaciones ocupadas 769 00:31:17,940 --> 00:31:19,259 o no tiene ninguna. 770 00:31:19,940 --> 00:31:22,620 Y luego, además, el hotel tiene una serie de habitaciones 771 00:31:22,620 --> 00:31:27,620 donde cada habitación tiene el número de plazas disponibles 772 00:31:27,620 --> 00:31:28,220 en su método. 773 00:31:29,059 --> 00:31:32,339 Entonces, la idea sería para este método 774 00:31:32,339 --> 00:31:34,200 de disponibilidad, que era una fecha, 775 00:31:35,759 --> 00:31:36,460 pues tú vas 776 00:31:36,460 --> 00:31:42,000 reserva por reserva, ¿vale? 777 00:31:43,220 --> 00:31:45,240 en cuanto te encuentres 778 00:31:45,240 --> 00:31:47,180 una que es null 779 00:31:47,180 --> 00:31:51,059 pues tú vas cogiendo habitaciones 780 00:31:51,059 --> 00:31:52,720 hasta completar las personas que hay 781 00:31:52,720 --> 00:31:54,519 en cada habitación tienes placas disponibles 782 00:31:54,519 --> 00:31:55,240 las vas cogiendo 783 00:31:55,240 --> 00:31:57,120 ¿vale? 784 00:31:58,140 --> 00:32:00,259 y si no es null pues las que quedan libres 785 00:32:00,259 --> 00:32:01,000 que no están ahí 786 00:32:01,000 --> 00:32:02,920 que no están en su array 787 00:32:02,920 --> 00:32:05,360 aquí 788 00:32:05,360 --> 00:32:07,140 entonces bueno hay que 789 00:32:07,140 --> 00:32:09,140 es un código que hay que organizar un poquito 790 00:32:09,140 --> 00:32:11,100 pero el punto de partida es ese 791 00:32:11,100 --> 00:32:15,060 es ir viendo las habitaciones que quedan libres 792 00:32:15,060 --> 00:32:16,940 en ese día 793 00:32:16,940 --> 00:32:19,540 entonces, si todas las reservas 794 00:32:19,540 --> 00:32:20,560 te han dado null 795 00:32:20,560 --> 00:32:23,020 pues las tienes todas libres, las vas cogiendo y ya está 796 00:32:23,020 --> 00:32:25,540 si hay una reserva que no te ha dado null 797 00:32:25,540 --> 00:32:26,900 pues tendrás que verlas 798 00:32:26,900 --> 00:32:28,400 que las habitaciones que quedan libres 799 00:32:28,400 --> 00:32:34,980 yo me haría 800 00:32:34,980 --> 00:32:37,600 una array habitaciones libres 801 00:32:37,600 --> 00:32:40,020 ¿vale? una array habitaciones libres 802 00:32:40,019 --> 00:32:44,720 que inicializaría con las totales 803 00:32:44,720 --> 00:32:45,599 de habitaciones del hotel 804 00:32:45,599 --> 00:32:48,059 y luego iría recorriendo las reservas 805 00:32:48,059 --> 00:32:51,000 e iría quitando las que tienen cada reserva 806 00:32:51,000 --> 00:32:52,460 para ese día, iría quitando 807 00:32:52,460 --> 00:32:54,460 luego con las que me quedan 808 00:32:54,460 --> 00:32:56,059 miraría si caben las personas que hay 809 00:32:56,059 --> 00:32:57,079 y ya está 810 00:32:57,079 --> 00:32:59,220 es como yo lo haría 811 00:32:59,220 --> 00:33:02,319 un array de habitaciones disponibles 812 00:33:02,319 --> 00:33:03,879 recorro las reservas 813 00:33:03,879 --> 00:33:06,900 y para las reservas de esa fecha 814 00:33:06,900 --> 00:33:08,000 para lo cual tenemos un método 815 00:33:08,000 --> 00:33:10,660 le voy quitando las ocupadas 816 00:33:10,660 --> 00:33:13,140 y con las que me queden 817 00:33:13,140 --> 00:33:15,099 al final del recorrido con las reservas 818 00:33:15,099 --> 00:33:16,700 miro a ver si caben las personas que tengo 819 00:33:16,700 --> 00:33:21,180 pero seguramente lo podéis plantear 820 00:33:21,180 --> 00:33:22,599 de otras maneras, de otras formas 821 00:33:22,599 --> 00:33:24,960 a ver como se os ocurre 822 00:33:24,960 --> 00:33:26,640 yo lo voy a hacer a mi manera 823 00:33:26,640 --> 00:33:28,720 a ver como sale 824 00:33:38,000 --> 00:33:39,000 Gracias. 825 00:34:08,000 --> 00:34:09,000 Gracias. 826 00:34:38,000 --> 00:34:39,000 Gracias. 827 00:35:08,000 --> 00:35:13,579 Claro, es un método que tendrás que usar 828 00:35:13,579 --> 00:35:15,500 Sí, a ver cómo lo organizáis vosotros 829 00:35:15,500 --> 00:35:17,360 La idea es, con lo que tenemos 830 00:35:17,360 --> 00:35:18,679 cómo construís el código 831 00:35:18,679 --> 00:35:21,500 para construir una reserva 832 00:35:21,500 --> 00:35:23,900 si es que se puede, que aloje a esas personas 833 00:35:38,000 --> 00:35:45,119 Si tenéis que hacer 834 00:35:45,119 --> 00:35:47,059 Tampoco os pongáis como locos 835 00:35:47,059 --> 00:35:48,380 Metiendo métodos 836 00:35:48,380 --> 00:35:49,860 Porque no se trata en las clases 837 00:35:49,860 --> 00:35:51,719 Si tenéis que hacer algún método auxiliar 838 00:35:51,719 --> 00:35:54,280 Que tenga sentido, que esté justificado 839 00:35:54,280 --> 00:35:54,800 Donde va 840 00:35:54,800 --> 00:35:56,679 No un método que de repente 841 00:35:56,679 --> 00:35:59,460 Aparece como un parche en una clase 842 00:35:59,460 --> 00:36:01,639 Que no, pues lo hacéis 843 00:36:01,639 --> 00:36:03,860 Para que no queden códigos largos 844 00:36:03,860 --> 00:36:06,360 Pero tratad de hacerlos con criterio 845 00:36:06,360 --> 00:36:07,360 Gracias. 846 00:36:36,360 --> 00:36:38,360 Seguimos. 847 00:37:06,360 --> 00:37:07,360 Gracias. 848 00:37:36,360 --> 00:37:37,360 Gracias. 849 00:38:06,360 --> 00:38:07,360 Gracias. 850 00:38:36,360 --> 00:38:37,360 Gracias. 851 00:39:06,360 --> 00:39:36,340 ¿Qué pasa? 852 00:39:36,360 --> 00:39:37,360 Gracias. 853 00:40:06,360 --> 00:40:36,340 ¿Qué pasa? 854 00:40:36,340 --> 00:40:39,980 Esto estaría en realidad mucho mejor descrito, es que el enunciado no lo dejaba muy claro. 855 00:40:40,660 --> 00:40:45,760 Si la reserva lo que tuviera aquí es el array directamente de las habitaciones. 856 00:40:46,579 --> 00:40:54,280 Ya que tenemos una clase habitación, no solamente el número, porque si tenemos el número luego tendríamos que irnos al array a buscar. 857 00:40:54,280 --> 00:41:05,160 Estaría mucho mejor descrito si la reserva tiene la fecha, el número de personas y el array de las habitaciones. 858 00:41:05,159 --> 00:41:07,159 ¿Verdad? Estaría mejor descrito 859 00:41:07,159 --> 00:41:08,879 Yo creo, ¿no os parece? 860 00:41:14,879 --> 00:41:16,139 Ya, pero el tipo de dato 861 00:41:16,139 --> 00:41:17,739 ¿El tipo de dato tienes puesto? 862 00:41:18,559 --> 00:41:20,719 ¿Un array de int o un array de habitación? 863 00:41:22,259 --> 00:41:23,599 Vale, pero que quizá 864 00:41:23,599 --> 00:41:25,119 Así solamente guardas 865 00:41:25,119 --> 00:41:26,739 El número de la habitación 866 00:41:26,739 --> 00:41:29,440 Pero si lo declaramos 867 00:41:29,440 --> 00:41:30,839 Como array de habitación 868 00:41:30,839 --> 00:41:32,619 Guardas todos los datos de la habitación 869 00:41:32,619 --> 00:41:33,759 Directamente en ese array 870 00:41:33,760 --> 00:41:39,820 Lo digo porque podéis también cambiar el diseño si queréis 871 00:41:39,820 --> 00:41:43,680 Como yo lo he empezado así, yo lo voy a dejar así 872 00:41:43,680 --> 00:41:45,880 Pero es por hacer comentarios al respecto 873 00:42:03,760 --> 00:42:04,760 Gracias. 874 00:42:33,760 --> 00:42:34,760 Gracias. 875 00:43:03,760 --> 00:43:04,760 Gracias. 876 00:43:33,760 --> 00:43:34,760 Gracias. 877 00:44:03,760 --> 00:44:33,740 Un momento. 878 00:44:33,760 --> 00:44:34,760 Gracias. 879 00:45:03,760 --> 00:45:04,760 Gracias. 880 00:45:33,760 --> 00:45:34,760 Gracias. 881 00:46:03,760 --> 00:46:33,740 3, 2, 1. 882 00:46:33,760 --> 00:46:39,800 Bueno, pues yo ya he hecho mi versión 883 00:46:39,800 --> 00:46:41,380 Uh, esto estaba sin parar