1 00:00:00,000 --> 00:00:04,879 bueno, pues en un caso real 2 00:00:04,879 --> 00:00:06,200 cuando uno quiere hacer las cosas bien 3 00:00:06,200 --> 00:00:08,679 insisto, uno se lee esto 4 00:00:08,679 --> 00:00:11,040 detenidamente para entender 5 00:00:11,040 --> 00:00:12,980 qué necesidad va a cubrir esto 6 00:00:12,980 --> 00:00:15,359 ¿por qué? ¿qué razón de ser tiene esta aplicación? 7 00:00:15,960 --> 00:00:16,059 ¿vale? 8 00:00:16,719 --> 00:00:18,000 a ver, en un examen 9 00:00:18,000 --> 00:00:21,000 en un examen no podemos 10 00:00:21,000 --> 00:00:23,059 pedir eso, no podemos pedir una aplicación 11 00:00:23,059 --> 00:00:24,800 así para que uno primero se la lea 12 00:00:24,800 --> 00:00:27,280 entienda, haga todo el esfuerzo de análisis y diseño 13 00:00:27,280 --> 00:00:28,980 porque no tenemos ese tiempo 14 00:00:28,980 --> 00:00:33,520 pero lo que sí que es importante 15 00:00:33,520 --> 00:00:35,380 es que quede claro 16 00:00:35,380 --> 00:00:37,120 que eso forma parte del trabajo 17 00:00:37,120 --> 00:00:39,219 del desarrollo y es la parte 18 00:00:39,219 --> 00:00:41,179 en la que hay que dedicar, en la que no hay que 19 00:00:41,179 --> 00:00:43,100 escatimar ningún esfuerzo si luego queremos 20 00:00:43,100 --> 00:00:45,500 que el resto del código nos quede 21 00:00:45,500 --> 00:00:47,539 manejable, entendible 22 00:00:47,539 --> 00:00:49,280 escalable, etcétera, lo que siempre decía 23 00:00:49,280 --> 00:00:50,859 no hay que escatimar esfuerzos 24 00:00:50,859 --> 00:00:53,260 en esa parte de analizar 25 00:00:53,260 --> 00:00:55,359 y diseñar, ahora mismo nosotros 26 00:00:55,359 --> 00:00:56,540 en este ejercicio 27 00:00:56,540 --> 00:00:58,700 lo vamos a pasar un poco por alto 28 00:00:58,700 --> 00:01:00,960 y vamos a ir haciendo 29 00:01:00,960 --> 00:01:01,440 corrida 30 00:01:01,440 --> 00:01:05,280 pero en un caso real 31 00:01:05,280 --> 00:01:06,840 repito, uno lo leería y diría 32 00:01:06,840 --> 00:01:09,000 ¿qué necesidad está cubriendo esto? pues en este caso 33 00:01:09,000 --> 00:01:10,960 entiendo, por lo que veo que esto está 34 00:01:10,960 --> 00:01:13,299 cubriendo la necesidad de en un hotel 35 00:01:13,299 --> 00:01:14,540 gestionar 36 00:01:14,540 --> 00:01:16,500 las reservas de habitaciones 37 00:01:16,500 --> 00:01:19,079 pues si están disponibles, si no están disponibles, etc. 38 00:01:20,240 --> 00:01:21,120 entonces va a cubrir 39 00:01:21,120 --> 00:01:22,700 esa necesidad, gestionar reservas 40 00:01:22,700 --> 00:01:24,700 para eso 41 00:01:24,700 --> 00:01:26,060 uno 42 00:01:26,060 --> 00:01:29,560 se va al cliente que le ha pedido la aplicación 43 00:01:29,560 --> 00:01:31,620 y habla con él una y mil veces 44 00:01:31,620 --> 00:01:33,240 hasta que entienda 45 00:01:33,240 --> 00:01:35,680 perfectamente que necesita 46 00:01:35,680 --> 00:01:36,719 ese cliente 47 00:01:36,719 --> 00:01:39,159 necesito poder hacer una reserva 48 00:01:39,159 --> 00:01:41,780 necesito poder cancelar reserva 49 00:01:41,780 --> 00:01:43,719 necesito poder dar de alta habitación 50 00:01:43,719 --> 00:01:45,579 necesito poder cambiar 51 00:01:45,579 --> 00:01:47,960 tipo de habitación, se pone de acuerdo con el cliente 52 00:01:47,960 --> 00:01:49,480 y una vez que ya 53 00:01:49,480 --> 00:01:51,040 ha entendido la necesidad 54 00:01:51,040 --> 00:01:53,000 y ha entendido exactamente 55 00:01:53,000 --> 00:01:54,939 todo lo que el cliente quiere 56 00:01:54,939 --> 00:01:57,179 poder hacer, hacer reservas 57 00:01:57,179 --> 00:01:59,280 cancerales, etcétera, ya se pone 58 00:01:59,280 --> 00:02:00,679 a hacer un diseño 59 00:02:00,679 --> 00:02:02,140 de las clases 60 00:02:02,140 --> 00:02:05,239 que de alguna manera representan 61 00:02:05,239 --> 00:02:07,000 eso, vale, pues 62 00:02:07,000 --> 00:02:09,400 si trabajo con habitaciones, una clase de habitación 63 00:02:09,400 --> 00:02:10,460 seguramente me haga falta 64 00:02:10,460 --> 00:02:13,319 si además voy a manejar reservas, pues una clase 65 00:02:13,319 --> 00:02:14,819 de reservas seguramente me haga falta 66 00:02:14,819 --> 00:02:16,819 si además voy a manejar 67 00:02:16,819 --> 00:02:19,439 clientes, pues una clase 68 00:02:19,439 --> 00:02:20,680 de clientes puede que me haga falta 69 00:02:20,680 --> 00:02:23,699 aquí no parece el caso, entonces uno ya hace su diseño 70 00:02:23,700 --> 00:02:26,040 luego en ese primer diseño 71 00:02:26,040 --> 00:02:27,900 empiezo a incorporar conceptos como 72 00:02:27,900 --> 00:02:29,640 la herencia, que si 73 00:02:29,640 --> 00:02:31,420 ve que lo representan 74 00:02:31,420 --> 00:02:34,100 son fundamentales y se van a facilitar en la vida 75 00:02:34,100 --> 00:02:36,280 tengo diferentes tipos de habitaciones 76 00:02:36,280 --> 00:02:37,820 ah vale, voy a incorporar 77 00:02:37,820 --> 00:02:39,840 en el diseño la herencia, tengo diferentes tipos 78 00:02:39,840 --> 00:02:42,020 de clientes, pues voy a irlo 79 00:02:42,020 --> 00:02:42,820 incorporando 80 00:02:42,820 --> 00:02:45,620 vale, entonces toda esa parte 81 00:02:45,620 --> 00:02:47,760 de diseño ya conduce a un primer 82 00:02:47,760 --> 00:02:50,220 mapa de clases, estas son mis clases 83 00:02:50,220 --> 00:02:51,880 voy a hacerlas 84 00:02:51,879 --> 00:02:54,099 y voy a empezar ya a escribir código en ellas. 85 00:02:55,019 --> 00:02:57,960 Bueno, pues aquí se supone que ya ese diseño ya está hecho 86 00:02:57,960 --> 00:02:59,639 y nos dicen que lo vayamos haciendo tal cual. 87 00:03:00,319 --> 00:03:03,620 Pues venga, nosotros ya directamente vamos a ir haciendo las clases 88 00:03:03,620 --> 00:03:06,740 y ya nos irán surgiendo cosas, dudas, historias, 89 00:03:06,840 --> 00:03:09,240 como os habrán surgido a los que lo habréis hecho 90 00:03:09,240 --> 00:03:11,280 y vamos resolviendo sobre la mancha. 91 00:03:12,419 --> 00:03:13,539 Y a ver qué código nos sale. 92 00:03:14,039 --> 00:03:14,519 Y ya está. 93 00:03:15,479 --> 00:03:17,340 Venga, pues entonces, aquí en este primer diseño 94 00:03:17,340 --> 00:03:18,640 tenemos habitación 95 00:03:18,640 --> 00:03:21,700 con, me nos dicen ya 96 00:03:21,700 --> 00:03:23,219 unas propiedades y métodos 97 00:03:23,219 --> 00:03:24,780 y luego habitación familiar 98 00:03:24,780 --> 00:03:26,020 que ya hereda de esta 99 00:03:26,020 --> 00:03:29,300 pues venga, vamos a hacer rápidamente habitación 100 00:03:29,300 --> 00:03:31,460 vale, imaginaos que estáis 101 00:03:31,460 --> 00:03:33,920 pues en una especie de 102 00:03:33,920 --> 00:03:36,020 examen de un par de orillas 103 00:03:36,020 --> 00:03:37,219 y hay que hacer esta aplicación 104 00:03:37,219 --> 00:03:38,659 hay que hacer esta aplicación 105 00:03:38,659 --> 00:03:41,620 pues venga, pues hala, nos hacemos 106 00:03:41,620 --> 00:03:43,439 nuestro proyecto de Java 107 00:03:43,439 --> 00:03:44,939 normalito y corrientito 108 00:03:44,939 --> 00:03:49,859 Bueno, a ver, yo no lo voy a hacer en un proyecto aparte 109 00:03:49,859 --> 00:03:55,859 Porque los estoy haciendo en el proyecto de ejercicios herencia 110 00:03:55,859 --> 00:03:58,359 Para subirlo luego a la aula virtual 111 00:03:58,359 --> 00:04:02,180 Entonces lo meto en un paquete que sea ejercicio hoteles 112 00:04:02,180 --> 00:04:05,060 Voy a meter todas las clases allá a lo bestia 113 00:04:14,939 --> 00:04:23,660 vale, pero insisto 114 00:04:23,660 --> 00:04:26,019 yo hago este empaquetado así pataterillo 115 00:04:26,019 --> 00:04:27,899 por comodidad para subir 116 00:04:27,899 --> 00:04:29,959 luego un único proyecto al aula virtual 117 00:04:29,959 --> 00:04:31,800 cada ejercicio en un paquete 118 00:04:31,800 --> 00:04:34,439 pero no es el procedimiento 119 00:04:34,439 --> 00:04:35,720 el procedimiento es que 120 00:04:35,720 --> 00:04:37,879 una aplicación vaya 121 00:04:37,879 --> 00:04:39,860 en su proyecto y yo 122 00:04:39,860 --> 00:04:42,120 decida una estructura de paquetes 123 00:04:42,120 --> 00:04:43,839 acorde con 124 00:04:43,840 --> 00:04:45,160 para lo que sirve cada clase 125 00:04:45,160 --> 00:04:47,740 clases de entidad o modelo 126 00:04:47,740 --> 00:04:50,020 clases de utilidades 127 00:04:50,020 --> 00:04:51,720 clases de lógica 128 00:04:51,720 --> 00:04:53,660 pues lo que vaya surgiendo, ahora mismo pues 129 00:04:53,660 --> 00:04:56,020 entidad y lógica, no tenemos más conceptos 130 00:04:56,020 --> 00:04:57,700 el año que viene pues sí que habrá más cosas 131 00:04:57,700 --> 00:04:59,580 clases de persistencia, clases de no sé qué 132 00:04:59,580 --> 00:05:01,600 vale, pues venga 133 00:05:01,600 --> 00:05:03,760 yo las voy a meter todas a lo bestia en ejercicio teles 134 00:05:03,760 --> 00:05:05,320 que es 135 00:05:05,320 --> 00:05:07,660 repito, una práctica muy fea 136 00:05:07,660 --> 00:05:08,160 pero bueno 137 00:05:08,160 --> 00:05:11,420 pues venga, clase habitación 138 00:05:11,420 --> 00:05:20,900 propiedades que va a tener 139 00:05:20,900 --> 00:05:22,360 porque se va a caracterizar la habitación 140 00:05:22,360 --> 00:05:24,879 esto vendría después de haber hablado con el tío y haberle dicho 141 00:05:24,879 --> 00:05:27,720 oye, que necesitas tú 142 00:05:27,720 --> 00:05:29,160 tener registrado 143 00:05:29,160 --> 00:05:30,840 de cada habitación 144 00:05:30,840 --> 00:05:32,139 que información te interesa 145 00:05:32,139 --> 00:05:33,420 y después de haber hablado con él 146 00:05:33,420 --> 00:05:35,060 habríamos hecho ya el diseño 147 00:05:35,060 --> 00:05:37,939 y ese diseño ya me viene aquí hecho 148 00:05:37,939 --> 00:05:40,900 de la habitación solamente te hace falta conocer 149 00:05:40,900 --> 00:05:43,040 cuál es su número, las camas que tiene 150 00:05:43,040 --> 00:05:44,920 y su precio, y ya está 151 00:05:44,920 --> 00:05:46,560 es la única información que te interesa 152 00:05:46,560 --> 00:05:48,000 pues hala, estupendo 153 00:05:48,000 --> 00:05:50,380 el número de habitación 154 00:05:50,380 --> 00:05:58,400 el número 155 00:05:58,400 --> 00:06:01,180 de camas 156 00:06:01,180 --> 00:06:01,960 y el precio 157 00:06:01,960 --> 00:06:07,580 venga, nos hacemos 158 00:06:07,580 --> 00:06:08,480 constructor 159 00:06:08,480 --> 00:06:21,000 Estoy metiendo esto, perdón, en el constructor 160 00:06:21,000 --> 00:06:24,439 Ahí, que ya tenía yo un constructor 161 00:06:24,439 --> 00:06:25,560 Ahí fuera, vale 162 00:06:25,560 --> 00:06:28,800 Constructor sin parámetros, ya lo tengo yo aquí hecho 163 00:06:28,800 --> 00:06:31,319 Constructor con 164 00:06:38,480 --> 00:06:49,879 y respondemos al patrón habitual de que los atributos o propiedades sean privadas 165 00:06:49,879 --> 00:06:53,280 y yo doy acceso a ellas mediante los get y set correspondientes. 166 00:07:01,600 --> 00:07:07,319 Vale, y bueno, aquí además sería interesante hacer un método toString porque no molesta, 167 00:07:07,400 --> 00:07:08,360 el toString no molesta. 168 00:07:08,480 --> 00:07:10,759 el twist no molesta y me sirve 169 00:07:10,759 --> 00:07:13,379 si yo le paso a un system.out.println 170 00:07:13,379 --> 00:07:14,800 porque voy a verificar algo 171 00:07:14,800 --> 00:07:15,660 voy a comprobar 172 00:07:15,660 --> 00:07:18,360 pues si se lo paso a un system.out.println 173 00:07:18,360 --> 00:07:20,040 me va a mostrar la habitación 174 00:07:20,040 --> 00:07:22,540 vale 175 00:07:22,540 --> 00:07:24,660 me la va a mostrar más bonita que si no le he 176 00:07:24,660 --> 00:07:25,720 sobrescrito el twist string 177 00:07:25,720 --> 00:07:29,000 que me gusta a mi esa salida 178 00:07:29,000 --> 00:07:29,860 para el twist string 179 00:07:29,860 --> 00:07:31,300 la dejo tal cual 180 00:07:31,300 --> 00:07:33,620 que no me gusta esa salida para el twist string 181 00:07:33,620 --> 00:07:35,020 pues la cambio 182 00:07:35,020 --> 00:07:36,580 vale 183 00:07:36,579 --> 00:07:39,159 A mí no me gusta que no lleve tilde 184 00:07:39,159 --> 00:07:39,979 Pero bueno 185 00:07:39,979 --> 00:07:43,319 El Eclipse no entiende de tildes 186 00:07:43,319 --> 00:07:49,300 Bueno, método sobrescrito de object 187 00:07:49,300 --> 00:07:51,120 ¿Vale? Todos recordamos que esto 188 00:07:51,120 --> 00:07:53,139 En realidad está heredando 189 00:07:53,139 --> 00:07:54,379 Aunque no lo veamos 190 00:07:54,379 --> 00:07:56,839 Esto está heredando de object, todos lo recordamos 191 00:07:56,839 --> 00:07:59,659 Pero 192 00:07:59,659 --> 00:08:03,860 Vale, get set to string 193 00:08:03,860 --> 00:08:06,299 Y ya está 194 00:08:06,300 --> 00:08:33,659 Y, a ver, ya directamente, como nos dan un diseño hecho al que nos ceñimos sin más, pues ya nos han dicho, oye, a ver, nos va a interesar un método que se llame plazas totales, que devuelva cuántas personas caben en la habitación, cuántas personas caben, porque es una funcionalidad que después de haber hablado con el cliente nos hemos dado cuenta que necesitamos, nos interesa. 195 00:08:33,659 --> 00:08:35,399 entonces como esa funcionalidad 196 00:08:35,399 --> 00:08:38,240 está relacionada exclusivamente con las habitaciones 197 00:08:38,240 --> 00:08:39,399 o sea saber 198 00:08:39,399 --> 00:08:41,639 cuánta gente cabe en una habitación 199 00:08:41,639 --> 00:08:43,120 está relacionada con la habitación 200 00:08:43,120 --> 00:08:45,259 pues tiene sentido que ese método vaya ahí 201 00:08:45,259 --> 00:08:47,339 porque es un método 202 00:08:47,339 --> 00:08:49,740 relacionado con un objeto habitación 203 00:08:49,740 --> 00:08:51,500 pues metemos ahí ese método 204 00:08:51,500 --> 00:08:53,219 pero vamos 205 00:08:53,219 --> 00:08:55,519 el diseño es que ya está, nosotros ahora estamos haciendo 206 00:08:55,519 --> 00:08:57,360 lo que ya nos han dicho, pero estoy justificando 207 00:08:57,360 --> 00:08:59,639 porque tendría sentido que estuviera ahí 208 00:08:59,639 --> 00:09:00,199 ese método 209 00:09:00,200 --> 00:09:02,379 Pues hala, venga 210 00:09:02,379 --> 00:09:04,320 ¿Cuántos caben en cada cama? 211 00:09:04,540 --> 00:09:05,759 Pues uno, pues hala 212 00:09:05,759 --> 00:09:10,200 Entonces, aquí tendríamos 213 00:09:10,200 --> 00:09:13,080 Las personas 214 00:09:13,080 --> 00:09:14,200 Son enteras 215 00:09:14,200 --> 00:09:16,360 No puede volver una persona y media 216 00:09:16,360 --> 00:09:17,460 Pues entonces 217 00:09:17,460 --> 00:09:29,080 Get personas totales 218 00:09:29,080 --> 00:09:31,220 lo de siempre 219 00:09:31,220 --> 00:09:33,480 aquí no necesitamos 220 00:09:33,480 --> 00:09:34,800 no necesitamos 221 00:09:34,800 --> 00:09:37,020 parámetros para trabajar 222 00:09:37,020 --> 00:09:38,259 porque la información 223 00:09:38,259 --> 00:09:41,240 si sería 224 00:09:41,240 --> 00:09:43,660 el de las, lo voy a llamar igual que dice aquí 225 00:09:43,660 --> 00:09:45,780 plazas, vale, vale, no es que no recordaba 226 00:09:45,780 --> 00:09:48,000 no, no, no, es que no recordaba 227 00:09:48,000 --> 00:09:49,480 como, venga, sí 228 00:09:49,480 --> 00:09:51,780 vale, entonces 229 00:09:51,780 --> 00:09:53,640 no tenemos más información, no necesitamos 230 00:09:53,640 --> 00:09:55,840 más información que las personas, que las camas 231 00:09:55,840 --> 00:09:56,879 no es la única que necesitamos 232 00:09:56,879 --> 00:09:58,860 Y si cabe solo una en cada cama 233 00:09:58,860 --> 00:10:01,259 Pues esto es una tontería 234 00:10:01,259 --> 00:10:01,779 Esto es 235 00:10:01,779 --> 00:10:03,820 Esto de aquí 236 00:10:03,820 --> 00:10:06,679 Ala 237 00:10:06,679 --> 00:10:08,879 Bueno 238 00:10:08,879 --> 00:10:11,519 El que hizo el diseño después de hablar con el cliente 239 00:10:11,519 --> 00:10:13,120 No parece haber identificado 240 00:10:13,120 --> 00:10:15,159 Ninguna funcionalidad más 241 00:10:15,159 --> 00:10:17,639 Exclusivamente relacionada con una habitación 242 00:10:17,639 --> 00:10:19,639 Porque si la hubiera identificado 243 00:10:19,639 --> 00:10:22,940 Limpiar habitación 244 00:10:22,940 --> 00:10:25,440 Vaciar habitación 245 00:10:25,440 --> 00:10:27,060 lo que fuera si lo hubiera identificado 246 00:10:27,060 --> 00:10:28,920 habría metido ahí ese método 247 00:10:28,920 --> 00:10:31,400 ¿vale? porque es una funcionalidad 248 00:10:31,400 --> 00:10:33,500 relacionada con un objeto habitación en concreto 249 00:10:33,500 --> 00:10:35,260 si no nos han pedido más 250 00:10:35,260 --> 00:10:37,000 métodos es porque dice el diseño 251 00:10:37,000 --> 00:10:39,200 no ha identificado más funcionalidades relacionadas 252 00:10:39,200 --> 00:10:41,440 con una habitación, salvo devolver las plazas 253 00:10:41,440 --> 00:10:41,900 y ya está 254 00:10:41,900 --> 00:10:45,360 pues hala, esta clase si lo estoy 255 00:10:45,360 --> 00:10:46,100 leyendo bien 256 00:10:46,100 --> 00:10:49,740 que como voy leyendo sobre la marcha 257 00:10:49,740 --> 00:10:50,380 si algo 258 00:10:50,380 --> 00:10:53,140 no leo mal o lo que sea me lo decís 259 00:10:53,140 --> 00:10:55,220 vale, esta clase 260 00:10:55,220 --> 00:10:56,860 ya estaría, ya tenemos la habitación 261 00:10:56,860 --> 00:10:58,139 y esta no nos ha complicado la vida 262 00:10:58,139 --> 00:11:00,740 ahora, resulta que hay un tipo 263 00:11:00,740 --> 00:11:02,580 de habitaciones, de nuevo 264 00:11:02,580 --> 00:11:04,420 el que estudió la situación 265 00:11:04,420 --> 00:11:06,660 vio que había 266 00:11:06,660 --> 00:11:09,139 un tipo de habitaciones concretas 267 00:11:09,139 --> 00:11:10,840 que se manejaban 268 00:11:10,840 --> 00:11:13,019 que se trabajaba con ellas de forma diferente 269 00:11:13,019 --> 00:11:14,920 parece ser, que se trabajaba con ellas 270 00:11:14,920 --> 00:11:16,779 de forma diferente, entonces tiene 271 00:11:16,779 --> 00:11:18,879 sentido plantearse que haya dos tipos 272 00:11:18,879 --> 00:11:21,360 de objetos, la habitación 273 00:11:21,360 --> 00:11:23,120 que no es especial, la habitación 274 00:11:23,120 --> 00:11:25,539 genérica y la habitación 275 00:11:25,539 --> 00:11:27,419 que es específica 276 00:11:27,419 --> 00:11:28,539 familiar 277 00:11:28,539 --> 00:11:31,539 y que tendrá unas características propias 278 00:11:31,539 --> 00:11:33,179 bueno, pues una vez que hemos 279 00:11:33,179 --> 00:11:34,500 identificado esas dos cosas 280 00:11:34,500 --> 00:11:37,200 decimos, ah vale, pero la habitación 281 00:11:37,200 --> 00:11:39,080 que tiene unas características propias específicas 282 00:11:39,080 --> 00:11:41,019 porque es familiar, también es 283 00:11:41,019 --> 00:11:43,000 habitación genérica, vale 284 00:11:43,000 --> 00:11:45,000 pues mi diseño va a ser más bonito seguramente 285 00:11:45,000 --> 00:11:47,080 y más eficiente si yo hago que una 286 00:11:47,080 --> 00:11:48,960 herede de la otra, vale 287 00:11:48,960 --> 00:11:51,019 todas estas cosas se van 288 00:11:51,019 --> 00:11:53,000 identificando en la fase de diseño de la que 289 00:11:53,000 --> 00:11:54,919 hablamos. Bueno, pues 290 00:11:54,919 --> 00:11:56,980 entonces, primero, hemos 291 00:11:56,980 --> 00:11:58,480 identificado que necesitamos 292 00:11:58,480 --> 00:12:01,100 una nueva clase para una habitación específica. 293 00:12:01,919 --> 00:12:02,440 Y segundo, 294 00:12:03,059 --> 00:12:05,500 hemos identificado que la habitación específica 295 00:12:05,500 --> 00:12:06,960 tiene todo lo de 296 00:12:06,960 --> 00:12:08,919 la genérica, tiene todo. Pues 297 00:12:08,919 --> 00:12:10,320 entonces, automáticamente, ahí 298 00:12:10,320 --> 00:12:13,100 hacemos la herencia, identificamos la herencia. 299 00:12:14,559 --> 00:12:14,879 Podríamos 300 00:12:14,879 --> 00:12:16,879 haber hecho otro diseño, que fuera 301 00:12:16,879 --> 00:12:18,899 habitación normal, habitación 302 00:12:18,899 --> 00:12:21,100 familiar, dos clases por libre, 303 00:12:21,100 --> 00:12:22,720 ninguna hereda de la otra. Bueno, 304 00:12:23,000 --> 00:12:28,179 Nos conduce a otra aplicación, pero hombre, a lo mejor este diseño, 305 00:12:28,399 --> 00:12:32,279 si la familiar también es genérica, pues incorporar la herencia 306 00:12:32,279 --> 00:12:34,500 seguramente nos facilite mucho las cosas. 307 00:12:36,299 --> 00:12:39,340 De hecho, nos va a facilitar tratar todas las habitaciones por igual, 308 00:12:39,500 --> 00:12:40,580 sean familiares o no. 309 00:12:41,460 --> 00:12:44,019 Pues venga, después de haber analizado y pensado esto, 310 00:12:44,019 --> 00:12:47,740 uno ha llegado a la conclusión de que necesita una clase habitación familiar. 311 00:12:47,740 --> 00:12:50,340 Pues se hace su clase nueva 312 00:12:50,340 --> 00:12:57,919 Habitación familiar 313 00:12:57,919 --> 00:13:01,019 Y esta habitación familiar 314 00:13:01,019 --> 00:13:03,159 Como tiene todo lo que tiene la genérica 315 00:13:03,159 --> 00:13:06,399 Número de habitación, las camas y el precio 316 00:13:06,399 --> 00:13:09,519 Pues la hacemos heredera de esta otra 317 00:13:09,519 --> 00:13:17,060 Y al hacerla heredera de esta otra 318 00:13:17,060 --> 00:13:22,920 pues tiene ya 319 00:13:22,920 --> 00:13:23,700 el número 320 00:13:23,700 --> 00:13:26,780 las camas 321 00:13:26,780 --> 00:13:29,100 el precio y los getter y los setter 322 00:13:29,100 --> 00:13:30,800 y los getter y los setter 323 00:13:30,800 --> 00:13:32,260 los constructores no 324 00:13:32,260 --> 00:13:33,320 porque 325 00:13:33,320 --> 00:13:35,840 los constructores no se heredan 326 00:13:35,840 --> 00:13:37,440 también tiene el tuestrin 327 00:13:37,440 --> 00:13:41,120 pero tiene el tuestrin de habitación 328 00:13:41,120 --> 00:13:41,760 tiene este 329 00:13:41,760 --> 00:13:45,100 que yo quiero hacerle un tuestrin específico 330 00:13:45,100 --> 00:13:46,180 para ella, pues se lo hago 331 00:13:46,180 --> 00:13:50,320 vale, pues la habitación familiar 332 00:13:50,320 --> 00:13:52,400 se supone que es una habitación concreta 333 00:13:52,400 --> 00:13:54,120 más específica y tendrá por tanto 334 00:13:54,120 --> 00:13:55,440 atributos añadidos 335 00:13:55,440 --> 00:13:58,320 efectivamente, añade uno 336 00:13:58,320 --> 00:14:00,260 que es número de camas dobles 337 00:14:00,260 --> 00:14:01,760 adicionales que tiene 338 00:14:01,760 --> 00:14:04,380 bueno, pues el número de camas 339 00:14:04,380 --> 00:14:06,640 dobles adicionales que tiene será otro atributo 340 00:14:06,640 --> 00:14:08,020 que 341 00:14:08,020 --> 00:14:10,240 en principio, salvo 342 00:14:10,240 --> 00:14:12,580 que haya algún diseño que me exija lo contrario 343 00:14:12,580 --> 00:14:14,260 por lo que sea, en principio 344 00:14:14,259 --> 00:14:16,240 privado como siempre 345 00:14:16,240 --> 00:14:21,159 y esto podría ser 346 00:14:21,159 --> 00:14:22,539 nunca más dobles 347 00:14:22,539 --> 00:14:24,480 entonces 348 00:14:24,480 --> 00:14:27,200 tendría sentido incorporar un get y un set 349 00:14:27,200 --> 00:14:31,559 para este 350 00:14:31,559 --> 00:14:35,319 y un constructor con parámetros 351 00:14:35,319 --> 00:14:36,679 también por comodidad 352 00:14:36,679 --> 00:14:37,819 siempre viene bien 353 00:14:37,819 --> 00:14:41,860 y si lo hago encima apoyándome en los 354 00:14:41,860 --> 00:14:44,519 En los constructores de arriba 355 00:14:44,519 --> 00:14:45,200 Mucho mejor 356 00:14:45,200 --> 00:14:50,340 ¿Vale? 357 00:14:55,800 --> 00:14:56,440 Vale 358 00:14:56,440 --> 00:14:59,019 Entonces, aquí habitación familiar 359 00:14:59,019 --> 00:15:00,840 Este con parámetros 360 00:15:00,840 --> 00:15:02,080 Le tendremos que pasar 361 00:15:02,080 --> 00:15:03,879 Todos los parámetros que tiene 362 00:15:03,879 --> 00:15:05,060 Que va a tener 363 00:15:05,060 --> 00:15:09,279 Nunca más 364 00:15:09,279 --> 00:15:13,980 num habitación 365 00:15:13,980 --> 00:15:17,339 a ver, lo parto aquí 366 00:15:17,339 --> 00:15:20,620 aunque quede feo para que se vea 367 00:15:20,620 --> 00:15:22,879 habitación familiar tendrá cuatro parámetros 368 00:15:22,879 --> 00:15:25,639 las camas, la habitación, el precio 369 00:15:25,639 --> 00:15:29,819 y las camas dobles 370 00:15:29,819 --> 00:15:33,939 entonces hay tres parámetros 371 00:15:33,939 --> 00:15:36,679 que los voy a inicializar llamando al constructor de arriba 372 00:15:36,680 --> 00:15:38,500 en el orden correcto 373 00:15:38,500 --> 00:15:39,880 habitación, camas y precio 374 00:15:39,880 --> 00:15:42,340 pues llamo al constructor de arriba 375 00:15:42,340 --> 00:15:43,440 y le paso 376 00:15:43,440 --> 00:15:46,000 habitación 377 00:15:46,000 --> 00:15:50,840 camas y precio 378 00:15:50,840 --> 00:15:52,800 con esta llamada 379 00:15:52,800 --> 00:15:55,180 super ya estoy inicializando 380 00:15:55,180 --> 00:15:57,240 las tres propiedades 381 00:15:57,240 --> 00:15:59,060 de habitación familiar que no estoy viendo 382 00:15:59,060 --> 00:15:59,720 físicamente 383 00:15:59,720 --> 00:16:02,000 están ahí pero no las estoy viendo 384 00:16:02,000 --> 00:16:03,400 están ahí pero no las veo 385 00:16:03,400 --> 00:16:06,320 pues llamando al constructor de arriba 386 00:16:06,320 --> 00:16:07,900 las estoy ya inicializando 387 00:16:07,900 --> 00:16:10,300 y cuando yo haga el get de habitación 388 00:16:10,300 --> 00:16:12,140 familiar, pues tendré 389 00:16:12,140 --> 00:16:14,460 sus valores, etcétera, y luego la adicional 390 00:16:14,460 --> 00:16:15,379 el parámetro 391 00:16:15,379 --> 00:16:18,160 el parámetro adicional, que es el que le paso 392 00:16:18,160 --> 00:16:19,140 aquí, el parámetro adicional 393 00:16:19,140 --> 00:16:22,120 ese sí que lo especifico directamente 394 00:16:22,120 --> 00:16:24,379 porque ese no está en habitación 395 00:16:24,379 --> 00:16:26,260 luego no se lo puedo pasar a super, lógicamente 396 00:16:26,260 --> 00:16:28,080 bueno, pues nada, ya tenemos 397 00:16:28,080 --> 00:16:30,100 el constructor con y sin parámetros 398 00:16:30,100 --> 00:16:32,040 de habitación familiar, el get y el set que 399 00:16:32,040 --> 00:16:34,340 falta, podemos rehacer 400 00:16:34,340 --> 00:16:36,080 el toString para que 401 00:16:36,080 --> 00:16:40,160 también me muestre las camas dobles de esta habitación, repito 402 00:16:40,160 --> 00:16:44,100 porque si no lo rehago, el tuestrín de habitación familiar 403 00:16:44,100 --> 00:16:47,200 es este, que solo me muestra los tres primeros 404 00:16:47,200 --> 00:16:51,500 entonces lo podemos rehacer, lo podemos sobrescribir 405 00:16:51,500 --> 00:16:55,340 vale, entonces 406 00:16:55,340 --> 00:17:03,560 lo podemos sobrescribir usando 407 00:17:03,560 --> 00:17:07,559 Aquí no sé si 408 00:17:07,559 --> 00:17:11,559 No, aquí me lo va a hacer 409 00:17:11,559 --> 00:17:12,880 Solamente con este 410 00:17:12,880 --> 00:17:15,220 Entonces, espera, no, lo voy a 411 00:17:15,220 --> 00:17:16,340 Copiar y pegar 412 00:17:16,340 --> 00:17:18,880 De arriba 413 00:17:18,880 --> 00:17:21,059 Por lo tanto, aquí 414 00:17:21,059 --> 00:17:26,360 Copiamos y pegamos este 415 00:17:26,360 --> 00:17:27,700 Para sobrescribirlo 416 00:17:27,700 --> 00:17:30,880 Y le vamos a añadir 417 00:17:30,880 --> 00:17:32,900 ¿Vale? 418 00:17:33,559 --> 00:17:39,399 le vamos a añadir 419 00:17:39,399 --> 00:17:40,299 el parámetro 420 00:17:40,299 --> 00:17:51,539 Sí, un segundito, déjame añadir 421 00:17:51,539 --> 00:17:52,819 el, o sea, te refieres aquí 422 00:17:52,819 --> 00:17:54,619 Sí 423 00:17:54,619 --> 00:18:01,659 No sé lo que me estás preguntando 424 00:18:01,659 --> 00:18:03,539 en la herramienta dices, cuando yo lo gero automáticamente 425 00:18:03,539 --> 00:18:05,000 Sí, aquí 426 00:18:05,000 --> 00:18:12,000 Aquí te refieres, ¿dónde? 427 00:18:16,099 --> 00:18:18,200 Cuando yo le doy a generar, ¿te refieres? 428 00:18:20,180 --> 00:18:20,500 Sí 429 00:18:20,500 --> 00:18:23,339 Sí 430 00:18:23,339 --> 00:18:28,700 Ah, bueno, ya, sí, sí 431 00:18:28,700 --> 00:18:29,639 Vale, vale 432 00:18:33,539 --> 00:18:37,379 Bueno, tú haz el que quieras 433 00:18:37,379 --> 00:18:38,460 Pero vamos, que yo quiero hacer 434 00:18:38,460 --> 00:18:40,559 Pero vamos a ver qué pone 435 00:18:40,559 --> 00:18:41,559 Déjame ver qué pone 436 00:18:41,559 --> 00:18:44,559 Sí, pero voy a comentar este 437 00:18:44,559 --> 00:18:45,700 Para que el error no me 438 00:18:45,700 --> 00:18:47,460 Voy a ver qué pone 439 00:18:47,460 --> 00:18:49,799 Porque no lo he generado nunca así 440 00:18:49,799 --> 00:18:53,599 A ver 441 00:18:53,599 --> 00:18:56,839 Yo hago esto 442 00:18:56,839 --> 00:18:58,599 Y marco todos, te refieres 443 00:18:58,599 --> 00:19:01,559 Los que quiero 444 00:19:01,559 --> 00:19:02,680 Al que quiero implementar 445 00:19:02,680 --> 00:19:03,940 Que yo quiero implementar el toString, ¿no? 446 00:19:04,140 --> 00:19:05,640 Por ejemplo, vale 447 00:19:05,640 --> 00:19:09,140 Entonces, aquí en el toString 448 00:19:09,140 --> 00:19:10,680 Me marca 449 00:19:10,680 --> 00:19:12,840 Bueno, esto lo que está haciendo es llamar 450 00:19:12,840 --> 00:19:14,000 Al toString del de arriba 451 00:19:14,000 --> 00:19:15,440 O sea, es 452 00:19:15,440 --> 00:19:17,440 En realidad no lo está 453 00:19:17,440 --> 00:19:18,779 Pero 454 00:19:18,779 --> 00:19:22,240 No consigo nada haciendo esto 455 00:19:22,240 --> 00:19:24,700 Me refiero, o sea, luego sí que le puedo 456 00:19:24,700 --> 00:19:25,320 Añadir el otro 457 00:19:25,320 --> 00:19:27,420 Aquí tendría sentido que yo hiciera 458 00:19:27,420 --> 00:19:30,039 Super toString y ahora además 459 00:19:30,039 --> 00:19:31,480 Concatenarlo con la que falta 460 00:19:31,480 --> 00:19:34,460 vale, eso sí que lo podría hacer 461 00:19:34,460 --> 00:19:35,420 tendría su interés 462 00:19:35,420 --> 00:19:38,740 lo único es que bueno, que como el tu string de arriba 463 00:19:38,740 --> 00:19:40,799 me hace una cadena que cierra con corchetes 464 00:19:40,799 --> 00:19:42,599 pues quizá luego aquí quede feo 465 00:19:42,599 --> 00:19:43,559 el string que sale 466 00:19:43,559 --> 00:19:46,460 pero sí, esto te llama 467 00:19:46,460 --> 00:19:48,180 al de arriba y si al de arriba 468 00:19:48,180 --> 00:19:50,480 le quieres añadir algo, pues le añades 469 00:19:50,480 --> 00:19:51,660 vale 470 00:19:51,660 --> 00:19:56,380 siempre que se use 471 00:19:56,380 --> 00:19:58,539 el término super, lo que pasa es que 472 00:19:58,539 --> 00:20:00,559 para no liar mucho con el dis, el constructor 473 00:20:00,559 --> 00:20:02,679 no lo he mencionado, pero siempre que se use 474 00:20:02,679 --> 00:20:04,039 su persona en una clase 475 00:20:04,039 --> 00:20:07,019 se refiere a la clase de la que heredas 476 00:20:07,019 --> 00:20:08,000 ¿vale? 477 00:20:09,019 --> 00:20:10,700 entonces puedes usarlo para llamar 478 00:20:10,700 --> 00:20:12,299 tanto a propiedades como métodos 479 00:20:12,299 --> 00:20:14,480 siempre y cuando sean visibles, porque tengan el 480 00:20:14,480 --> 00:20:16,559 no tengan el privado, claro, siempre y cuando sean visibles 481 00:20:16,559 --> 00:20:18,679 lo puedes usar, yo podría poner aquí 482 00:20:18,679 --> 00:20:21,000 super punto, nunca más 483 00:20:21,000 --> 00:20:22,019 por ejemplo 484 00:20:22,019 --> 00:20:24,319 si es que nunca más no fuera privado 485 00:20:24,319 --> 00:20:26,299 ¿vale? podría, si es que 486 00:20:26,299 --> 00:20:28,220 lo necesito, pero para eso tengo el 487 00:20:28,220 --> 00:20:29,980 nunca más también 488 00:20:29,980 --> 00:20:31,900 en fin, conclusión 489 00:20:31,900 --> 00:20:33,579 que el super en una clase 490 00:20:33,579 --> 00:20:35,880 el super tiene dos usos 491 00:20:35,880 --> 00:20:37,980 uno, como llamada al método constructor 492 00:20:37,980 --> 00:20:40,180 y si es como llamada al método constructor 493 00:20:40,180 --> 00:20:41,799 le tienes que llamar pasándole parámetros 494 00:20:41,799 --> 00:20:44,460 claro, que es este uso que hemos hecho aquí 495 00:20:44,460 --> 00:20:45,660 este 496 00:20:45,660 --> 00:20:48,059 este es un super, que es un super 497 00:20:48,059 --> 00:20:49,519 que es llamada al constructor 498 00:20:49,519 --> 00:20:52,120 y luego hay otra acepción de super 499 00:20:52,120 --> 00:20:52,720 que es 500 00:20:52,720 --> 00:20:55,599 objeto del que heredas 501 00:20:55,599 --> 00:20:57,980 ya no es llamada a método 502 00:20:57,980 --> 00:21:00,160 sino objeto, por eso no tiene parámetros 503 00:21:00,160 --> 00:21:01,460 por eso no tiene paréntesis 504 00:21:01,460 --> 00:21:03,779 ¿vale? ¿dónde lo tengo? 505 00:21:05,319 --> 00:21:06,700 ¿ves? este no tiene paréntesis 506 00:21:06,700 --> 00:21:08,099 porque este no es llamado 507 00:21:08,099 --> 00:21:09,900 a un método, esto es 508 00:21:09,900 --> 00:21:12,120 me refiero a la clase 509 00:21:12,120 --> 00:21:13,660 de la querido, me refiero 510 00:21:13,660 --> 00:21:15,660 y entonces, si te refieres a la clase 511 00:21:15,660 --> 00:21:17,680 al objeto de la clase de la queridas 512 00:21:17,680 --> 00:21:20,000 pues un objeto te hace desapropiadas y métodos 513 00:21:20,000 --> 00:21:21,940 con punto, y podrás 514 00:21:21,940 --> 00:21:23,759 a todos los que te los permitan 515 00:21:23,759 --> 00:21:25,400 porque el modificador no se ha privado 516 00:21:25,400 --> 00:21:28,259 Entonces siempre puedes recurrir a esto 517 00:21:28,259 --> 00:21:29,920 Si lo necesitas para algo 518 00:21:29,920 --> 00:21:30,580 ¿Vale? 519 00:21:31,040 --> 00:21:32,980 Pero bueno 520 00:21:32,980 --> 00:21:35,060 Tiene cierto peligro 521 00:21:35,060 --> 00:21:36,620 En algunos contextos 522 00:21:36,620 --> 00:21:40,480 Pero puedes estar llamando a cosas que no quieres llamar 523 00:21:40,480 --> 00:21:44,080 Entonces yo voy a hacer 524 00:21:44,080 --> 00:21:44,940 El tuestrin a mano 525 00:21:44,940 --> 00:21:51,740 ¿Vale? 526 00:21:51,780 --> 00:21:53,120 Entonces yo le añadiría aquí 527 00:21:53,120 --> 00:21:55,420 Nunca más precio 528 00:21:55,420 --> 00:21:58,140 Y le falta por añadir 529 00:21:58,140 --> 00:22:03,520 Nunca más dobles 530 00:22:03,520 --> 00:22:09,580 Igual 531 00:22:09,580 --> 00:22:11,400 Y le concatenaría 532 00:22:11,400 --> 00:22:13,080 Con num 533 00:22:13,080 --> 00:22:16,740 K más dobles 534 00:22:16,740 --> 00:22:22,560 Vale, y ahora tendría que concatenar aquí 535 00:22:22,559 --> 00:22:23,740 con esto 536 00:22:23,740 --> 00:22:25,339 esto 537 00:22:25,339 --> 00:22:28,599 vale, entonces ya está 538 00:22:28,599 --> 00:22:30,899 es hacerse un toString, simplemente que el toString 539 00:22:30,899 --> 00:22:32,220 es solamente, ya sabéis para qué 540 00:22:32,220 --> 00:22:35,139 pues si hay alguien que necesita alguna vez 541 00:22:35,139 --> 00:22:37,059 pasar a versión 542 00:22:37,059 --> 00:22:39,179 texto, pasar a versión texto 543 00:22:39,179 --> 00:22:40,720 para consola, para lo que sea 544 00:22:40,720 --> 00:22:43,000 un objeto, pues el método toString 545 00:22:43,000 --> 00:22:44,819 te lo pasa a versión texto, pero que 546 00:22:44,819 --> 00:22:47,139 su utilidad es solo para que tú lo veas 547 00:22:47,139 --> 00:22:48,940 en la consola, es la única utilidad 548 00:22:48,940 --> 00:22:50,359 que tiene, pasarla a versión texto 549 00:22:50,360 --> 00:22:52,620 bueno, pues ya está, lo paso a versión texto 550 00:22:52,620 --> 00:22:54,720 pero esto ya no es un objeto, es una cadena 551 00:22:54,720 --> 00:22:56,560 de texto, es una cadena, esto ya no es un objeto 552 00:22:56,560 --> 00:22:58,860 ni es nada, es una cadena, pero bueno, tiene su utilidad 553 00:22:58,860 --> 00:23:00,540 tiene su utilidad un objeto 554 00:23:00,540 --> 00:23:02,760 pasarlo a cadena para visualizar 555 00:23:02,760 --> 00:23:04,660 un poquito lo que tiene, pero es la única utilidad 556 00:23:04,660 --> 00:23:06,580 que tiene, ¿vale? aquí como era 557 00:23:06,580 --> 00:23:08,340 de prever, esto se ha puesto rojo, ¿no? 558 00:23:09,640 --> 00:23:09,960 ¿no? 559 00:23:10,320 --> 00:23:12,500 ¿por qué se ha puesto rojo? Claudia, por ejemplo 560 00:23:12,500 --> 00:23:14,160 la pregunta de siempre 561 00:23:14,160 --> 00:23:16,300 ¿por qué no lo estás llamando? 562 00:23:17,480 --> 00:23:18,500 claro, porque es privado 563 00:23:18,500 --> 00:23:20,319 Entonces o le pongo protected 564 00:23:20,319 --> 00:23:22,220 O lo llamo con el get 565 00:23:22,220 --> 00:23:23,539 ¿Vale? 566 00:23:46,019 --> 00:23:46,460 Vale 567 00:23:46,460 --> 00:23:47,420 Vale, ya tengo el toString 568 00:23:47,420 --> 00:23:48,440 Bueno, pues nada 569 00:23:48,440 --> 00:23:50,900 un toString, si me gusta bien 570 00:23:50,900 --> 00:23:52,519 y si no lo cambio, hago lo que quiera 571 00:23:52,519 --> 00:23:54,860 venga, pues 572 00:23:54,860 --> 00:23:56,740 ala, esta habitación específica 573 00:23:56,740 --> 00:23:58,620 añade este atributo y claro 574 00:23:58,620 --> 00:24:00,059 al añadir un nuevo atributo 575 00:24:00,059 --> 00:24:02,320 ese atributo es relacionado con nuevas camas 576 00:24:02,320 --> 00:24:04,660 como esta clase 577 00:24:04,660 --> 00:24:06,740 hereda todo 578 00:24:06,740 --> 00:24:08,620 lo de la clase anterior, también 579 00:24:08,620 --> 00:24:10,120 le he dado getPlazasTotales 580 00:24:10,120 --> 00:24:12,440 pero claro, getPlazasTotales 581 00:24:12,440 --> 00:24:14,519 esta versión no vale 582 00:24:14,519 --> 00:24:16,580 abajo, no vale, obviamente 583 00:24:16,579 --> 00:24:19,759 porque precisamente lo que ha añadido esta habitación 584 00:24:19,759 --> 00:24:21,519 es un número de camas adicionales 585 00:24:21,519 --> 00:24:23,659 entonces esta versión 586 00:24:23,659 --> 00:24:24,859 heredada no vale 587 00:24:24,859 --> 00:24:27,339 entonces siempre hay que revisar cuando se hereda de algo 588 00:24:27,339 --> 00:24:29,119 si lo que heredamos nos vale o no 589 00:24:29,119 --> 00:24:31,240 o hay que cambiarlo, en este caso 590 00:24:31,240 --> 00:24:33,659 el toString no nos gustaba y lo hemos sobrescrito 591 00:24:33,659 --> 00:24:35,500 y el getPlazasTotales 592 00:24:35,500 --> 00:24:37,919 tampoco nos gusta, hay que sobrescribirlo 593 00:24:37,919 --> 00:24:39,619 pues sobrescribir un método 594 00:24:39,619 --> 00:24:41,659 implicará hacer otro con exactamente 595 00:24:41,659 --> 00:24:43,599 la misma cabecera, la misma 596 00:24:43,599 --> 00:24:45,019 enterita 597 00:24:45,019 --> 00:24:46,720 Porque si no tiene la misma 598 00:24:46,720 --> 00:24:47,960 No estoy sobre escribiendo 599 00:24:47,960 --> 00:24:49,180 Estoy haciendo uno nuevo 600 00:24:49,180 --> 00:24:51,639 Y eso puede generar confusión 601 00:24:51,639 --> 00:24:53,400 Pues venga 602 00:24:53,400 --> 00:24:56,879 Sobre escribimos este método 603 00:24:56,879 --> 00:24:58,359 Porque ahora ya 604 00:24:58,359 --> 00:24:59,920 Las plazas totales serán 605 00:24:59,920 --> 00:25:02,460 Las camas 606 00:25:02,460 --> 00:25:03,799 Normales 607 00:25:03,799 --> 00:25:04,859 Más 608 00:25:04,859 --> 00:25:08,200 Las camas 609 00:25:08,200 --> 00:25:09,019 Dobles 610 00:25:09,019 --> 00:25:11,639 Por dos 611 00:25:11,639 --> 00:25:13,559 ¿Verdad? 612 00:25:13,559 --> 00:25:15,159 Y de nuevo esto aquí 613 00:25:15,159 --> 00:25:16,779 Que lo pongo muy alegremente 614 00:25:16,779 --> 00:25:21,460 Pues así 615 00:25:21,460 --> 00:25:23,259 ¿Vale? 616 00:25:24,519 --> 00:25:27,220 Como el get se puede hacer un poco coñacete 617 00:25:27,220 --> 00:25:28,519 Tirar del get todo el rato 618 00:25:28,519 --> 00:25:30,299 Por eso en realidad es por lo que 619 00:25:30,299 --> 00:25:31,759 Existe el protect 620 00:25:31,759 --> 00:25:34,079 Por lo que se inventó, entre comillas 621 00:25:34,079 --> 00:25:36,419 Pues para no tener que estar tirando del get 622 00:25:36,419 --> 00:25:37,799 Todo el rato desde las herederas 623 00:25:37,799 --> 00:25:39,679 Es decir, mira, anda, ponte protect 624 00:25:39,679 --> 00:25:42,799 Y las estás dejando igual de ocultas 625 00:25:42,799 --> 00:25:44,419 Solamente 626 00:25:44,419 --> 00:25:46,559 Las estás abriendo a las herederas 627 00:25:46,559 --> 00:25:49,980 Entonces, hombre, tampoco es que estés abriendo tanto 628 00:25:49,980 --> 00:25:51,460 Pero, jolín 629 00:25:51,460 --> 00:25:53,039 Nos ahorramos tanto get, tanto get 630 00:25:53,039 --> 00:25:54,200 ¿Verdad? 631 00:25:55,819 --> 00:25:57,539 Aquí que hemos tenido tanto get 632 00:25:57,539 --> 00:25:58,159 Que era un rollo 633 00:25:58,159 --> 00:26:01,399 Pues, hombre, podríamos haber cambiado esto de aquí 634 00:26:01,399 --> 00:26:03,879 Ya que nunca hemos usado el protector 635 00:26:03,879 --> 00:26:05,359 Vamos a cambiarlo y lo usamos 636 00:26:05,359 --> 00:26:06,720 Y así no le perdemos miedo 637 00:26:06,720 --> 00:26:09,740 Podríamos haber puesto esto así 638 00:26:09,740 --> 00:26:13,620 y ahora 639 00:26:13,620 --> 00:26:16,180 el get y el set tienes que ofrecerlo igualmente 640 00:26:16,180 --> 00:26:17,940 porque las clases 641 00:26:17,940 --> 00:26:19,620 que no sean herederas de habitación 642 00:26:19,620 --> 00:26:21,900 no van a poder acceder a esto, no van a poder 643 00:26:21,900 --> 00:26:23,819 o sea, el get y el set tienes que ofrecerlo igualmente 644 00:26:23,819 --> 00:26:26,120 pero al menos las que hereden de ti 645 00:26:26,120 --> 00:26:28,079 como habitación familiar 646 00:26:28,079 --> 00:26:30,059 pues hombre, ya no tienen que estar 647 00:26:30,059 --> 00:26:31,880 con el get ahí todo el rato arrastrándolo 648 00:26:31,880 --> 00:26:33,160 que queda más feo que nada 649 00:26:33,160 --> 00:26:40,560 Así más bonito y más claro 650 00:26:40,560 --> 00:26:41,200 Que tanto 651 00:26:41,200 --> 00:26:50,380 ¿Vale? Esa es la utilidad 652 00:26:50,380 --> 00:26:51,259 Del protected 653 00:26:51,259 --> 00:26:53,460 No hay que tenerle miedo 654 00:26:53,460 --> 00:27:03,860 con el protected ya me olvido 655 00:27:03,860 --> 00:27:06,340 de los get en las clases herederas 656 00:27:06,340 --> 00:27:07,920 solo en las herederas 657 00:27:07,920 --> 00:27:11,700 vale, la habitación familiar necesita 658 00:27:11,700 --> 00:27:13,980 algo más, aparte de las camas dobles 659 00:27:13,980 --> 00:27:17,740 biberones, cambiadores 660 00:27:17,740 --> 00:27:19,440 pues no, camas dobles, ya está 661 00:27:19,440 --> 00:27:21,740 ya hemos acabado con la habitación familiar 662 00:27:21,740 --> 00:27:24,400 vale, sobre habitaciones parece ser 663 00:27:24,400 --> 00:27:26,180 que no necesita más este 664 00:27:26,180 --> 00:27:27,819 gestionador de aplicaciones 665 00:27:27,819 --> 00:27:30,460 pero resulta que lo que sí que tiene que hacer 666 00:27:30,460 --> 00:27:31,880 es gestionar reservas 667 00:27:31,880 --> 00:27:34,299 parece ser, pues venga 668 00:27:34,299 --> 00:27:36,240 la reserva 669 00:27:36,240 --> 00:27:38,620 ¿por qué se caracteriza? uno con su papel y su boli 670 00:27:38,620 --> 00:27:40,180 y con los otros al lado 671 00:27:40,180 --> 00:27:42,339 va pensando, a ver, realmente que me interesa 672 00:27:42,339 --> 00:27:43,500 a mí de las reservas 673 00:27:43,500 --> 00:27:45,940 y trata de llegar a 674 00:27:45,940 --> 00:27:47,400 conclusiones 675 00:27:47,400 --> 00:27:50,240 realistas, no meter propiedades 676 00:27:50,240 --> 00:27:51,960 que luego no interesan o no quedarse 677 00:27:51,960 --> 00:27:53,640 sin una propiedad que falte, no, no 678 00:27:53,640 --> 00:27:55,259 hacer un buen análisis, fundamental 679 00:27:55,259 --> 00:27:57,640 bueno, pues el que hizo el análisis 680 00:27:57,640 --> 00:27:59,819 llegó a la conclusión de que con la fecha 681 00:27:59,819 --> 00:28:01,779 el número de habitaciones 682 00:28:01,779 --> 00:28:03,359 reservadas y el número de personas 683 00:28:03,359 --> 00:28:05,660 tenía suficiente 684 00:28:05,660 --> 00:28:08,019 para dar completamente por caracterizada 685 00:28:08,019 --> 00:28:09,299 una reserva 686 00:28:09,299 --> 00:28:10,759 con eso, ya está 687 00:28:10,759 --> 00:28:13,019 fecha, habitación y número de personas 688 00:28:13,019 --> 00:28:15,420 ni nombre, ni teléfono, ni nada 689 00:28:15,420 --> 00:28:17,819 con eso ya lo tiene todo, caracterizan 690 00:28:17,819 --> 00:28:19,500 la reserva, venga, pues ahora 691 00:28:19,500 --> 00:28:20,440 Vamos a hacernos reserva 692 00:28:20,440 --> 00:28:23,799 Reserva ni hereda de habitación ni heredada de nada 693 00:28:23,799 --> 00:28:26,079 Porque reserva es un concepto que no tiene nada que ver 694 00:28:26,079 --> 00:28:26,799 Con habitación 695 00:28:26,799 --> 00:28:28,960 Luego reserva es una clase que va por libre 696 00:28:28,960 --> 00:28:33,599 Pues a la reserva 697 00:28:33,599 --> 00:28:42,220 Hemos dicho que la reserva 698 00:28:42,220 --> 00:28:44,140 Se caracteriza por 699 00:28:44,140 --> 00:28:45,619 La fecha 700 00:28:45,619 --> 00:28:47,579 ¿Vale? 701 00:28:49,500 --> 00:28:52,380 de nuevo 702 00:28:52,380 --> 00:28:53,299 la fecha 703 00:28:53,299 --> 00:28:57,940 este sería el objeto estándar 704 00:28:57,940 --> 00:28:58,759 ¿vale? 705 00:29:00,559 --> 00:29:01,299 que es fecha 706 00:29:01,299 --> 00:29:04,140 luego está este también 707 00:29:04,140 --> 00:29:06,880 ¿vale? 708 00:29:07,880 --> 00:29:10,559 que tenéis especificado 709 00:29:10,559 --> 00:29:12,259 un poquito como funciona 710 00:29:12,259 --> 00:29:14,140 aquí ¿vale? 711 00:29:14,160 --> 00:29:15,299 un poquito como funciona 712 00:29:15,299 --> 00:29:18,339 lo que pasa es que 713 00:29:18,340 --> 00:29:19,940 local date no se nutre 714 00:29:19,940 --> 00:29:22,060 de un string como date 715 00:29:22,060 --> 00:29:24,620 date se nutre de un string, entonces construirlo 716 00:29:24,620 --> 00:29:26,000 desde el teclado 717 00:29:26,000 --> 00:29:28,460 es más fácil, este no se nutre 718 00:29:28,460 --> 00:29:29,840 de un string, se nutre de 719 00:29:29,840 --> 00:29:32,440 unos números por separado 720 00:29:32,440 --> 00:29:34,400 que representan el año 721 00:29:34,400 --> 00:29:35,820 el mes y el día 722 00:29:35,820 --> 00:29:38,360 son clases distintas, clases distintas 723 00:29:38,360 --> 00:29:40,340 para trabajar con fechas, vale 724 00:29:40,340 --> 00:29:42,140 entonces bueno, como esta está especificada aquí 725 00:29:42,140 --> 00:29:44,260 y date ya la hemos usado en el otro ejercicio 726 00:29:44,260 --> 00:29:46,120 pues vamos a usar local date 727 00:29:46,120 --> 00:29:47,080 vale 728 00:29:47,079 --> 00:29:49,699 local date es una clase 729 00:29:49,699 --> 00:29:51,720 local date es una clase más 730 00:29:51,720 --> 00:29:53,220 de todas las que hay 731 00:29:53,220 --> 00:29:55,720 para guardar objetos fecha 732 00:29:55,720 --> 00:29:57,720 pues esto es la fecha de la reserva 733 00:29:58,839 --> 00:29:59,599 a la fecha 734 00:29:59,599 --> 00:30:01,460 reserva local date, ya está 735 00:30:01,460 --> 00:30:05,619 entonces local date 736 00:30:05,619 --> 00:30:08,199 habrá que importarlo del paquete correspondiente 737 00:30:08,199 --> 00:30:09,439 ¿vale? que está en 738 00:30:09,439 --> 00:30:10,019 java time 739 00:30:10,019 --> 00:30:12,359 es 740 00:30:12,359 --> 00:30:15,759 cuando el tema es que cuando en java útil 741 00:30:15,759 --> 00:30:17,559 es el paquete de toda la vida 742 00:30:17,559 --> 00:30:19,799 hay un montón de cosas en Java útil 743 00:30:19,799 --> 00:30:21,720 un montón de cosas, está el escáner 744 00:30:21,720 --> 00:30:24,039 está el date, hay una especie de 745 00:30:24,039 --> 00:30:25,940 caja en la que hay un montón de utilidades 746 00:30:25,940 --> 00:30:28,099 luego claro, según van evolucionando 747 00:30:28,099 --> 00:30:29,160 los JDKs 748 00:30:29,160 --> 00:30:31,779 desde el 2, que fue el primer 749 00:30:31,779 --> 00:30:33,720 Java ya que se implantó, el Java 2 750 00:30:33,720 --> 00:30:36,079 original, hasta el 21 751 00:30:36,079 --> 00:30:37,180 que hay ahora 752 00:30:37,180 --> 00:30:39,839 pues en la caja empezaron a 753 00:30:39,839 --> 00:30:40,480 entrar cosas 754 00:30:40,480 --> 00:30:43,720 y a salir, por ejemplo, uuuh cuánta morralla 755 00:30:43,720 --> 00:30:45,259 fuera, fuera, entrar y a salir 756 00:30:45,259 --> 00:30:47,819 entonces cuando ya, pues se vio que es que 757 00:30:47,819 --> 00:30:49,720 lo de las fechas, se podían incorporar 758 00:30:49,720 --> 00:30:51,740 muchas funcionalidades, muchas historias 759 00:30:51,740 --> 00:30:53,680 pues ya se dijo, mira 760 00:30:53,680 --> 00:30:56,000 vamos a hacer un paquete específico para fechas y horas 761 00:30:56,000 --> 00:30:57,160 que se llame JavaTime 762 00:30:57,160 --> 00:31:00,119 y hacemos un específico para fechas y horas y se meten en JavaTime 763 00:31:00,119 --> 00:31:01,759 ¿vale? pero JavaUtil sigue siendo 764 00:31:01,759 --> 00:31:03,339 una caja en la que hay utilidades de todo tipo 765 00:31:03,339 --> 00:31:05,440 de fechas, de lecturas, de todo 766 00:31:05,440 --> 00:31:07,839 ¿vale? y no se pueden sacar las cosas 767 00:31:07,839 --> 00:31:09,859 alegremente, porque todos los proyectos que había 768 00:31:09,859 --> 00:31:10,859 con Date, ¿qué haces? 769 00:31:11,660 --> 00:31:13,759 ¿fuerzas todos a recompilarlos? pues a lo mejor 770 00:31:13,759 --> 00:31:14,680 no es tan fácil 771 00:31:14,680 --> 00:31:19,340 Entonces si uno hace un proyecto nuevo 772 00:31:19,340 --> 00:31:21,860 Pues sería deseable que usara Java Time 773 00:31:21,860 --> 00:31:23,660 Pero se va a encontrar 774 00:31:23,660 --> 00:31:25,560 Muchísimos con Date 775 00:31:25,560 --> 00:31:27,779 Porque es la de toda la vida que está en Java útil 776 00:31:27,779 --> 00:31:29,080 Esa caja genérica 777 00:31:29,080 --> 00:31:30,140 Que tiene de todo 778 00:31:30,140 --> 00:31:33,539 Venga, pues ala, fecha reserva 779 00:31:33,539 --> 00:31:34,600 ¿Qué más cosas había ahí? 780 00:31:37,779 --> 00:31:38,900 Número de personas 781 00:31:38,900 --> 00:31:40,660 Y no sé qué otras historias 782 00:31:40,660 --> 00:31:46,759 Ya está 783 00:31:46,759 --> 00:31:49,400 Ah, bueno, el número de habitaciones y número de personas 784 00:31:49,400 --> 00:31:50,220 Venga 785 00:32:00,259 --> 00:32:00,740 Vale 786 00:32:00,740 --> 00:32:01,920 Vale, en los nombres de variables 787 00:32:01,920 --> 00:32:03,400 No seáis rácanos 788 00:32:03,400 --> 00:32:05,560 Vale, yo ya soy a veces demasiado 789 00:32:05,560 --> 00:32:05,980 ¿Perdón? 790 00:32:09,100 --> 00:32:09,940 No te he oído 791 00:32:09,940 --> 00:32:15,840 Ah, ya, ya 792 00:32:15,840 --> 00:32:17,420 Sí, o sea, justo estaba diciendo 793 00:32:17,420 --> 00:32:18,880 Que yo estoy siendo un poco rácana 794 00:32:18,880 --> 00:32:20,320 Incluso para no 795 00:32:20,320 --> 00:32:23,600 Hombre, para no estar aquí escribiendo dos horas 796 00:32:23,600 --> 00:32:25,820 Porque ahora mismo lo que estamos haciendo es sobre la marcha 797 00:32:25,820 --> 00:32:27,360 Un poco todo conjuntamente 798 00:32:27,360 --> 00:32:30,140 Pero en general no sois rácanos 799 00:32:30,140 --> 00:32:32,140 Si creéis que un nombre de 80 caracteres 800 00:32:32,779 --> 00:32:34,200 Es más claro 801 00:32:34,200 --> 00:32:36,220 Que uno de 40, pues elegís el de 80 802 00:32:36,220 --> 00:32:38,279 No pasa nada 803 00:32:38,279 --> 00:32:40,660 Pero si luego con autocompletar se va a escribir todo solo 804 00:32:40,660 --> 00:32:42,740 Pero bueno, lo vamos a ver 805 00:32:42,740 --> 00:32:44,139 Yo lo voy a dejar así y ya está 806 00:32:44,139 --> 00:32:49,240 Venga, constructores con parámetros 807 00:32:49,240 --> 00:32:56,279 Y Getty Set 808 00:32:56,279 --> 00:33:04,980 ¡Hala! Ya está 809 00:33:04,980 --> 00:33:10,339 y los constructores 810 00:33:10,339 --> 00:33:13,960 venga, paso de tu stream 811 00:33:13,960 --> 00:33:16,019 porque es que estamos aquí dos horas con cada cosa 812 00:33:16,019 --> 00:33:17,860 y como ya sabéis de que va el rollo 813 00:33:17,860 --> 00:33:19,799 venga, pues ala 814 00:33:19,799 --> 00:33:20,940 la reserva se acabó 815 00:33:20,940 --> 00:33:22,920 constructores, pues ya los tenemos 816 00:33:22,920 --> 00:33:26,220 vale, que funcionalidades 817 00:33:26,220 --> 00:33:27,799 de esta aplicación después de haber 818 00:33:27,799 --> 00:33:28,900 hecho el análisis 819 00:33:28,900 --> 00:33:31,519 tienen que ver exclusivamente 820 00:33:31,519 --> 00:33:33,480 con la reserva o tienen que ver directamente 821 00:33:33,480 --> 00:33:34,640 con la reserva 822 00:33:34,640 --> 00:33:39,840 pues me dice aquí comprobar disponibilidad. 823 00:33:40,780 --> 00:33:41,080 A ver. 824 00:33:44,940 --> 00:33:46,560 Si entendemos este método. 825 00:33:47,540 --> 00:33:48,360 Recibe una fecha. 826 00:33:52,940 --> 00:33:54,340 Habitaciones reservadas. 827 00:33:54,500 --> 00:33:57,060 El método no me gusta a mí mucho como está elegido, 828 00:33:57,060 --> 00:33:58,540 pero comprobar disponibilidad. 829 00:33:58,539 --> 00:34:06,059 bueno, venga, como está así pedido 830 00:34:06,059 --> 00:34:06,839 vamos a dejarlo así 831 00:34:06,839 --> 00:34:09,699 la idea de comprobar disponibilidad es 832 00:34:09,699 --> 00:34:11,340 te da una fecha 833 00:34:11,340 --> 00:34:14,039 y te dice 834 00:34:14,039 --> 00:34:16,239 si la reserva 835 00:34:16,239 --> 00:34:18,279 que llama a comprobar disponibilidad 836 00:34:18,279 --> 00:34:20,320 es para esa fecha 837 00:34:20,320 --> 00:34:21,059 o no 838 00:34:21,059 --> 00:34:24,239 y en el caso de que 839 00:34:24,239 --> 00:34:26,079 sea para esa fecha, te dice las habitaciones 840 00:34:26,079 --> 00:34:26,920 reservadas 841 00:34:26,920 --> 00:34:29,740 ¿Vale? Bueno, un poquito raro 842 00:34:29,740 --> 00:34:30,659 Pero 843 00:34:30,659 --> 00:34:35,039 Se me hace a mí al menos un poquito raro 844 00:34:35,039 --> 00:34:35,639 Pero bueno 845 00:34:35,639 --> 00:34:38,340 Venga, pues método, comprobar disponibilidad 846 00:34:38,340 --> 00:34:47,340 Comprueba disponibilidad 847 00:34:47,340 --> 00:34:50,420 Recibe una fecha 848 00:34:50,420 --> 00:34:53,240 Y te dice, a ver, la idea es ver 849 00:34:53,240 --> 00:34:55,220 Si la reserva 850 00:34:55,220 --> 00:34:57,680 si tú tienes un montón de reservas 851 00:34:57,680 --> 00:34:59,320 y te dan una fecha 852 00:34:59,320 --> 00:35:01,900 pues la idea sería que tú vas iterando en las reservas 853 00:35:01,900 --> 00:35:03,800 a ver si encuentras una para esa fecha 854 00:35:03,800 --> 00:35:05,640 y si la encuentras, pues cuántas habitaciones 855 00:35:05,640 --> 00:35:07,540 tiene ocupadas, y si no encuentras ninguna 856 00:35:07,540 --> 00:35:09,700 porque todas son null, pues te dices, a ver, esta fecha 857 00:35:09,700 --> 00:35:11,360 efectivamente no tiene ninguna reserva 858 00:35:11,360 --> 00:35:13,720 es la idea de este método, en principio 859 00:35:13,720 --> 00:35:13,960 ¿no? 860 00:35:15,340 --> 00:35:17,540 que no es tanto usarlo para una sola 861 00:35:17,540 --> 00:35:19,440 reserva, sino te dan una fecha, tienes tu 862 00:35:19,440 --> 00:35:21,440 array de reservas y vas 863 00:35:21,440 --> 00:35:23,280 comprobando una por una, esta reserva 864 00:35:23,280 --> 00:35:25,200 está disponible, está, está, está 865 00:35:25,200 --> 00:35:26,920 es la idea 866 00:35:26,920 --> 00:35:29,540 pero claro, hay que pasar la fecha para comprobarlo 867 00:35:29,540 --> 00:35:30,500 hay que pasar la fecha 868 00:35:30,500 --> 00:35:33,260 bueno, pues si estamos trabajando con local date 869 00:35:33,260 --> 00:35:35,640 pues ala 870 00:35:35,640 --> 00:35:36,960 local date 871 00:35:36,960 --> 00:35:38,880 pasamos la fecha a comprobar 872 00:35:38,880 --> 00:35:40,980 y ahora 873 00:35:40,980 --> 00:35:43,540 lo que me dice el método 874 00:35:43,540 --> 00:35:45,440 es para esta reserva, tengo que comprobar 875 00:35:45,440 --> 00:35:47,380 si está hecha en esa fecha, ¿verdad? 876 00:35:50,200 --> 00:35:51,820 ¿vale? si está hecha en esa fecha 877 00:35:51,820 --> 00:35:59,320 si no lo es 878 00:35:59,320 --> 00:36:01,059 devuelve null 879 00:36:01,059 --> 00:36:02,940 y si lo es, devuelve habitaciones reservadas 880 00:36:02,940 --> 00:36:04,860 vale, pues aquí 881 00:36:04,860 --> 00:36:05,780 ¿qué es lo que haríais? 882 00:36:08,140 --> 00:36:09,180 ¿qué es lo que haríais? 883 00:36:09,519 --> 00:36:10,980 ¿qué es lo que has hecho aquí en este método? 884 00:36:11,080 --> 00:36:12,980 Diego, vamos, no estoy poniendo nada raro 885 00:36:12,980 --> 00:36:13,680 ¿qué es lo que haríais? 886 00:36:16,620 --> 00:36:17,380 comparar esto 887 00:36:17,380 --> 00:36:19,760 con la fecha de arriba 888 00:36:19,760 --> 00:36:20,539 ¿no? 889 00:36:20,539 --> 00:36:22,179 Compararlos 890 00:36:22,179 --> 00:36:23,960 ¿Cómo lo compararíais? 891 00:36:27,719 --> 00:36:29,199 Claro, son objetos 892 00:36:29,199 --> 00:36:31,300 Cuidado, no los compararíamos con doble igual 893 00:36:31,300 --> 00:36:32,860 Obviamente, son objetos 894 00:36:32,860 --> 00:36:36,099 Entonces, queremos creer 895 00:36:36,099 --> 00:36:37,800 Queremos creer 896 00:36:37,800 --> 00:36:39,980 Que la clase local date 897 00:36:39,980 --> 00:36:41,619 Tendrá un equals 898 00:36:41,619 --> 00:36:43,940 Correctamente sobre escrito de object 899 00:36:43,940 --> 00:36:45,480 De tal forma que 900 00:36:45,480 --> 00:36:47,539 Si yo le paso una fecha local date por aquí 901 00:36:47,539 --> 00:36:49,539 Y otra fecha local date por aquí 902 00:36:49,539 --> 00:36:51,880 objetos distintos, se los paso 903 00:36:51,880 --> 00:36:53,539 ese equals 904 00:36:53,539 --> 00:36:54,400 se me va a volver true 905 00:36:54,400 --> 00:36:57,960 si mes, día y año son iguales 906 00:36:57,960 --> 00:36:59,659 queremos creer que haya 907 00:36:59,659 --> 00:37:01,699 habrá un equals sobrescrito en 908 00:37:01,699 --> 00:37:02,579 local date, ¿no? 909 00:37:04,039 --> 00:37:05,000 es de esperar 910 00:37:05,000 --> 00:37:07,679 que el que hizo la clase local date 911 00:37:07,679 --> 00:37:09,840 y la metió en java time, el que hizo la clase 912 00:37:09,840 --> 00:37:10,800 pensó 913 00:37:10,800 --> 00:37:13,539 a ver, ¿cuál es el criterio de igualdad de fechas? 914 00:37:14,139 --> 00:37:15,500 pues el criterio de igualdad de fechas es que 915 00:37:15,500 --> 00:37:17,599 sean iguales meses, días, años, pues me voy a 916 00:37:17,599 --> 00:37:19,579 sobrescribir el equals de object 917 00:37:19,579 --> 00:37:21,719 porque local date le dará 918 00:37:21,719 --> 00:37:23,779 entre, al menos de object 919 00:37:23,779 --> 00:37:25,420 otra cosa es que hay algunas entre medias 920 00:37:25,420 --> 00:37:27,219 pero de object le dará, pues queremos 921 00:37:27,219 --> 00:37:29,279 creemos, queremos creer 922 00:37:29,279 --> 00:37:31,460 que hay un equals aquí, que yo le paso 923 00:37:31,460 --> 00:37:33,099 dos objetos fecha y me devuelva 924 00:37:33,099 --> 00:37:35,400 si son iguales comparándome el día y año 925 00:37:35,400 --> 00:37:37,460 ¿verdad? entonces aquí 926 00:37:37,460 --> 00:37:39,699 uno podría confiar en el sentido común 927 00:37:39,699 --> 00:37:41,420 y aplicarlo sin más y seguramente 928 00:37:41,420 --> 00:37:43,099 acertemos, o podría uno 929 00:37:43,099 --> 00:37:45,480 ante la más mínima duda, cuando 930 00:37:45,480 --> 00:37:47,440 se están usando clases que no ha hecho él 931 00:37:47,440 --> 00:37:48,940 que es el 90% del tiempo 932 00:37:48,940 --> 00:37:51,320 irse a la documentación y buscarlo 933 00:37:51,320 --> 00:37:53,760 ¿cómo comparo yo dos local date entre sí? 934 00:37:53,900 --> 00:37:55,539 y seguramente te diga, hombre, pues un equals 935 00:37:55,539 --> 00:37:56,420 que para eso está 936 00:37:56,420 --> 00:37:58,480 ¿vale? 937 00:38:00,240 --> 00:38:00,639 entonces 938 00:38:00,639 --> 00:38:03,840 aquí por ejemplo, en esto que está incorporado 939 00:38:03,840 --> 00:38:04,559 ¿vale? 940 00:38:14,639 --> 00:38:15,500 y lo miro 941 00:38:15,500 --> 00:38:17,119 porque si sale de... 942 00:38:17,119 --> 00:38:18,599 Pues, venga, entonces, ¿qué haríais aquí? 943 00:38:19,659 --> 00:38:27,659 Si la fecha que me han dado resulta que es igual a, ¿quién? 944 00:38:27,779 --> 00:38:31,259 A fecha de la reserva, entonces, ¿qué tenemos que hacer? 945 00:38:32,279 --> 00:38:32,679 Dime. 946 00:38:34,859 --> 00:38:36,739 No, no, no, a ver, es que ahora mismo no, no. 947 00:38:37,400 --> 00:38:41,199 Lo que he dicho antes del for es que se supone que el uso de esto será para eso. 948 00:38:41,199 --> 00:38:44,559 Pero este método, pero este método ahora mismo está en la clase reserva. 949 00:38:44,859 --> 00:38:47,039 Y este método aplica para una única reserva. 950 00:38:47,119 --> 00:38:49,480 O sea, este método le va a llamar una reserva, le va a llamar una. 951 00:38:49,920 --> 00:38:53,139 Otra cosa es que luego tú llames ese método para todas las de una 952 00:38:53,139 --> 00:38:55,000 RAID, pero eso ya en un main cuando se haga. 953 00:38:56,339 --> 00:38:58,839 Este método está en la clase reserva para que le llame una 954 00:38:58,839 --> 00:38:59,279 reserva. 955 00:38:59,960 --> 00:39:04,500 Y entonces comprobará la fecha parámetro con la fecha de esa 956 00:39:04,500 --> 00:39:05,099 reserva. 957 00:39:05,099 --> 00:39:10,039 Si son iguales, es que entonces tenemos esa fecha reservada 958 00:39:10,039 --> 00:39:14,179 para esta reserva y tendremos que devolver, hemos dicho, 959 00:39:14,259 --> 00:39:15,880 el número de habitaciones reservadas, ¿verdad? 960 00:39:17,119 --> 00:39:20,279 el número de habitaciones reservadas que lo tenemos aquí 961 00:39:20,279 --> 00:39:22,259 era eso el número de personas 962 00:39:22,259 --> 00:39:24,420 vamos a ver lo que nos devolvía el método 963 00:39:24,420 --> 00:39:33,599 devuelve las habitaciones 964 00:39:33,599 --> 00:39:34,940 no las personas 965 00:39:34,940 --> 00:39:36,880 pues entonces 966 00:39:36,880 --> 00:39:39,739 este método nos devuelve 967 00:39:39,739 --> 00:39:40,299 num 968 00:39:40,299 --> 00:39:43,539 no me acuerdo como se llama, si que lo hago con dis 969 00:39:43,539 --> 00:39:44,579 para que me salga 970 00:39:44,579 --> 00:39:46,460 num habitaciones 971 00:39:46,460 --> 00:39:50,280 ¿Vale? 972 00:39:50,460 --> 00:39:51,220 Y si no 973 00:39:51,220 --> 00:39:54,179 Y si no 974 00:39:54,179 --> 00:39:58,179 ¿Qué ha dicho que devuelve? 975 00:39:59,240 --> 00:40:01,059 El método este no lo he puesto a propósito 976 00:40:01,059 --> 00:40:02,940 Este no lo he puesto a propósito 977 00:40:02,940 --> 00:40:04,460 Porque es que ahora viene la amiga 978 00:40:04,460 --> 00:40:05,400 ¿Vale? 979 00:40:05,880 --> 00:40:07,980 Ha dicho, devuelve 980 00:40:07,980 --> 00:40:10,559 ¿Dónde estamos? 981 00:40:13,559 --> 00:40:14,079 Null 982 00:40:14,079 --> 00:40:15,960 Si la reserva no es de ese día 983 00:40:15,960 --> 00:40:18,059 o habitaciones reservadas 984 00:40:18,059 --> 00:40:19,320 que es un número entero 985 00:40:19,320 --> 00:40:22,119 si la fecha indicada es la que pertenece 986 00:40:22,119 --> 00:40:23,380 a esta reserva 987 00:40:23,380 --> 00:40:25,559 entonces, si no 988 00:40:25,559 --> 00:40:27,760 devuelve null 989 00:40:27,760 --> 00:40:30,099 y aquí lo dejo apuntado solo 990 00:40:30,099 --> 00:40:32,059 y paramos, y aquí ya es donde 991 00:40:32,059 --> 00:40:33,619 se nos cruzan un poco los cables, ¿no? 992 00:40:34,720 --> 00:40:35,820 o no se os han cruzado 993 00:40:35,820 --> 00:40:37,460 a lo que lo habéis hecho, a ti Diego 994 00:40:37,460 --> 00:40:39,960 aquí se nos han cruzado porque decimos, vamos a ver 995 00:40:39,960 --> 00:40:42,360 esta habitación devuelve 996 00:40:42,360 --> 00:40:44,059 perdón, este método devuelve 997 00:40:44,059 --> 00:40:46,239 un entero, si esto coincide. 998 00:40:46,759 --> 00:40:48,360 Estamos sobreentendiendo 999 00:40:48,360 --> 00:40:49,799 que el equals hace lo que yo creo. 1000 00:40:49,920 --> 00:40:51,779 Si luego vemos que no lo hace, pasando las pruebas, 1001 00:40:51,900 --> 00:40:53,940 el test y lo que sea, tendremos que buscar otro método 1002 00:40:53,940 --> 00:40:55,380 que compara las fechas. Tendremos que buscarlo. 1003 00:40:56,860 --> 00:40:57,259 ¿Vale? 1004 00:40:58,019 --> 00:40:59,659 Entonces, estamos 1005 00:40:59,659 --> 00:41:01,599 que si la fecha reservada 1006 00:41:01,599 --> 00:41:03,799 es igual que la que me pasan, 1007 00:41:03,880 --> 00:41:06,059 devuelvo un numerito entero. Entonces, esto nos haría 1008 00:41:06,059 --> 00:41:08,079 pensar que el valor 1009 00:41:08,079 --> 00:41:09,539 de retorno es int, ¿verdad? 1010 00:41:10,420 --> 00:41:12,000 Que lo que yo tengo que poner aquí es int. 1011 00:41:12,139 --> 00:41:13,019 Nos haría pensar esto. 1012 00:41:14,059 --> 00:41:17,599 pero me están diciendo 1013 00:41:17,599 --> 00:41:20,199 oye, si no coincide devuélveme un nul 1014 00:41:20,199 --> 00:41:22,139 aquí es donde se nos va la olla 1015 00:41:22,139 --> 00:41:24,420 y decimos, pero espérate, ¿cómo que nul? 1016 00:41:24,719 --> 00:41:27,440 una variable primitiva nunca puede tener nul 1017 00:41:27,440 --> 00:41:31,179 porque nul es un valor solo para tipos objetos 1018 00:41:31,179 --> 00:41:33,699 solo las variables objetos pueden ser nul 1019 00:41:33,699 --> 00:41:36,279 solo, las variables primitivas no 1020 00:41:36,279 --> 00:41:39,619 entonces, ¿cómo podemos resolver esto? 1021 00:41:40,659 --> 00:41:41,559 ¿cómo lo podemos resolver? 1022 00:41:41,559 --> 00:41:44,340 si yo necesito devolver un número entero 1023 00:41:44,340 --> 00:41:46,420 pero quiero a veces indicar 1024 00:41:46,420 --> 00:41:48,039 que eso sea nul, que esté vacío 1025 00:41:48,039 --> 00:41:50,400 con una variable primitiva no podemos 1026 00:41:50,400 --> 00:41:52,279 indicar vacío, una variable primitiva 1027 00:41:52,279 --> 00:41:54,539 siempre va a tener algo, o menos 1 o menos 2 1028 00:41:54,539 --> 00:41:56,480 o 0 o 3 o 4, no puede tener vacío 1029 00:41:56,480 --> 00:41:58,400 a diferencia de un objeto 1030 00:41:58,400 --> 00:41:59,619 que un objeto sí puede tener vacío 1031 00:41:59,619 --> 00:42:01,960 entonces aquí se nos presenta un problema 1032 00:42:01,960 --> 00:42:03,699 y es 1033 00:42:03,699 --> 00:42:06,079 el tipo de dato que ponemos aquí 1034 00:42:06,079 --> 00:42:08,500 para que le caiga tanto un numerito entero 1035 00:42:08,500 --> 00:42:10,340 como un nul que es incompatible con el primitivo 1036 00:42:10,340 --> 00:42:18,760 ¿A alguien alguno se le ha ocurrido una forma de solucionarlo? 1037 00:42:20,039 --> 00:42:21,079 ¿Alguien que lo haya hecho? 1038 00:42:22,380 --> 00:42:23,280 Diego, por ejemplo. 1039 00:42:29,440 --> 00:42:30,900 No, tiene que ser lo que devuelva. 1040 00:42:31,000 --> 00:42:31,240 Pues no. 1041 00:42:31,960 --> 00:42:33,980 Pues efectivamente hay que resolver esto. 1042 00:42:33,980 --> 00:42:39,340 Y para resolver esto, para resolver esto, están los envolventes. 1043 00:42:39,340 --> 00:42:40,880 o los rappers 1044 00:42:40,880 --> 00:42:42,420 que