1 00:00:00,000 --> 00:00:00,440 Dando. 2 00:00:02,740 --> 00:00:04,320 Que no han operado a nadie 3 00:00:04,320 --> 00:00:05,360 de fomosis, hombre. 4 00:00:07,200 --> 00:00:08,339 No, no la voy a parar. 5 00:00:09,279 --> 00:00:10,060 Me da igual. 6 00:00:18,359 --> 00:00:19,879 Venga, proyecto. 7 00:00:23,359 --> 00:00:26,000 Este, antes de hacer un ejercicio 8 00:00:26,000 --> 00:00:27,460 grande que vais a hacer vosotros, 9 00:00:27,460 --> 00:00:32,340 Este es un proyecto pequeño, cortito, 10 00:00:32,460 --> 00:00:35,899 para que os creáis que esto de las interfaces realmente se usa 11 00:00:35,899 --> 00:00:36,280 y mola. 12 00:00:36,659 --> 00:00:36,899 ¿Vale? 13 00:00:37,939 --> 00:00:38,420 Vale. 14 00:00:38,679 --> 00:00:39,100 Ahora vale. 15 00:00:41,020 --> 00:00:42,340 No, es que es así. 16 00:00:42,920 --> 00:00:46,619 Porque sois unos sosos y unos parados y unos desaborigos. 17 00:00:46,979 --> 00:00:50,600 Y no os emocionáis con nada. 18 00:00:50,719 --> 00:00:51,719 Pues ahora vais a emocionar. 19 00:00:51,939 --> 00:00:52,280 Suéltame. 20 00:00:52,679 --> 00:00:53,159 Suéltame. 21 00:00:53,340 --> 00:00:53,700 Sigue, sigue. 22 00:00:53,880 --> 00:00:54,479 No se lo pasa nada. 23 00:00:54,479 --> 00:00:55,840 Y luego la denuncia. 24 00:00:57,460 --> 00:00:58,780 Venga, denúnciame a ver qué pasa. 25 00:01:03,780 --> 00:01:05,719 Lo voy a llamar proyecto ejemplo 26 00:01:05,719 --> 00:01:07,560 comparable. Comparable ya no suena 27 00:01:07,560 --> 00:01:08,760 al nombre de interfaz. 28 00:01:09,700 --> 00:01:10,920 Muchos se acaban en hable. 29 00:01:11,760 --> 00:01:13,379 Pues, proyecto ejemplo 30 00:01:13,379 --> 00:01:15,379 comparable. Fíjate. 31 00:01:16,120 --> 00:01:17,239 Eso no suena. 32 00:01:19,120 --> 00:01:21,519 Venga, proyecto ejemplo comparable. Vale. 33 00:01:23,579 --> 00:01:25,359 Pues, voy a hacer aquí un paquetín. 34 00:01:27,459 --> 00:01:30,319 pues vamos a 35 00:01:30,319 --> 00:01:31,939 hacernos 36 00:01:31,939 --> 00:01:34,959 una clase 37 00:01:34,959 --> 00:01:36,780 para trabajar con 38 00:01:36,780 --> 00:01:38,540 ¿qué queremos trabajar? 39 00:01:38,659 --> 00:01:40,180 con alumnos, con mesas 40 00:01:40,180 --> 00:01:41,599 ¿con qué queremos trabajar? 41 00:01:41,599 --> 00:01:43,560 con clases 42 00:01:43,560 --> 00:01:45,040 con hormigas 43 00:01:45,040 --> 00:01:46,319 con 44 00:01:46,319 --> 00:01:49,500 una entidad cualquiera 45 00:01:49,500 --> 00:01:51,239 de cualquier cosa, venga, rápido 46 00:01:51,239 --> 00:01:53,219 sí 47 00:01:53,219 --> 00:01:55,260 bebidas 48 00:01:55,260 --> 00:01:56,739 yo no entiendo de eso 49 00:01:56,739 --> 00:02:00,379 Pues no te quiero en mi clase 50 00:02:00,379 --> 00:02:01,700 Venga 51 00:02:01,700 --> 00:02:04,920 No, no, estoy haciendo 52 00:02:04,920 --> 00:02:06,599 Un proyecto aparte 53 00:02:06,599 --> 00:02:09,139 Cuya única función 54 00:02:09,139 --> 00:02:11,159 Va a ser ver un ejemplito de uso 55 00:02:11,159 --> 00:02:12,539 De interfaces que nos haga 56 00:02:12,539 --> 00:02:13,699 Entender 57 00:02:13,699 --> 00:02:15,900 El sentido que tiene esto 58 00:02:15,900 --> 00:02:21,520 Bueno, pues entonces 59 00:02:21,520 --> 00:02:23,460 Nuestras casitas 60 00:02:23,460 --> 00:02:27,159 ¿Por qué se van a distinguir? 61 00:02:28,120 --> 00:02:30,159 Por la dirección 62 00:02:30,159 --> 00:02:31,840 Sin tilde 63 00:02:31,840 --> 00:02:33,020 Hacer posible 64 00:02:33,020 --> 00:02:36,900 Dirección completa 65 00:02:36,900 --> 00:02:39,840 Y cualquier chorrada por hacer algo 66 00:02:39,840 --> 00:02:40,300 Venga 67 00:02:40,300 --> 00:02:43,580 Completa 68 00:02:43,580 --> 00:02:45,300 Y 69 00:02:45,300 --> 00:02:49,379 No, dirección completa y cualquier chorrada de la casa 70 00:02:49,379 --> 00:02:50,719 Y el colorcito que tenga la casa 71 00:02:50,719 --> 00:02:53,539 Bueno, no, y la fecha en la que la compramos 72 00:02:53,539 --> 00:02:54,520 Que nos gusta mucho 73 00:02:54,520 --> 00:02:56,580 hala, ya está, venga 74 00:02:56,580 --> 00:02:57,360 entonces 75 00:02:57,360 --> 00:03:02,800 callad que os pongo un char 76 00:03:02,800 --> 00:03:10,120 venga, pues vamos a hacer 77 00:03:10,120 --> 00:03:12,620 unos constructores 78 00:03:12,620 --> 00:03:14,740 muy monos 79 00:03:14,740 --> 00:03:18,560 y un getter 80 00:03:18,560 --> 00:03:19,419 y un set 81 00:03:19,419 --> 00:03:23,819 esto es lo que mejor os sale, ¿verdad? 82 00:03:23,819 --> 00:03:25,960 con el loguete y el setter y el constructor. 83 00:03:26,900 --> 00:03:28,580 ¿Ya ha aparecido tu monitor? 84 00:03:28,860 --> 00:03:29,360 Sí, sí, ya está. 85 00:03:29,659 --> 00:03:29,960 Vale. 86 00:03:30,979 --> 00:03:31,460 Vale. 87 00:03:33,180 --> 00:03:36,099 Pues ahora vamos a hacer nuestro main que trabaja con casas. 88 00:03:42,060 --> 00:03:42,539 Venga. 89 00:03:46,080 --> 00:03:48,139 Ahora nuestro main que va a trabajar con casitas 90 00:03:48,139 --> 00:03:49,860 para hacer cosas con un montón de casitas. 91 00:03:50,400 --> 00:03:51,900 Y estas casitas 92 00:03:51,900 --> 00:03:54,379 las vamos a meter, pues, ¿dónde? 93 00:03:54,379 --> 00:03:55,199 En un array. 94 00:03:56,639 --> 00:03:58,139 ¿Dónde las vamos a meter si no es en un array? 95 00:03:58,139 --> 00:04:00,319 Y si es que no tenemos opción a ninguna otra cosa 96 00:04:00,319 --> 00:04:09,860 Ay sí 97 00:04:09,860 --> 00:04:12,379 Sufro mucho, pero es que Estefano se resiste 98 00:04:12,379 --> 00:04:14,319 Porque le encanta hacer todo con Arraiz 99 00:04:14,319 --> 00:04:15,919 Entonces se resiste y se resiste 100 00:04:15,919 --> 00:04:17,620 Pero le he convencido 101 00:04:17,620 --> 00:04:20,319 Para que adelantemos colecciones a excepciones 102 00:04:20,959 --> 00:04:28,100 Estefano es muy pesado 103 00:04:28,100 --> 00:04:30,339 ese es mi argumento 104 00:04:30,339 --> 00:04:32,439 no, que es una broma 105 00:04:32,439 --> 00:04:34,060 que no, es 106 00:04:34,060 --> 00:04:36,579 es un pesado 107 00:04:36,579 --> 00:04:37,540 haciéndoos aprender 108 00:04:37,540 --> 00:04:40,100 venga 109 00:04:40,100 --> 00:04:41,639 a ver 110 00:04:41,639 --> 00:04:44,540 venga 111 00:04:44,540 --> 00:04:46,720 vale 112 00:04:46,720 --> 00:04:47,899 pues entonces, por ejemplo 113 00:04:47,899 --> 00:04:49,160 a lo mejor 114 00:04:49,160 --> 00:04:52,759 algo de lo que querríamos hacer 115 00:04:52,759 --> 00:04:53,860 con estas casas 116 00:04:53,860 --> 00:04:56,160 sería un método que las 117 00:04:56,160 --> 00:04:58,360 nos las mostrara por orden alfabético 118 00:04:58,360 --> 00:04:59,160 de ubicación 119 00:04:59,160 --> 00:05:01,100 por ejemplo 120 00:05:01,100 --> 00:05:17,209 porque lo voy a usar solo desde el main 121 00:05:17,209 --> 00:05:18,230 este main 122 00:05:18,230 --> 00:05:25,829 vale, entonces 123 00:05:25,829 --> 00:05:27,269 pues nosotros aquí 124 00:05:27,269 --> 00:05:30,189 este método 125 00:05:30,189 --> 00:05:31,730 pues ya está 126 00:05:31,730 --> 00:05:34,189 lo querremos llamar 127 00:05:34,189 --> 00:05:36,410 para mostrar 128 00:05:36,410 --> 00:05:38,009 nuestras casitas ordenadas 129 00:05:38,009 --> 00:05:38,910 por orden alfabético 130 00:05:38,910 --> 00:05:41,470 a ver, le voy a meter unas cuantas 131 00:05:41,470 --> 00:05:53,170 por, vale, voy a meter unas cuantas 132 00:05:53,170 --> 00:05:56,189 ¿qué hago? 133 00:06:05,689 --> 00:06:07,189 si llevamos la cualidad alfabética 134 00:06:07,189 --> 00:06:13,910 claro, entonces 135 00:06:13,910 --> 00:06:21,259 casas de i igual, una nueva casa donde la dirección 136 00:06:21,259 --> 00:06:24,959 vamos a generar aleatoriamente el primer carácter 137 00:06:24,959 --> 00:06:28,399 vamos a ver 138 00:06:28,399 --> 00:06:29,879 a ver, que ya tenemos 139 00:06:29,879 --> 00:06:31,360 wifi, por lo menos 140 00:06:31,360 --> 00:06:33,500 ya no necesito la wifi de aquí 141 00:06:33,500 --> 00:06:37,740 yo sí 142 00:06:37,740 --> 00:06:38,959 vosotros no sé 143 00:06:38,959 --> 00:06:43,800 pero que más os da 144 00:06:43,800 --> 00:06:46,180 si tenéis todos los datos definitivos 145 00:06:46,180 --> 00:06:47,139 iba a decir infinitos 146 00:06:47,139 --> 00:06:49,019 porque tenéis unos padres 147 00:06:49,019 --> 00:06:50,379 que os mantienen 148 00:06:50,379 --> 00:06:52,660 bueno, vale 149 00:06:52,660 --> 00:06:59,240 Ay, Dios mío. 150 00:07:00,040 --> 00:07:01,100 Venga, pues entonces 151 00:07:01,100 --> 00:07:04,699 esto era... 152 00:07:04,699 --> 00:07:05,779 Es verdad, vosotros sois 153 00:07:05,779 --> 00:07:08,339 de una casta un poco más privilegiada. 154 00:07:08,480 --> 00:07:09,899 Sois serios, sois responsables. 155 00:07:11,360 --> 00:07:12,779 Venga, a ver, yo quería... 156 00:07:12,779 --> 00:07:13,759 ¿Para qué quería yo la Wi-Fi? 157 00:07:16,100 --> 00:07:16,800 ¿Qué ha dicho? 158 00:07:17,300 --> 00:07:18,879 Que es latinoamericano, que probablemente 159 00:07:18,879 --> 00:07:19,480 no tenga padre. 160 00:07:20,279 --> 00:07:22,500 Ah, bueno, te habrán abandonado, te habrán tirado por ahí 161 00:07:22,500 --> 00:07:24,879 Por las calles de Bogotá, ¿no? 162 00:07:29,600 --> 00:07:34,480 A ver, todo esto venía 163 00:07:34,480 --> 00:07:36,740 porque yo quería generar aleatoriamente 164 00:07:36,740 --> 00:07:37,560 un carácter. 165 00:07:42,720 --> 00:07:44,519 Creo que padre tenemos todos. 166 00:07:46,819 --> 00:07:48,579 Yo me considero no binario. 167 00:07:48,579 --> 00:07:56,680 vale, del 65 al 90 168 00:07:56,680 --> 00:07:58,319 van los caracteres 169 00:07:58,319 --> 00:07:59,680 voy a crear aleatoriamente 170 00:07:59,680 --> 00:08:02,600 un nombre, porque para que luego el orden se vea 171 00:08:02,600 --> 00:08:03,000 entonces 172 00:08:03,000 --> 00:08:05,639 del 65 al 90 173 00:08:05,639 --> 00:08:08,000 más random 174 00:08:08,000 --> 00:08:09,759 para generar del 65 al 90 175 00:08:09,759 --> 00:08:12,180 90 menos 65 176 00:08:12,180 --> 00:08:13,100 ¿cuánto es? 177 00:08:13,740 --> 00:08:15,740 es unos 25 aproximadamente 178 00:08:15,740 --> 00:08:18,579 pues entonces multiplico esto por 25 179 00:08:18,579 --> 00:08:20,560 le hago el casting entero y le sumo 65 180 00:08:20,560 --> 00:08:21,060 ¿verdad? 181 00:08:23,720 --> 00:08:24,980 esto ya lo hicimos 182 00:08:24,980 --> 00:08:26,879 sí, para, porque esto me lo dará en decimal 183 00:08:26,879 --> 00:08:27,519 entonces 184 00:08:27,519 --> 00:08:30,639 le hago el casting de más random por 25 185 00:08:30,639 --> 00:08:32,379 y luego a todo esto 186 00:08:32,379 --> 00:08:33,659 le sumo 65 187 00:08:33,659 --> 00:08:36,240 y con eso genero un primer carácter aleatorio 188 00:08:36,240 --> 00:08:39,360 a todo esto 189 00:08:39,360 --> 00:08:44,080 ahora ya le sumo 65 190 00:08:44,080 --> 00:08:50,700 Un carácter aleatorio entre 0 y 25, pero con cifras decimales. 191 00:08:51,139 --> 00:08:59,080 Le trunco la parte decimal, le sumo 65, con lo cual ya me dará uno aleatorio entre 65 y 90 aproximadamente, que es lo que quiero. 192 00:09:00,220 --> 00:09:06,320 Vale, ese será el primer carácter y ahora este primer carácter lo voy a concatenar ahora ya con cualquier cosita. 193 00:09:08,080 --> 00:09:08,519 Casita. 194 00:09:09,679 --> 00:09:12,320 Vale, y el otro... 195 00:09:12,320 --> 00:09:18,460 Bueno, pero vamos a ver ahora cómo se ha generado. 196 00:09:19,080 --> 00:09:22,320 Y casita, además, ¿qué otra propiedad tenía? La fecha. 197 00:09:23,279 --> 00:09:30,279 Vale, pues un objeto date con la fecha de hoy yo creo que lo puedo generar 198 00:09:30,279 --> 00:09:33,240 a través de un método estático de la clase date, me parece, ¿no? 199 00:09:34,360 --> 00:09:35,779 Sí, hay que tener la fecha de hoy. 200 00:09:37,240 --> 00:09:37,720 Local date. 201 00:09:38,779 --> 00:09:44,379 Sí, pero local date le tengo que dar un local date que no sé. 202 00:09:44,399 --> 00:09:47,100 yo creo que con new date 203 00:09:47,100 --> 00:09:49,860 con new date ya directamente 204 00:09:49,860 --> 00:09:52,220 te instancia un objeto date con la fecha de hoy 205 00:09:52,220 --> 00:09:52,600 yo creo 206 00:09:52,600 --> 00:09:53,740 yo sé que había uno que te devolvía 207 00:09:53,740 --> 00:09:54,940 automáticamente la fecha 208 00:09:54,940 --> 00:09:57,019 a darle un instante 209 00:09:57,019 --> 00:10:00,000 sí, pero es que eso es lo que he puesto 210 00:10:00,000 --> 00:10:04,039 entonces tienes que guardar 211 00:10:04,039 --> 00:10:05,059 el new date en una variable 212 00:10:05,059 --> 00:10:06,980 y eso es una variable que te va a dar 213 00:10:06,980 --> 00:10:09,139 pero si ya esto es un date 214 00:10:09,139 --> 00:10:12,919 entonces new date 215 00:10:12,919 --> 00:10:15,120 vale 216 00:10:15,120 --> 00:10:21,200 el constructor date 217 00:10:21,200 --> 00:10:23,320 de java útil está indefinido 218 00:10:23,320 --> 00:10:27,139 vale, vale, es que me ha importado el automático 219 00:10:27,139 --> 00:10:29,259 no, es que me lo ha importado el solo, listo 220 00:10:29,259 --> 00:10:30,600 vale 221 00:10:30,600 --> 00:10:33,299 venga, pues ya lo tengo 222 00:10:33,299 --> 00:10:35,500 las casas creadas, vamos a 223 00:10:35,500 --> 00:10:36,580 mostrarlas primero 224 00:10:36,580 --> 00:10:44,019 vamos a hacernos 225 00:10:44,019 --> 00:10:46,399 vamos a hacernos un 226 00:10:46,399 --> 00:10:48,299 tuestrin en casa, la primera 227 00:10:48,299 --> 00:10:49,600 cosa que nos pide aquí el cuerpo 228 00:10:49,600 --> 00:10:52,179 vamos a hacernos un toString para poner directamente 229 00:10:52,179 --> 00:10:53,200 esto 230 00:10:53,200 --> 00:10:54,139 ¿verdad? 231 00:10:56,100 --> 00:10:56,539 no 232 00:10:56,539 --> 00:11:04,120 genial, pues iréis sobraos 233 00:11:04,120 --> 00:11:08,740 vale, pues ya está 234 00:11:08,740 --> 00:11:11,960 he puesto un toString 235 00:11:11,960 --> 00:11:13,720 para ahora en el método este 236 00:11:13,720 --> 00:11:14,960 en el que me limito a mostrar las 237 00:11:14,960 --> 00:11:17,519 vale, pues como todavía no he hecho este método 238 00:11:17,519 --> 00:11:19,419 ¿para qué le voy a llamar? si no me va a hacer nada 239 00:11:19,419 --> 00:11:21,419 Venga, vamos a ver si nos ha generado casas 240 00:11:21,419 --> 00:11:23,340 Con diferentes caracteres 241 00:11:23,340 --> 00:11:23,980 Y así 242 00:11:23,980 --> 00:11:27,840 ¿Qué hago yo? 243 00:11:29,679 --> 00:11:30,120 Venga 244 00:11:30,120 --> 00:11:36,570 Ay, vale 245 00:11:36,570 --> 00:11:38,350 Sí, me la ha generado con números 246 00:11:38,350 --> 00:11:40,710 Porque como no lo he guardado en un achar antes 247 00:11:40,710 --> 00:11:42,309 Pero bueno, le hago el casting achar y ya está 248 00:11:42,309 --> 00:11:45,269 Claro, porque no lo he guardado en un achar antes 249 00:11:45,269 --> 00:11:45,950 Entonces 250 00:11:45,950 --> 00:11:49,389 Vamos aquí 251 00:11:49,389 --> 00:11:53,029 El achar 252 00:11:53,029 --> 00:11:55,950 hago el casting y luego 253 00:11:55,950 --> 00:11:57,789 este paréntesis que se cierra aquí 254 00:11:57,789 --> 00:11:59,750 pues este 255 00:11:59,750 --> 00:12:00,950 aquí está 256 00:12:00,950 --> 00:12:04,090 a ver ahora 257 00:12:04,090 --> 00:12:09,019 vale, ahora ya sí, ¿vale? 258 00:12:09,019 --> 00:12:10,980 tengo casitas con diferentes letras 259 00:12:10,980 --> 00:12:13,980 entonces ahora ya sí tiene sentido que se ordenen alfabéticamente 260 00:12:13,980 --> 00:12:15,559 ¿verdad? 261 00:12:16,980 --> 00:12:18,039 es la primera vez que me he puesto 262 00:12:18,039 --> 00:12:20,519 he dicho que había muchas posibilidades de que hubiera dos repetidas 263 00:12:20,519 --> 00:12:21,679 hay dos casas 264 00:12:21,679 --> 00:12:24,080 bueno, no pasa nada 265 00:12:24,080 --> 00:12:27,299 la aleatoriedad es así 266 00:12:27,299 --> 00:12:30,320 vale, pues entonces 267 00:12:30,320 --> 00:12:30,759 venga 268 00:12:30,759 --> 00:12:34,580 entonces no olvidéis nada de lo que se supone 269 00:12:34,580 --> 00:12:36,419 que sabemos, pues generar números aleatorios 270 00:12:36,419 --> 00:12:39,080 de pensar en general, no los quiero entre 0 y 25 271 00:12:39,080 --> 00:12:40,820 sino entre 65 272 00:12:40,820 --> 00:12:42,279 y lo siguiente 273 00:12:42,279 --> 00:12:44,539 pues le sumo 65 para que el intervalo se mueva 274 00:12:44,539 --> 00:12:46,759 como esto es un entero 275 00:12:46,759 --> 00:12:48,740 al concatenar 276 00:12:48,740 --> 00:12:49,899 me va a coger su valor entero 277 00:12:49,899 --> 00:12:51,840 si yo quiero echar, pues tengo que hacer el casting 278 00:12:51,840 --> 00:12:54,960 todas esas cosas que se supone que ya 279 00:12:54,960 --> 00:12:56,740 tenemos interiorizadas 280 00:12:56,740 --> 00:12:58,500 si trabajamos con soltura, ¿vale? 281 00:12:59,399 --> 00:13:01,120 Vale, pues ya tenemos aquí 282 00:13:01,120 --> 00:13:06,059 práctica. 283 00:13:06,360 --> 00:13:07,500 Vale, pues ahora 284 00:13:07,500 --> 00:13:09,220 nos han pedido 285 00:13:09,220 --> 00:13:11,759 nos han pedido como funcionalidad 286 00:13:11,759 --> 00:13:13,899 mostrar estas casas ordenadas 287 00:13:13,899 --> 00:13:15,519 alfabéticamente por su dirección. 288 00:13:16,139 --> 00:13:17,899 Bueno, pues ordenar un array 289 00:13:17,899 --> 00:13:20,039 no es tan sencillo, no es algo que uno piense 290 00:13:20,039 --> 00:13:21,299 y diga, ah, sí, 291 00:13:22,059 --> 00:13:24,019 como lo del máximo, que el máximo rápidamente 292 00:13:24,019 --> 00:13:25,740 lo dedujimos, pues vas uno por uno, 293 00:13:25,740 --> 00:13:27,500 vas comparando si es mayor que el máximo 294 00:13:27,500 --> 00:13:29,039 y si lo desactualizas el máximo 295 00:13:29,039 --> 00:13:31,279 o como la media, la media 296 00:13:31,279 --> 00:13:33,379 ah pues sí, yo voy sumando y luego digo el total 297 00:13:33,379 --> 00:13:35,500 no, ordenar no es una cosa que uno 298 00:13:35,500 --> 00:13:37,559 diga, uy ya está, se me ha ocurrido 299 00:13:37,559 --> 00:13:38,259 con el máximo también 300 00:13:38,259 --> 00:13:41,179 coges el primer capítulo de la letra 301 00:13:41,179 --> 00:13:42,580 y la pones en la mayor 302 00:13:42,580 --> 00:13:45,299 sí, pero no es fácil, tienes que hacer 303 00:13:45,299 --> 00:13:47,379 varias pasadas, varias iteraciones 304 00:13:47,379 --> 00:13:48,840 en un solo recorrido 305 00:13:48,840 --> 00:13:51,240 no puedes ordenar, entonces 306 00:13:51,240 --> 00:13:53,679 como ya tienes que, para ordenar 307 00:13:53,679 --> 00:13:55,159 ya tienes que hacer por lo pronto 308 00:13:55,159 --> 00:13:57,100 dos bucles, uno dentro de otro 309 00:13:57,100 --> 00:13:58,139 pero ir haciendo los cambios 310 00:13:58,139 --> 00:14:00,480 computacionalmente 311 00:14:00,480 --> 00:14:02,720 podría empezar a ser complejo 312 00:14:02,720 --> 00:14:04,159 sobre todo si tienes un array gigante 313 00:14:04,159 --> 00:14:06,600 desde el momento en que tienes un array dentro de otro 314 00:14:06,600 --> 00:14:09,460 y las iteraciones son muchas 315 00:14:09,460 --> 00:14:11,240 ahí ya 316 00:14:11,240 --> 00:14:12,919 el tiempo de ejecución 317 00:14:12,919 --> 00:14:15,139 puede aumentar exponencialmente 318 00:14:15,139 --> 00:14:16,799 entonces cuando tienes un código 319 00:14:16,799 --> 00:14:18,419 con un bucle anidado dentro de otro 320 00:14:18,419 --> 00:14:20,399 conviene ya sí que pensarlo muy bien 321 00:14:20,399 --> 00:14:22,200 porque si aumentas 322 00:14:22,200 --> 00:14:24,259 la cantidad de iteraciones 323 00:14:24,259 --> 00:14:28,100 si aumentas 324 00:14:28,100 --> 00:14:29,759 de repente el tamaño del array 325 00:14:29,759 --> 00:14:31,419 a mil y las iteraciones suben a mil 326 00:14:31,419 --> 00:14:32,940 el tiempo de ejecución te hace esto 327 00:14:32,940 --> 00:14:34,580 y se te monta un cuello de botella 328 00:14:34,580 --> 00:14:37,919 conclusión, hay mucho estudio 329 00:14:37,919 --> 00:14:39,600 montado sobre 330 00:14:39,600 --> 00:14:42,139 cuáles son los mejores algoritmos de ordenación 331 00:14:42,139 --> 00:14:43,740 ¿vale? los que hacen 332 00:14:43,740 --> 00:14:45,299 que según aumentas el tamaño del array 333 00:14:45,299 --> 00:14:48,000 el tiempo de aumento de ejecución 334 00:14:48,000 --> 00:14:49,899 en lugar de ir así, pues vaya así 335 00:14:49,899 --> 00:14:52,019 ¿vale? el crecimiento puede ser 336 00:14:52,019 --> 00:14:53,620 logarítmico o puede ser lineal 337 00:14:53,620 --> 00:14:57,200 o puede ser exponencial, entonces hay muchos algoritmos de ordenación 338 00:14:57,200 --> 00:15:01,779 nosotros no hemos puesto ninguno este año 339 00:15:01,779 --> 00:15:04,559 pues porque no tenemos tiempo y porque 340 00:15:04,559 --> 00:15:08,399 no queremos volverlo más locos 341 00:15:08,399 --> 00:15:13,440 vale, pero resulta que ¿qué ocurre? 342 00:15:14,500 --> 00:15:17,820 silencio, a ver callado 343 00:15:17,820 --> 00:15:20,220 Rodrigo, tú también que me distraigo yéndote 344 00:15:20,220 --> 00:15:22,980 vale, afortunadamente 345 00:15:22,980 --> 00:15:25,379 no nos hace falta aprendernos 346 00:15:25,379 --> 00:15:27,120 un algoritmo de ordenación 347 00:15:27,120 --> 00:15:28,519 para ponerlo aquí 348 00:15:28,519 --> 00:15:30,960 que es un ejercicio matemático estupendo 349 00:15:30,960 --> 00:15:32,419 está el de la burbuja, el quicksort 350 00:15:32,419 --> 00:15:35,320 uno puede ver cómo funcionan, aplicarlos y son maravillosos 351 00:15:35,320 --> 00:15:36,559 pero no nos hace falta 352 00:15:36,559 --> 00:15:39,039 porque resulta que tenemos una clase 353 00:15:39,039 --> 00:15:39,559 a raíz 354 00:15:39,559 --> 00:15:43,220 que esta clase a raíz 355 00:15:43,220 --> 00:15:45,299 nos da un montón de métodos estáticos 356 00:15:45,299 --> 00:15:46,460 para hacer cosas chulas 357 00:15:46,460 --> 00:15:49,519 entonces a raíz es una clase 358 00:15:49,519 --> 00:15:51,679 que existe aquí en la máquina virtual. 359 00:15:52,779 --> 00:15:53,340 ¿Vale? 360 00:15:53,440 --> 00:15:55,600 En mi máquina virtual JRE 361 00:15:55,600 --> 00:15:57,419 pues hay millones 362 00:15:57,419 --> 00:15:59,120 de cientos de miles de clases 363 00:15:59,120 --> 00:16:01,539 y una de las que hay 364 00:16:01,539 --> 00:16:03,799 es la clase Arraiz 365 00:16:03,799 --> 00:16:05,299 que está por algún lado. 366 00:16:07,360 --> 00:16:09,799 Sí, Arraiz no está en Java lang. 367 00:16:09,940 --> 00:16:11,379 Arraiz estará en Java útil. 368 00:16:12,620 --> 00:16:13,720 Arraiz debe estar 369 00:16:13,720 --> 00:16:15,759 en Java útil que estará 370 00:16:15,759 --> 00:16:16,399 por aquí abajo. 371 00:16:20,350 --> 00:16:21,450 Arraiz, ¿vale? 372 00:16:21,450 --> 00:16:23,909 pues una de las miles de clases que tiene la máquina virtual 373 00:16:23,909 --> 00:16:24,850 es la clase Arrays 374 00:16:24,850 --> 00:16:27,769 y es una clase que tiene métodos estáticos 375 00:16:27,769 --> 00:16:29,950 y los métodos estáticos ya sabéis que se pueden llamar 376 00:16:29,950 --> 00:16:30,789 con el nombre de la clase 377 00:16:30,789 --> 00:16:33,029 pues tiene muchos muy chulos 378 00:16:33,029 --> 00:16:35,110 resulta que si uno indaga 379 00:16:35,110 --> 00:16:37,509 tiene uno que es el sort 380 00:16:37,509 --> 00:16:40,289 que le pasas un Array y te lo ordena 381 00:16:40,289 --> 00:16:42,389 pues dijimos, magnífico 382 00:16:42,389 --> 00:16:43,450 pues ya lo tengo 383 00:16:43,450 --> 00:16:45,129 le voy a pasar 384 00:16:45,129 --> 00:16:49,129 pero si no os pedí ordenar nada 385 00:16:49,129 --> 00:16:52,929 era invertir 386 00:16:52,929 --> 00:16:53,769 no ordenar 387 00:16:53,769 --> 00:16:55,610 no me líes 388 00:16:55,610 --> 00:16:58,649 vale, pues entonces 389 00:16:58,649 --> 00:17:00,409 decimos, oye 390 00:17:00,409 --> 00:17:02,970 si hay una clase Arrays que te hace cosas con Arrays 391 00:17:02,970 --> 00:17:04,329 pues voy a aprovecharme 392 00:17:04,329 --> 00:17:05,950 y sobre todo si me ordena 393 00:17:05,950 --> 00:17:08,269 pues ni planto método de la burbuja 394 00:17:08,269 --> 00:17:10,049 ni Quicksort, ni nada, y ya está 395 00:17:10,049 --> 00:17:14,329 ah, claro, el por dentro sí 396 00:17:14,329 --> 00:17:16,869 lógicamente, no nos da igual como lo haga 397 00:17:16,869 --> 00:17:18,450 de hecho, seguramente 398 00:17:18,450 --> 00:17:20,529 en la documentación te dice 399 00:17:20,529 --> 00:17:21,730 qué método de ordenación usa. 400 00:17:22,630 --> 00:17:23,089 A ver. 401 00:17:27,380 --> 00:17:27,779 Ay. 402 00:17:30,099 --> 00:17:31,019 Ah, espérate, no. 403 00:17:31,180 --> 00:17:33,000 Me había ido al SOR directamente y me he ido. 404 00:17:35,160 --> 00:17:36,700 En la ayuda de SOR 405 00:17:36,700 --> 00:17:38,519 seguramente te diga qué método usa. 406 00:17:48,589 --> 00:17:52,509 Creo que es el QuickSOR, pero no estoy segura. 407 00:17:53,230 --> 00:17:54,390 Pero bueno, aquí te explicará. 408 00:17:54,390 --> 00:17:56,809 estoy usando el método de ordenación patatín 409 00:17:56,809 --> 00:17:58,529 que tiene una complejidad de no sé 410 00:17:58,529 --> 00:18:00,470 cuántos y te explica 411 00:18:00,470 --> 00:18:01,970 todo lo que hace, etc. 412 00:18:02,950 --> 00:18:04,450 Anoto lo que nos importa es que ordena. 413 00:18:05,069 --> 00:18:06,410 Y ya está. Vale. 414 00:18:06,549 --> 00:18:08,569 Pues genial. Pues ya está. Ya tengo el código 415 00:18:08,569 --> 00:18:10,650 hecho. Le paso esto 416 00:18:10,650 --> 00:18:12,410 y me lo ordena. Y me lo ordena 417 00:18:12,410 --> 00:18:14,210 y me lo deja la misma referencia, lógicamente. 418 00:18:14,950 --> 00:18:16,390 O sea, él hace todo lo que tenga que hacer 419 00:18:16,390 --> 00:18:18,309 y esta misma referencia 420 00:18:18,309 --> 00:18:20,309 se queda con el 421 00:18:20,309 --> 00:18:22,309 array ordenado. Igual que cuando nosotros 422 00:18:22,309 --> 00:18:23,049 insertamos 423 00:18:23,049 --> 00:18:26,329 cuando nosotros insertamos un elemento de un array 424 00:18:26,329 --> 00:18:27,970 hacemos primero un auxiliar 425 00:18:27,970 --> 00:18:29,769 y luego ya sobrescribimos 426 00:18:29,769 --> 00:18:32,029 el nuevo en el 427 00:18:32,029 --> 00:18:42,250 yo le paso un array 428 00:18:42,250 --> 00:18:43,869 y sort coge ese array 429 00:18:43,869 --> 00:18:46,210 con todo su tamaño, lo ordena 430 00:18:46,210 --> 00:18:48,329 y la versión ordenada 431 00:18:48,329 --> 00:18:50,049 la utiliza para sobrescribir 432 00:18:50,049 --> 00:18:50,789 ese propio array 433 00:18:50,789 --> 00:18:52,809 En casas tiene muchas cosas dentro. 434 00:18:53,089 --> 00:18:55,089 O sea, lo ordena en base a qué. 435 00:18:55,390 --> 00:18:56,630 Ah, muy buena pregunta. 436 00:18:57,089 --> 00:18:58,329 Se nota que sois muy listos. 437 00:18:59,269 --> 00:19:00,630 Vale, vale. 438 00:19:01,690 --> 00:19:02,630 Vale, muy bien. 439 00:19:03,329 --> 00:19:03,549 Claro. 440 00:19:05,049 --> 00:19:06,869 Claro, es que yo no quería 441 00:19:06,869 --> 00:19:08,710 que me hicierais esa pregunta. Yo primero 442 00:19:08,710 --> 00:19:10,789 lo que quería era lanzar esto, a ver qué me dice. 443 00:19:10,970 --> 00:19:13,230 ¿Vale? Entonces, si me lo ordena, 444 00:19:13,230 --> 00:19:14,390 pues a punto pelota. 445 00:19:17,490 --> 00:19:19,329 Vamos a ver. Vamos a ver qué es lo que hace. 446 00:19:19,329 --> 00:19:21,690 de hecho vamos a probarlo primero 447 00:19:21,690 --> 00:19:24,329 en uno que me ordene numeritos 448 00:19:24,329 --> 00:19:25,289 a ver 449 00:19:25,289 --> 00:19:27,230 int 450 00:19:27,230 --> 00:19:30,089 números 451 00:19:30,089 --> 00:19:31,470 y le vamos a poner 452 00:19:31,470 --> 00:19:34,390 3 menos 6 453 00:19:34,390 --> 00:19:35,289 4 454 00:19:35,289 --> 00:19:36,970 8 455 00:19:36,970 --> 00:19:43,789 si que ya lo se 456 00:19:43,789 --> 00:19:44,670 que 457 00:19:44,670 --> 00:19:47,470 es que 458 00:19:47,470 --> 00:19:48,970 de verdad 459 00:19:48,970 --> 00:19:52,369 Ah, sois ahí. 460 00:19:53,950 --> 00:19:55,490 No, no se estoy mareando. 461 00:19:58,789 --> 00:20:00,029 Vamos a ver cómo funciona. 462 00:20:07,289 --> 00:20:10,369 No cobro por alumnos, por número de alumnos. 463 00:20:13,470 --> 00:20:15,410 Yo voy a cobrar igual, yo soy funcionaria. 464 00:20:15,410 --> 00:20:19,809 Vale, pues entonces vamos a ordenarlo 465 00:20:19,809 --> 00:20:25,009 Arrays, que no, que nos quiero liar 466 00:20:25,009 --> 00:20:27,809 Números 467 00:20:27,809 --> 00:20:33,259 Vale, yo le paso mi array de números 468 00:20:33,259 --> 00:20:35,059 Y ahora vamos a 469 00:20:35,059 --> 00:20:38,539 ¿Cómo se llama el método? 470 00:20:38,539 --> 00:20:39,660 Ordena números 471 00:20:39,660 --> 00:20:46,289 Le paso mi array de números 472 00:20:46,289 --> 00:20:48,589 Y vamos a ver esos números 473 00:20:48,589 --> 00:20:50,950 como me los ha puesto, para cada numerito 474 00:20:50,950 --> 00:20:52,430 en el nuevo array 475 00:20:52,430 --> 00:20:54,869 números, vamos a mostrar 476 00:20:54,869 --> 00:20:56,529 vamos a verificar que funciona el método 477 00:20:56,529 --> 00:20:58,069 no vaya a ser que estemos tirando con un 478 00:20:58,069 --> 00:21:00,289 vale, vamos a ver 479 00:21:00,289 --> 00:21:02,049 yo le he metido esto, me tendrá que mostrar 480 00:21:02,049 --> 00:21:03,430 menos 6, 3, 4 y 8 481 00:21:03,430 --> 00:21:08,710 menos 6, 3, 4 y 8 482 00:21:08,710 --> 00:21:10,549 vale, funciona 483 00:21:10,549 --> 00:21:12,750 venga, pues efectivamente 484 00:21:12,750 --> 00:21:14,390 ahora, aunque 485 00:21:14,390 --> 00:21:16,569 nos huele raro, ya lo sabemos 486 00:21:16,569 --> 00:21:17,490 que nos huele raro 487 00:21:17,490 --> 00:21:19,430 vamos a ver que hace 488 00:21:19,789 --> 00:21:20,490 Vamos a ver qué hace. 489 00:21:24,410 --> 00:21:24,849 Vale. 490 00:21:25,470 --> 00:21:28,349 Asumís que ordena por dirección de memoria. 491 00:21:29,230 --> 00:21:29,890 Venga, vamos. 492 00:21:33,589 --> 00:21:34,230 No lo sé. 493 00:21:35,230 --> 00:21:35,569 No lo sé. 494 00:21:35,630 --> 00:21:36,190 Vamos a ver qué hace. 495 00:21:36,329 --> 00:21:37,490 Esta parte ya la comentamos. 496 00:21:37,569 --> 00:21:39,410 Ya hemos verificado que ordena mis números, 497 00:21:39,549 --> 00:21:40,529 que ArraySource funciona. 498 00:21:41,509 --> 00:21:42,930 Vamos a ordenar las casas ahora. 499 00:21:43,410 --> 00:21:45,029 Y ahora ya vamos a mostrarlas. 500 00:21:45,029 --> 00:21:47,730 para cada casa 501 00:21:47,730 --> 00:21:50,509 C en las casitas estas que tengo 502 00:21:50,509 --> 00:21:53,269 muéstramela 503 00:21:53,269 --> 00:21:56,490 y voy a poner aquí un este 504 00:21:56,490 --> 00:21:57,890 para que se vea claro que 505 00:21:57,890 --> 00:22:03,250 a partir de ahí son ordenadas 506 00:22:03,250 --> 00:22:04,849 venga 507 00:22:04,849 --> 00:22:08,390 pues no me hace nada, se niega 508 00:22:08,390 --> 00:22:09,410 ¿vale? 509 00:22:10,089 --> 00:22:11,170 ¿y qué me dice? 510 00:22:12,069 --> 00:22:14,470 me dice, lo siento, pero casa 511 00:22:14,470 --> 00:22:17,430 no es 512 00:22:17,430 --> 00:22:18,750 comparable 513 00:22:18,750 --> 00:22:21,609 efectivamente, en idioma de Java es 514 00:22:21,609 --> 00:22:23,670 no puedo comparar las casas 515 00:22:23,670 --> 00:22:24,230 entre sí 516 00:22:24,230 --> 00:22:27,509 entonces, si no puedo comparar qué casa 517 00:22:27,509 --> 00:22:29,549 es mayor que otra, a diferencia de los 518 00:22:29,549 --> 00:22:30,789 números, que si puedo comparar 519 00:22:30,789 --> 00:22:33,289 no puedo, vale 520 00:22:33,289 --> 00:22:34,769 pues efectivamente 521 00:22:34,769 --> 00:22:37,769 ¿qué significa ser comparable? 522 00:22:38,250 --> 00:22:39,289 que algo sea comparable 523 00:22:39,289 --> 00:22:41,329 que se comporte 524 00:22:41,329 --> 00:22:43,450 de manera que pueda ser comparado 525 00:22:43,450 --> 00:22:45,470 entonces Java necesita 526 00:22:45,470 --> 00:22:47,490 que una casa se comporte de manera 527 00:22:47,490 --> 00:22:48,730 que pueda ser comparado 528 00:22:48,730 --> 00:22:51,589 ¿cómo se programa 529 00:22:51,589 --> 00:22:53,329 y se diseña todo eso en Java? 530 00:22:53,990 --> 00:22:55,390 pues con las herramientas que conocemos 531 00:22:55,390 --> 00:22:57,329 que no hay más, entonces Java dice 532 00:22:57,329 --> 00:22:59,329 vale, como yo necesito que las cosas 533 00:22:59,329 --> 00:23:01,390 puedan ser comparadas 534 00:23:01,390 --> 00:23:03,509 como necesito que las cosas 535 00:23:03,509 --> 00:23:05,690 tengan el comportamiento de ser comparadas 536 00:23:05,690 --> 00:23:07,470 pues voy a hacerme 537 00:23:07,470 --> 00:23:09,210 una interfaz con ese comportamiento 538 00:23:09,210 --> 00:23:11,269 y el que quiera ser comparado 539 00:23:11,269 --> 00:23:13,430 que lo implemente. ¿Cómo se llama 540 00:23:13,430 --> 00:23:15,230 esa interfaz? Pues como no podía darse otra 541 00:23:15,230 --> 00:23:17,490 manera, incomparable. Entonces, 542 00:23:17,789 --> 00:23:18,829 ahora ya decimos, claro, 543 00:23:19,630 --> 00:23:21,029 yo necesito que casa 544 00:23:21,029 --> 00:23:23,690 sea comparado. La necesito 545 00:23:23,690 --> 00:23:25,430 no siempre por definición. 546 00:23:26,029 --> 00:23:27,289 Lo necesito desde el momento en que 547 00:23:27,289 --> 00:23:28,250 se la voy a pasar a un sort. 548 00:23:29,009 --> 00:23:31,230 Porque sort es el que tiene que comparar. 549 00:23:31,910 --> 00:23:33,509 Entonces, cuando aquí yo mostraba 550 00:23:33,509 --> 00:23:35,309 las casas o todo, aquí que fueran 551 00:23:35,309 --> 00:23:37,230 comparables o no, daba igual 552 00:23:37,230 --> 00:23:39,509 porque aquí nadie necesita compararlas. 553 00:23:40,309 --> 00:23:41,150 Pero aquí el método 554 00:23:41,150 --> 00:23:43,069 sort dice, muy bien, 555 00:23:43,150 --> 00:23:45,410 tengo varias casas. Necesito 556 00:23:45,410 --> 00:23:47,470 que podáis ser comparables 557 00:23:47,470 --> 00:23:49,109 entre vosotras. Y eso significa que 558 00:23:49,109 --> 00:23:51,109 tengáis ese comportamiento dentro 559 00:23:51,109 --> 00:23:51,789 de vosotras. 560 00:23:53,130 --> 00:23:55,130 Pues entonces, para tener un comportamiento, adherirse 561 00:23:55,130 --> 00:23:57,210 al comportamiento, Java se traduce a 562 00:23:57,210 --> 00:23:59,549 tienes que implementar la interfaz correspondiente 563 00:23:59,549 --> 00:24:01,230 a ese comportamiento. Pues la 564 00:24:01,230 --> 00:24:03,109 interfaz correspondiente al comportamiento 565 00:24:03,109 --> 00:24:05,069 de ser comparable entre sí es la 566 00:24:05,069 --> 00:24:07,230 comparable. Dicimos, ah, vale, 567 00:24:07,329 --> 00:24:08,910 pues no pasa nada, no te preocupes. 568 00:24:10,029 --> 00:24:11,109 Voy a hacer que mis 569 00:24:11,109 --> 00:24:13,170 casas implementen 570 00:24:13,170 --> 00:24:14,490 esa interfaz 571 00:24:14,490 --> 00:24:15,569 comparable. 572 00:24:18,950 --> 00:24:19,390 No. 573 00:24:21,410 --> 00:24:23,170 No. Estoy poniendo como ejemplo 574 00:24:23,170 --> 00:24:25,130 de que el diseño de la máquina 575 00:24:25,130 --> 00:24:27,250 virtual y de todo ya está hecho así. Esa interfaz ya existe. 576 00:24:28,190 --> 00:24:29,309 Esa interfaz ya existe 577 00:24:29,309 --> 00:24:31,410 y tiene dentro el método 578 00:24:31,410 --> 00:24:33,150 al que hay que llamar cuando yo 579 00:24:33,150 --> 00:24:34,450 quiero que un objeto se compare con otro. 580 00:24:35,230 --> 00:24:37,130 Esa interfaz ya existe. Entonces, todo está 581 00:24:37,130 --> 00:24:38,869 ya hecho con esta arquitectura. 582 00:24:39,529 --> 00:24:40,650 Y tú tienes que entenderla 583 00:24:40,650 --> 00:24:42,390 para cuando necesites 584 00:24:42,390 --> 00:24:44,549 integrarte en el mundo 585 00:24:44,549 --> 00:24:46,970 mi entidad 586 00:24:46,970 --> 00:24:48,670 casa que yo me acabo de inventar 587 00:24:48,670 --> 00:24:50,410 se va a integrar 588 00:24:50,410 --> 00:24:52,009 en este universo 589 00:24:52,009 --> 00:24:54,829 de clases de Java y se va a integrar 590 00:24:54,829 --> 00:24:56,509 porque yo quiero que sea ordenada 591 00:24:56,509 --> 00:24:58,569 a través de sort del método Arrays 592 00:24:58,569 --> 00:25:00,910 entonces mi entidad casa se va a integrar 593 00:25:00,910 --> 00:25:02,670 entonces si se va a integrar en este mundo 594 00:25:02,670 --> 00:25:04,650 en este universo en el que las cosas 595 00:25:04,650 --> 00:25:06,849 pueden ser comparadas, intégrate 596 00:25:06,849 --> 00:25:08,849 pero entonces implementa esa interfaz que es la que yo tengo 597 00:25:08,849 --> 00:25:10,529 hecha aquí para que las cosas 598 00:25:10,529 --> 00:25:12,529 sean comparadas, entonces todo lo que ya está 599 00:25:12,529 --> 00:25:14,470 hecho, porque nosotros usamos clases que están hechas 600 00:25:14,470 --> 00:25:16,609 continuamente, ahora las de 601 00:25:16,609 --> 00:25:18,369 la máquina virtual, pero en el futuro 602 00:25:18,369 --> 00:25:20,450 las que descarguemos de por ahí, pues 603 00:25:20,450 --> 00:25:22,569 todo está hecho con una arquitectura de cosas 604 00:25:22,569 --> 00:25:24,069 y tú tienes que jugar 605 00:25:24,069 --> 00:25:25,829 con esas reglas del juego 606 00:25:25,829 --> 00:25:28,089 bueno, pues si yo quiero jugar con sort 607 00:25:28,089 --> 00:25:29,849 sort me dice 608 00:25:29,849 --> 00:25:32,390 vale, pues implementame comparable 609 00:25:32,390 --> 00:25:34,490 venga, pues yo 610 00:25:34,490 --> 00:25:35,589 te implemento comparable 611 00:25:35,589 --> 00:25:38,549 ¿qué pasa cuando implementamos una interfaz? 612 00:25:38,549 --> 00:25:40,710 que estamos obligados 613 00:25:40,710 --> 00:25:42,509 a implementar todos los métodos 614 00:25:42,509 --> 00:25:44,549 que tenga. Entonces, claro, yo no me puedo 615 00:25:44,549 --> 00:25:45,910 saber de memoria cómo son los métodos. 616 00:25:46,690 --> 00:25:48,430 O bien me voy a documentación de 617 00:25:48,430 --> 00:25:50,309 comparable, la abro para ver 618 00:25:50,309 --> 00:25:51,910 cuáles son sus métodos, me abro aquí, 619 00:25:52,049 --> 00:25:54,190 comparable, venga, tú eres esta interfaz, 620 00:25:55,430 --> 00:25:56,730 va a tardar un huevo en abrirla, 621 00:25:56,829 --> 00:25:57,009 paso. 622 00:25:58,970 --> 00:26:00,630 Lo tiene que construir toda la... 623 00:26:00,630 --> 00:26:02,430 No, no, paso, paso. O bien la 624 00:26:02,430 --> 00:26:04,410 abro y me meto en la documentación a ver cómo se 625 00:26:04,410 --> 00:26:05,869 llaman los métodos vacíos, 626 00:26:06,390 --> 00:26:08,269 o si tengo un entorno de desarrollo que es más fácil, 627 00:26:08,269 --> 00:26:10,430 pincho aquí y él me dice 628 00:26:10,430 --> 00:26:12,369 oye, añade los métodos 629 00:26:12,369 --> 00:26:14,369 que están sin implementar, doble clic 630 00:26:14,369 --> 00:26:16,130 y me va a añadir 631 00:26:16,130 --> 00:26:18,430 todos los métodos, pero vacíos 632 00:26:18,430 --> 00:26:20,049 tú aquí haces lo que te dé la gana 633 00:26:20,049 --> 00:26:22,309 me ha añadido sólo uno 634 00:26:22,309 --> 00:26:23,930 porque comparable sólo tiene un método 635 00:26:23,930 --> 00:26:25,789 que es el compare tú 636 00:26:25,789 --> 00:26:28,349 vale, pues este 637 00:26:28,349 --> 00:26:28,809 método 638 00:26:28,809 --> 00:26:31,609 hay que entender cómo se usa 639 00:26:31,609 --> 00:26:34,029 bueno, pues este método 640 00:26:34,029 --> 00:26:36,130 compare tú, lo va a llamar un objeto casa 641 00:26:36,130 --> 00:26:38,009 que va a recibir 642 00:26:38,009 --> 00:26:40,049 otro objeto. Entonces, 643 00:26:40,190 --> 00:26:42,210 para tú jugar con las mismas reglas 644 00:26:42,210 --> 00:26:43,930 que juega la interfaz 645 00:26:43,930 --> 00:26:46,029 comparable y el mundo Java que está en la 646 00:26:46,029 --> 00:26:47,890 máquina virtual, para tú jugar con las mismas reglas 647 00:26:47,890 --> 00:26:48,750 tienes que conocerlas. 648 00:26:49,990 --> 00:26:50,970 Y las reglas son, 649 00:26:51,769 --> 00:26:53,930 uno se va a la documentación y lo ve, pero las reglas 650 00:26:53,930 --> 00:26:55,410 son, os ahorro ese paso, 651 00:26:56,450 --> 00:26:58,210 que, eso tiene que volver un entero, 652 00:26:58,470 --> 00:26:59,710 eso está claro, tiene que volver un entero. 653 00:27:00,490 --> 00:27:02,430 Si lo que devuelves es negativo, 654 00:27:03,630 --> 00:27:04,289 se asume 655 00:27:04,289 --> 00:27:06,230 que el objeto que llama al método 656 00:27:06,230 --> 00:27:07,369 va antes 657 00:27:07,369 --> 00:27:09,130 que el pasado como parámetro 658 00:27:09,130 --> 00:27:13,170 si lo que devuelve es cero 659 00:27:13,170 --> 00:27:15,589 se asume que el objeto 660 00:27:15,589 --> 00:27:16,630 que llama al método 661 00:27:16,630 --> 00:27:18,309 y el pasado como parámetro 662 00:27:18,309 --> 00:27:20,430 es que están en la misma posición 663 00:27:20,430 --> 00:27:22,970 ¿vale? no hay uno antes que otro 664 00:27:22,970 --> 00:27:24,910 en el caso de números sería el mismo 665 00:27:24,910 --> 00:27:25,589 tres y tres 666 00:27:25,589 --> 00:27:28,569 en el caso de cadenas es la misma cadena 667 00:27:28,569 --> 00:27:29,789 no va uno antes que la otra 668 00:27:29,789 --> 00:27:32,150 y si lo que devuelve es positivo 669 00:27:32,150 --> 00:27:33,589 se asume 670 00:27:33,589 --> 00:27:36,490 que el objeto que llamó al compare tú 671 00:27:36,490 --> 00:27:39,410 está después en orden 672 00:27:39,410 --> 00:27:41,049 que el que yo le paso. 673 00:27:42,069 --> 00:27:43,170 Vale, pues esas son las reglas. 674 00:27:43,690 --> 00:27:44,950 Yo tengo que jugar con esas reglas. 675 00:27:45,549 --> 00:27:47,130 Pues ahora ya me invento aquí 676 00:27:47,130 --> 00:27:49,049 el código para conseguir 677 00:27:49,049 --> 00:27:51,450 que cuando dé un negativo 678 00:27:51,450 --> 00:27:53,109 la casa que llama al método 679 00:27:53,109 --> 00:27:55,269 va antes que la pasada como parámetro, 680 00:27:56,230 --> 00:27:57,029 cuando dé cero 681 00:27:57,029 --> 00:27:59,230 son la misma casa, y cuando 682 00:27:59,230 --> 00:28:01,390 dé positivo, la casa 683 00:28:01,390 --> 00:28:02,750 que llama al método va después. 684 00:28:03,490 --> 00:28:04,849 Entonces yo ahora ya hago el código 685 00:28:04,849 --> 00:28:07,150 pensando, vale, ¿cuál es mi criterio 686 00:28:07,150 --> 00:28:08,910 de orden? Mi criterio de orden va a ser 687 00:28:08,910 --> 00:28:11,009 la dirección, entonces tengo que mirar 688 00:28:11,009 --> 00:28:13,170 si la propiedad 689 00:28:13,170 --> 00:28:14,710 dirección de dis 690 00:28:14,710 --> 00:28:16,990 entonces aquí lo que tengo que hacer 691 00:28:16,990 --> 00:28:18,190 es, en realidad 692 00:28:18,190 --> 00:28:21,470 si yo lo 693 00:28:21,470 --> 00:28:24,069 si la 694 00:28:24,069 --> 00:28:26,329 propiedad dirección 695 00:28:26,329 --> 00:28:28,490 de dis 696 00:28:28,490 --> 00:28:30,069 del objeto dis que llama al método 697 00:28:30,069 --> 00:28:34,029 está antes 698 00:28:34,029 --> 00:28:35,829 alfabéticamente, porque es un string 699 00:28:35,829 --> 00:28:38,450 luego el orden es alfabético, alfabéticamente 700 00:28:38,450 --> 00:28:43,750 bueno, pero los números son 701 00:28:43,750 --> 00:28:46,329 caracteres también, el orden es alfabético 702 00:28:46,329 --> 00:28:48,410 según la tabla ASCII, antes que 703 00:28:48,410 --> 00:28:50,549 la propiedad 704 00:28:50,549 --> 00:28:52,690 dirección 705 00:28:52,690 --> 00:28:54,089 de quién 706 00:28:54,089 --> 00:28:55,509 de O 707 00:28:55,509 --> 00:28:57,230 de este que me han pasado 708 00:28:57,230 --> 00:29:02,329 pues en ese caso tengo que devolver 709 00:29:02,329 --> 00:29:02,990 un negativo 710 00:29:02,990 --> 00:29:15,440 esto mismo 711 00:29:15,440 --> 00:29:16,240 sin embargo 712 00:29:16,240 --> 00:29:18,859 si la propiedad dirección de dis 713 00:29:18,859 --> 00:29:20,740 del objeto que llama el método 714 00:29:20,740 --> 00:29:21,680 la propiedad dirección 715 00:29:21,680 --> 00:29:23,240 está después 716 00:29:23,240 --> 00:29:28,539 me las tengo que apañar para devolver un positivo 717 00:29:28,539 --> 00:29:32,599 no, cero es si es el mismo 718 00:29:32,599 --> 00:29:33,019 exactamente 719 00:29:33,019 --> 00:29:37,990 si ambas direcciones 720 00:29:37,990 --> 00:29:42,529 son la misma 721 00:29:42,529 --> 00:29:47,000 devuelvo cero 722 00:29:47,000 --> 00:29:49,740 entonces tengo que hacer un código 723 00:29:49,740 --> 00:29:51,579 que refleje esta idea, que es la que yo quiero 724 00:29:51,579 --> 00:29:53,400 si la propiedad dis 725 00:29:53,400 --> 00:29:55,480 de la casa que llama al método 726 00:29:55,480 --> 00:29:57,660 va antes que la propiedad dis de este 727 00:29:57,660 --> 00:29:58,619 devuelvo negativo 728 00:29:58,619 --> 00:30:01,160 si va después devuelvo positivo 729 00:30:01,160 --> 00:30:03,559 y si no devuelvo cero, eso es lo que tengo yo que programar 730 00:30:03,559 --> 00:30:06,099 y cuando este esté ya programado 731 00:30:06,099 --> 00:30:07,680 ya el sort 732 00:30:07,680 --> 00:30:09,740 sabrá como ordenarlo 733 00:30:09,740 --> 00:30:11,539 vale, entonces esto 734 00:30:11,539 --> 00:30:12,500 no es tan 735 00:30:12,500 --> 00:30:15,599 no es tan difícil de programar 736 00:30:15,599 --> 00:30:17,160 tampoco es tan fácil, vamos a 737 00:30:17,160 --> 00:30:19,660 pensar 738 00:30:19,660 --> 00:30:21,660 ¿Vale? 739 00:30:21,660 --> 00:30:23,660 Vale. 740 00:30:23,660 --> 00:30:25,660 A ver, lo que tenemos... 741 00:30:25,660 --> 00:30:27,660 Venga, dos minutillos.