1 00:00:02,160 --> 00:00:08,419 Vale, pues tenemos la grabación en curso ya, ahí está, esto me dice aquí y nada, pues aquí está la grabación. 2 00:00:09,380 --> 00:00:13,859 Así que tienen una, lo que ven es una pantalla de color verde, ¿no? Así más o menos. 3 00:00:14,460 --> 00:00:17,660 Sí, el Google Chrome con ejercicios. 4 00:00:17,660 --> 00:00:22,820 Vale, ejercicios que vamos a ver, sí. Bueno, es que ahora tengo la pantalla de la grabadora que se me pone encima del Chrome y no veo. 5 00:00:25,030 --> 00:00:27,929 A ver ahora. Vale, ahí está. 6 00:00:28,129 --> 00:00:31,350 Bueno, pues miren, lo que vamos a ver es estos dos ejercicios que tengo aquí preparados. 7 00:00:31,350 --> 00:00:33,630 El de los teléfonos 8 00:00:33,630 --> 00:00:35,289 Es una simple agenda de teléfonos 9 00:00:35,289 --> 00:00:37,289 El ejercicio conceptualmente es muy simple 10 00:00:37,289 --> 00:00:39,189 Pero ilustra muy bien 11 00:00:39,189 --> 00:00:39,909 Algunas de las cosas 12 00:00:39,909 --> 00:00:42,990 Algunos aspectos muy importantes 13 00:00:42,990 --> 00:00:44,789 Del curso 14 00:00:44,789 --> 00:00:46,689 Entonces vamos a ver cada uno de ellos 15 00:00:46,689 --> 00:00:48,649 Voy a pasar un poco rápido en algunas cosas 16 00:00:48,649 --> 00:00:50,869 Porque los ejercicios los tienen para revisárselos 17 00:00:50,869 --> 00:00:53,090 Si se le plantea alguna duda 18 00:00:53,090 --> 00:00:55,109 Me lo dicen y yo paro un momentito y lo vemos 19 00:00:55,109 --> 00:00:57,170 Entonces, el ejercicio es simplemente 20 00:00:57,170 --> 00:00:58,590 Hacer una 21 00:00:58,590 --> 00:01:01,250 Una agenda 22 00:01:01,250 --> 00:01:07,010 con diferentes personas y que cada persona tiene diferentes teléfonos. 23 00:01:07,150 --> 00:01:08,129 Esa es en principio la idea. 24 00:01:08,650 --> 00:01:10,329 Y lo vamos a hacer de dos formas distintas, 25 00:01:10,569 --> 00:01:12,810 abordando el tema desde un punto de vista de composición 26 00:01:12,810 --> 00:01:14,890 y abordando el tema desde un punto de vista de herencia. 27 00:01:15,069 --> 00:01:18,010 Y por supuesto, como vamos a organizar información, datos, 28 00:01:18,370 --> 00:01:19,349 utilizamos colecciones. 29 00:01:19,709 --> 00:01:23,849 Una colección para las personas, para almacenar a esas personas, 30 00:01:23,849 --> 00:01:27,969 y otra colección para que cada una de esas personas almacene un número de teléfonos. 31 00:01:27,969 --> 00:01:31,750 Lo hacemos de una forma muy sencillita, pero muy ilustrativa. 32 00:01:32,090 --> 00:01:33,549 Pero eso quería llevar este sentido. 33 00:01:34,269 --> 00:01:41,930 Lo primero que vamos a centrar, vamos a empezar viendo cómo organizamos esta información en composición. 34 00:01:42,310 --> 00:01:47,909 Acuérdense de las formas de organizar la información, que es en el capítulo, no me acuerdo si es el 5, el 6 o por ahí. 35 00:01:48,510 --> 00:01:48,909 Ahí está. 36 00:01:49,049 --> 00:01:51,750 Bueno, lo primero que vamos a analizar un momentito es la clase Persona. 37 00:01:51,909 --> 00:01:53,129 Vamos a hablar un poquito de la clase Persona. 38 00:01:53,129 --> 00:01:56,349 Entonces, miren 39 00:01:56,349 --> 00:01:58,250 En composición, miren lo que tenemos hecho 40 00:01:58,250 --> 00:02:00,269 Bueno, antes de hablar de las expresiones, esperen un momentito 41 00:02:00,269 --> 00:02:02,530 Les voy a enseñar primero cómo lo vamos a hacer 42 00:02:02,530 --> 00:02:04,829 Entonces, lo que he hecho es un dibujo esquemático 43 00:02:04,829 --> 00:02:06,409 Perdonen mi 44 00:02:06,409 --> 00:02:08,210 Grafía, que no es muy adecuada 45 00:02:08,210 --> 00:02:10,270 No es la mejor del mundo, pero 46 00:02:10,270 --> 00:02:11,129 Es que dibujo fatal 47 00:02:11,129 --> 00:02:14,389 Y bueno, pues aquí lo tienen 48 00:02:14,389 --> 00:02:16,729 Entonces, ¿qué es lo que vamos a tener? 49 00:02:16,830 --> 00:02:18,669 Miren, esto representa lo que vamos a tener 50 00:02:18,669 --> 00:02:20,610 Vamos a tener una colección de personas 51 00:02:20,610 --> 00:02:22,289 Lo ven aquí, una primera persona 52 00:02:22,289 --> 00:02:24,789 ¿Perdón? 53 00:02:25,590 --> 00:02:26,689 Voy a hacer un poco más grande 54 00:02:26,689 --> 00:02:28,789 Yo puedo ampliar la pantalla 55 00:02:28,789 --> 00:02:33,300 ¿Ahí? Pero si lo hago 56 00:02:33,300 --> 00:02:34,120 ¿Aquí lo ven mejor o qué? 57 00:02:34,360 --> 00:02:35,139 Perfecto, perfecto 58 00:02:35,139 --> 00:02:37,759 Entonces miren, esto sería el MP mapa 59 00:02:37,759 --> 00:02:39,240 Bueno, colección de personas 60 00:02:39,240 --> 00:02:42,439 Esta sería la referencia que inicia esta colección de personas 61 00:02:42,439 --> 00:02:44,099 Entonces esto sería una persona 62 00:02:44,099 --> 00:02:45,099 Lo ven aquí, tiene su ID 63 00:02:45,099 --> 00:02:47,159 Este es el mapa de personas 64 00:02:47,159 --> 00:02:50,560 Tenemos el ID del mapa y aquí está la persona 65 00:02:50,560 --> 00:02:52,340 Toda esta información sería relativa a la persona 66 00:02:52,340 --> 00:02:54,759 Yo insisto mucho siempre que se dibujen las cosas 67 00:02:54,759 --> 00:02:57,460 Porque es lo que nos sirve para entender un poquito 68 00:02:57,460 --> 00:02:59,159 Qué es lo que queremos organizar 69 00:02:59,159 --> 00:03:03,319 Entonces esto me parece que representa 70 00:03:03,319 --> 00:03:04,400 Es que no me acuerdo de memoria 71 00:03:04,400 --> 00:03:10,199 Esto representa un mapa de personas 72 00:03:10,199 --> 00:03:12,259 Que tiene un ID y persona 73 00:03:12,259 --> 00:03:13,439 ID y persona 74 00:03:13,439 --> 00:03:16,199 Vale, un linked map, creo recordar 75 00:03:16,199 --> 00:03:17,080 Yo sé que era esto 76 00:03:17,080 --> 00:03:19,479 Pero lo interesante es esto de aquí 77 00:03:19,479 --> 00:03:21,060 Cómo se organiza la información 78 00:03:21,060 --> 00:03:22,280 Entonces tenemos el ID 79 00:03:22,280 --> 00:03:25,240 la parte que almacena la persona 80 00:03:25,240 --> 00:03:27,560 y fíjense que importante es 81 00:03:27,560 --> 00:03:29,879 el dibujar lo que estamos haciendo 82 00:03:29,879 --> 00:03:31,319 miren como almacena cada persona 83 00:03:31,319 --> 00:03:32,960 como almacena los teléfonos 84 00:03:32,960 --> 00:03:35,219 los teléfonos cada persona tiene 85 00:03:35,219 --> 00:03:37,219 aquí esto es una referencia 86 00:03:37,219 --> 00:03:38,460 y tiene un tree 87 00:03:38,460 --> 00:03:40,199 set 88 00:03:40,199 --> 00:03:42,419 una organización de teléfonos 89 00:03:42,419 --> 00:03:44,840 cada teléfono tiene una identificación del teléfono y el número 90 00:03:44,840 --> 00:03:46,819 aquí pondría trabajo y el número 91 00:03:46,819 --> 00:03:48,439 oficina y el número 92 00:03:48,439 --> 00:03:50,219 casa y el número, ¿lo ven? 93 00:03:50,219 --> 00:03:53,199 se van organizando en forma de un tree 94 00:03:53,199 --> 00:03:55,020 pero fíjense que es en composición 95 00:03:55,020 --> 00:03:57,400 cada persona está compuesta 96 00:03:57,400 --> 00:03:59,460 por, compone 97 00:03:59,460 --> 00:04:01,199 internamente, tiene compuesto 98 00:04:01,199 --> 00:04:03,479 internamente una agenda 99 00:04:03,479 --> 00:04:05,139 de teléfonos, ¿vale? esto es lo importante 100 00:04:05,139 --> 00:04:07,500 aquí está la composición, en contraposición 101 00:04:07,500 --> 00:04:09,439 lo que vamos a ver después cuando lo veamos 102 00:04:09,439 --> 00:04:11,340 en herencia, ¿vale? entonces tenemos 103 00:04:11,340 --> 00:04:12,979 este mapa de personas, tenemos el ID 104 00:04:12,979 --> 00:04:15,180 la persona y cada persona tiene 105 00:04:15,180 --> 00:04:17,420 en composición una agenda de teléfonos 106 00:04:17,420 --> 00:04:19,180 ¿vale? fíjense tenemos aquí el 107 00:04:19,180 --> 00:04:21,139 primero, este apuntaría al siguiente 108 00:04:21,139 --> 00:04:23,220 igual aquí tendríamos el que apunta al siguiente 109 00:04:23,220 --> 00:04:25,420 su ID, su persona, su agenda 110 00:04:25,420 --> 00:04:27,339 de teléfonos, esto sería una agenda de teléfonos vacía 111 00:04:27,339 --> 00:04:29,240 este apuntaría al siguiente, al siguiente 112 00:04:29,240 --> 00:04:30,420 y hasta el último 113 00:04:30,420 --> 00:04:33,579 el último en una lista 114 00:04:33,579 --> 00:04:35,399 se termina con un null 115 00:04:35,399 --> 00:04:37,399 ya no hay más, lo que quiere decir que este es el último 116 00:04:37,399 --> 00:04:39,199 aquí estaría la información de la persona y fíjense 117 00:04:39,199 --> 00:04:40,819 que esta persona tiene a su vez 118 00:04:40,819 --> 00:04:43,199 una referencia 119 00:04:43,199 --> 00:04:45,360 que inicia la agenda de teléfonos de esta última 120 00:04:45,360 --> 00:04:46,740 persona, ¿vale? 121 00:04:47,220 --> 00:04:49,100 quiero que entiendan esto, vamos a ver entonces 122 00:04:49,100 --> 00:04:51,639 ahora vamos a ver cómo organizaríamos 123 00:04:51,639 --> 00:04:53,319 los objetos del tipo persona 124 00:04:53,319 --> 00:04:55,879 ¿y por qué mapa y tree? 125 00:04:56,740 --> 00:04:57,639 bueno, pues porque son las 126 00:04:57,639 --> 00:04:59,639 estructuras que se han elegido, esto lo vamos a ver 127 00:04:59,639 --> 00:05:01,319 ahora en el código, se han elegido esas 128 00:05:01,319 --> 00:05:03,699 no nos pedían ninguna en concreto, pues se han elegido 129 00:05:03,699 --> 00:05:04,160 esas dos 130 00:05:04,160 --> 00:05:07,139 entonces miren 131 00:05:07,139 --> 00:05:10,759 miren lo que pasa, lo primero 132 00:05:10,759 --> 00:05:11,980 vamos a 133 00:05:11,980 --> 00:05:14,939 organizar la clase persona 134 00:05:14,939 --> 00:05:17,240 cuando desarrollamos una clase es importante 135 00:05:17,240 --> 00:05:18,800 ya a estas alturas del cuplé 136 00:05:18,800 --> 00:05:21,300 hacer lo que sea una clase completa 137 00:05:21,300 --> 00:05:23,060 es decir, que la clase tiene que tener 138 00:05:23,060 --> 00:05:25,199 un montón de cosas, pues tiene que tener 139 00:05:25,199 --> 00:05:27,480 syssetters, tiene que tener toString, tiene que tener 140 00:05:27,480 --> 00:05:29,699 equals, tiene que tener hashMap 141 00:05:29,699 --> 00:05:31,480 el hashCode, perdón 142 00:05:31,480 --> 00:05:33,860 y por ejemplo, si queremos organizar 143 00:05:33,860 --> 00:05:35,860 cosas que almacenen 144 00:05:35,860 --> 00:05:37,540 personas, pues claro, tenemos que tener 145 00:05:37,540 --> 00:05:39,459 un implements comparable para que 146 00:05:39,459 --> 00:05:40,899 podamos comparar personas y 147 00:05:40,899 --> 00:05:44,160 podemos establecer los criterios de comparación 148 00:05:44,160 --> 00:05:45,300 entonces 149 00:05:45,300 --> 00:05:47,759 la clase personal, ahora la van a ver que es bastante completita 150 00:05:47,759 --> 00:05:50,740 Una persona tiene un ID de persona 151 00:05:50,740 --> 00:05:53,579 Tiene un nombre, así de sencillo 152 00:05:53,579 --> 00:05:54,300 Sin complicar la vida 153 00:05:54,300 --> 00:05:57,100 Y una altura, tiene unos atributos muy simples 154 00:05:57,100 --> 00:05:58,860 Y fíjense lo que tiene 155 00:05:58,860 --> 00:06:01,620 Tengo una agenda de teléfonos 156 00:06:01,620 --> 00:06:03,300 Una agenda de teléfonos 157 00:06:03,300 --> 00:06:05,480 Que se compone de cada elemento de la agenda 158 00:06:05,480 --> 00:06:06,500 Se compone de dos cosas 159 00:06:06,500 --> 00:06:07,959 String, string 160 00:06:07,959 --> 00:06:10,800 El primer string va a ser el identificador del teléfono 161 00:06:10,800 --> 00:06:12,759 Y el segundo va a ser el número de teléfono 162 00:06:12,759 --> 00:06:14,540 Lo almacenamos en forma de string 163 00:06:14,540 --> 00:06:17,240 Porque si, no le busquen 164 00:06:17,240 --> 00:06:30,839 no tiene mayor relevancia y fíjense el tipo base es un shorted map del instanciado para string 165 00:06:30,839 --> 00:06:36,560 string por ejemplo el teléfono de casa pues el 91 tal tal tal tal teléfono móvil pues el 649 166 00:06:37,939 --> 00:06:44,680 esto tiene la ventaja de que nos permitiría meter signos por ejemplo más 34 o más 1 si 167 00:06:44,680 --> 00:06:46,220 Estados Unidos, no sé qué, tal, tal, tal, ¿vale? 168 00:06:46,899 --> 00:06:49,019 Constructor de persona, pues fíjense lo que hacemos con la persona. 169 00:06:49,819 --> 00:06:50,800 Pues le pasamos su identidad, 170 00:06:50,920 --> 00:06:52,620 su nombre, su altura, pin, pin, se lo establecemos 171 00:06:52,620 --> 00:06:54,579 y mire la persona cuando 172 00:06:54,579 --> 00:06:57,019 construimos una persona, mire lo que hacemos con la agenda de teléfonos. 173 00:06:57,680 --> 00:06:58,120 Decimos, oye, 174 00:06:59,100 --> 00:07:00,860 persona, créate, Manolo, ¿vale? 175 00:07:01,319 --> 00:07:03,079 Y de número de identificación 176 00:07:03,079 --> 00:07:04,819 443-7431, 177 00:07:05,360 --> 00:07:06,620 el nombre Manolo Pérez Jiménez, 178 00:07:06,620 --> 00:07:07,959 altura 1,84 179 00:07:07,959 --> 00:07:10,800 y tu agenda de teléfono, 180 00:07:10,939 --> 00:07:12,540 Manolo, que no me esfuerzas a tomar un teléfono, 181 00:07:12,740 --> 00:07:14,579 hacemos que creemos un new tree map 182 00:07:14,579 --> 00:07:16,759 vacío, no tienes todavía teléfonos 183 00:07:16,759 --> 00:07:18,480 pero ya tiene el sitio donde 184 00:07:18,480 --> 00:07:20,259 podemos albergar los teléfonos 185 00:07:20,259 --> 00:07:22,319 esto es súper importante, inicializar 186 00:07:22,319 --> 00:07:24,259 todos los elementos del objeto, ¿vale? 187 00:07:24,259 --> 00:07:26,420 en este caso la agenda, la agenda es un trimath 188 00:07:26,420 --> 00:07:27,800 o sea, está organizado como un trimath 189 00:07:27,800 --> 00:07:32,100 bueno, pues los getter y setter 190 00:07:32,100 --> 00:07:33,839 getter y setter, getter y setter 191 00:07:33,839 --> 00:07:36,220 pasamos el método toString, método muy importante 192 00:07:36,220 --> 00:07:38,040 en todas las clases, para poder transformar 193 00:07:38,040 --> 00:07:39,939 toda la información en una cadena de caracteres 194 00:07:39,939 --> 00:07:42,019 pues aquí le pasamos personas, papapapa 195 00:07:42,019 --> 00:07:43,560 y miren, para la agenda de teléfonos, ¿qué hacemos? 196 00:07:43,560 --> 00:07:45,779 Pues no nos complicamos la asistencia 197 00:07:45,779 --> 00:07:49,079 Para sacar toda la agenda de teléfonos 198 00:07:49,079 --> 00:07:50,279 Decimos, de la agenda de teléfonos 199 00:07:50,279 --> 00:07:52,579 Aplicamos el toString de la agenda de teléfonos 200 00:07:52,579 --> 00:07:54,939 Y nos lo sueltas tal cual 201 00:07:54,939 --> 00:07:56,220 Y miren lo que hago 202 00:07:56,220 --> 00:07:58,040 Este toString de la agenda de teléfonos 203 00:07:58,040 --> 00:07:59,899 Me va a separar los teléfonos por una coma 204 00:07:59,899 --> 00:08:02,139 Pues reemplazo las comas 205 00:08:02,139 --> 00:08:03,740 Al salir la agenda de teléfonos 206 00:08:03,740 --> 00:08:05,360 Reemplazo las comas por tabuladores 207 00:08:05,360 --> 00:08:06,420 Y así me los separa 208 00:08:06,420 --> 00:08:09,279 Un truquito, que hay para cuando lo veamos 209 00:08:09,279 --> 00:08:10,600 Ahora vamos a ver la ejecución y lo vemos 210 00:08:10,600 --> 00:08:12,759 Importante el compareTo 211 00:08:12,759 --> 00:08:14,100 necesitamos un compareTo 212 00:08:14,100 --> 00:08:16,660 porque arriba 213 00:08:16,660 --> 00:08:18,540 teníamos que nuestra clase 214 00:08:18,540 --> 00:08:20,040 implementa comparable 215 00:08:20,040 --> 00:08:21,620 entonces tengo que implementar compareTo 216 00:08:21,620 --> 00:08:24,040 y implemento el equals 217 00:08:24,040 --> 00:08:25,339 y implemento el hashCode 218 00:08:25,339 --> 00:08:30,500 y nada más 219 00:08:30,500 --> 00:08:33,120 y luego, si quiero encapsular 220 00:08:33,120 --> 00:08:34,960 la grabación y adquisición de teléfonos 221 00:08:34,960 --> 00:08:35,740 miren lo que hago 222 00:08:35,740 --> 00:08:38,360 puedo añadir teléfono 223 00:08:38,360 --> 00:08:40,399 y puedo obtener teléfono de una persona 224 00:08:40,399 --> 00:08:41,899 yo puedo añadir un teléfono, le digo 225 00:08:41,899 --> 00:08:43,220 Oye, te voy a pasar el teléfono 226 00:08:43,220 --> 00:08:46,399 Pues vas a tener el teléfono de clave oficina 227 00:08:46,399 --> 00:08:49,820 Y de número 4413373 228 00:08:49,820 --> 00:08:51,139 Pues miren lo que hacemos 229 00:08:51,139 --> 00:08:52,179 Para poner un teléfono 230 00:08:52,179 --> 00:08:54,179 Acudo a la agenda y le digo 231 00:08:54,179 --> 00:08:55,539 Put clave teléfono 232 00:08:55,539 --> 00:08:56,799 Y ya está, ya se ha metido el teléfono 233 00:08:56,799 --> 00:08:58,200 Y me despreocupo de todo, fíjense 234 00:08:58,200 --> 00:09:00,100 Qué fantásticas son las colecciones 235 00:09:00,100 --> 00:09:01,960 Con qué poquito hacemos cuánto 236 00:09:01,960 --> 00:09:04,240 Esto me lo organiza por clave 237 00:09:04,240 --> 00:09:06,639 Está ordenado ya por este campo 238 00:09:06,639 --> 00:09:07,600 No sé qué, tal, tal, tal 239 00:09:07,600 --> 00:09:09,399 Es fantástico, es un trip 240 00:09:09,399 --> 00:09:11,860 Es un trimap, ¿de acuerdo? 241 00:09:11,899 --> 00:09:15,740 y si yo quiero obtener un teléfono, digo pues dame el teléfono de casa 242 00:09:15,740 --> 00:09:19,159 de Manolo, pues digo Manolo.getTeléfono 243 00:09:19,159 --> 00:09:21,840 casa, ¿qué me devuelve? me devuelve 244 00:09:21,840 --> 00:09:24,679 el elemento cuyo teléfono 245 00:09:24,679 --> 00:09:27,639 ¿vale? tiene clave casa 246 00:09:27,639 --> 00:09:30,220 porque yo le estoy diciendo que obtenme el que tiene clave casa 247 00:09:30,220 --> 00:09:33,320 y él me devuelve el teléfono correspondiente 248 00:09:33,320 --> 00:09:36,320 ¿vale? para eso es un mapa 249 00:09:36,320 --> 00:09:38,399 ¿vale? y un trimón 250 00:09:38,399 --> 00:09:40,799 pues esto sería la clase 251 00:09:40,799 --> 00:09:43,220 persona, ahí la tienen 252 00:09:43,220 --> 00:09:45,000 entonces, ¿cómo la utilizamos? 253 00:09:45,440 --> 00:09:47,639 pues miren, por ejemplo, les voy a enseñar la salida del programa 254 00:09:47,639 --> 00:09:48,740 para que lo vean un poquito 255 00:09:48,740 --> 00:09:50,179 qué es lo que vamos a hacer 256 00:09:50,179 --> 00:09:53,320 ¿ven la salida? ¿aquí ven la salida? 257 00:09:55,320 --> 00:09:55,799 hola 258 00:09:55,799 --> 00:09:58,259 qué bajo la oigo, Sara 259 00:09:58,259 --> 00:09:59,919 se ve, se ve 260 00:09:59,919 --> 00:10:01,799 a ver, ¿quién es el que ha hablado ahí? 261 00:10:01,919 --> 00:10:03,240 ¿quién ha dicho se ve, se ve? 262 00:10:04,639 --> 00:10:05,440 yo, Antonio 263 00:10:05,440 --> 00:10:07,840 pues Antonio, hable usted, macho, porque le oigo mucho mejor 264 00:10:08,559 --> 00:10:09,159 Mejor, mejor. 265 00:10:09,860 --> 00:10:10,440 Antonio, está bien. 266 00:10:10,440 --> 00:10:11,039 Como quieras. 267 00:10:11,360 --> 00:10:12,200 Sí, sí, estoy aquí. 268 00:10:12,279 --> 00:10:14,340 Dígame algo de vez en cuando para no estar agobiado. 269 00:10:14,440 --> 00:10:17,299 Es que tengo una sensación de que estás hablando solo aquí para las teclas. 270 00:10:18,539 --> 00:10:19,740 Me agobio un poco. 271 00:10:22,100 --> 00:10:23,379 Vale, miren, esto es la salida del programa. 272 00:10:23,460 --> 00:10:24,200 ¿Ven la salida del programa? 273 00:10:25,440 --> 00:10:25,759 Sí. 274 00:10:26,120 --> 00:10:28,679 A ver, esto es la salida del programa, pero esto está en HTML. 275 00:10:29,679 --> 00:10:32,899 Esto sería texto, pero yo le paso a HTML para que vean el resaltado sintáctico. 276 00:10:32,980 --> 00:10:33,700 A veces se observa. 277 00:10:34,159 --> 00:10:36,299 Pues bien, esto es persona número uno. 278 00:10:36,299 --> 00:10:47,059 Sí, hay aquí algo de ruido a fondo en casa. 279 00:10:49,539 --> 00:10:51,419 Hoy nos damos con la convicción, ¿eh? 280 00:10:52,360 --> 00:10:54,539 No, no, no nos damos bien con la convicción. 281 00:10:54,539 --> 00:11:02,289 No sé si lo vamos a dejar hoy o qué, porque no sé qué pasa hoy que no sale esto, ¿eh? 282 00:11:02,830 --> 00:11:03,690 Hay días que no hay manera. 283 00:11:05,269 --> 00:11:06,330 Bueno, esta es la ejecución del programa. 284 00:11:06,330 --> 00:11:08,169 Entonces sale la colección de personas, la ven aquí 285 00:11:08,169 --> 00:11:08,909 Persona 1 286 00:11:08,909 --> 00:11:12,370 Esto es la forma rápida de salir y esto es una forma 287 00:11:12,370 --> 00:11:13,269 Un poco más ordenada 288 00:11:13,269 --> 00:11:16,590 Una salida del almacén a lo bestia 289 00:11:16,590 --> 00:11:17,809 Sácalo todo ahí 290 00:11:17,809 --> 00:11:19,809 Esta es una salida un poquito ordenada, lo ven aquí 291 00:11:19,809 --> 00:11:22,309 Lo mismo, pero como ven 292 00:11:22,309 --> 00:11:24,149 Un poquitín más ordenado, con un forage 293 00:11:24,149 --> 00:11:26,850 Es el de la persona 1 294 00:11:26,850 --> 00:11:28,429 Su ID, su nombre, Juan 295 00:11:28,429 --> 00:11:30,690 Altura, tanto, los teléfonos de Juan 296 00:11:30,690 --> 00:11:31,429 Este y este, vale 297 00:11:31,429 --> 00:11:33,470 Miren, este, la persona 2 298 00:11:33,470 --> 00:11:35,350 La persona 2 299 00:11:35,350 --> 00:11:37,509 Pues tiene ID 180 300 00:11:37,509 --> 00:11:39,289 Nombre, Luis, altura 1,97 301 00:11:39,289 --> 00:11:40,169 Este es un gigante 302 00:11:40,169 --> 00:11:41,570 Teléfonos, no tiene teléfonos 303 00:11:41,570 --> 00:11:45,169 La persona 3, María 304 00:11:45,169 --> 00:11:47,149 Altura, tanto, pues teléfonos 305 00:11:47,149 --> 00:11:48,009 El móvil, no sé qué 306 00:11:48,009 --> 00:11:49,710 La persona 4, Ana 307 00:11:49,710 --> 00:11:52,070 La persona 5, Pepe 308 00:11:52,070 --> 00:11:53,889 Altura y tiene estos dos teléfonos 309 00:11:53,889 --> 00:11:54,389 ¿Lo ven ahí? 310 00:11:55,330 --> 00:11:57,690 Y luego además en el main van a ver que además digo 311 00:11:57,690 --> 00:11:59,269 Oye, sácame los teléfonos de Juan 312 00:11:59,269 --> 00:12:01,529 Pues mira, de casa este y de trabajo no tiene 313 00:12:01,529 --> 00:12:03,809 ¿Lo ven ahí, no? 314 00:12:03,809 --> 00:12:07,190 lo tiene el programa para que lo vean 315 00:12:07,190 --> 00:12:08,710 ustedes con detenimiento, yo quiero 316 00:12:08,710 --> 00:12:10,570 comentar lo más relevante 317 00:12:10,570 --> 00:12:12,610 una pregunta 318 00:12:12,610 --> 00:12:13,730 ¿cómo? 319 00:12:14,529 --> 00:12:15,950 una pregunta decía, perdona 320 00:12:15,950 --> 00:12:18,750 en la salida que acabas de enseñar 321 00:12:18,750 --> 00:12:21,210 cuando ponía trabajo nul es porque hemos dado 322 00:12:21,210 --> 00:12:23,090 de alta el de trabajo pero vacío 323 00:12:23,090 --> 00:12:24,710 porque si no no saldría ni trabajo 324 00:12:24,710 --> 00:12:25,929 me imagino que sí, creo que es por eso 325 00:12:25,929 --> 00:12:29,289 ahora lo veremos en el main 326 00:12:29,289 --> 00:12:30,429 esto es lo que sale del main 327 00:12:30,429 --> 00:12:33,190 de todas formas ustedes 328 00:12:33,190 --> 00:12:35,269 cuando lo prueben en su casa lo van a obtener 329 00:12:35,269 --> 00:12:36,389 todo esto mismo 330 00:12:36,389 --> 00:12:39,330 vale, nada 331 00:12:39,330 --> 00:12:41,610 no hay problema, también tienen el dibujo 332 00:12:41,610 --> 00:12:43,190 y todo, tienen todo, el dibujo y todo 333 00:12:43,190 --> 00:12:45,090 ahí lo tienen todo, vale 334 00:12:45,090 --> 00:12:46,629 y por último vamos a ver 335 00:12:46,629 --> 00:12:49,230 el programa principal, fíjense 336 00:12:49,230 --> 00:12:51,549 lo que ocurre cuando ya tenemos estructuras 337 00:12:51,549 --> 00:12:52,929 de datos un poquito más elaboradas 338 00:12:52,929 --> 00:12:55,490 con muy poco de código 339 00:12:55,490 --> 00:12:57,629 se hace muchísimo, eso es lo que sucede aquí 340 00:12:57,629 --> 00:12:59,529 el código se implementa en las 341 00:12:59,529 --> 00:13:01,210 clases, se implementa 342 00:13:01,210 --> 00:13:07,610 En las clases, las estructuras de datos y tal, se cogen y con muy poquito luego se hace un montón. 343 00:13:07,750 --> 00:13:08,529 Entonces, fíjense lo que hacemos. 344 00:13:10,190 --> 00:13:12,610 Vamos a implementar un almacén de personas, ¿vale? 345 00:13:13,509 --> 00:13:16,809 Este almacén de personas es un HashMap, ¿vale? 346 00:13:16,809 --> 00:13:23,629 O sea, es un mapa que nos hace parejas Integer, Persona, Integer, Persona, Integer, Persona. 347 00:13:23,669 --> 00:13:26,029 Miren, Integer 1, Persona, toda esta información. 348 00:13:26,330 --> 00:13:27,809 Integer 2, Persona, toda esta información. 349 00:13:28,110 --> 00:13:29,490 Integer 3, Persona, toda esta información. 350 00:13:29,490 --> 00:13:35,110 en taller cuatro personas de información lo ven ahí no es un tipo map vale en este caso 351 00:13:37,309 --> 00:13:42,230 y se llama almacén de personas lo que hacemos decimos hoy almacén de personas vamos a meter 352 00:13:42,230 --> 00:13:51,429 una persona pues putt la persona de interior clave uno le vamos a dar de alta a esa persona 353 00:13:51,429 --> 00:13:57,009 en este momento la damos de alta en este instante decimos new persona y esa persona va a tener el 354 00:13:57,009 --> 00:14:03,450 El identificador interno como persona tiene el identificador 100, se llama Juan y mide 1,65. 355 00:14:03,809 --> 00:14:04,330 Vale, ya está. 356 00:14:05,289 --> 00:14:05,429 ¿Sí? 357 00:14:06,110 --> 00:14:07,710 Y fíjense lo siguiente lo que hacemos. 358 00:14:09,070 --> 00:14:14,169 Del almacén de personas obtengo la que tiene clave 1, que es la que acabo de dar de alta. 359 00:14:14,269 --> 00:14:14,590 ¿Lo ven aquí? 360 00:14:15,029 --> 00:14:15,750 Sería este, Juan. 361 00:14:16,690 --> 00:14:25,029 Y a esa persona le añado un teléfono de características casa con este número de teléfono. 362 00:14:25,029 --> 00:14:27,409 Entonces obtengo a la persona 1 363 00:14:27,409 --> 00:14:29,450 Que tiene clave 1 dentro del mapa 364 00:14:29,450 --> 00:14:31,389 Y le añado el teléfono 365 00:14:31,389 --> 00:14:32,909 Con las características 366 00:14:32,909 --> 00:14:35,070 Identificador casa, número de teléfono este de aquí 367 00:14:35,070 --> 00:14:36,750 Y le añado otro más 368 00:14:36,750 --> 00:14:40,029 Y Juan tiene otro teléfono 369 00:14:40,029 --> 00:14:41,169 De identificador Pepe 370 00:14:41,169 --> 00:14:43,289 Y el número de teléfono de Pepe 371 00:14:43,289 --> 00:14:45,129 Si se fijan, yo le he hecho aposta a esto 372 00:14:45,129 --> 00:14:46,769 Pepe, que es este de aquí 373 00:14:46,769 --> 00:14:48,509 Es la persona que tiene clave 5 374 00:14:48,509 --> 00:14:50,789 Pepe, uno de los teléfonos que le pongo de Pepe 375 00:14:50,789 --> 00:14:52,529 Es el de su casa, que es este de aquí 376 00:14:52,529 --> 00:14:53,730 Bueno, sería el móvil, pero bueno 377 00:14:53,730 --> 00:14:55,970 se me ha ido la pinza 378 00:14:55,970 --> 00:14:58,029 ¿vale? pero Juan 379 00:14:58,029 --> 00:15:00,169 tiene guardado también el teléfono de Pepe 380 00:15:00,169 --> 00:15:01,850 ¿lo ven aquí, no? ¿sí? 381 00:15:03,190 --> 00:15:03,549 sí 382 00:15:03,549 --> 00:15:06,049 vale, fantástico, entonces fíjense 383 00:15:06,049 --> 00:15:08,570 con qué poquito hacemos tanto, estamos gestionando 384 00:15:08,570 --> 00:15:10,210 todo ese gráfico que hemos visto 385 00:15:10,210 --> 00:15:12,110 antes, que van las personas, ese mapa 386 00:15:12,110 --> 00:15:13,169 de personas enlazado 387 00:15:13,169 --> 00:15:15,730 ¿vale? se va enlazando uno con otro 388 00:15:15,730 --> 00:15:17,610 y ahí lo tenemos 389 00:15:17,610 --> 00:15:20,090 y se enlaza uno con otro y ahí los tenemos 390 00:15:20,090 --> 00:15:22,269 ¿de acuerdo? entonces, miren a continuación 391 00:15:22,269 --> 00:15:24,350 lo que hago? Pues hago la salida 392 00:15:24,350 --> 00:15:26,309 bruta del HashMap. Digo, almacén 393 00:15:26,309 --> 00:15:28,370 personas, venga, entero. Pues almacén 394 00:15:28,370 --> 00:15:30,529 personas tiene un toString, ¿vale? Un HashMap 395 00:15:30,529 --> 00:15:32,389 tiene un toString implementado, ¿vale? 396 00:15:32,389 --> 00:15:34,250 Que yo no he tenido que implementarlo, ya me lo tiene 397 00:15:34,250 --> 00:15:36,269 la estructura. Y claro, ¿qué me sale? Me sale este 398 00:15:36,269 --> 00:15:38,409 chorizo de aquí, esta llave desde aquí 399 00:15:38,409 --> 00:15:39,830 hasta que se cierre, que a ver si la encuentro. 400 00:15:41,230 --> 00:15:42,409 Esta. Todo esto. 401 00:15:43,629 --> 00:15:44,330 Esa es la salida 402 00:15:44,330 --> 00:15:46,230 bruta de ese HashMap. 403 00:15:46,450 --> 00:15:48,070 Un toString del HashMap. Claro, esto es una 404 00:15:48,070 --> 00:15:50,269 guarrería, ¿no? Esto es un poco... 405 00:15:50,269 --> 00:15:52,269 No es la forma, ¿no? 406 00:15:52,269 --> 00:15:54,289 de... ¿Hola? ¿Qué ha pasado? 407 00:15:54,889 --> 00:15:55,769 Se oye, se oye. 408 00:15:56,169 --> 00:15:57,169 ¿Pero qué ha pasado? ¿Que ha sonado por ahí? 409 00:15:57,730 --> 00:15:59,970 Se ha dejado de grabar, yo creo, Andrés. ¿Ah, sí? 410 00:16:00,529 --> 00:16:01,289 ¿Por qué? ¿No? 411 00:16:02,029 --> 00:16:03,509 No, no, está arriba. Está grabando. 412 00:16:03,970 --> 00:16:06,090 Está arriba el puntito rojo. Sí, sí, está grabando 413 00:16:06,090 --> 00:16:07,250 perfectamente, sí, sí, no sé. 414 00:16:07,970 --> 00:16:10,049 ¿Estarán pidiendo acceso o algo? ¿Un participante? 415 00:16:10,049 --> 00:16:12,389 No sé. ¿Que hay 416 00:16:12,389 --> 00:16:13,049 solo dos personas? 417 00:16:14,509 --> 00:16:16,230 Diez, no por aquí. A ver, un momento. 418 00:16:17,389 --> 00:16:18,730 Ah, joder, es que de verdad... 419 00:16:18,730 --> 00:16:19,730 Oye, que mal sale aquí en Windows. 420 00:16:19,769 --> 00:16:21,669 Diez participantes. Sí, sí, sí, vale, vale. 421 00:16:21,669 --> 00:16:24,029 bueno, bueno, lo veréis, vale, parece que sí 422 00:16:24,029 --> 00:16:25,610 no sé de qué suena un sonido, no sé de qué será 423 00:16:25,610 --> 00:16:28,129 venga, entonces 424 00:16:28,129 --> 00:16:29,269 continuamos aquí 425 00:16:29,269 --> 00:16:32,129 me he perdido 426 00:16:32,129 --> 00:16:33,769 esta es la salida 427 00:16:33,769 --> 00:16:34,610 directa, ¿no? 428 00:16:36,029 --> 00:16:37,990 claro, así, esto es una guarrería 429 00:16:37,990 --> 00:16:39,990 entonces, fíjense la otra salida con un 430 00:16:39,990 --> 00:16:41,909 for each, y fíjense que además 431 00:16:41,909 --> 00:16:43,830 hace uso del elemento 432 00:16:43,830 --> 00:16:45,950 entry este que se usa para los mapas 433 00:16:45,950 --> 00:16:47,870 porque claro, nosotros no podemos usar un 434 00:16:47,870 --> 00:16:49,730 for, recuerden que no se pueden usar los for each 435 00:16:49,730 --> 00:16:51,610 en los mapas, no sé si se acuerdan de esto 436 00:16:51,610 --> 00:16:54,629 perdón, en los set 437 00:16:54,629 --> 00:16:55,289 en los set 438 00:16:55,289 --> 00:16:57,750 entonces, perdón, transformamos 439 00:16:57,750 --> 00:17:00,490 el almacén de personas que es un mapa 440 00:17:00,490 --> 00:17:01,889 lo transformamos en un set 441 00:17:01,889 --> 00:17:03,210 ¿de acuerdo? 442 00:17:03,889 --> 00:17:06,150 y de este set lo tomamos como entry 443 00:17:06,150 --> 00:17:08,269 y si se lo asignamos a esta estructura 444 00:17:08,269 --> 00:17:09,769 que tenemos aquí, que es mi set 445 00:17:09,769 --> 00:17:12,250 ¿de acuerdo? y entonces 446 00:17:12,250 --> 00:17:13,009 ¿qué va a ocurrir? 447 00:17:13,809 --> 00:17:15,650 voy a obtener uno a uno 448 00:17:15,650 --> 00:17:18,430 voy a ir obteniendo cada uno de ellos y los voy visualizando 449 00:17:18,430 --> 00:17:19,710 aquí en este for, ¿lo ven? 450 00:17:19,710 --> 00:17:36,029 Mire, aquí lo tenemos. Y ahí visualizo uno a uno de forma ordenada. ¿Lo ven ahí? Sale el primero, luego sale el segundo. En cada vuelta del bucle sale uno. Saldría el primero, saldría el segundo. Este es el entry, entry, entry, entry, entry. 451 00:17:36,029 --> 00:17:42,650 Me sale clave, valor, clave, valor, clave, clave, valor, clave, valor. 452 00:17:42,690 --> 00:17:45,349 Lo ven aquí, clave, valor. Estas son las entries. 453 00:17:45,829 --> 00:17:51,069 Esto lo recorre el bucle y me sale de forma ordenada la clave igual y a su valor, persona, tal, tal, tal. 454 00:17:51,410 --> 00:17:54,349 Y en la persona, en tu string de persona, fíjense lo que hemos hecho antes. 455 00:17:54,950 --> 00:18:00,390 Si se acuerdan, hemos cambiado, separarlo por comas, me lo ha cambiado por separarlo por tabuladores. 456 00:18:00,490 --> 00:18:03,869 Ven que de aquí al siguiente teléfono lo que hay ahí es un tabulador, ¿lo ven ahí? 457 00:18:03,869 --> 00:18:06,150 Sí, sí se ve 458 00:18:06,150 --> 00:18:07,690 Una coma, pero como tenía el replay 459 00:18:07,690 --> 00:18:09,450 ¿Se acuerdan? De las comas 460 00:18:09,450 --> 00:18:11,170 Por Backslash T, que es un tabulador 461 00:18:11,170 --> 00:18:12,089 Me lo he cambiado por tabulador 462 00:18:12,089 --> 00:18:15,049 Y sale una cosita de forma mucho más ordenada y simpática 463 00:18:15,049 --> 00:18:17,430 Que no el chorizo este de aquí arriba 464 00:18:17,430 --> 00:18:18,670 Que esto no hay Dios que se lea aquí nada 465 00:18:18,670 --> 00:18:21,029 Esto es muy complicado 466 00:18:21,029 --> 00:18:23,890 Y si practican también 467 00:18:23,890 --> 00:18:24,789 El tema del entry 468 00:18:24,789 --> 00:18:27,690 ¿Lo ven ahí? Vale 469 00:18:27,690 --> 00:18:29,950 Y luego, fíjense, teléfonos de Juan 470 00:18:29,950 --> 00:18:31,569 Pues dices, oye 471 00:18:31,569 --> 00:18:33,470 Vamos a sacar los teléfonos de Juan 472 00:18:33,470 --> 00:18:35,910 Quiero que me saques del almacén de personas 473 00:18:35,910 --> 00:18:37,349 Uno, que es Juan 474 00:18:37,349 --> 00:18:39,329 Porque yo sé que Juan es el uno 475 00:18:39,329 --> 00:18:41,950 Quiero que tengas el teléfono que se llama Casa 476 00:18:41,950 --> 00:18:46,119 Vamos aquí arriba, Juan hemos metido uno 477 00:18:46,119 --> 00:18:47,500 Que se llama Casa, lo tiene, ¿no? ¿Lo ven aquí? 478 00:18:48,220 --> 00:18:48,579 ¿Lo ven ahí? 479 00:18:49,839 --> 00:18:51,759 Encuentra que Casa encuentra una ocurrencia 480 00:18:51,759 --> 00:18:53,839 Entonces me devuelve un número de teléfono 481 00:18:53,839 --> 00:18:54,900 Y es lo que yo visualizo 482 00:18:54,900 --> 00:18:57,480 Y se concatena con Casa 483 00:18:57,480 --> 00:19:00,039 Y a continuación le digo, oye, ¿y me traes también uno 484 00:19:00,039 --> 00:19:01,920 Que se llame Trabajo? Pues es que resulta que 485 00:19:01,920 --> 00:19:03,900 Juan, si se fijan aquí, no tiene 486 00:19:03,900 --> 00:19:08,960 dado de alta un teléfono se me trabajó por esa razón es por lo que me ha salido un nulo si 487 00:19:08,960 --> 00:19:15,579 hubiera sacado trabajo con el get de 5 hubiera obtenido este número de teléfono de aquí pero 488 00:19:15,579 --> 00:19:25,019 el get de uno que es juan no tiene un teléfono de identificador trabajo lo ven aquí sí sí entonces 489 00:19:25,019 --> 00:19:31,160 fíjense la secuencia es del almacén de personas obtengo el primer elemento que obtengo yo de aquí 490 00:19:31,160 --> 00:19:32,900 Perdón, el primer elemento no 491 00:19:32,900 --> 00:19:35,119 El elemento de clave 1 492 00:19:35,119 --> 00:19:37,039 Que tengo yo de aquí 493 00:19:37,039 --> 00:19:38,859 Un objeto del tipo persona 494 00:19:38,859 --> 00:19:41,019 Ese objeto del tipo persona, punto 495 00:19:41,019 --> 00:19:42,440 Que es teléfono casa 496 00:19:42,440 --> 00:19:45,019 Este que es teléfono casa 497 00:19:45,019 --> 00:19:46,279 Lo que hace es que llama 498 00:19:46,279 --> 00:19:49,400 Al objeto, este objeto persona 499 00:19:49,400 --> 00:19:51,660 Llama a su tree 500 00:19:51,660 --> 00:19:53,220 De teléfonos, a su árbol 501 00:19:53,220 --> 00:19:54,500 A su estructura árbol de teléfonos 502 00:19:54,500 --> 00:19:57,859 Y obtiene el teléfono cuya clave es casa 503 00:19:57,859 --> 00:19:59,339 Si lo encuentra me devuelve el número 504 00:19:59,339 --> 00:20:00,700 Y si no me devuelve el número, ya está 505 00:20:00,700 --> 00:20:03,039 Entonces, es lo que les digo 506 00:20:03,039 --> 00:20:05,359 Una vez que se entiende bien todo esto 507 00:20:05,359 --> 00:20:07,680 Con muy poco, fíjense con cuántas líneas de código 508 00:20:07,680 --> 00:20:09,359 Que además, si se fijan un poco 509 00:20:09,359 --> 00:20:10,900 La mayoría es dar de alta las cosas 510 00:20:10,900 --> 00:20:13,019 Se dan cuenta, ¿no? 511 00:20:13,660 --> 00:20:13,900 Con 512 00:20:13,900 --> 00:20:15,660 Con 513 00:20:15,660 --> 00:20:19,039 Con qué poca cantidad de código hago tanto 514 00:20:19,039 --> 00:20:20,140 Esto es una gestión 515 00:20:20,140 --> 00:20:22,299 De una agenda de teléfonos 516 00:20:22,299 --> 00:20:24,599 No es la mejor del mundo 517 00:20:24,599 --> 00:20:25,920 Pero es suficiente, ¿vale? 518 00:20:26,380 --> 00:20:28,940 Y un poco lo que se pretende es 519 00:20:28,940 --> 00:20:30,519 Ilustrar un poquito 520 00:20:30,519 --> 00:20:33,380 todos estos elementos que venimos viendo 521 00:20:33,380 --> 00:20:34,460 de los capítulos anteriores. 522 00:20:35,000 --> 00:20:36,599 Por eso les he querido repasar un poquito esto. 523 00:20:37,220 --> 00:20:38,579 Me ha sentido muy, muy interesante. 524 00:20:39,960 --> 00:20:40,140 Vale. 525 00:20:41,539 --> 00:20:43,160 Y entonces, por eso ya les digo que lo tienen 526 00:20:43,160 --> 00:20:44,019 todo, todo, todo. 527 00:20:44,019 --> 00:20:45,680 Y entonces, ¿en qué consiste 528 00:20:45,680 --> 00:20:48,059 el Persona Teléfonos 3? 529 00:20:48,880 --> 00:20:49,980 Pues consiste en lo siguiente. 530 00:20:50,279 --> 00:20:50,960 Esto es muy interesante. 531 00:20:51,660 --> 00:20:52,960 Aquí se ha hecho en composición. 532 00:20:53,119 --> 00:20:55,619 Una persona está en composición 533 00:20:55,619 --> 00:20:56,700 con la agenda de teléfonos. 534 00:20:56,900 --> 00:20:58,960 Y aquí, la agenda de teléfonos 535 00:20:58,960 --> 00:21:01,819 está entre una relación de herencia 536 00:21:01,819 --> 00:21:02,420 con la persona. 537 00:21:02,960 --> 00:21:04,359 Una persona hereda 538 00:21:04,359 --> 00:21:07,740 una agenda de teléfono. 539 00:21:08,180 --> 00:21:09,640 Se lo voy a mostrar esquemáticamente 540 00:21:09,640 --> 00:21:10,700 primero para que lo entiendan. 541 00:21:11,099 --> 00:21:12,859 A diferencia de antes, si se acuerdan antes, 542 00:21:12,859 --> 00:21:14,980 voy a sacar los dos para que vean la diferencia 543 00:21:14,980 --> 00:21:16,500 de uno por otro. Esto se ve muy bien 544 00:21:16,500 --> 00:21:17,779 dejándolo en papel siempre. 545 00:21:18,539 --> 00:21:21,000 Una persona está compuesta 546 00:21:21,000 --> 00:21:22,799 por una agenda de teléfono 547 00:21:22,799 --> 00:21:24,660 entonces tengo una referencia a una agenda de teléfono 548 00:21:24,660 --> 00:21:25,720 y está fuera de la persona. 549 00:21:26,680 --> 00:21:28,700 Bueno, pues si es en herencia, ¿qué es lo que ocurre? 550 00:21:28,960 --> 00:21:31,079 la situación es diferente 551 00:21:31,079 --> 00:21:34,180 este es el mapa, el que tenía el ID y la persona 552 00:21:34,180 --> 00:21:35,960 aquí estaría la persona y esta es la parte del ID 553 00:21:35,960 --> 00:21:38,259 entonces miren, esta es la persona 554 00:21:38,259 --> 00:21:39,680 la persona hereda 555 00:21:39,680 --> 00:21:42,200 la agenda de teléfonos, la agenda de teléfonos ya no está 556 00:21:42,200 --> 00:21:44,359 por fuera, no tengo una referencia 557 00:21:44,359 --> 00:21:46,299 que me permita acceder a la agenda de teléfonos 558 00:21:46,299 --> 00:21:48,400 la agenda de teléfonos pertenece 559 00:21:48,400 --> 00:21:50,339 a la persona, la persona hereda de agenda 560 00:21:50,339 --> 00:21:52,279 de teléfonos, vamos a ver 561 00:21:52,279 --> 00:21:53,519 ahora en el código esto como se plasma 562 00:21:53,519 --> 00:21:54,720 ¿me van siguiendo? 563 00:21:55,960 --> 00:21:58,480 vale, vamos a ver estructuralmente 564 00:21:58,480 --> 00:22:00,339 esto, ¿cómo se plasma? Pues esto, donde lo voy a 565 00:22:00,339 --> 00:22:01,819 anotar muchísimo, 566 00:22:02,299 --> 00:22:03,799 precisamente es en la clase Persona. 567 00:22:04,900 --> 00:22:06,420 Aquí está, aquí. Pues vamos a 568 00:22:06,420 --> 00:22:08,619 ver la clase Persona, cómo definir a la clase Persona 569 00:22:08,619 --> 00:22:10,259 de acuerdo a lo que me han pedido. 570 00:22:10,339 --> 00:22:11,160 Claro, evidentemente, 571 00:22:12,740 --> 00:22:14,259 claro, yo tengo que ajustar, 572 00:22:14,599 --> 00:22:16,240 tengo que ajustar, es que me está comiendo 573 00:22:16,240 --> 00:22:18,319 esto, perdonen. ¿Lo siguen 574 00:22:18,319 --> 00:22:20,220 viendo bien? Es que he tenido que reducir la ventana. 575 00:22:20,279 --> 00:22:22,279 Sí, sí, se ve bien, se ve bien. Pues le he tenido que reducir 576 00:22:22,279 --> 00:22:24,359 la ventana en el browser porque me estaba comiendo el WebEx 577 00:22:24,359 --> 00:22:25,980 este, la 578 00:22:25,980 --> 00:22:27,500 ventana y no veía bien. 579 00:22:28,480 --> 00:22:34,119 Entonces, fíjense como ahora cambia radicalmente 580 00:22:34,119 --> 00:22:35,240 La definición de la clase persona 581 00:22:35,240 --> 00:22:36,779 Miren lo que sucede con la persona 582 00:22:36,779 --> 00:22:39,980 Una persona implementa Comparable para poder comparar personas 583 00:22:39,980 --> 00:22:41,980 Pero, fíjense 584 00:22:41,980 --> 00:22:43,140 Hereda 585 00:22:43,140 --> 00:22:45,200 Un trimap de StringString 586 00:22:45,200 --> 00:22:49,700 Es decir, la persona 587 00:22:49,700 --> 00:22:51,579 Hereda de la agenda de teléfonos 588 00:22:51,579 --> 00:22:55,259 Un objeto por el hecho de ser una persona 589 00:22:55,259 --> 00:22:57,539 Incorpora toda la funcionalidad 590 00:22:57,539 --> 00:22:58,400 De la agenda de teléfonos 591 00:22:58,400 --> 00:23:00,640 ¿Sí? 592 00:23:02,000 --> 00:23:03,339 ¿Ven la diferencia con antes, verdad? 593 00:23:03,480 --> 00:23:05,319 Antes teníamos un atributo 594 00:23:05,319 --> 00:23:07,940 que me daba acceso a la agenda de teléfonos. 595 00:23:09,079 --> 00:23:11,079 Ahora no, ahora heredo de ella. 596 00:23:11,200 --> 00:23:13,220 Por eso ahora es en herencia y antes en composición. 597 00:23:14,500 --> 00:23:15,359 Entonces miren lo que sucede. 598 00:23:15,960 --> 00:23:18,160 Cuando yo digo a una persona, pues miren, 599 00:23:19,359 --> 00:23:22,380 le pongo su persona, bla, bla, bla, 600 00:23:22,500 --> 00:23:23,740 y miren lo que hago, llamo a super, 601 00:23:23,960 --> 00:23:25,579 llamo a su clase base 602 00:23:25,579 --> 00:23:28,220 y sin parámetros, es decir, 603 00:23:28,420 --> 00:23:30,359 inicializa la agenda de teléfonos. 604 00:23:30,359 --> 00:23:32,720 esto es la llamada del constructor de la clase padre 605 00:23:32,720 --> 00:23:33,319 de TRIMAP 606 00:23:33,319 --> 00:23:36,799 cuidado que la clase padre no es TRIMAP 607 00:23:36,799 --> 00:23:39,039 la clase padre es TRIMAP 608 00:23:39,039 --> 00:23:41,019 implementado en un 609 00:23:41,019 --> 00:23:41,700 string string 610 00:23:41,700 --> 00:23:43,700 esa es la pronuncia completa 611 00:23:43,700 --> 00:23:45,960 es un genérico, recuerden 612 00:23:45,960 --> 00:23:48,079 es un TRIMAP para string string 613 00:23:48,079 --> 00:23:50,240 eso es 614 00:23:50,240 --> 00:23:50,900 ¿no me oyen? 615 00:23:52,099 --> 00:23:53,460 ¿no me oyen? ¿hola? 616 00:23:53,740 --> 00:23:54,619 si, si, si se oye 617 00:23:54,619 --> 00:23:58,039 vaya día que llevamos hoy 618 00:23:58,039 --> 00:24:00,279 está curioso 619 00:24:00,279 --> 00:24:07,119 bueno porque con porque el comparable si luego no comparamos nada porque yo les voy a pedir en 620 00:24:07,119 --> 00:24:11,619 muchas ocasiones que hagan una clase completa y si se pide una clase completa tiene que ir toda 621 00:24:11,619 --> 00:24:18,880 la información que será una clase para desarrollar lo que sea con esta clase y luego ordenar una 622 00:24:18,880 --> 00:24:23,380 colección de personas necesitar tener una comparación por defecto una algo que permita 623 00:24:23,380 --> 00:24:28,519 ordenar que me mira comparar los objetos de la clase persona igual que porque si no lo voy a 624 00:24:28,519 --> 00:24:36,619 utilizar una clase completa y que todos los elementos necesarios para el desarrollo de 625 00:24:36,619 --> 00:24:42,319 otros programas con esta que es verdad que no lo vamos a utilizar posiblemente pero cuando 626 00:24:42,319 --> 00:24:45,480 nos pide una cosa completa tiene que estar toda la información pues ya les digo tu stream 627 00:24:47,640 --> 00:24:53,000 pues toda la información los getter y setter todo lo tenemos en los apuntes en varios sitios 628 00:24:53,000 --> 00:24:54,960 está puesto. Toda la información que 629 00:24:54,960 --> 00:24:55,859 lleva una clase completa. 630 00:24:57,880 --> 00:24:58,279 Bueno. 631 00:24:59,359 --> 00:25:00,839 Entonces, lo más 632 00:25:00,839 --> 00:25:03,000 relevante aquí es esto. Este extends. 633 00:25:03,299 --> 00:25:04,299 ¿Vale? Esto es lo más relevante. 634 00:25:04,880 --> 00:25:06,839 Porque una persona hereda de una agenda. 635 00:25:06,960 --> 00:25:09,039 Entonces, hereda toda la funcionalidad de una agenda. 636 00:25:09,539 --> 00:25:11,000 Es decir, que un objeto de la 637 00:25:11,000 --> 00:25:12,920 clase persona, por el hecho de haber heredado la agenda, 638 00:25:13,839 --> 00:25:14,900 tiene toda la funcionalidad 639 00:25:14,900 --> 00:25:16,420 de una agenda de teléfonos. 640 00:25:17,140 --> 00:25:18,759 Todo. No tengo que hacer nada. 641 00:25:18,839 --> 00:25:20,859 Ya lo tengo. Ya lo tengo. La incorporo. 642 00:25:20,900 --> 00:25:22,279 Se incorpora. ¿Vale? 643 00:25:23,000 --> 00:25:24,500 bien 644 00:25:24,500 --> 00:25:28,480 entonces, si yo quiero obtener la agenda de teléfonos 645 00:25:28,480 --> 00:25:29,119 miren lo que hago 646 00:25:29,119 --> 00:25:34,660 si yo quiero obtener la agenda de teléfonos en forma de cadena de caracteres 647 00:25:34,660 --> 00:25:36,680 lo que hago es que llamo a mi clase 648 00:25:36,680 --> 00:25:38,240 padre y hago un toString 649 00:25:38,240 --> 00:25:41,000 y aquí obtendría toda la información 650 00:25:41,000 --> 00:25:42,839 de la agenda de teléfonos en forma de cadena 651 00:25:42,839 --> 00:25:43,960 de caracteres 652 00:25:43,960 --> 00:25:46,240 y con eso puedo 653 00:25:46,240 --> 00:25:47,480 trabajar 654 00:25:47,480 --> 00:25:50,319 fíjense, si yo quiero establecer un teléfono 655 00:25:50,319 --> 00:25:52,019 lo único que tengo que hacer es un put 656 00:25:52,019 --> 00:25:54,059 de hecho yo podría llamar a put directamente 657 00:25:54,059 --> 00:25:55,920 si lo hiciera público, pero bueno 658 00:25:55,920 --> 00:25:58,619 para establecer un teléfono lo único que hago es llamar a put 659 00:25:58,619 --> 00:26:00,539 porque ya tengo un put 660 00:26:00,539 --> 00:26:02,339 yo soy un agente de teléfonos 661 00:26:02,339 --> 00:26:03,519 ¿vale? 662 00:26:04,140 --> 00:26:06,599 si quiero tener un teléfono, pues lo único que tengo que hacer 663 00:26:06,599 --> 00:26:07,240 es llamar a get 664 00:26:07,240 --> 00:26:10,759 ¿vale? fíjense la diferencia con antes 665 00:26:10,759 --> 00:26:12,279 antes tenía que poner 666 00:26:12,279 --> 00:26:14,079 la referencia punto put 667 00:26:14,079 --> 00:26:16,920 la referencia punto get, ahora no, ahora lo incorporo 668 00:26:16,920 --> 00:26:17,980 porque he heredado de ello 669 00:26:17,980 --> 00:26:19,960 ¿sí? 670 00:26:21,180 --> 00:26:21,539 vale 671 00:26:21,539 --> 00:26:24,359 el toString, pues nada, la persona, la altura 672 00:26:24,359 --> 00:26:26,420 tal, y la agenda, pues obtengo la agenda 673 00:26:26,420 --> 00:26:28,640 como una cadena de caracteres y la visualizo 674 00:26:28,640 --> 00:26:29,119 y ya está 675 00:26:29,119 --> 00:26:32,440 no la visualizo, perdón, la recupero 676 00:26:32,440 --> 00:26:34,619 y la devuelvo con un toString, lo concateno con todo lo demás 677 00:26:34,619 --> 00:26:36,460 y ya está, para comparar personas 678 00:26:36,460 --> 00:26:37,920 es exactamente igual que antes 679 00:26:37,920 --> 00:26:39,940 el equals de personas es el mismo 680 00:26:39,940 --> 00:26:42,099 equals, lo recuerdan, ¿no? 681 00:26:42,420 --> 00:26:44,180 el método equals es importante 682 00:26:44,180 --> 00:26:46,579 creo que este lo repasamos además en clase un día 683 00:26:46,579 --> 00:26:47,160 me parece 684 00:26:47,160 --> 00:26:50,500 recuerden que equals lo que hace es que me compara 685 00:26:50,500 --> 00:26:52,960 me dice si dos objetos son iguales o no 686 00:26:52,960 --> 00:26:54,440 me vuelve cierto, si son iguales 687 00:26:54,440 --> 00:26:55,700 falsos son diferentes 688 00:26:55,700 --> 00:26:58,480 lo primero es ver que lo que me han pasado no es nulo 689 00:26:58,480 --> 00:27:00,480 lo siguiente que tienen la misma clase, porque si yo comparo 690 00:27:00,480 --> 00:27:03,000 una persona con un chorizo de cantimpalo 691 00:27:03,000 --> 00:27:04,480 pues no pueden ser iguales, es imposible 692 00:27:04,480 --> 00:27:05,619 entonces tienen que tener la misma clase 693 00:27:05,619 --> 00:27:08,740 y luego, una vez que tienen la misma clase 694 00:27:08,740 --> 00:27:10,559 pues para mí dos personas son iguales 695 00:27:10,559 --> 00:27:12,680 cuando el id de la persona de ambas 696 00:27:12,680 --> 00:27:13,180 es el mismo 697 00:27:13,180 --> 00:27:16,339 si es diferente, digo que no son iguales 698 00:27:16,339 --> 00:27:18,880 pero si es el mismo, no ejecutaría 699 00:27:18,880 --> 00:27:21,000 este if me vendría aquí y hago un return true 700 00:27:21,000 --> 00:27:22,900 devolvería cierto 701 00:27:22,900 --> 00:27:24,799 porque esas dos personas tienen el mismo id 702 00:27:24,799 --> 00:27:27,019 ¿vale? dos personas del mismo 703 00:27:27,019 --> 00:27:28,680 id, imagínense el dni 704 00:27:28,680 --> 00:27:31,039 dos personas que tienen el mismo dni, se supone que son dos personas 705 00:27:31,039 --> 00:27:32,980 iguales ¿vale? bueno el hash code 706 00:27:32,980 --> 00:27:34,579 tiene aquí dos versiones del hash code 707 00:27:34,579 --> 00:27:37,240 esto está comentado, es uno generado manualmente 708 00:27:37,240 --> 00:27:39,000 y otro muy interesante 709 00:27:39,000 --> 00:27:40,720 es el que nos 710 00:27:40,720 --> 00:27:43,279 proporciona el método hash de objects 711 00:27:43,279 --> 00:27:45,240 ¿vale? método hash de objects 712 00:27:45,240 --> 00:27:46,839 me construye un hash directamente 713 00:27:46,839 --> 00:27:48,119 con una serie de parámetros que yo le pase 714 00:27:48,119 --> 00:27:51,359 y no tengo que estar construyendo yo matemáticamente 715 00:27:51,359 --> 00:27:53,500 una multiplicación de los números primos 716 00:27:53,500 --> 00:27:54,740 no sé qué, patatín, patatán 717 00:27:54,740 --> 00:27:56,559 esto es lo que genera NetBeans 718 00:27:56,559 --> 00:27:59,019 pero usar 719 00:27:59,019 --> 00:28:00,980 el hash de objects es 720 00:28:00,980 --> 00:28:01,839 una opción muy buena 721 00:28:01,839 --> 00:28:04,500 y nada, pues aquí tenemos los getters y los setters 722 00:28:04,500 --> 00:28:07,079 y ya tenemos la clase persona, entonces la gran diferencia 723 00:28:07,079 --> 00:28:09,099 en este caso es la definición 724 00:28:09,099 --> 00:28:10,400 de la clase persona, en este caso 725 00:28:10,400 --> 00:28:12,819 estamos trabajando en herencia porque nos lo han pedido 726 00:28:12,819 --> 00:28:13,819 hacerlo en herencia 727 00:28:13,819 --> 00:28:16,799 y entonces, si vamos al main 728 00:28:16,799 --> 00:28:19,299 pues bueno, la salida 729 00:28:19,299 --> 00:28:20,700 pues como ven 730 00:28:20,700 --> 00:28:22,980 va a ser relativamente parecida, lo único que está 731 00:28:22,980 --> 00:28:25,599 ahí nos ha pillado el resaltado sintáctico 732 00:28:25,599 --> 00:28:27,599 es algo bastante similar 733 00:28:27,599 --> 00:28:29,240 al anterior, tiene otra 734 00:28:29,240 --> 00:28:31,319 información por ahí metida con otras cositas 735 00:28:31,319 --> 00:28:33,539 y la forma de salir es un poco distinta 736 00:28:33,539 --> 00:28:35,480 pero a fin de cuentas 737 00:28:35,480 --> 00:28:36,579 viene a ser lo mismo 738 00:28:36,579 --> 00:28:38,640 y luego 739 00:28:38,640 --> 00:28:41,220 vamos a ver una diferencia 740 00:28:41,220 --> 00:28:45,279 aquí está 741 00:28:45,279 --> 00:28:46,359 el mail lo tenemos aquí 742 00:28:46,359 --> 00:28:47,920 y entonces 743 00:28:47,920 --> 00:28:50,180 este es un poquitín más extenso 744 00:28:50,180 --> 00:28:52,539 entonces miren lo que hacemos 745 00:28:52,539 --> 00:28:54,160 vamos a ver 746 00:28:54,160 --> 00:28:54,940 aquí lo tenemos 747 00:28:54,940 --> 00:28:57,940 creamos este map 748 00:28:57,940 --> 00:28:59,680 de integer persona, ¿vale? 749 00:28:59,720 --> 00:29:01,000 este linked hash map 750 00:29:01,000 --> 00:29:04,099 va a ser un mapa 751 00:29:04,099 --> 00:29:05,940 en el que se esté enlazado el primero 752 00:29:05,940 --> 00:29:07,940 con el segundo, el tercero, con el cuarto, con el quinto, así 753 00:29:07,940 --> 00:29:10,099 ¿vale? y enlazamos 754 00:29:10,099 --> 00:29:12,420 un entero con una persona, un entero con una persona 755 00:29:12,420 --> 00:29:13,400 un entero con una persona 756 00:29:13,400 --> 00:29:15,920 aquí lo tenemos, miren 757 00:29:15,920 --> 00:29:18,279 los números que le estamos asignando 758 00:29:18,279 --> 00:29:20,160 por aquí 759 00:29:20,160 --> 00:29:21,160 pues 760 00:29:21,160 --> 00:29:24,019 por ejemplo 761 00:29:24,019 --> 00:29:25,740 a esta persona P que estoy declarando aquí 762 00:29:25,740 --> 00:29:28,019 le estoy asignando el número 77 a María 763 00:29:28,019 --> 00:29:29,680 primero declaro a la persona 764 00:29:29,680 --> 00:29:31,960 declaro a la persona, esto es otra forma de hacerlo 765 00:29:31,960 --> 00:29:33,980 declaro a la persona, new persona, le pongo 766 00:29:33,980 --> 00:29:35,799 sus teléfonos, el de trabajo tal 767 00:29:35,799 --> 00:29:37,759 la oficina cual, el de móvil pin 768 00:29:37,759 --> 00:29:38,900 el de la casa tal 769 00:29:38,900 --> 00:29:41,359 y una vez que tengo la persona y tengo sus teléfonos digo 770 00:29:41,359 --> 00:29:43,359 oye, voy a meter en mi map 771 00:29:43,359 --> 00:29:44,119 que llamo MP 772 00:29:44,119 --> 00:29:47,099 voy a meter con el número 77 773 00:29:47,099 --> 00:29:49,200 a esta persona que la tengo apuntada por P 774 00:29:49,200 --> 00:29:51,359 miren, esto lo ven fenomenal 775 00:29:51,359 --> 00:29:52,339 aquí 776 00:29:52,339 --> 00:29:54,960 el dibujo geomático, miren, aquí se va a ver 777 00:29:54,960 --> 00:29:57,220 fantástico, ay es el otro 778 00:29:57,220 --> 00:30:01,980 en el otro se veía 779 00:30:01,980 --> 00:30:05,440 miren 780 00:30:05,440 --> 00:30:08,279 aquí lo tengo hecho con P 781 00:30:08,279 --> 00:30:09,940 ¿lo ven? que está el P aquí 782 00:30:09,940 --> 00:30:12,579 P inicialmente 783 00:30:12,579 --> 00:30:14,279 apunta aquí y estoy metiendo 784 00:30:14,279 --> 00:30:16,599 en MP estoy metiendo la primera persona 785 00:30:16,599 --> 00:30:17,039 ¿lo ven aquí? 786 00:30:17,039 --> 00:30:19,119 Pues este 787 00:30:19,119 --> 00:30:21,599 En MP, meto lo que está apuntado por P 788 00:30:21,599 --> 00:30:23,200 Total, que MP está apuntando 789 00:30:23,200 --> 00:30:25,579 La primera persona que se mete sería esta de aquí 790 00:30:25,579 --> 00:30:26,079 ¿Verdad? 791 00:30:26,799 --> 00:30:29,220 A ver si lo ven ahí bien o no 792 00:30:29,220 --> 00:30:29,460 ¿Verdad? 793 00:30:30,799 --> 00:30:33,200 Pues igual aquí tendríamos otra referencia P 794 00:30:33,200 --> 00:30:34,319 Que estaría apuntando esto de aquí 795 00:30:34,319 --> 00:30:36,779 Y dijimos, mete en MP lo que está apuntando en P 796 00:30:36,779 --> 00:30:39,559 Pues meto en MP esta primera persona de aquí 797 00:30:39,559 --> 00:30:41,359 Con sus teléfonos y todo 798 00:30:41,359 --> 00:30:43,220 Que ya los hemos metido con anterioridad 799 00:30:43,220 --> 00:30:43,839 Tenemos aquí, ¿Verdad? 800 00:30:44,240 --> 00:30:46,240 Tenemos aquí todos los teléfonos y metemos la persona 801 00:30:47,079 --> 00:30:52,680 A continuación, ¿qué es lo que metemos aquí? 802 00:30:53,140 --> 00:30:56,099 Pues igual, otra persona, esta señora, Marta. 803 00:30:56,839 --> 00:30:59,420 Y fíjense, primero, fíjense qué interesante es esto. 804 00:30:59,900 --> 00:31:08,259 Primero declaramos la persona, metemos la persona en este, que era un LinkedHashMap, la metemos en este LinkedHashMap. 805 00:31:08,259 --> 00:31:11,839 Y una vez que Marta está dentro del LinkedHashMap, miren lo que hago. 806 00:31:11,839 --> 00:31:15,180 a través de P le establezco los teléfonos 807 00:31:15,180 --> 00:31:17,799 porque tanto P como lo que acabo de introducir 808 00:31:17,799 --> 00:31:20,460 apuntan al mismo sitio, a la misma persona que sería esta Marta 809 00:31:20,460 --> 00:31:24,220 como P sigue apuntando, pues nada, no tengo ningún problema 810 00:31:24,220 --> 00:31:27,160 le establezco el teléfono móvil y le establezco el teléfono de casa 811 00:31:27,160 --> 00:31:27,819 ¿lo ven aquí? 812 00:31:30,480 --> 00:31:30,960 ¿sí? 813 00:31:33,339 --> 00:31:35,160 vale, aquí tres cuartos de lo mismo 814 00:31:35,160 --> 00:31:38,500 meto a esta persona, la meto en el mapa 815 00:31:38,500 --> 00:31:40,660 y luego a continuación le establezco estos teléfonos 816 00:31:40,660 --> 00:31:41,880 ¿Vale? ¿Ven? 817 00:31:42,599 --> 00:31:44,480 Añadimos al objeto y se añaden después los teléfonos 818 00:31:44,480 --> 00:31:45,619 ¿Ven que está todo comentado? 819 00:31:45,819 --> 00:31:47,180 ¿Lo ven? Para que no se líen 820 00:31:47,180 --> 00:31:49,019 Para que lo puedan seguir 821 00:31:49,019 --> 00:31:50,480 Luego esto en casa de todas formas lo revisan 822 00:31:50,480 --> 00:31:53,900 Y aquí es igual, añadimos a Yolanda 823 00:31:53,900 --> 00:31:56,039 Añadimos aquí a Maride 824 00:31:56,039 --> 00:31:56,839 ¿Lo ven aquí? 825 00:31:57,940 --> 00:31:58,759 En través de P 826 00:31:58,759 --> 00:32:01,660 Igual aquí añadimos a María 827 00:32:01,660 --> 00:32:03,200 Tenemos aquí más ejemplos que antes 828 00:32:03,200 --> 00:32:04,559 Entonces, miren 829 00:32:04,559 --> 00:32:06,059 Esto está muy grande ahora 830 00:32:06,059 --> 00:32:09,779 Entonces, primero sacamos el listado 831 00:32:09,779 --> 00:32:11,720 así gigante 832 00:32:11,720 --> 00:32:13,799 y luego hacemos algunas cositas 833 00:32:13,799 --> 00:32:15,799 más. Hacemos un listado 834 00:32:15,799 --> 00:32:17,740 recorriendo las claves de todos los teléfonos 835 00:32:17,740 --> 00:32:19,579 de casa usando un 836 00:32:19,579 --> 00:32:21,700 key set. Entonces 837 00:32:21,700 --> 00:32:22,920 me voy a recorrer 838 00:32:22,920 --> 00:32:25,720 todos, ¿vale? Y solamente voy a 839 00:32:25,720 --> 00:32:27,720 sacar aquellos cuyo nombre de teléfono 840 00:32:27,720 --> 00:32:28,519 es casa 841 00:32:28,519 --> 00:32:31,480 El resultado 842 00:32:31,480 --> 00:32:33,220 lo tenemos aquí. Mira, ¿ven? 843 00:32:33,920 --> 00:32:35,200 Me salen todos 844 00:32:35,200 --> 00:32:37,680 pero solamente aquellos 845 00:32:37,680 --> 00:32:39,720 cuyo valor 846 00:32:39,720 --> 00:32:41,220 del teléfono es casa. ¿Lo ven aquí? 847 00:32:43,200 --> 00:32:43,720 ¿Estoy hablando 848 00:32:43,720 --> 00:32:44,779 solo o hay alguien escuchando? 849 00:32:44,799 --> 00:32:45,980 Sí, sí, sí. Se oye. 850 00:32:46,460 --> 00:32:48,779 Sí, de vez en cuando, por favor, porque tengo un agobio 851 00:32:48,779 --> 00:32:51,559 tremendo. Entonces, ¿ven? 852 00:32:51,759 --> 00:32:53,740 Solamente salen aquellos cuyos teléfonos 853 00:32:53,740 --> 00:32:54,140 es casa. 854 00:32:55,680 --> 00:32:56,420 ¿Lo ven ahí, no? 855 00:32:57,420 --> 00:33:07,970 ¿Dónde está? Ahí está. 856 00:33:08,829 --> 00:33:10,369 ¿Vale? Entonces, saldremos solamente 857 00:33:10,369 --> 00:33:12,309 aquellos cuyo es 858 00:33:12,309 --> 00:33:14,269 casa. Sacamos el nombre 859 00:33:14,269 --> 00:33:14,970 y el nombre 860 00:33:14,970 --> 00:33:18,269 obtenemos el teléfono solamente 861 00:33:18,269 --> 00:33:21,210 para aquellos cuyo nombre de teléfono 862 00:33:21,210 --> 00:33:23,170 lo he establecido aquí arriba en casa 863 00:33:23,170 --> 00:33:25,630 igual como tengo un map 864 00:33:25,630 --> 00:33:26,670 yo no puedo recorrer un map 865 00:33:26,670 --> 00:33:28,529 pero si puedo recorrer un key set 866 00:33:28,529 --> 00:33:30,990 transformo el map en un key set 867 00:33:30,990 --> 00:33:32,869 se transforma momentáneamente 868 00:33:32,869 --> 00:33:34,549 para la ejecución de este for 869 00:33:34,549 --> 00:33:36,809 el for como el set es una collection 870 00:33:36,809 --> 00:33:38,930 el for si puede recorrer 871 00:33:38,930 --> 00:33:40,230 con un for puede recorrer una collection 872 00:33:40,230 --> 00:33:42,009 un mapa no, pero una collection si 873 00:33:42,009 --> 00:33:44,309 transformo el mapa en un set 874 00:33:44,309 --> 00:33:45,369 que es del tipo collection 875 00:33:45,369 --> 00:33:47,730 con esto saldría toda la información 876 00:33:47,730 --> 00:33:55,829 Y con este de aquí hacemos exactamente lo mismo que antes que recorremos todos los valores, con el formato clave-valor, clave-valor, clave-valor. 877 00:33:56,009 --> 00:34:08,789 Sacamos cada una de ellas. La clave es un integer, valor-persona. Vamos sacando todos ellos en este tipo entry y van a ver aquí, aquí van a ver, ven, clave-valor. 878 00:34:08,789 --> 00:34:15,510 clave 11 valor personal y total clave 33 valor personal y tal elena teléfono 879 00:34:15,510 --> 00:34:22,829 salta el siguiente clave 44 siguiente clave 61 y el valor sería toda la 880 00:34:22,829 --> 00:34:30,300 información relativa a esa persona si lo ven ahí 881 00:34:30,300 --> 00:34:35,679 fenomenal pues ahí lo tienen absolutamente todo todo todo esto lo 882 00:34:35,679 --> 00:34:39,880 tienen estos dos ejercicios que están subidos en su aula virtual vale para que 883 00:34:39,880 --> 00:34:44,880 vean cómo podemos utilizar de forma muy sencillita, ¿vale? 884 00:34:45,000 --> 00:34:49,599 Y es lo que les digo, con muy poco código, a ver si lo encuentro aquí el main, 885 00:34:49,760 --> 00:34:52,780 es que no veo nada aquí en el Windows, no veo un pimiento. 886 00:34:53,639 --> 00:34:56,659 Lo que les decía, con muy poco código realmente, 887 00:34:56,739 --> 00:34:58,840 porque aquí la mayoría del código es meter datos, ¿vale? 888 00:34:58,840 --> 00:35:01,280 Y con muy poco código hacemos muchísimo. 889 00:35:01,920 --> 00:35:04,539 Estamos gestionando una agenda de teléfonos con muy poquito. 890 00:35:05,340 --> 00:35:09,320 Gracias a estas estructuras de datos que hemos visto ya en collections y mapas, 891 00:35:09,880 --> 00:35:11,699 gracias a ello 892 00:35:11,699 --> 00:35:14,000 y a declarar las clases 893 00:35:14,000 --> 00:35:15,780 correctamente, la clase persona en este caso 894 00:35:15,780 --> 00:35:16,679 que ya hereda 895 00:35:16,679 --> 00:35:20,000 fíjense que sencillo construimos la agenda de teléfono 896 00:35:20,000 --> 00:35:21,820 no hacemos nada, es un trick, es un mapa 897 00:35:21,820 --> 00:35:22,159 ahí está 898 00:35:22,159 --> 00:35:25,940 con eso construimos clave-valor 899 00:35:25,940 --> 00:35:27,860 la clave es el identificador de teléfono 900 00:35:27,860 --> 00:35:28,920 y el valor es el número de teléfono 901 00:35:28,920 --> 00:35:29,880 ¿sí? 902 00:35:31,159 --> 00:35:34,119 muy bien, pues bueno, voy a detener la grabación 903 00:35:34,119 --> 00:35:35,539 y si tiene alguna pregunta 904 00:35:35,539 --> 00:35:36,340 me lo 905 00:35:36,340 --> 00:35:38,539 me lo dicen y la vemos 906 00:35:38,539 --> 00:35:40,780 Vamos a ver en la grabadora, vamos a ver... 907 00:35:40,780 --> 00:35:42,739 Aquí está, de tener los...