1 00:00:01,840 --> 00:00:30,600 Vale, pues nada, vamos a hacer entonces un nuevo proyecto, aplicación gestión FCT, ¿vale? Entonces, la de gestión de alumnos es más sencillita, pero al final viene a ser siempre la misma historia. 2 00:00:30,600 --> 00:00:32,880 un modelo de datos que se supone 3 00:00:32,880 --> 00:00:35,119 que uno lo ha decidido porque ha estudiado 4 00:00:35,119 --> 00:00:35,979 bien el problema 5 00:00:35,979 --> 00:00:39,159 aquí ya está decidido, el modelo de datos es este 6 00:00:39,159 --> 00:00:40,579 ya está, no hay más que decidir 7 00:00:40,579 --> 00:00:42,380 y luego ya 8 00:00:42,380 --> 00:00:44,640 una interfaz 9 00:00:44,640 --> 00:00:46,799 para intercambiar los datos 10 00:00:46,799 --> 00:00:49,119 gráfica o consola 11 00:00:49,119 --> 00:00:50,899 y luego ya una serie 12 00:00:50,899 --> 00:00:52,200 de operaciones a hacer 13 00:00:52,200 --> 00:00:55,100 una serie de operaciones, normalmente se meten 14 00:00:55,100 --> 00:00:56,780 en o en las propias clases 15 00:00:56,780 --> 00:00:58,899 entidad a veces o en clases 16 00:00:58,899 --> 00:01:01,100 aparte están esas funcionalidades 17 00:01:01,100 --> 00:01:02,880 y luego un main que las llama, y ya está 18 00:01:02,880 --> 00:01:05,200 bueno, aquí el modelo de datos ya está 19 00:01:05,200 --> 00:01:06,540 que es 20 00:01:06,540 --> 00:01:09,120 empresa, alumno y profesor, son las 21 00:01:09,120 --> 00:01:10,640 tres cosas que va a manejar la aplicación 22 00:01:10,640 --> 00:01:12,920 vale, pues entonces 23 00:01:12,920 --> 00:01:16,459 empresa 24 00:01:16,459 --> 00:01:19,099 es la que no depende de ninguno, entonces vamos 25 00:01:19,099 --> 00:01:21,000 a hacer la primera, la empresa se 26 00:01:21,000 --> 00:01:23,239 caracteriza por su código, su nombre 27 00:01:23,239 --> 00:01:25,280 y las sedes 28 00:01:25,280 --> 00:01:27,319 las localizaciones 29 00:01:27,319 --> 00:01:30,120 en las que trabaja, entonces las localizaciones 30 00:01:30,120 --> 00:01:33,099 en las que trabaja podría haber una entidad sede 31 00:01:33,099 --> 00:01:36,120 una entidad sede que tuviera su código 32 00:01:36,120 --> 00:01:39,359 y su ubicación, pero en lugar de hacer una entidad sede 33 00:01:39,359 --> 00:01:41,980 aparte se mete en un map y se acabó, entonces 34 00:01:41,980 --> 00:01:45,000 esto lo haríamos 35 00:01:45,000 --> 00:01:46,079 primer paquete 36 00:01:46,079 --> 00:01:48,700 entidades 37 00:01:48,700 --> 00:01:53,700 bins, model, como uno quiera llamar, vamos a llamar model 38 00:01:53,700 --> 00:01:57,299 que es otro nombre bastante habitual 39 00:01:57,299 --> 00:01:59,980 modelo, modelo, modelo 40 00:01:59,980 --> 00:02:01,579 como te la gana, pues venga 41 00:02:01,579 --> 00:02:09,250 empresa, vale, pues 42 00:02:09,250 --> 00:02:11,270 empresa, propiedades, hemos dicho que 43 00:02:11,270 --> 00:02:11,990 el código 44 00:02:11,990 --> 00:02:20,810 el nombre, creo que era otra 45 00:02:20,810 --> 00:02:27,849 y luego una 46 00:02:27,849 --> 00:02:29,090 serie de sedes 47 00:02:29,090 --> 00:02:33,430 que en lugar de hacer, repito, una clase 48 00:02:33,430 --> 00:02:35,330 sede, para los datos de la sede 49 00:02:35,330 --> 00:02:40,120 pues las sedes se guardan 50 00:02:40,120 --> 00:02:41,219 como un map 51 00:02:41,219 --> 00:02:45,270 de esta manera, a ver, hacer 52 00:02:45,270 --> 00:02:47,349 así este diseño no es por justificar 53 00:02:47,349 --> 00:02:51,330 que sea mejor así, ni nada, sino se elige 54 00:02:51,330 --> 00:02:55,009 pues para que sea un ejemplo, un ejercicio en el que se toca un poco todo 55 00:02:55,009 --> 00:03:01,159 entonces, nos han fijado 56 00:03:01,159 --> 00:03:04,680 aquí el tipo de map, un hash map, vale, pues venga 57 00:03:04,680 --> 00:03:27,039 un hash map, vale, desde el momento en el que escribimos 58 00:03:27,039 --> 00:03:30,680 hash map, automáticamente ya nos salta la primera de las 59 00:03:30,680 --> 00:03:33,979 alarmas que tenemos programadas en la cabeza, que es, cuidado 60 00:03:33,979 --> 00:03:36,599 eso significa que las claves 61 00:03:36,599 --> 00:03:39,240 se van a guardar en un hash set 62 00:03:39,240 --> 00:03:41,199 entonces 63 00:03:41,199 --> 00:03:43,099 para que ese hash set 64 00:03:43,099 --> 00:03:44,439 de claves sea 65 00:03:44,439 --> 00:03:46,460 correctamente gestionado 66 00:03:46,460 --> 00:03:48,879 para que pueda ser correctamente 67 00:03:48,879 --> 00:03:49,639 gestionado 68 00:03:49,639 --> 00:03:53,080 esa clase a la que pertenecen las claves 69 00:03:53,080 --> 00:03:54,620 tiene que tener correctamente 70 00:03:54,620 --> 00:03:56,280 implementado el hash code de equals 71 00:03:56,280 --> 00:03:59,219 porque si no tiene correctamente implementado el hash code de equals 72 00:03:59,219 --> 00:04:00,759 un hash set 73 00:04:00,759 --> 00:04:02,620 de esa clase no va 74 00:04:02,620 --> 00:04:05,560 funcionar correctamente 75 00:04:05,560 --> 00:04:07,520 no es que vaya a haber errores de ejecución 76 00:04:07,520 --> 00:04:09,199 pero los resultados no van a ser 77 00:04:09,199 --> 00:04:10,500 correctos 78 00:04:10,500 --> 00:04:12,620 bueno pues 79 00:04:12,620 --> 00:04:14,879 integer tiene jasco de equal, si 80 00:04:14,879 --> 00:04:17,199 como string, como todas las clases 81 00:04:17,199 --> 00:04:18,579 de la librería que usamos 82 00:04:18,579 --> 00:04:21,060 las que hacemos nosotros son las preocupantes 83 00:04:21,060 --> 00:04:23,240 porque las que hacemos nosotros son las que tenemos que darles 84 00:04:23,240 --> 00:04:24,920 el jasco de equal, pero integer ya lo tiene 85 00:04:24,920 --> 00:04:27,180 pues entonces ya esa alarma ya está 86 00:04:27,180 --> 00:04:29,120 resuelta 87 00:04:29,120 --> 00:04:30,920 ala pues 88 00:04:30,920 --> 00:04:32,579 seguimos, pues nada, constructor 89 00:04:32,579 --> 00:04:37,040 getter y setter y mientras no me digan 90 00:04:37,040 --> 00:04:39,000 que meta ningún método más aquí, pues así 91 00:04:39,000 --> 00:04:54,980 me quedo, a ver 92 00:04:54,980 --> 00:04:59,100 un constructor con parámetros y un 93 00:04:59,100 --> 00:05:00,680 constructor sin parámetros 94 00:05:00,680 --> 00:05:10,600 vale, cuando una de las propiedades 95 00:05:11,199 --> 00:05:14,519 cuando una de las 96 00:05:14,519 --> 00:05:16,139 propiedades de 97 00:05:16,139 --> 00:05:18,660 una clase es una colección 98 00:05:18,660 --> 00:05:23,920 una o más de una, es habitual que haya un constructor 99 00:05:23,920 --> 00:05:27,819 que excluya las propiedades que son colecciones, es habitual 100 00:05:27,819 --> 00:05:31,060 ya lo hemos dicho otras veces, de tal forma que tú puedas crear 101 00:05:31,060 --> 00:05:36,199 una empresa con los datos básicos y ya el conjunto 102 00:05:36,199 --> 00:05:40,019 de sus sedes, de sus alumnos, de lo que sea 103 00:05:40,019 --> 00:05:43,899 se pueda ir añadiendo posteriormente uno a uno, es relativamente 104 00:05:43,899 --> 00:05:47,180 habitual, entonces aquí este constructor 105 00:05:47,180 --> 00:05:49,319 pues en lugar de hacer otro 106 00:05:49,319 --> 00:05:50,040 para no 107 00:05:50,040 --> 00:05:53,339 pues este constructor empresa 108 00:05:53,339 --> 00:05:55,579 le vamos a quitar esto 109 00:05:55,579 --> 00:05:59,500 porque nos va a ser mucho 110 00:05:59,500 --> 00:06:01,639 más útil un constructor 111 00:06:01,639 --> 00:06:02,019 así 112 00:06:02,019 --> 00:06:05,100 este constructor no va a ser más útil 113 00:06:05,100 --> 00:06:07,420 porque tiene más sentido crear una empresa con su código 114 00:06:07,420 --> 00:06:09,639 y su nombre y las sedes írselas añadiendo 115 00:06:09,639 --> 00:06:11,160 después, es más 116 00:06:11,160 --> 00:06:13,040 más realista 117 00:06:13,040 --> 00:06:15,540 esa situación, bueno pues ya está 118 00:06:15,540 --> 00:06:17,379 esta entidad ya está, vale 119 00:06:17,379 --> 00:06:18,600 siguiente 120 00:06:18,600 --> 00:06:21,620 el alumno 121 00:06:21,620 --> 00:06:23,319 tendrá su 122 00:06:23,319 --> 00:06:25,319 unía, su nombre y las 123 00:06:25,319 --> 00:06:26,399 empresas en las que 124 00:06:26,399 --> 00:06:29,279 la empresa en la que 125 00:06:29,279 --> 00:06:31,439 trabaja y la sede dentro 126 00:06:31,439 --> 00:06:33,519 de la empresa, eso serían dos números 127 00:06:33,519 --> 00:06:35,600 enteros, el código de la empresa 128 00:06:35,600 --> 00:06:37,379 y la sede dentro de la empresa 129 00:06:37,379 --> 00:06:39,519 entonces se puede guardar en dos números 130 00:06:39,519 --> 00:06:41,500 enteros y ya está, pero aquí pues nada 131 00:06:41,500 --> 00:06:43,279 simplemente pues para que no se nos olviden 132 00:06:43,279 --> 00:06:45,279 los arrays y sepamos usarlos, solo por eso 133 00:06:45,279 --> 00:06:47,279 vamos a meter esos dos códigos 134 00:06:47,279 --> 00:06:48,759 en un array de enteros 135 00:06:48,759 --> 00:06:51,399 bueno, pues entonces 136 00:06:51,399 --> 00:06:53,740 la clase alumno 137 00:06:53,740 --> 00:07:01,959 la clase alumna 138 00:07:01,959 --> 00:07:03,060 hemos dicho que tiene 139 00:07:03,060 --> 00:07:09,839 su número de matrícula 140 00:07:10,699 --> 00:07:15,259 su nombre 141 00:07:15,259 --> 00:07:21,579 el NIA-C 142 00:07:21,579 --> 00:07:28,720 y la sede 143 00:07:28,720 --> 00:07:30,459 y la empresa en la que está asignado 144 00:07:30,459 --> 00:07:32,040 que serían dos códigos enteros 145 00:07:32,040 --> 00:07:34,040 repito, pero se van a meter 146 00:07:34,040 --> 00:07:34,980 los dos juntitos 147 00:07:34,980 --> 00:07:38,160 en un array de enteros 148 00:07:38,639 --> 00:07:43,029 podemos llamar empresa 149 00:07:43,029 --> 00:07:44,610 pero sabemos que aquí dentro de empresa 150 00:07:44,610 --> 00:07:45,870 irán las dos cosas 151 00:07:45,870 --> 00:07:47,370 irá la empresa y la sede 152 00:07:47,370 --> 00:07:49,750 ahí tendrá los dos datos el alumno 153 00:07:49,750 --> 00:07:53,339 vale, pues bueno 154 00:07:53,339 --> 00:07:55,300 get y set 155 00:07:55,300 --> 00:08:05,430 constructor 156 00:08:05,430 --> 00:08:08,850 con parámetros 157 00:08:08,850 --> 00:08:13,620 y constructor sin parámetros 158 00:08:13,620 --> 00:08:22,920 ala, el alumno ya está 159 00:08:22,920 --> 00:08:23,439 esto es 160 00:08:23,439 --> 00:08:26,379 y ahora ya el profesor 161 00:08:26,379 --> 00:08:28,980 que gestiona pues las prácticas de este alumno 162 00:08:28,980 --> 00:08:30,600 pues ahora que tiene 163 00:08:30,600 --> 00:08:32,419 el profesor tiene su if, su nombre 164 00:08:32,419 --> 00:08:34,779 y los alumnos de los que se ocupa 165 00:08:34,779 --> 00:08:36,799 ya está, que van a estar en una lista 166 00:08:36,799 --> 00:09:09,360 una lista de alumnos 167 00:09:09,360 --> 00:09:10,019 aquí 168 00:09:10,019 --> 00:09:13,299 entonces en las listas, pues lo normal 169 00:09:13,299 --> 00:09:15,039 es que ya directamente aquí 170 00:09:15,039 --> 00:09:17,159 la inicialicemos a vacía, para que un profesor 171 00:09:17,159 --> 00:09:18,840 parta con una lista de alumnos 172 00:09:18,840 --> 00:09:20,779 vacía, pero no null 173 00:09:20,779 --> 00:09:23,159 para evitar los null pointer exception 174 00:09:23,159 --> 00:09:25,039 bueno, pues nada 175 00:09:25,039 --> 00:09:30,919 linked list, array list 176 00:09:30,919 --> 00:09:33,259 pues bueno, depende de que vayamos a hacer 177 00:09:33,259 --> 00:09:35,419 si inserciones o consultas 178 00:09:35,419 --> 00:09:37,279 a falta de datos 179 00:09:37,279 --> 00:09:39,019 pues bueno, linked list y ya está 180 00:09:39,019 --> 00:09:44,019 si va a tener pocos alumnos 181 00:09:44,019 --> 00:09:45,879 si no va a pasar de 5 alumnos 182 00:09:45,879 --> 00:09:47,460 pues un array list 183 00:09:47,460 --> 00:09:49,159 porque un array siempre es mucho más eficiente 184 00:09:49,159 --> 00:09:51,679 incluso para inserciones 185 00:09:51,679 --> 00:09:53,860 si son 5 solo, pero como tampoco tenemos ese 186 00:09:53,860 --> 00:09:55,700 dato, pues venga 187 00:09:55,700 --> 00:09:56,460 un linked list 188 00:09:56,460 --> 00:10:07,570 y ahora, constructores, get y set, lo mismo 189 00:10:07,570 --> 00:10:09,250 en el constructor 190 00:10:09,250 --> 00:10:11,169 tiene sentido hacer un constructor 191 00:10:11,169 --> 00:10:12,429 solo con estos dos parámetros 192 00:10:12,429 --> 00:10:14,610 y que los alumnos se vayan agregando luego 193 00:10:14,610 --> 00:10:16,629 seguramente sea más útil esa situación 194 00:10:16,629 --> 00:10:17,549 sea más útil 195 00:10:17,549 --> 00:10:19,950 entonces vamos a hacer un constructor 196 00:10:19,950 --> 00:10:22,470 con ni fin nombre solamente 197 00:10:22,470 --> 00:10:27,399 un constructor sin parámetros 198 00:10:27,399 --> 00:10:33,429 get y set 199 00:10:33,429 --> 00:10:35,750 y ya está 200 00:10:35,750 --> 00:10:43,600 vale 201 00:10:43,600 --> 00:10:47,299 bueno pues aquí 202 00:10:47,299 --> 00:10:49,500 cuando yo he hecho esto 203 00:10:49,500 --> 00:10:52,500 aquí es cuando tendría que haber saltado 204 00:10:52,500 --> 00:10:53,620 otra alarma 205 00:10:53,620 --> 00:10:56,779 desde el momento en que yo 206 00:10:56,779 --> 00:10:59,360 defino una colección, declaro una colección 207 00:10:59,360 --> 00:11:01,419 me tiene que saltar la alarma correspondiente 208 00:11:01,419 --> 00:11:02,740 que tengo ya programada en la cabeza 209 00:11:02,740 --> 00:11:05,200 cuidado, tienes una lista 210 00:11:05,200 --> 00:11:06,139 de alumnos 211 00:11:06,139 --> 00:11:08,399 si tienes una lista de alumnos 212 00:11:08,399 --> 00:11:10,659 normalmente vas a querer usar 213 00:11:10,659 --> 00:11:12,879 los métodos que la clase list 214 00:11:12,879 --> 00:11:14,720 te ofrece, pues como 215 00:11:14,720 --> 00:11:16,039 borrar un alumno 216 00:11:16,039 --> 00:11:18,919 ver si una lista contiene a este alumno 217 00:11:18,919 --> 00:11:20,299 remove, contains, etc. 218 00:11:20,460 --> 00:11:22,879 Ya sabemos que eso solamente funciona 219 00:11:22,879 --> 00:11:23,960 correctamente 220 00:11:23,960 --> 00:11:26,419 si la clase 221 00:11:26,419 --> 00:11:28,679 a la que pertenecen los objetos 222 00:11:28,679 --> 00:11:30,460 de la lista tiene implementado 223 00:11:30,460 --> 00:11:30,639 ¿qué? 224 00:11:36,820 --> 00:11:38,519 No, no, no, el comparator no. 225 00:11:40,500 --> 00:11:41,019 No. 226 00:11:41,759 --> 00:11:42,279 El equals. 227 00:11:43,200 --> 00:11:44,740 Solo el equals. Es una lista. 228 00:11:44,919 --> 00:11:47,159 El jasco de equals es para haset. 229 00:11:48,419 --> 00:11:48,720 Entonces, 230 00:11:49,279 --> 00:11:50,980 cuando una lista va a tener 231 00:11:50,980 --> 00:11:52,899 elementos, si queremos 232 00:11:52,899 --> 00:11:54,940 usar la clase LinkedList 233 00:11:54,940 --> 00:11:56,779 o ArrayList sin efectos 234 00:11:56,779 --> 00:11:57,940 secundarios extraños, 235 00:11:58,940 --> 00:12:00,559 esa clase tiene que tener implementado el método 236 00:12:00,559 --> 00:12:02,519 Equals, porque la clase LinkedList 237 00:12:02,519 --> 00:12:03,820 y la clase ArrayList 238 00:12:03,820 --> 00:12:06,320 usan el método Equals 239 00:12:06,320 --> 00:12:08,860 en sus métodos Remove, Contains, etc. 240 00:12:09,120 --> 00:12:10,200 Usan el método Equals. 241 00:12:10,700 --> 00:12:12,779 Si no lo hemos implementado, va a usar 242 00:12:12,779 --> 00:12:14,039 el método Equals de Object. 243 00:12:15,019 --> 00:12:16,960 Y ya sabemos que el método Equals de Object 244 00:12:16,960 --> 00:12:18,419 trabaja por direcciones de memoria. 245 00:12:18,840 --> 00:12:20,059 Y esa no es la realidad. 246 00:12:20,059 --> 00:12:23,039 la realidad es que dos alumnos son iguales 247 00:12:23,039 --> 00:12:24,919 si su NIA es igual, esa es la realidad 248 00:12:24,919 --> 00:12:27,039 no que estén en el mismo sitio en memoria 249 00:12:27,039 --> 00:12:29,019 no, la realidad es que son 250 00:12:29,019 --> 00:12:30,379 iguales si su NIA es igual 251 00:12:30,379 --> 00:12:32,759 y nuestra aplicación gestiona la realidad 252 00:12:32,759 --> 00:12:35,100 no gestiona un mundo inventado de direcciones de memoria 253 00:12:35,100 --> 00:12:35,539 y de RAM 254 00:12:35,539 --> 00:12:38,679 pues entonces para que la linked list 255 00:12:38,679 --> 00:12:41,240 y la array list funcione con el sentido 256 00:12:41,240 --> 00:12:41,720 real 257 00:12:41,720 --> 00:12:45,159 y sus métodos remove, contains 258 00:12:45,159 --> 00:12:46,980 tengan un significado real 259 00:12:46,980 --> 00:12:48,860 alumno tiene que tener un equals 260 00:12:48,860 --> 00:12:51,919 entonces esa alarma es la que nos salta 261 00:12:51,919 --> 00:12:53,940 alumno tiene equals, no lo tiene 262 00:12:53,940 --> 00:12:56,080 entonces va a usar el de object, el de object no es real 263 00:12:56,080 --> 00:12:58,100 el de object es por direcciones de memoria 264 00:12:58,100 --> 00:12:58,840 ese no es real 265 00:12:58,840 --> 00:13:02,159 el método equals real 266 00:13:02,159 --> 00:13:02,659 ¿cuál será? 267 00:13:03,580 --> 00:13:04,740 pues por nia en este caso 268 00:13:04,740 --> 00:13:07,600 dos alumnos con el mismo número de identificación 269 00:13:07,600 --> 00:13:08,919 van a ser el mismo 270 00:13:08,919 --> 00:13:12,179 pues entonces yo aquí tengo que darle 271 00:13:12,179 --> 00:13:13,659 realidad 272 00:13:13,659 --> 00:13:15,559 a esta aplicación 273 00:13:15,559 --> 00:13:18,480 me va a gestionar un problema real 274 00:13:18,480 --> 00:13:20,320 entonces me tiene que dar 275 00:13:20,320 --> 00:13:22,379 tiene que modelar 276 00:13:22,379 --> 00:13:24,620 ese problema real, no una cosa rara 277 00:13:24,620 --> 00:13:26,379 de direcciones de memoria y de historias 278 00:13:26,379 --> 00:13:27,639 pues venga 279 00:13:27,639 --> 00:13:30,779 vamos a generar el equals, ¿por qué parámetro? 280 00:13:30,879 --> 00:13:32,519 por el que yo decido que representa 281 00:13:32,519 --> 00:13:34,580 la igualdad, claro, ¿cuál representa 282 00:13:34,580 --> 00:13:35,700 la igualdad en este caso? 283 00:13:36,980 --> 00:13:38,000 pues el NIA solamente 284 00:13:38,000 --> 00:13:42,460 no me hace falta ni la empresa 285 00:13:42,460 --> 00:13:44,019 ni el nombre para ver 286 00:13:44,019 --> 00:13:45,600 si dos a uno son iguales 287 00:13:45,600 --> 00:13:48,279 este valor lo representa de forma única 288 00:13:48,279 --> 00:13:50,120 puede haber entidades 289 00:13:50,120 --> 00:13:52,639 en las cuales para representar 290 00:13:52,639 --> 00:13:54,059 de forma única un objeto 291 00:13:54,059 --> 00:13:56,100 necesito yo dos propiedades, pero en este no 292 00:13:56,100 --> 00:13:56,980 con este ya está 293 00:13:56,980 --> 00:13:59,259 vale, pues si usamos el 294 00:13:59,259 --> 00:14:02,559 a ver, mira mucho por ahí 295 00:14:02,559 --> 00:14:03,519 ¿qué pasa? hay una avispa 296 00:14:03,519 --> 00:14:05,700 ¿eh? 297 00:14:07,200 --> 00:14:08,240 ¿pero porque hay una avispa 298 00:14:08,240 --> 00:14:09,220 intentando entrar o qué? 299 00:14:13,470 --> 00:14:14,250 pobrecita, hombre 300 00:14:14,250 --> 00:14:15,809 vale 301 00:14:15,809 --> 00:14:21,149 el hashcode que nos ha generado 302 00:14:21,149 --> 00:14:23,169 nos sobra, pues fuera, nos quedamos con el 303 00:14:23,169 --> 00:14:23,990 equals y se acabó. 304 00:14:25,710 --> 00:14:27,070 ¡Hala! Pues ya tenemos alumno, 305 00:14:27,169 --> 00:14:29,250 empresa, profesor, que ese es nuestro 306 00:14:29,250 --> 00:14:30,429 modelo de datos. 307 00:14:31,669 --> 00:14:32,629 Vale, ahora, 308 00:14:33,590 --> 00:14:35,269 esas clases se supone 309 00:14:35,269 --> 00:14:37,090 que representan una base de datos 310 00:14:37,090 --> 00:14:39,210 que tiene tres tablas, alumnos, profesores, 311 00:14:39,350 --> 00:14:40,909 empresas, y 312 00:14:40,909 --> 00:14:43,350 habrá una correspondencia entre campos de la tabla, 313 00:14:43,909 --> 00:14:44,909 campos de las clases, 314 00:14:45,049 --> 00:14:47,330 pero nosotros ahora mismo no tenemos esa base de datos. 315 00:14:47,929 --> 00:14:49,070 Entonces, nuestros objetos, 316 00:14:49,070 --> 00:14:51,769 los que maneja la aplicación, ¿dónde van a estar? 317 00:14:51,830 --> 00:14:52,769 ¿En base de datos? No. 318 00:14:53,830 --> 00:14:55,830 Los objetos tendrán que estar en una colección 319 00:14:55,830 --> 00:14:57,210 de la aplicación. Tienen que estar ahí. 320 00:14:57,929 --> 00:14:59,789 ¿Vale? Pues es lo que nos dicen. Nos dicen, los datos 321 00:14:59,789 --> 00:15:01,549 de la aplicación, ya los datos reales, 322 00:15:01,549 --> 00:15:03,490 porque esto es la plantilla. 323 00:15:04,350 --> 00:15:05,429 Esto es el modelo, 324 00:15:05,710 --> 00:15:07,730 la plantilla. Pero luego, los datos 325 00:15:07,730 --> 00:15:09,610 reales, ya los alumnos en 326 00:15:09,610 --> 00:15:11,490 concreto, los profesores en concreto, las 327 00:15:11,490 --> 00:15:13,470 empresas en concreto, o sea, los objetos, los datos 328 00:15:13,470 --> 00:15:15,269 reales, ¿dónde van a estar? ¿En base de datos? No. 329 00:15:15,669 --> 00:15:17,070 ¿Dónde van a estar? En un triset 330 00:15:17,070 --> 00:15:18,889 tendremos los alumnos 331 00:15:18,889 --> 00:15:21,269 y profesores 332 00:15:21,269 --> 00:15:24,049 y en un hashe tendremos las empresas. 333 00:15:24,470 --> 00:15:25,169 Ahí están mis datos. 334 00:15:25,649 --> 00:15:27,450 En lugar de tener una tabla de alumnos, 335 00:15:27,610 --> 00:15:29,590 una tabla de profesores y una tabla de empresas 336 00:15:29,590 --> 00:15:31,750 tendremos un triset de alumnos, 337 00:15:31,929 --> 00:15:33,970 un triset de profesores y un triset de empresas. 338 00:15:35,009 --> 00:15:35,690 Bueno, pues venga. 339 00:15:36,889 --> 00:15:37,889 Vamos a... 340 00:15:39,590 --> 00:15:41,129 ¿Dónde metemos esos datos? 341 00:15:41,649 --> 00:15:42,789 Vamos a meterlos en otra clase. 342 00:15:43,490 --> 00:15:44,769 Vamos a meterlos en otra clase. 343 00:15:45,450 --> 00:15:46,269 A ver si me ha ido el ratón. 344 00:15:46,350 --> 00:15:46,690 Ah, está aquí. 345 00:15:47,070 --> 00:15:50,649 Bueno, vamos a hacer un paquete de datos 346 00:15:50,649 --> 00:15:52,990 Por hacer más paquetes 347 00:15:52,990 --> 00:15:55,269 Claro, es que este paquete en realidad 348 00:15:55,269 --> 00:15:56,929 No existiría 349 00:15:56,929 --> 00:15:58,769 Porque estos datos estarían en una base de datos 350 00:15:58,769 --> 00:16:00,809 Pero nosotros no, como no tenemos base de datos 351 00:16:00,809 --> 00:16:03,029 Pues entonces nos hacemos 352 00:16:03,029 --> 00:16:05,190 La clase repositorio 353 00:16:05,190 --> 00:16:06,629 Que la llama ahí, o base de datos 354 00:16:06,629 --> 00:16:07,730 Como la queráis llamar 355 00:16:07,730 --> 00:16:10,309 Como dice el enunciado 356 00:16:10,309 --> 00:16:13,529 Y aquí están nuestros datos 357 00:16:13,529 --> 00:16:14,870 Idealmente 358 00:16:14,870 --> 00:16:17,429 Volcados de la base de datos 359 00:16:17,429 --> 00:16:21,500 Pues ala 360 00:16:21,500 --> 00:16:24,399 Aquí tenemos a los profesores 361 00:16:24,399 --> 00:16:35,159 Vale, inicialmente 362 00:16:35,159 --> 00:16:39,480 Inicialmente 363 00:16:39,480 --> 00:16:43,820 Bueno, no hace falta que le ponga 364 00:16:43,820 --> 00:16:44,639 Se lo puedo poner, ¿no? 365 00:16:44,639 --> 00:16:45,539 Pero bueno, hace falta 366 00:16:45,539 --> 00:16:47,860 Inicialmente no hay profes 367 00:16:47,860 --> 00:16:49,500 Se irán metiendo, se irán 368 00:16:49,500 --> 00:16:50,100 Vale, ahí 369 00:16:50,100 --> 00:16:52,940 ¿Por qué pongo yo profesores? 370 00:16:52,980 --> 00:16:53,779 Será profesor 371 00:16:53,779 --> 00:17:07,460 Pues lo mismo con alumnos 372 00:17:07,460 --> 00:17:09,819 y lo mismo 373 00:17:09,819 --> 00:17:11,420 con 374 00:17:11,420 --> 00:17:12,519 empresas 375 00:17:12,519 --> 00:17:15,240 alumno 376 00:17:15,240 --> 00:17:31,539 importamos 377 00:17:31,539 --> 00:17:33,359 y esto 378 00:17:33,359 --> 00:17:34,779 era una lista, habíamos dicho 379 00:17:34,779 --> 00:17:38,430 de empresas 380 00:17:38,430 --> 00:17:46,930 una lista que nos han dicho de qué tipo 381 00:17:46,930 --> 00:17:48,329 no, pues el que nos dé la gana 382 00:17:48,329 --> 00:17:50,849 o sí, ah un 383 00:17:50,849 --> 00:17:52,210 haset en caso de empresa, vale 384 00:17:52,210 --> 00:17:54,769 un triset y un haset en caso de 385 00:17:54,769 --> 00:17:56,950 empresa, pues venga 386 00:17:56,950 --> 00:17:58,549 entonces aquí esto es 387 00:17:58,549 --> 00:18:05,640 vale, pues bueno 388 00:18:05,640 --> 00:18:09,140 ahora 389 00:18:09,140 --> 00:18:11,599 nos vuelven a saltar 390 00:18:11,599 --> 00:18:13,640 las 391 00:18:13,640 --> 00:18:15,859 alarmas, vale 392 00:18:15,859 --> 00:18:18,279 aquí nos salta una primera alarma 393 00:18:18,279 --> 00:18:19,319 oye, cuidado 394 00:18:19,319 --> 00:18:22,140 que los profesores van a ir a un triset 395 00:18:22,140 --> 00:18:24,160 eso significa 396 00:18:24,160 --> 00:18:25,880 que yo, de mi triset 397 00:18:25,880 --> 00:18:28,099 profesores, usaré los métodos 398 00:18:28,099 --> 00:18:29,819 que me ofrece el triset para hacer cositas 399 00:18:29,819 --> 00:18:30,980 meter, sacar, etc, etc 400 00:18:30,980 --> 00:18:33,759 claro, pero para que la clase triset 401 00:18:33,759 --> 00:18:35,220 funcione correctamente 402 00:18:35,220 --> 00:18:39,559 la clase a la que pertenecen 403 00:18:39,559 --> 00:18:41,519 los objetos que va a tener dentro 404 00:18:41,519 --> 00:18:42,940 va a tener 405 00:18:42,940 --> 00:18:44,640 tiene que tener implementado el que 406 00:18:44,640 --> 00:18:48,039 triset estoy hablando 407 00:18:48,039 --> 00:18:54,869 casi 408 00:18:54,869 --> 00:18:58,190 eso sí 409 00:18:58,190 --> 00:19:00,109 el claro 410 00:19:00,109 --> 00:19:01,970 el comparable hace el papel del equals 411 00:19:01,970 --> 00:19:03,009 en el caso de los triset 412 00:19:03,009 --> 00:19:06,069 entonces profesor tiene 413 00:19:06,069 --> 00:19:08,230 implementa comparable y tiene implementado 414 00:19:08,230 --> 00:19:09,869 compare tú, no, pues esto 415 00:19:09,869 --> 00:19:11,910 no va a funcionar. ¿Puedo 416 00:19:11,910 --> 00:19:13,769 yo ir a profesor e implementárselo? 417 00:19:14,190 --> 00:19:15,609 Magnífico. Voy y se lo implemento. 418 00:19:15,730 --> 00:19:17,869 No puedo porque esas clases no son mías. 419 00:19:18,630 --> 00:19:19,769 ¿Cuál es la siguiente solución que 420 00:19:19,769 --> 00:19:23,460 teníamos? Pasarle un 421 00:19:23,460 --> 00:19:25,000 comparator al constructor. 422 00:19:26,220 --> 00:19:26,900 Decir, vale, 423 00:19:27,339 --> 00:19:29,160 profesor no lo puedo tocar, pero tú, Triset, 424 00:19:29,500 --> 00:19:31,279 usa este criterio de comparación. Te lo paso 425 00:19:31,279 --> 00:19:32,740 a ti solo para que lo uses tú 426 00:19:32,740 --> 00:19:34,460 a través de un comparator. 427 00:19:35,579 --> 00:19:37,420 ¿Pero que podemos acceder a profesor? 428 00:19:38,259 --> 00:19:38,700 Genial. 429 00:19:39,420 --> 00:19:41,440 Pues la hacemos que implemente 430 00:19:41,440 --> 00:19:54,200 comparable y ahora ya 431 00:19:54,200 --> 00:19:56,039 los profesores son comparables entre sí 432 00:19:56,039 --> 00:19:58,140 al implementar comparable tengo que 433 00:19:58,140 --> 00:20:00,240 sobreescribir el método 434 00:20:00,240 --> 00:20:02,279 vacío de comparable, el compare tú 435 00:20:02,279 --> 00:20:04,299 y ahora claro lo que tengo es que recordar el sentido 436 00:20:04,299 --> 00:20:05,859 de compare tú, este método es para 437 00:20:05,859 --> 00:20:08,380 ordenar y decidir que profesores 438 00:20:08,380 --> 00:20:09,500 van antes que otros 439 00:20:09,500 --> 00:20:11,779 criterio de ordenación, cual 440 00:20:11,779 --> 00:20:13,859 el que yo quiera 441 00:20:13,859 --> 00:20:15,279 pero que 442 00:20:15,279 --> 00:20:18,579 tenga sentido acorde a mi aplicación 443 00:20:18,579 --> 00:20:20,099 entonces aquí en el enunciado me dicen 444 00:20:20,099 --> 00:20:22,220 El objetivo de que se guarden 445 00:20:22,220 --> 00:20:23,359 Unas y profesores en triset 446 00:20:23,359 --> 00:20:25,200 Es que cuando iteremos 447 00:20:25,200 --> 00:20:28,160 Esta iteración se haga 448 00:20:28,160 --> 00:20:30,759 Ordenadamente según los nombres 449 00:20:30,759 --> 00:20:32,240 ¿Vale? 450 00:20:32,299 --> 00:20:33,200 Pues entonces 451 00:20:33,200 --> 00:20:34,839 Vamos a 452 00:20:34,839 --> 00:20:38,539 A que el criterio de compare tú 453 00:20:38,539 --> 00:20:40,119 Sea por orden alfabético de nombre 454 00:20:40,119 --> 00:20:42,339 Pues venga, esto ya lo hemos hecho 455 00:20:42,339 --> 00:20:44,619 Otras veces 456 00:20:44,619 --> 00:20:47,660 Y esto 457 00:20:47,660 --> 00:20:52,430 pues this.getNombre 458 00:20:52,430 --> 00:20:57,079 .compareTo 459 00:20:57,079 --> 00:20:59,420 o .getNombre 460 00:20:59,420 --> 00:21:03,309 vale, este método 461 00:21:03,309 --> 00:21:05,410 ya recordáis que la idea 462 00:21:05,410 --> 00:21:07,609 era devolvía menos uno, cero o uno 463 00:21:07,609 --> 00:21:09,609 menos uno, cero o uno 464 00:21:09,609 --> 00:21:11,369 en función de si iba antes 465 00:21:11,369 --> 00:21:13,289 este, si era el mismo 466 00:21:13,289 --> 00:21:15,210 o si iba antes 467 00:21:15,210 --> 00:21:15,869 este otro 468 00:21:15,869 --> 00:21:18,529 el criterio es 469 00:21:18,529 --> 00:21:20,549 el nombre 470 00:21:20,549 --> 00:21:23,230 pues entonces ordeno alfabéticamente 471 00:21:23,230 --> 00:21:25,230 el nombre, que para eso tengo el compare to 472 00:21:25,230 --> 00:21:27,210 de la clase string, bueno, esto lo hemos hecho 473 00:21:27,210 --> 00:21:29,049 unas cuantas veces 474 00:21:29,049 --> 00:21:37,029 a ver, primero 475 00:21:37,029 --> 00:21:39,130 aquí os aparece el profesor u object 476 00:21:39,130 --> 00:21:41,690 claro, porque no habéis hecho el comparable 477 00:21:41,690 --> 00:21:43,930 parametrizado, habéis hecho el comparable a palo seco 478 00:21:44,470 --> 00:21:48,980 y os ha aparecido 479 00:21:48,980 --> 00:21:51,140 cuando habéis hecho, os ha aparecido una cosa amarilla 480 00:21:51,140 --> 00:21:52,220 a la que no habéis hecho ni caso 481 00:21:52,220 --> 00:21:54,740 a las cosas amarillas hay que hacerles caso 482 00:21:54,740 --> 00:21:57,460 que no pasa nada, lo puedes dejar sin parametrizar 483 00:21:57,460 --> 00:21:59,039 y aquí con object, entonces tienes que hacer el casting 484 00:21:59,039 --> 00:22:00,380 entonces haces el casting 485 00:22:00,380 --> 00:22:05,259 Vale, pues entonces 486 00:22:05,259 --> 00:22:07,559 Alumno también va a un triset 487 00:22:07,559 --> 00:22:09,559 Pues en alumno tenemos la misma historieta 488 00:22:09,559 --> 00:22:11,619 Alumno tendrá que implementar 489 00:22:11,619 --> 00:22:12,859 Comparable de alumno 490 00:22:12,859 --> 00:22:24,779 Y al implementar comparable alumno 491 00:22:24,779 --> 00:22:26,339 Pues otra vez 492 00:22:26,339 --> 00:22:27,940 Ala 493 00:22:27,940 --> 00:22:30,279 Lo mismo 494 00:22:30,279 --> 00:22:36,210 Retundis 495 00:22:36,210 --> 00:22:37,910 Punto getNombre 496 00:22:37,910 --> 00:22:41,529 Punto compareTo 497 00:22:41,529 --> 00:22:43,750 o .getNom 498 00:22:43,750 --> 00:22:45,670 ala 499 00:22:45,670 --> 00:22:47,470 ahora ya 500 00:22:47,470 --> 00:22:48,630 nuestros tríceps 501 00:22:48,630 --> 00:22:51,470 de profesores y alumnos ya van a funcionar 502 00:22:51,470 --> 00:22:52,230 sin ningún problema 503 00:22:52,230 --> 00:22:54,809 a la hora de hacer un contains 504 00:22:54,809 --> 00:22:56,950 a la hora de hacer un remove 505 00:22:56,950 --> 00:22:59,329 lo que sea, va a poder encontrar un alumno igual a otro 506 00:22:59,329 --> 00:23:01,450 porque es el compare to el que se lo dice 507 00:23:01,450 --> 00:23:03,269 vale 508 00:23:03,269 --> 00:23:05,309 ya va a poder encontrarlo, si no, no lo iba a poder encontrar 509 00:23:05,309 --> 00:23:07,690 empresas 510 00:23:07,690 --> 00:23:09,230 va un haset, luego profesor 511 00:23:09,230 --> 00:23:10,829 tiene que tener jasco de equals también 512 00:23:10,829 --> 00:23:13,069 Profesor tiene 513 00:23:13,069 --> 00:23:14,130 Hasco de Equals 514 00:23:14,130 --> 00:23:17,029 Profesor no tiene 515 00:23:17,029 --> 00:23:18,009 Ni Hasco ni Equals 516 00:23:18,009 --> 00:23:18,569 Ni tiene nada 517 00:23:18,569 --> 00:23:19,630 Tiene que tenerlo 518 00:23:19,630 --> 00:23:20,789 Para que este 519 00:23:20,789 --> 00:23:22,269 Es que soy idiota 520 00:23:22,269 --> 00:23:22,849 Esto es empresa 521 00:23:22,849 --> 00:23:23,549 Perdón 522 00:23:23,549 --> 00:23:25,670 Empresa 523 00:23:25,670 --> 00:23:29,789 Empresa 524 00:23:29,789 --> 00:23:31,690 Empresa tiene 525 00:23:31,690 --> 00:23:32,589 Hasco de Equals 526 00:23:32,589 --> 00:23:33,450 Tiene que tenerlo 527 00:23:33,450 --> 00:23:35,730 Para que la colección esta 528 00:23:35,730 --> 00:23:36,910 Funcione correctamente 529 00:23:36,910 --> 00:23:38,369 Porque es un Haset 530 00:23:38,369 --> 00:23:40,190 Pues nos vamos a empresa 531 00:23:40,190 --> 00:23:41,250 Y le hacemos el 532 00:23:41,250 --> 00:23:42,470 Hasco de Equals 533 00:23:42,470 --> 00:23:50,690 por lo que caracterice de forma única 534 00:23:50,690 --> 00:23:52,490 la empresa, vamos a mirar las propiedades 535 00:23:52,490 --> 00:23:53,230 el código 536 00:23:53,230 --> 00:23:58,490 a ver si me dan dos propiedades código y nombre 537 00:23:58,490 --> 00:24:00,490 a ver entiendo yo que es 538 00:24:00,490 --> 00:24:02,670 mucho más probable 539 00:24:02,670 --> 00:24:04,450 que sea el código el que sea único 540 00:24:04,450 --> 00:24:05,349 que no que sea el nombre 541 00:24:05,349 --> 00:24:10,079 pero bueno eso habría que hablarlo con el que nos 542 00:24:10,079 --> 00:24:12,500 mandó la aplicación, decirle oye las empresas con las que vas a 543 00:24:12,500 --> 00:24:13,680 trabajar tienen nombre único 544 00:24:13,680 --> 00:24:20,569 hasco de equals por código 545 00:24:20,569 --> 00:24:34,309 bueno, pues a ver 546 00:24:34,309 --> 00:24:36,329 los datos 547 00:24:36,329 --> 00:24:38,349 todo relacionado con la estructura de datos, ya está 548 00:24:38,349 --> 00:24:40,410 ya está correcto 549 00:24:40,410 --> 00:24:41,750 ¿el casco de Icon de qué lo has hecho? 550 00:24:43,430 --> 00:24:44,690 de la propiedad 551 00:24:44,690 --> 00:24:46,509 que lo identifique de forma 552 00:24:46,509 --> 00:24:53,809 única, en profesores 553 00:24:53,809 --> 00:24:54,670 ¿no hago el qué? 554 00:24:54,670 --> 00:24:56,150 en la clase de profesor 555 00:24:56,150 --> 00:24:59,509 ¿profesor va a formar 556 00:24:59,509 --> 00:25:00,569 parte de algún haset? 557 00:25:01,910 --> 00:25:03,190 ¿habla algo de mi aplicación? 558 00:25:03,190 --> 00:25:07,569 Pero eso no es un hased, es un triset 559 00:25:07,569 --> 00:25:09,329 Por eso he hecho el comparable 560 00:25:09,329 --> 00:25:11,549 Que lo acabo de hacer hace 3 minutos 561 00:25:11,549 --> 00:25:16,119 Vale, pues entonces 562 00:25:16,119 --> 00:25:17,799 Ahora, la vista 563 00:25:17,799 --> 00:25:20,180 Pues ya es para comunicarse, pero claro, antes de hacer la vista 564 00:25:20,180 --> 00:25:21,799 Pues lo que hay que ver es 565 00:25:21,799 --> 00:25:22,640 Que vamos a hacer 566 00:25:22,640 --> 00:25:26,180 Que va a hacer la aplicación para ver que componente necesitamos 567 00:25:26,180 --> 00:25:27,599 Etcétera, la vista es lo de menos 568 00:25:27,599 --> 00:25:30,259 Es arrastrar 4 chorradas y ya, la vista no nos importa 569 00:25:30,259 --> 00:25:32,240 Vale, ¿qué tiene que hacer la profesión? 570 00:25:32,240 --> 00:25:33,779 La aplicación 571 00:25:33,779 --> 00:25:35,799 pues 572 00:25:35,799 --> 00:25:38,180 dado ni fin hombre 573 00:25:38,180 --> 00:25:39,660 hacer un alta de un profesor 574 00:25:39,660 --> 00:25:42,039 estos métodos están directamente 575 00:25:42,039 --> 00:25:44,079 ubicados en repositorio, ¿por qué? porque son métodos 576 00:25:44,079 --> 00:25:46,279 que trabajan con datos, entonces tiene sentido que estén ahí 577 00:25:46,279 --> 00:25:47,460 pues venga 578 00:25:47,460 --> 00:25:50,099 alta profesor, esto es 579 00:25:50,099 --> 00:25:51,119 una chorrada, ¿no? 580 00:25:53,779 --> 00:25:54,299 métodos 581 00:25:54,299 --> 00:25:56,279 venga, vamos a ponerlo 582 00:25:56,279 --> 00:25:58,619 aquí, estos serían los requisitos funcionales 583 00:25:58,619 --> 00:26:02,220 o funcionalidades, como los 584 00:26:02,220 --> 00:26:02,960 Quiero no llamar 585 00:26:02,960 --> 00:26:05,799 Funcionalidades 586 00:26:05,799 --> 00:26:09,369 Alta de un profesor 587 00:26:09,369 --> 00:26:22,400 Dados 588 00:26:22,400 --> 00:26:23,819 Su NIF 589 00:26:23,819 --> 00:26:26,200 Y su nombre 590 00:26:26,200 --> 00:26:39,440 Vale 591 00:26:39,440 --> 00:26:45,029 ¿Alguien no sabría hacer esto rápidamente 592 00:26:45,029 --> 00:26:46,349 En un minuto en una única línea? 593 00:26:53,619 --> 00:26:54,299 Sabríais, ¿no? 594 00:26:54,339 --> 00:26:55,400 Es meter en un set 595 00:26:55,400 --> 00:27:03,339 Instanciar un profesor con estos datos 596 00:27:03,339 --> 00:27:04,539 Y añadirlo al set 597 00:27:04,539 --> 00:27:08,839 Vamos a dar esto primero, pero vamos 598 00:27:08,839 --> 00:27:13,259 Profesores.add 599 00:27:13,259 --> 00:27:14,640 New 600 00:27:14,640 --> 00:27:16,680 Profesor 601 00:27:16,680 --> 00:27:19,599 Como tenemos un constructor con nif y nombre solamente 602 00:27:19,599 --> 00:27:22,940 Pues nos viene fenomenal 603 00:27:22,940 --> 00:27:25,099 Para esto, y los alumnos ya llegarán más tarde 604 00:27:25,099 --> 00:27:28,980 Perdón 605 00:27:28,980 --> 00:27:33,690 El put solo para maps 606 00:27:33,690 --> 00:27:35,750 Y el add para el resto de colecciones 607 00:27:35,750 --> 00:27:37,529 Vale, a ver 608 00:27:37,529 --> 00:27:39,089 La siguiente 609 00:27:39,089 --> 00:27:40,269 Y son igual de chorras 610 00:27:40,269 --> 00:27:42,970 Vale, 2 y 3 611 00:27:42,970 --> 00:27:45,289 Las ponemos ahí pero las dejamos vacías 612 00:27:45,289 --> 00:27:47,109 Porque es hacer esa línea vosotros 613 00:27:47,109 --> 00:27:48,470 O ya está 614 00:27:48,470 --> 00:27:54,819 Alta alumno 615 00:27:54,819 --> 00:28:00,920 Nia, nombre, código, nombre 616 00:28:00,920 --> 00:28:15,369 Vale, alta alumno 617 00:28:15,369 --> 00:28:17,750 Ahí lo hacéis 618 00:28:17,750 --> 00:28:19,309 Vale 619 00:28:19,309 --> 00:28:22,369 Y alta empresa 620 00:28:22,369 --> 00:28:31,119 Alta empresa 621 00:28:31,119 --> 00:28:33,220 Con la empresa 622 00:28:33,220 --> 00:28:34,619 Lo único que hay que dar de alta 623 00:28:34,619 --> 00:28:37,019 Código de empresa 624 00:28:37,019 --> 00:28:40,910 Y código y dirección 625 00:28:40,910 --> 00:28:42,910 A código y nombre 626 00:28:42,910 --> 00:28:44,849 Perdón, alta empresa, código y nombre 627 00:28:44,849 --> 00:29:03,630 Vale, entonces esta empresa 628 00:29:03,630 --> 00:29:05,190 Cuando se crea inicialmente 629 00:29:05,190 --> 00:29:06,250 Se crea sin sedes 630 00:29:06,250 --> 00:29:08,750 En este método, vale 631 00:29:08,750 --> 00:29:11,430 Porque la empresa luego puede tener sedes 632 00:29:11,430 --> 00:29:19,049 Y la cuarta es 633 00:29:19,049 --> 00:29:20,049 Dada una empresa 634 00:29:20,049 --> 00:29:22,569 Darle una sede 635 00:29:22,569 --> 00:29:25,130 Alta de sede en empresa 636 00:29:25,130 --> 00:29:26,710 Dado el código de empresa 637 00:29:26,710 --> 00:29:28,009 Y código de dirección de la sede 638 00:29:28,009 --> 00:29:30,450 vale, aquí dicen las cuatro 639 00:29:30,450 --> 00:29:32,670 si se trata de dar alta a un elemento 640 00:29:32,670 --> 00:29:33,470 que ya existe 641 00:29:33,470 --> 00:29:36,029 se avisa al usuario 642 00:29:36,029 --> 00:29:37,250 y ya está 643 00:29:37,250 --> 00:29:40,529 el alumno ya existe, el alumno ya existe, etc 644 00:29:40,529 --> 00:29:41,410 entonces 645 00:29:41,410 --> 00:29:44,250 ¿eso en qué se traduciría? 646 00:29:45,130 --> 00:29:46,490 en esta primera parte de aquí 647 00:29:46,490 --> 00:29:56,240 profesores, alumnos 648 00:29:56,240 --> 00:29:57,980 empresas, todos están en un set 649 00:29:57,980 --> 00:30:00,019 ya 650 00:30:00,019 --> 00:30:02,240 recordamos todos que en un set 651 00:30:02,240 --> 00:30:03,740 no se pueden meter duplicados 652 00:30:03,740 --> 00:30:06,819 entonces, ¿qué habrá ocurrido con el add 653 00:30:06,819 --> 00:30:08,740 si el profesor ya existe 654 00:30:08,740 --> 00:30:10,539 que no habrá metido nada 655 00:30:10,539 --> 00:30:11,960 que no habrá metido nada 656 00:30:11,960 --> 00:30:15,140 y además el add te avisa con un valor de retorno 657 00:30:15,140 --> 00:30:16,859 ¿verdad? eso no ocurre con los list 658 00:30:16,859 --> 00:30:19,140 los list como admiten 659 00:30:19,140 --> 00:30:19,819 duplicados 660 00:30:19,819 --> 00:30:22,480 si tú metes un elemento que ya está 661 00:30:22,480 --> 00:30:24,380 te lo mete en la posición que sea 662 00:30:24,380 --> 00:30:26,779 en la última, normalmente si haces el add 663 00:30:26,779 --> 00:30:28,480 sin parámetros, pero te lo mete 664 00:30:28,480 --> 00:30:29,960 en el set no 665 00:30:29,960 --> 00:30:32,279 entonces si el profesor ya estaba 666 00:30:32,279 --> 00:30:35,579 esto no ha dado error pero no ha insertado 667 00:30:35,579 --> 00:30:37,500 nada, pero sí que ha 668 00:30:37,500 --> 00:30:38,180 devuelto 669 00:30:38,180 --> 00:30:41,279 un false con que no se ha insertado nada 670 00:30:41,279 --> 00:30:42,539 entonces lo que dice aquí de 671 00:30:42,539 --> 00:30:45,480 si el 672 00:30:45,480 --> 00:30:47,579 elemento ya existe, se avisa 673 00:30:47,579 --> 00:30:49,519 bueno, pues esto simplemente 674 00:30:49,519 --> 00:30:51,380 podemos hacer esto 675 00:30:51,380 --> 00:30:55,440 añadimos este if 676 00:30:55,440 --> 00:30:56,859 y ya 677 00:30:56,859 --> 00:30:59,059 ¿vale? 678 00:30:59,720 --> 00:31:00,220 entonces 679 00:31:00,220 --> 00:31:03,759 aquí, ¿cuál es el tema? 680 00:31:04,359 --> 00:31:06,220 Aquí el tema es 681 00:31:06,220 --> 00:31:08,019 Esto es lo más interesante 682 00:31:08,019 --> 00:31:10,039 ¿Qué significa esto de que se avisa? 683 00:31:10,819 --> 00:31:13,440 Hemos dicho que la comunicación es por interfaz gráfica 684 00:31:13,440 --> 00:31:15,299 Luego esto de avisar aquí poniendo esto 685 00:31:15,299 --> 00:31:18,079 El profesor ya existe 686 00:31:18,079 --> 00:31:22,609 Esto no tiene absolutamente ningún sentido 687 00:31:22,609 --> 00:31:25,470 Porque la consola no va a ver nadie viéndola 688 00:31:25,470 --> 00:31:27,410 Esto saldrá una consola 689 00:31:27,410 --> 00:31:29,029 Pero no va a ver nadie viéndola 690 00:31:29,029 --> 00:31:31,789 Entonces la información del profesor ya existe 691 00:31:31,789 --> 00:31:33,609 Tiene que ir a una interfaz gráfica 692 00:31:33,609 --> 00:31:35,650 A ver, interfaz gráfica 693 00:31:35,650 --> 00:31:37,329 que no hemos construido, está en la vista 694 00:31:37,329 --> 00:31:39,549 la vista ya la haremos con una interfaz gráfica 695 00:31:39,549 --> 00:31:41,690 decidiremos cómo nos comunicamos 696 00:31:41,690 --> 00:31:43,789 con ella, vale, entonces este método 697 00:31:43,789 --> 00:31:44,910 este método 698 00:31:44,910 --> 00:31:47,150 el sentido que tiene es que avise 699 00:31:47,150 --> 00:31:49,269 con un valor de retorno 700 00:31:49,269 --> 00:31:51,009 no 701 00:31:51,009 --> 00:31:53,549 como no mandando aquí a la vista 702 00:31:53,549 --> 00:31:55,430 nada, porque tenemos que separar clases 703 00:31:55,430 --> 00:31:56,829 la vista ya la haremos 704 00:31:56,829 --> 00:31:59,410 la vista la da otro tío, que no somos nosotros 705 00:31:59,410 --> 00:32:01,589 entonces nosotros no podemos ahora meternos 706 00:32:01,589 --> 00:32:03,950 en su trabajo, la vista la da otro tío que no somos nosotros 707 00:32:03,950 --> 00:32:06,029 entonces, este método nuestro 708 00:32:06,029 --> 00:32:08,230 ¿qué hace? se limita a avisar 709 00:32:08,230 --> 00:32:09,910 con el valor de retorno, avisa 710 00:32:09,910 --> 00:32:11,549 de si pudo 711 00:32:11,549 --> 00:32:13,309 dar de alta al profesor o no 712 00:32:13,309 --> 00:32:15,710 y ya el que llame a este método 713 00:32:15,710 --> 00:32:17,269 el que llame a este método 714 00:32:17,269 --> 00:32:20,210 en el main, y en el main ya sí que está a la vista 715 00:32:20,210 --> 00:32:22,029 el que lo llame en función de valor de retorno 716 00:32:22,029 --> 00:32:24,109 ya decide si pone una etiqueta 717 00:32:24,109 --> 00:32:26,170 si pone un semáforo 718 00:32:26,170 --> 00:32:27,950 en rojo, ya lo decide él, ese no es 719 00:32:27,950 --> 00:32:30,109 nuestro trabajo, nuestro trabajo 720 00:32:30,109 --> 00:32:32,130 simplemente es, que estamos haciendo el back 721 00:32:32,130 --> 00:32:34,349 la lógica, nuestro trabajo es avisar 722 00:32:34,349 --> 00:32:36,710 de que no, el profesor 723 00:32:36,710 --> 00:32:37,609 no se pudo dar de alta 724 00:32:37,609 --> 00:32:40,950 como avisamos, repito, no con la consola 725 00:32:40,950 --> 00:32:42,329 avisamos con el valor de retorno 726 00:32:42,329 --> 00:32:43,490 entonces este void 727 00:32:43,490 --> 00:32:48,009 efectivamente, convirtamoslo en un boolean 728 00:32:48,009 --> 00:32:49,509 y entonces 729 00:32:49,509 --> 00:32:55,220 esto 730 00:32:55,220 --> 00:32:57,440 que se convierta en esto 731 00:32:57,440 --> 00:33:06,349 y yo seguro que me he pasado con algún paréntesis 732 00:33:06,349 --> 00:33:10,509 y estupendamente, tan ricamente 733 00:33:10,509 --> 00:33:12,289 vale, esto es 734 00:33:12,289 --> 00:33:14,329 desacoplamiento, que es lo que se persigue 735 00:33:14,329 --> 00:33:15,349 en el desarrollo 736 00:33:15,349 --> 00:33:17,970 desacoplar las partes de la aplicación 737 00:33:17,970 --> 00:33:19,710 yo estoy haciendo la lógica 738 00:33:19,710 --> 00:33:21,869 insertar profesores, recuperar 739 00:33:21,869 --> 00:33:23,230 y aviso 740 00:33:23,230 --> 00:33:26,049 a quien tenga que avisar, que es al que me llama 741 00:33:26,049 --> 00:33:28,170 y el que me llama usa esa 742 00:33:28,170 --> 00:33:29,410 información como le dé la gana 743 00:33:29,410 --> 00:33:32,410 para sacar una ventanita, para lo que quiera 744 00:33:32,410 --> 00:33:34,549 entonces, ¿qué va a hacer este método? 745 00:33:34,549 --> 00:33:35,529 este método 746 00:33:35,529 --> 00:33:37,210 hará el ad 747 00:33:37,210 --> 00:33:42,180 también 748 00:33:42,180 --> 00:33:44,079 también, vale 749 00:33:44,079 --> 00:33:46,900 entonces este método 750 00:33:46,900 --> 00:33:48,799 intenta hacerlo, que lo ha conseguido hacer 751 00:33:48,799 --> 00:33:49,980 fenomenal 752 00:33:49,980 --> 00:33:52,880 lo mete, que no me devuelve 753 00:33:52,880 --> 00:33:54,640 false y me devuelve true, que no me devuelve false 754 00:33:54,640 --> 00:33:56,420 y ya está, entonces estos de abajo 755 00:33:56,420 --> 00:33:58,980 pues será la misma idea 756 00:33:58,980 --> 00:34:00,859 vale, será la misma 757 00:34:00,859 --> 00:34:04,279 idea, voy a poner yo ahora 758 00:34:04,279 --> 00:34:05,000 aquí esto 759 00:34:05,000 --> 00:34:07,859 para que lo completéis vosotros 760 00:34:07,859 --> 00:34:09,780 y aquí lo mismo 761 00:34:09,780 --> 00:34:11,519 esto será 762 00:34:11,519 --> 00:34:15,420 boolean 763 00:34:15,420 --> 00:34:18,219 Pongo esto para que 764 00:34:18,219 --> 00:34:19,260 Ya está 765 00:34:19,260 --> 00:34:21,940 Vale, entonces ahora nos quedaba 766 00:34:21,940 --> 00:34:23,159 Este otro que es 767 00:34:23,159 --> 00:34:25,500 Alta de una sede en la empresa 768 00:34:25,500 --> 00:34:27,300 En una empresa con tal código 769 00:34:27,300 --> 00:34:28,659 Un código y dirección de sede 770 00:34:28,659 --> 00:34:30,539 Pues venga, a ver 771 00:34:30,539 --> 00:34:40,539 Alta sede, empresa 772 00:34:40,539 --> 00:34:42,460 Le tengo que dar 773 00:34:42,460 --> 00:34:44,480 El código de la empresa 774 00:34:44,480 --> 00:34:48,420 Código, empresa 775 00:34:48,420 --> 00:34:51,119 Código 776 00:34:51,119 --> 00:34:55,250 De la sede 777 00:34:55,250 --> 00:35:00,690 Y la ubicación de la sedera 778 00:35:00,690 --> 00:35:05,630 O algo así sería 779 00:35:05,630 --> 00:35:13,559 Vale 780 00:35:13,559 --> 00:35:16,039 Pues aquí que tenemos 781 00:35:16,039 --> 00:35:18,679 Aquí tenemos 782 00:35:18,679 --> 00:35:20,619 Las empresas están aquí 783 00:35:20,619 --> 00:35:23,079 Tendremos que localizar la empresa 784 00:35:23,079 --> 00:35:25,440 Y a esa empresa 785 00:35:25,440 --> 00:35:26,940 Ponerle 786 00:35:26,940 --> 00:35:29,119 En su array correspondiente 787 00:35:29,119 --> 00:35:31,019 Pues venga 788 00:35:31,019 --> 00:35:33,380 hacedlo ahora en estos dos minutos 789 00:35:33,380 --> 00:35:34,079 este método 790 00:35:34,079 --> 00:35:36,639 dos o tres