1 00:00:00,000 --> 00:00:10,019 Bueno, a ver, hemos quedado que estas dos clases estaban entendidas, lo que representaban 2 00:00:10,019 --> 00:00:11,660 lo que significa. Una empresa que tiene 3 00:00:11,660 --> 00:00:13,300 un... 4 00:00:13,300 --> 00:00:14,919 No, nos hemos divorciado. 5 00:00:14,919 --> 00:00:16,160 Aquí existe una pelea. 6 00:00:18,160 --> 00:00:19,699 Por eso, la clase de autoría 7 00:00:19,699 --> 00:00:21,440 del viernes 20, ya sabemos dónde está la casa. 8 00:00:21,460 --> 00:00:22,260 Bar de la gente. 9 00:00:23,920 --> 00:00:24,920 Bar de troya. 10 00:00:24,920 --> 00:00:26,920 El final fue ver a... 11 00:00:27,539 --> 00:00:28,320 ¿Qué es la relación? 12 00:00:28,480 --> 00:00:28,980 ¿Qué es la relación? 13 00:00:28,980 --> 00:00:29,480 ¿Qué es la relación? 14 00:00:31,660 --> 00:00:33,399 Bueno, vale. 15 00:00:34,259 --> 00:00:37,159 Tenemos una empresa con departamentos y empleados, 16 00:00:37,939 --> 00:00:39,039 una base de datos empleados, 17 00:00:39,039 --> 00:00:40,560 no van a ser datos de departamentos 18 00:00:40,560 --> 00:00:42,100 qué tristeza 19 00:00:42,100 --> 00:00:43,939 te da pena 20 00:00:43,939 --> 00:00:46,119 no, no me da ninguna pena 21 00:00:46,119 --> 00:00:48,899 y para gestionar esas tablas 22 00:00:48,899 --> 00:00:50,259 tenemos esta aplicación 23 00:00:50,259 --> 00:00:53,159 vale, y ahí vamos a recoger los datos 24 00:00:53,159 --> 00:00:55,000 magnífico, y ahora ya haremos 25 00:00:55,000 --> 00:00:57,039 un main, que ya Ana ya 26 00:00:57,039 --> 00:00:59,079 ha hecho bastante del main, pero bueno 27 00:00:59,079 --> 00:01:00,240 eso ya es secundario 28 00:01:00,240 --> 00:01:02,899 el main ya es una aplicación concreta 29 00:01:02,899 --> 00:01:04,359 que funcionalidades va a tener 30 00:01:04,359 --> 00:01:07,280 pues crear el departamento, crear los empleados 31 00:01:07,280 --> 00:01:08,819 cambiar el jefe 32 00:01:08,819 --> 00:01:11,859 meter a un empleado nuevo, despedirlo 33 00:01:11,859 --> 00:01:13,140 lo que sea, lo que toque 34 00:01:13,140 --> 00:01:15,200 lo que toque 35 00:01:15,200 --> 00:01:16,060 ¿vale? 36 00:01:16,900 --> 00:01:19,519 entonces eso ya puede haber mil 37 00:01:19,519 --> 00:01:21,459 aplicaciones usando tanto 38 00:01:21,459 --> 00:01:22,900 departamento como empleado, mil 39 00:01:22,900 --> 00:01:25,659 una de ellas es pues la que está pedida 40 00:01:25,659 --> 00:01:27,439 y la que ha hecho Ana, que ha subido 41 00:01:27,439 --> 00:01:29,620 que miraremos cuando 42 00:01:29,620 --> 00:01:31,280 no se tiene, vale, bueno 43 00:01:31,280 --> 00:01:33,659 ¿qué situación se nos puede dar? 44 00:01:34,379 --> 00:01:35,540 que en esta realidad que 45 00:01:35,540 --> 00:01:36,579 tenemos que trabajar 46 00:01:36,579 --> 00:01:38,859 con empleados y departamentos 47 00:01:38,859 --> 00:01:40,500 que en esta realidad con la que tenemos que trabajar 48 00:01:40,500 --> 00:01:43,340 hay información que también hay que recoger 49 00:01:43,340 --> 00:01:45,560 pero que esa información no sea 50 00:01:45,560 --> 00:01:47,200 característica 51 00:01:47,200 --> 00:01:49,560 de cada empleado o característica 52 00:01:49,560 --> 00:01:50,540 de cada departamento 53 00:01:50,540 --> 00:01:53,379 ¿verdad? o sea, con estas dos clases que hemos 54 00:01:53,379 --> 00:01:55,280 hecho, toda la información 55 00:01:55,280 --> 00:01:56,379 que recogemos es 56 00:01:56,379 --> 00:01:59,620 o esta, pero esta caracteriza 57 00:01:59,620 --> 00:02:01,140 cada empleado, con lo cual 58 00:02:01,140 --> 00:02:03,379 cada empleado tiene la suya propia, eso está claro 59 00:02:03,379 --> 00:02:03,680 ¿verdad? 60 00:02:03,680 --> 00:02:05,879 o esta de aquí 61 00:02:05,879 --> 00:02:08,479 pero esta caracteriza 62 00:02:08,479 --> 00:02:10,580 a cada departamento, luego cada departamento 63 00:02:10,580 --> 00:02:12,580 tiene la suya propia. Y esa es 64 00:02:12,580 --> 00:02:14,599 toda la información que tiene nuestra aplicación 65 00:02:14,599 --> 00:02:16,219 no tiene más, toda la información está 66 00:02:16,219 --> 00:02:18,659 o aquí o aquí 67 00:02:18,659 --> 00:02:20,500 y esa información 68 00:02:20,500 --> 00:02:22,360 repito, o es información que 69 00:02:22,360 --> 00:02:24,300 caracteriza a cada empleado 70 00:02:24,300 --> 00:02:26,500 o es información que caracteriza 71 00:02:26,500 --> 00:02:28,520 a cada departamento. Vale 72 00:02:28,520 --> 00:02:30,580 pero puede haber información 73 00:02:30,580 --> 00:02:32,639 con la que nuestra aplicación 74 00:02:32,639 --> 00:02:35,259 de empleados y departamentos tenga que trabajar también 75 00:02:35,259 --> 00:02:38,840 y esa información no sea característica 76 00:02:38,840 --> 00:02:41,599 de cada empleado por separado o característica 77 00:02:41,599 --> 00:02:43,379 de cada departamento. Entonces, ¿dónde la metemos? 78 00:02:44,520 --> 00:02:47,699 Hay que meterla en algún sitio porque las aplicaciones que trabajan 79 00:02:47,699 --> 00:02:49,560 con empleados y departamentos la necesitan. 80 00:02:50,419 --> 00:02:53,599 Por ejemplo, la aplicación que trabaja con empleados 81 00:02:53,599 --> 00:02:55,039 y departamentos, esta de aquí, 82 00:02:56,500 --> 00:03:00,099 necesita la ubicación física de la empresa 83 00:03:00,099 --> 00:03:01,939 donde están todos los departamentos 84 00:03:01,939 --> 00:03:04,379 necesita la ubicación física donde están todos los departamentos 85 00:03:04,379 --> 00:03:06,300 vale, pues nos surge 86 00:03:06,300 --> 00:03:08,199 la pregunta, esa ubicación 87 00:03:08,199 --> 00:03:10,099 física vamos a suponer que es una variable 88 00:03:10,099 --> 00:03:11,960 stream, calle del 89 00:03:11,960 --> 00:03:13,699 percebe, no sé cuántos, vale 90 00:03:13,699 --> 00:03:16,020 pues esa información, esa variable 91 00:03:16,020 --> 00:03:18,319 stream, ¿dónde la metemos? 92 00:03:18,419 --> 00:03:20,199 ¿dónde la reflejamos en este modelo 93 00:03:20,199 --> 00:03:21,819 de clases nuestro con dos clases 94 00:03:21,819 --> 00:03:24,500 empleo o departamento? ¿dónde la reflejamos? 95 00:03:25,280 --> 00:03:25,919 porque si la 96 00:03:25,919 --> 00:03:28,400 reflejamos aquí 97 00:03:28,400 --> 00:03:34,659 y private string dirección de la empresa. 98 00:03:35,759 --> 00:03:36,979 Pues si la reflejamos aquí, 99 00:03:37,680 --> 00:03:40,800 significa que cada objeto departamento 100 00:03:40,800 --> 00:03:44,199 tiene su propia variable dirección empresa. 101 00:03:45,060 --> 00:03:46,599 Y no, eso está mal expresado. 102 00:03:47,319 --> 00:03:49,740 Todos los departamentos están en la misma dirección. 103 00:03:50,580 --> 00:03:52,500 Luego podemos recoger aquí esta información, 104 00:03:52,500 --> 00:03:56,860 pero la tendríamos por duplicado en todos los departamentos, 105 00:03:56,860 --> 00:03:58,639 en todos, que necesidad 106 00:03:58,639 --> 00:04:00,759 de tenerla en todos los departamentos cuando en todos 107 00:04:00,759 --> 00:04:03,219 es la misma, donde la metemos 108 00:04:03,219 --> 00:04:04,740 fuera de la clase 109 00:04:04,740 --> 00:04:06,860 no se puede, en Java 110 00:04:06,860 --> 00:04:09,039 no hay ninguna variable que se pueda 111 00:04:09,039 --> 00:04:11,180 declarar fuera de una clase 112 00:04:11,180 --> 00:04:12,060 ¿verdad Jesús? 113 00:04:13,240 --> 00:04:14,539 que todo 114 00:04:14,539 --> 00:04:16,800 el código Java, todo el código Java 115 00:04:16,800 --> 00:04:18,699 de cualquier aplicación Java, todo va siempre 116 00:04:18,699 --> 00:04:20,100 dentro de clases, todo 117 00:04:20,100 --> 00:04:23,120 luego esto, donde lo ubicamos 118 00:04:23,120 --> 00:04:24,819 aquí desde luego 119 00:04:24,819 --> 00:04:27,120 queda fatal, cada departamento 120 00:04:27,120 --> 00:04:29,100 tiene una dirección 121 00:04:29,100 --> 00:04:31,160 de su empresa, no, es común para todos 122 00:04:31,160 --> 00:04:33,259 luego aquí no refleja 123 00:04:33,259 --> 00:04:34,480 la realidad, no la refleja 124 00:04:34,480 --> 00:04:37,199 bueno, puedo ponerlo ahí, pero me tengo que preocupar 125 00:04:37,199 --> 00:04:39,160 luego yo por código, por aplicación 126 00:04:39,160 --> 00:04:40,879 me tengo que preocupar cuando haga mi main 127 00:04:40,879 --> 00:04:42,879 de asegurarme de que todos 128 00:04:42,879 --> 00:04:44,879 los departamentos tienen el mismo valor 129 00:04:44,879 --> 00:04:45,259 aquí 130 00:04:45,259 --> 00:04:50,579 ya, pero te arriesgas 131 00:04:50,579 --> 00:04:52,699 a que alguien desde un objeto 132 00:04:52,699 --> 00:04:54,500 departamento en un método lo cambia 133 00:04:54,500 --> 00:04:56,980 y se ha cambiado solo para ese objeto 134 00:04:56,980 --> 00:04:58,540 y no se ha cambiado para los demás 135 00:04:58,540 --> 00:05:01,439 y para que la aplicación sea coherente 136 00:05:01,439 --> 00:05:03,120 siempre tenemos que 137 00:05:03,120 --> 00:05:05,060 garantizar que esa variable tenga el mismo 138 00:05:05,060 --> 00:05:05,879 valor en todos 139 00:05:05,879 --> 00:05:08,819 entonces lo podemos poner así, pero entonces 140 00:05:08,819 --> 00:05:11,000 tenemos que hacer la aplicación muy cuidadosamente 141 00:05:11,000 --> 00:05:13,060 para que siempre todos los objetos tengan 142 00:05:13,060 --> 00:05:15,000 aquí el mismo valor, y es un rollo 143 00:05:15,000 --> 00:05:16,620 porque es muy fácil que una aplicación de 144 00:05:16,620 --> 00:05:18,699 2.500 millones de métodos 145 00:05:18,699 --> 00:05:20,860 en alguno se haga aquí un cambio 146 00:05:20,860 --> 00:05:22,920 y no se haya reflejado en los 147 00:05:22,920 --> 00:05:24,620 demás y entonces la aplicación empieza 148 00:05:24,620 --> 00:05:26,860 a darnos resultados que 149 00:05:26,860 --> 00:05:28,259 no tienen sentido y que no son coherentes. 150 00:05:29,480 --> 00:05:30,000 Luego, 151 00:05:30,759 --> 00:05:32,660 se nos plantea un problema, que hay 152 00:05:32,660 --> 00:05:33,899 algo de la realidad 153 00:05:33,899 --> 00:05:36,420 que no sabemos cómo reflejar. 154 00:05:36,779 --> 00:05:38,579 Y ese algo es una 155 00:05:38,579 --> 00:05:40,959 información referente 156 00:05:40,959 --> 00:05:42,759 a mi modelo de datos de empleados 157 00:05:42,759 --> 00:05:44,740 departamentos, una información, pero que 158 00:05:44,740 --> 00:05:46,379 no depende de un objeto en concreto. 159 00:05:46,620 --> 00:05:48,600 No depende, es común para 160 00:05:48,600 --> 00:05:50,019 todos. Pues, 161 00:05:50,620 --> 00:05:52,379 ¿qué parche, entre comillas, 162 00:05:52,379 --> 00:05:54,120 es parche el más útil del mundo 163 00:05:54,120 --> 00:05:56,279 porque nos abre otra vez un montón de posibilidades 164 00:05:56,279 --> 00:05:58,079 es el que ha sacado Java 165 00:05:58,079 --> 00:06:00,019 para reflejar esta situación 166 00:06:00,019 --> 00:06:02,180 pues le planta 167 00:06:02,180 --> 00:06:05,420 delante este 168 00:06:05,420 --> 00:06:07,819 modificador a esa variable 169 00:06:07,819 --> 00:06:11,120 le plantamos este modificador 170 00:06:11,120 --> 00:06:13,639 vale, como veis se ha puesto 171 00:06:13,639 --> 00:06:14,300 en cursiva 172 00:06:14,300 --> 00:06:17,120 no, no, no, no tengo que dar un valor 173 00:06:17,120 --> 00:06:19,519 no, no, no, yo pongo 174 00:06:19,519 --> 00:06:20,620 el stati delante 175 00:06:20,620 --> 00:06:22,680 ahora diríais 176 00:06:22,680 --> 00:06:24,060 claro 177 00:06:24,060 --> 00:06:26,459 vale, entonces static es 178 00:06:26,459 --> 00:06:28,600 otro modificador más que se puede poner 179 00:06:28,600 --> 00:06:30,420 delante, entonces fijaos 180 00:06:30,420 --> 00:06:32,279 delante de una variable 181 00:06:32,279 --> 00:06:34,399 ponemos su tipo de dato, eso siempre 182 00:06:34,399 --> 00:06:35,620 obligatorio, justo delante 183 00:06:35,620 --> 00:06:38,579 y luego ya aquí un montón de modificadores que ya vamos 184 00:06:38,579 --> 00:06:39,220 incorporando 185 00:06:39,220 --> 00:06:42,220 este ya sabemos lo que significa 186 00:06:42,220 --> 00:06:44,660 este todavía 187 00:06:44,660 --> 00:06:46,480 no, es lo que vamos a significar, bueno pues 188 00:06:46,480 --> 00:06:48,839 ¿qué pasa? cuando en una propiedad 189 00:06:48,839 --> 00:06:49,600 de una clase 190 00:06:49,600 --> 00:06:52,339 ¿vale? recordad que un código java son 191 00:06:52,339 --> 00:06:54,759 clasesol. Pues en una propiedad 192 00:06:54,759 --> 00:06:56,740 de una clase cualquiera ponemos el static delante. 193 00:06:57,279 --> 00:06:59,100 Pues esa propiedad ha cambiado 194 00:06:59,100 --> 00:07:00,819 su ubicación física 195 00:07:00,819 --> 00:07:02,060 y su significado. 196 00:07:02,779 --> 00:07:03,259 Entonces. 197 00:07:04,000 --> 00:07:05,519 ¿Se guarda en otro documento automáticamente? 198 00:07:06,540 --> 00:07:08,939 No, no hables de documentos. Hablas de espacio de memoria 199 00:07:08,939 --> 00:07:09,439 en todo caso. 200 00:07:10,019 --> 00:07:12,740 No, el documento... 201 00:07:12,740 --> 00:07:13,980 Ya, pero si te lo apunta en otro lado. 202 00:07:14,740 --> 00:07:15,620 Ahora lo vemos. 203 00:07:16,519 --> 00:07:18,759 Nosotros tenemos objetos departamento. 204 00:07:19,860 --> 00:07:20,740 Aquí tenemos 205 00:07:20,740 --> 00:07:23,779 por ejemplo 206 00:07:23,779 --> 00:07:28,939 mi clase main podría tener tres objetos departamento, ¿verdad? 207 00:07:30,339 --> 00:07:39,480 Este sería el departamento 1, este sería departamento 2, por ejemplo, 208 00:07:41,000 --> 00:07:50,399 este sería el departamento 3, ¿vale? 209 00:07:50,800 --> 00:07:52,040 Entonces, tengo tres objetos departamento. 210 00:07:52,939 --> 00:07:57,579 Estos tres objetos, Ana, estos tres objetos son de esta clase. 211 00:07:58,040 --> 00:08:16,319 Luego tienen todos ellos, su propiedad nombre, director, empleados, la tienen todos ellos. Luego todos estos objetos tienen, pues una casillita para el nombre, otra casillita para el director, otra casillita gigante para la RAI de empleados. Todos lo tienen. 212 00:08:16,319 --> 00:08:23,120 ¿Y qué ocurriría si esta propiedad yo no le hubiera puesto el static? 213 00:08:23,800 --> 00:08:27,439 Si yo no le hubiera puesto el static y la tuviera como la tengo antes, 214 00:08:28,259 --> 00:08:33,080 pues simplemente cada objeto de estos tendría su otra casillita 215 00:08:33,080 --> 00:08:35,059 para dirección de la empresa. 216 00:08:35,419 --> 00:08:36,559 Tendría su otra casillita. 217 00:08:37,159 --> 00:08:39,000 Y tendríamos el problema que hemos dicho antes, 218 00:08:39,419 --> 00:08:43,500 que aquí tengo un montón de espacios para un dato 219 00:08:43,500 --> 00:08:46,399 que es el mismo para todas ellas. 220 00:08:46,399 --> 00:08:48,779 o que debería serlo si la aplicación está funcionando 221 00:08:48,779 --> 00:08:50,879 correctamente, debería serlo, pues que invento 222 00:08:50,879 --> 00:08:52,740 más malo, vale pues entonces 223 00:08:52,740 --> 00:08:54,860 hemos dicho, vamos a solucionarlo 224 00:08:54,860 --> 00:08:56,720 poniendo aquí este modificador 225 00:08:56,720 --> 00:08:58,659 ¿qué hacemos cuando ponemos 226 00:08:58,659 --> 00:09:00,759 el modificador delante de la propiedad 227 00:09:00,759 --> 00:09:01,500 de una clase? 228 00:09:02,220 --> 00:09:04,899 pues automáticamente la sacamos de aquí 229 00:09:04,899 --> 00:09:09,039 se va de ahí 230 00:09:09,039 --> 00:09:13,559 se va de ahí 231 00:09:13,559 --> 00:09:18,299 se hago más ya 232 00:09:18,299 --> 00:09:20,759 vale, pero para eso tendría que ser más lista 233 00:09:20,759 --> 00:09:22,620 Vale, entonces, y ahora 234 00:09:22,620 --> 00:09:25,000 Se crea un espacio común 235 00:09:25,000 --> 00:09:27,279 Como si fuera una variable global 236 00:09:27,279 --> 00:09:29,419 Mal nombrado 237 00:09:29,419 --> 00:09:30,820 Las variables globales no existen 238 00:09:30,820 --> 00:09:32,399 Se crea un espacio común 239 00:09:32,399 --> 00:09:34,080 Que es el que se llama 240 00:09:34,080 --> 00:09:36,440 Dir 241 00:09:36,440 --> 00:09:47,000 Empresa 242 00:09:47,000 --> 00:09:49,000 ¿Vale? Esto 243 00:09:49,000 --> 00:09:57,600 Exacto, vale 244 00:09:57,600 --> 00:10:03,509 Vale, pues entonces 245 00:10:03,509 --> 00:10:04,250 Ahora 246 00:10:04,250 --> 00:10:06,909 la variable, la propiedad 247 00:10:06,909 --> 00:10:08,610 de esta static, esta propiedad 248 00:10:08,610 --> 00:10:11,110 es accesible 249 00:10:11,110 --> 00:10:13,169 desde los departamentos como cualquier 250 00:10:13,169 --> 00:10:15,049 otra, pero me da igual poner 251 00:10:15,049 --> 00:10:17,269 de uno punto dir empresa, que poner 252 00:10:17,269 --> 00:10:19,070 de dos punto dir empresa, que poner 253 00:10:19,070 --> 00:10:20,470 de tres punto dir empresa 254 00:10:20,470 --> 00:10:23,149 porque en el momento en el que yo he puesto el static 255 00:10:23,149 --> 00:10:23,769 delante 256 00:10:23,769 --> 00:10:27,490 ha dejado de ser una propiedad 257 00:10:27,490 --> 00:10:29,110 diferente para cada objeto 258 00:10:29,110 --> 00:10:31,289 para convertirse en una única 259 00:10:31,289 --> 00:10:33,070 compartida por todos 260 00:10:33,070 --> 00:10:36,029 que tengo un mil departamentos 261 00:10:36,029 --> 00:10:37,649 todos ellos 262 00:10:37,649 --> 00:10:39,490 comparten este espacio común 263 00:10:39,490 --> 00:10:41,669 pero si no le das un valor de fondo 264 00:10:41,669 --> 00:10:43,669 al principio tienes que instanciarlo en una 265 00:10:43,669 --> 00:10:44,629 en cualquiera 266 00:10:44,629 --> 00:10:47,389 si yo quiero darle un valor yo puedo hacer 267 00:10:47,389 --> 00:10:48,750 de uno punto de ir a empresa 268 00:10:48,750 --> 00:10:50,289 y recibe el valor 269 00:10:50,289 --> 00:10:52,850 y que luego hago de dos punto de ir a empresa 270 00:10:52,850 --> 00:10:54,009 estoy haciendo al mismo sitio 271 00:10:54,009 --> 00:10:57,610 la cambio para todos 272 00:10:57,610 --> 00:10:59,309 claro entonces yo puedo cambiar 273 00:10:59,309 --> 00:11:00,750 esto 274 00:11:00,750 --> 00:11:03,009 me da igual desde D1.dir 275 00:11:03,009 --> 00:11:05,309 empresa, que desde D2.dir 276 00:11:05,309 --> 00:11:06,929 empresa, que desde D3.dir 277 00:11:06,929 --> 00:11:09,009 empresa, que desde D20.000.dir 278 00:11:09,009 --> 00:11:10,690 empresa, me da igual, porque 279 00:11:10,690 --> 00:11:12,529 todos accedo al espacio compartido 280 00:11:12,529 --> 00:11:14,830 luego así es la manera de asegurarme 281 00:11:14,830 --> 00:11:16,129 de que esta propiedad 282 00:11:16,129 --> 00:11:18,210 no es diferente para cada objeto 283 00:11:18,210 --> 00:11:21,009 es una propiedad global que la comparten 284 00:11:21,009 --> 00:11:22,850 todos, y todos tienen 285 00:11:22,850 --> 00:11:24,669 el mismo valor en esa propiedad, todos 286 00:11:24,669 --> 00:11:26,889 porque físicamente es el único 287 00:11:26,889 --> 00:11:28,649 es un único espacio de memoria 288 00:11:28,649 --> 00:11:30,710 ¿vale? entonces por 289 00:11:30,710 --> 00:11:32,809 ejemplo, si hacemos 290 00:11:32,809 --> 00:11:35,149 aquí un main de prueba... 291 00:11:35,149 --> 00:11:36,889 Aparte de estar mejor, también optimizas 292 00:11:36,889 --> 00:11:38,669 el espacio a la hora de la aplicación. 293 00:11:38,909 --> 00:11:40,629 Claro, y es que la aplicación ya tiene 294 00:11:40,629 --> 00:11:42,389 sentido, porque esa es una información 295 00:11:42,389 --> 00:11:44,330 que es para todos los departamentos. 296 00:11:44,490 --> 00:11:46,230 No es diferente para cada uno. 297 00:11:46,990 --> 00:11:48,690 Nunca haríamos static esta, 298 00:11:49,509 --> 00:11:50,490 porque cada departamento 299 00:11:50,490 --> 00:11:51,309 tiene su propio nombre. 300 00:11:52,450 --> 00:11:54,590 Esta jamás. Pero esta 301 00:11:54,590 --> 00:11:56,370 sí, porque todos los departamentos 302 00:11:56,370 --> 00:11:58,110 comparten el valor de esa propiedad. 303 00:11:58,269 --> 00:12:00,409 Y si uno está en esta empresa, el otro también 304 00:12:00,409 --> 00:12:01,590 no tiene que estar, y el otro y el otro. 305 00:12:02,470 --> 00:12:04,429 Entonces, si hacemos un main de pruebas por aquí, 306 00:12:05,690 --> 00:12:06,230 cualquiera, 307 00:12:16,659 --> 00:12:17,580 vale, pues entonces 308 00:12:17,580 --> 00:12:19,279 vamos a crear un objeto 309 00:12:19,279 --> 00:12:21,039 departamento, 310 00:12:29,169 --> 00:12:30,210 ¿vale? Este de aquí. 311 00:12:31,129 --> 00:12:33,190 No tienes constructor sin parámetros 312 00:12:33,190 --> 00:12:35,509 o... 313 00:12:35,509 --> 00:12:37,210 Pero si lo he hecho en el mismo paquete o lo he hecho... 314 00:12:37,210 --> 00:12:39,309 Ah, no, es que lo he hecho en otro paquete. Vale, pues le muevo 315 00:12:39,309 --> 00:12:41,129 ahí. Vale. 316 00:12:42,549 --> 00:12:43,269 Vale, creamos 317 00:12:43,269 --> 00:12:44,789 un objeto departamento 318 00:12:44,789 --> 00:12:47,110 de 1, vamos a hacer lo que hemos hecho 319 00:12:47,110 --> 00:12:49,049 antes, y creamos 320 00:12:49,049 --> 00:12:50,470 otro objeto departamento 321 00:12:50,470 --> 00:12:53,740 de 2 322 00:12:53,740 --> 00:12:59,169 vale, ahora mismo no tienen propiedades, tienen los 323 00:12:59,169 --> 00:13:00,929 valores por defecto que dejaba los números 324 00:13:00,929 --> 00:13:03,389 son 0, pero es como no tener nada, están sin inicializar 325 00:13:03,389 --> 00:13:05,029 sus propiedades, vale 326 00:13:05,029 --> 00:13:07,230 entonces yo ahora puedo hacer de 1 punto 327 00:13:07,230 --> 00:13:10,909 a bueno, como 328 00:13:10,909 --> 00:13:14,870 si, no, es que las propiedades 329 00:13:14,870 --> 00:13:17,029 las propiedades estáticas 330 00:13:17,029 --> 00:13:19,529 no se suelen 331 00:13:19,529 --> 00:13:23,549 dar valor y recoger con get y set 332 00:13:23,549 --> 00:13:24,889 las propiedades estáticas 333 00:13:24,889 --> 00:13:27,090 normalmente como recogen constantes 334 00:13:27,090 --> 00:13:29,490 recogen cosas, no siguen este criterio 335 00:13:29,490 --> 00:13:31,549 de este convenio 336 00:13:31,549 --> 00:13:33,769 de programación, a las variables estáticas 337 00:13:33,769 --> 00:13:35,730 se les suele asociar 338 00:13:35,730 --> 00:13:37,389 el modificador 339 00:13:37,389 --> 00:13:37,850 public 340 00:13:37,850 --> 00:13:41,110 y accedemos a ellas 341 00:13:41,110 --> 00:13:42,769 directamente con el nombre 342 00:13:42,769 --> 00:13:43,669 bueno, ahora vemos cómo 343 00:13:43,669 --> 00:13:46,490 entonces las propiedades 344 00:13:46,490 --> 00:13:48,289 static no tienen asociados get y set 345 00:13:48,289 --> 00:13:50,750 podrían, pero por convenio 346 00:13:50,750 --> 00:13:51,870 tiene muchísimo más sentido 347 00:13:51,870 --> 00:13:54,110 si es una propiedad global 348 00:13:54,110 --> 00:13:56,190 pues accedemos directamente 349 00:13:56,190 --> 00:13:57,169 a esa propiedad 350 00:13:57,169 --> 00:14:00,669 entonces vamos a seguir ese convenio 351 00:14:00,669 --> 00:14:02,210 de programación, las propiedades static 352 00:14:02,210 --> 00:14:04,029 no las accedemos con get y set 353 00:14:04,029 --> 00:14:05,210 las hacemos públicas 354 00:14:05,210 --> 00:14:07,789 pues entonces con este convenio 355 00:14:07,789 --> 00:14:09,330 haciendo la pública en vez de privada 356 00:14:09,330 --> 00:14:10,809 vamos a cambiar esa propiedad 357 00:14:10,809 --> 00:14:13,870 pues entonces yo la cambio aquí 358 00:14:13,870 --> 00:14:14,610 con 359 00:14:14,610 --> 00:14:17,570 dirección empresa y pongo 360 00:14:17,570 --> 00:14:18,509 pues donde sea 361 00:14:18,509 --> 00:14:23,610 y ahora ha cambiado para todos, entonces si nosotros 362 00:14:23,610 --> 00:14:25,850 ahora hacemos, muéstrame 363 00:14:25,850 --> 00:14:27,789 la dirección 364 00:14:27,789 --> 00:14:28,549 de la empresa 365 00:14:28,549 --> 00:14:31,730 del otro departamento 366 00:14:31,730 --> 00:14:32,450 del otro 367 00:14:32,450 --> 00:14:35,250 me va a mostrar 368 00:14:35,250 --> 00:14:39,190 esta, vale 369 00:14:39,190 --> 00:14:41,590 está claro porque es una propiedad 370 00:14:41,590 --> 00:14:42,230 global 371 00:14:42,230 --> 00:14:45,470 todos comparten la misma 372 00:14:45,470 --> 00:14:47,809 entonces me da lo mismo de uno punto 373 00:14:47,809 --> 00:14:49,509 de ir a empresa que de dos punto de ir a empresa 374 00:14:49,509 --> 00:14:51,830 me da igual, entonces las variables estáticas 375 00:14:51,830 --> 00:14:53,830 recogen información 376 00:14:53,830 --> 00:14:55,169 relativa 377 00:14:55,169 --> 00:14:57,350 a una entidad porque 378 00:14:57,350 --> 00:14:59,950 yo aquí lógicamente en la clase departamento 379 00:14:59,950 --> 00:15:01,990 pondré información 380 00:15:01,990 --> 00:15:03,970 relativa a los departamentos 381 00:15:03,970 --> 00:15:05,590 si no que pinta ahí la información 382 00:15:05,590 --> 00:15:06,970 relativa a los empleados, no 383 00:15:06,970 --> 00:15:09,669 pues pondré información relativa 384 00:15:09,669 --> 00:15:11,470 a los departamentos pero 385 00:15:11,470 --> 00:15:13,669 como afecta a todos por igual 386 00:15:13,669 --> 00:15:15,230 todos la van a compartir 387 00:15:15,230 --> 00:15:16,830 pues en ese caso es estática 388 00:15:16,830 --> 00:15:18,950 vale, en ese caso es estática 389 00:15:18,950 --> 00:15:20,649 vale, entonces 390 00:15:20,649 --> 00:15:23,210 como realmente da igual 391 00:15:23,210 --> 00:15:25,110 que yo la llame con D1, que con D2 392 00:15:25,110 --> 00:15:27,230 que con D3, da lo mismo que la llame así 393 00:15:27,230 --> 00:15:29,389 pues la forma habitual 394 00:15:29,389 --> 00:15:31,370 de llamar a las variables 395 00:15:31,370 --> 00:15:33,409 estáticas no es con el nombre 396 00:15:33,409 --> 00:15:35,389 de un objeto, sea el que sea 397 00:15:35,389 --> 00:15:37,330 a las variables estáticas 398 00:15:37,330 --> 00:15:38,909 se las llama 399 00:15:38,909 --> 00:15:41,690 habitualmente 400 00:15:41,690 --> 00:15:43,529 con el nombre de la clase sin más 401 00:15:43,529 --> 00:15:46,230 departamento.dir 402 00:15:46,230 --> 00:15:46,649 empresa 403 00:15:46,649 --> 00:15:51,649 porque como son independientes del objeto 404 00:15:51,649 --> 00:15:53,250 no dependen de ningún objeto 405 00:15:53,250 --> 00:15:55,929 dir empresa no depende de ninguno 406 00:15:55,929 --> 00:15:57,429 es independiente 407 00:15:57,429 --> 00:15:59,470 claro 408 00:15:59,470 --> 00:16:01,950 dir empresa no depende de ningún objeto 409 00:16:01,950 --> 00:16:03,750 va por libre, no depende de ninguno 410 00:16:03,750 --> 00:16:04,809 entonces 411 00:16:04,809 --> 00:16:06,590 la podemos 412 00:16:06,590 --> 00:16:09,830 llamar con el nombre de la clase sin más 413 00:16:09,830 --> 00:16:12,690 no hace falta llamarla para un objeto en concreto 414 00:16:12,690 --> 00:16:14,490 y esa es la forma de llamarla, de hecho aquí se me ha puesto 415 00:16:14,490 --> 00:16:16,450 en amarillito porque me ha dicho 416 00:16:16,450 --> 00:16:18,269 que cutre es estática, llámale 417 00:16:18,269 --> 00:16:20,590 como se llaman las cosas estáticas, que es con el nombre 418 00:16:20,590 --> 00:16:22,549 de la clase, que la puedo llamar 419 00:16:22,549 --> 00:16:24,629 con el nombre de un objeto, pero se queda 420 00:16:24,629 --> 00:16:26,230 más confuso, si yo la llamo así 421 00:16:26,230 --> 00:16:28,950 claro, el que lee el código 422 00:16:28,950 --> 00:16:30,809 si yo lo llamo así 423 00:16:30,809 --> 00:16:31,970 el que lee mi código 424 00:16:31,970 --> 00:16:34,629 se cree que cada departamento trabaja en una empresa distinta 425 00:16:34,629 --> 00:16:36,629 y ya le estás dando información 426 00:16:36,629 --> 00:16:38,330 confusa, sin embargo 427 00:16:38,330 --> 00:16:39,850 el que lee mi código 428 00:16:39,850 --> 00:16:40,470 porque tiene 429 00:16:40,470 --> 00:16:41,490 ha heredado la aplicación 430 00:16:41,490 --> 00:16:42,389 lee esto y dice 431 00:16:42,389 --> 00:16:42,950 ah vale 432 00:16:42,950 --> 00:16:44,389 todos los departamentos 433 00:16:44,389 --> 00:16:45,710 trabaja en la misma empresa 434 00:16:45,710 --> 00:16:46,789 le llega 435 00:16:46,789 --> 00:16:47,830 una información 436 00:16:47,830 --> 00:16:48,490 más real 437 00:16:48,490 --> 00:16:49,809 entonces es mejor 438 00:16:49,809 --> 00:16:50,450 llamarlo así 439 00:16:50,450 --> 00:16:52,669 hasta aquí claro 440 00:16:52,669 --> 00:16:53,509 hasta para ti Silvia 441 00:16:53,509 --> 00:16:54,289 que te estás durmiendo 442 00:16:54,289 --> 00:16:58,429 es que se está durmiendo 443 00:16:58,429 --> 00:16:59,250 a ver 444 00:16:59,250 --> 00:17:00,269 a mí me pasa 445 00:17:00,269 --> 00:17:01,470 yo como vaya a escuchar 446 00:17:01,470 --> 00:17:01,870 a alguien 447 00:17:01,870 --> 00:17:02,850 a los 15 minutos 448 00:17:02,850 --> 00:17:03,509 me estoy durmiendo 449 00:17:03,509 --> 00:17:04,289 da igual lo interesante 450 00:17:04,289 --> 00:17:06,509 que sea lo que diga 451 00:17:06,509 --> 00:17:11,009 porque no tengo una carta de esas tuyas 452 00:17:11,009 --> 00:17:12,150 bueno 453 00:17:12,150 --> 00:17:14,289 entonces tanto es así 454 00:17:14,289 --> 00:17:16,210 lo de que se le llame con el nombre de la clase 455 00:17:16,210 --> 00:17:18,430 que hasta yo lo podría llamar 456 00:17:18,430 --> 00:17:20,029 sin que existiera ningún objeto 457 00:17:20,029 --> 00:17:22,269 imaginaos que no existe 458 00:17:22,269 --> 00:17:24,450 ningún objeto, esto no existe 459 00:17:24,450 --> 00:17:26,849 esto como era 460 00:17:26,849 --> 00:17:27,450 así 461 00:17:27,450 --> 00:17:30,490 así no, es que lo estaba cambiando 462 00:17:30,490 --> 00:17:31,329 con el format, vale 463 00:17:31,329 --> 00:17:34,509 imaginaos que no existe ningún objeto todavía, ninguno 464 00:17:34,509 --> 00:17:36,230 pues yo hago esto 465 00:17:36,230 --> 00:17:37,529 y me deja. 466 00:17:38,470 --> 00:17:40,690 Y me diréis, pero si no hay ningún departamento. 467 00:17:41,089 --> 00:17:42,210 ¿De dónde ha salido esta variable? 468 00:17:42,529 --> 00:17:44,789 Ah, es que las variables estáticas 469 00:17:44,789 --> 00:17:48,490 las variables estáticas 470 00:17:48,490 --> 00:17:50,589 pueden existir 471 00:17:50,589 --> 00:17:52,509 aunque no existan 472 00:17:52,509 --> 00:17:54,349 objetos de la clase en la que están. 473 00:17:55,230 --> 00:17:56,309 Pueden existir 474 00:17:56,309 --> 00:17:56,970 tranquilamente. 475 00:17:58,430 --> 00:17:59,950 Entonces, ¿cuándo 476 00:17:59,950 --> 00:18:02,410 arrancan a existir? ¿Cuándo la aplicación arranca? 477 00:18:02,410 --> 00:18:04,349 No, no, no. Cuando la aplicación arranca, no. 478 00:18:05,009 --> 00:18:06,670 ¿Cuándo entran a 479 00:18:06,670 --> 00:18:08,690 memoria. ¿Cuándo arrancan a la vida? Arrancan 480 00:18:08,690 --> 00:18:10,630 a la vida la primera 481 00:18:10,630 --> 00:18:12,289 vez que haces referencia a ellas. 482 00:18:12,869 --> 00:18:14,589 Entonces, cuando este main mío ha arrancado, 483 00:18:15,569 --> 00:18:16,569 esta variable todavía 484 00:18:16,569 --> 00:18:18,369 no existía ni había nada ahí. 485 00:18:19,009 --> 00:18:20,630 Pero desde el momento en que yo he hecho 486 00:18:20,630 --> 00:18:22,750 ya departamento.ir 487 00:18:22,750 --> 00:18:24,289 empresa igual a Barcelona, ya está. 488 00:18:24,809 --> 00:18:25,930 Apareció esta variable 489 00:18:25,930 --> 00:18:28,269 a la que le dimos un valor. 490 00:18:28,950 --> 00:18:30,230 Pero estos objetos todavía 491 00:18:30,230 --> 00:18:32,390 ni existen siquiera. No existen. 492 00:18:33,509 --> 00:18:34,609 No pasa nada. Las variables 493 00:18:34,609 --> 00:18:36,549 estáticas pueden existir aunque no estén los objetos. 494 00:18:36,670 --> 00:18:39,869 que luego yo ahora creo un objeto 495 00:18:39,869 --> 00:18:41,170 este de aquí 496 00:18:41,170 --> 00:18:42,930 he creado un objeto 497 00:18:42,930 --> 00:18:45,509 bueno, pues este objeto ya se ha enganchado 498 00:18:45,509 --> 00:18:47,869 este objeto ya se ha enganchado a esa variable 499 00:18:47,869 --> 00:18:49,910 estática, y si yo hago 500 00:18:49,910 --> 00:18:52,109 de uno punto esto 501 00:18:52,109 --> 00:18:55,900 pues efectivamente 502 00:18:55,900 --> 00:18:57,700 de uno punto 503 00:18:57,700 --> 00:18:59,460 diré empresa, me va a mostrar esto 504 00:18:59,460 --> 00:19:01,720 ¿vale? porque todos los objetos 505 00:19:01,720 --> 00:19:03,660 estos, están 506 00:19:03,660 --> 00:19:05,759 enganchados a esta, que nació 507 00:19:05,759 --> 00:19:07,619 antes que ellos, pero están 508 00:19:07,619 --> 00:19:09,539 enganchados a ella porque 509 00:19:09,539 --> 00:19:10,039 están aquí. 510 00:19:11,299 --> 00:19:13,400 Está aquí dentro esa variable. Dentro de la clase 511 00:19:13,400 --> 00:19:14,559 de departamento. Está ahí dentro. 512 00:19:15,380 --> 00:19:17,400 Entonces si yo hago... 513 00:19:17,400 --> 00:19:19,640 ¿Qué ocurrió? 514 00:19:21,079 --> 00:19:21,480 ¿Vale? 515 00:19:21,519 --> 00:19:23,480 Si yo hago esto, pues aquí está. 516 00:19:24,900 --> 00:19:25,559 Este es 517 00:19:25,559 --> 00:19:27,259 el Barcelona de aquí. 518 00:19:28,839 --> 00:19:29,220 Este. 519 00:19:30,980 --> 00:19:31,220 ¿Vale? 520 00:19:33,299 --> 00:19:34,539 Es imprescindible. 521 00:19:36,099 --> 00:19:37,420 Para muchísimas cosas. 522 00:19:37,619 --> 00:19:41,720 vale, entonces normalmente 523 00:19:41,720 --> 00:19:43,799 repito, las variables estáticas no las llamamos 524 00:19:43,799 --> 00:19:45,779 con el nombre de un objeto, las llamamos con el nombre de la clase 525 00:19:45,779 --> 00:19:47,559 porque me da igual llamarle con uno que con otro 526 00:19:47,559 --> 00:19:48,940 que con otro, con el nombre de la clase 527 00:19:48,940 --> 00:19:51,680 entonces las variables estáticas 528 00:19:51,680 --> 00:19:53,519 siempre van en clases 529 00:19:53,519 --> 00:19:55,460 porque todo va dentro de clases 530 00:19:55,460 --> 00:19:57,920 en Java no puede haber nada nunca dentro de las clases 531 00:19:57,920 --> 00:20:00,140 pero que representan 532 00:20:00,140 --> 00:20:01,500 representan 533 00:20:01,500 --> 00:20:03,019 una información 534 00:20:03,019 --> 00:20:05,859 que es común para todos 535 00:20:05,859 --> 00:20:07,519 y cada uno de los objetos de esa clase 536 00:20:07,519 --> 00:20:11,099 ¿vale? a diferencia de las otras propiedades 537 00:20:11,099 --> 00:20:12,380 que cada objeto tiene 538 00:20:12,380 --> 00:20:13,940 pues su pack por separado 539 00:20:13,940 --> 00:20:15,420 entonces 540 00:20:15,420 --> 00:20:17,960 para representar bien una situación 541 00:20:17,960 --> 00:20:19,839 son imprescindibles 542 00:20:19,839 --> 00:20:22,640 porque si nosotros no ponemos el static aquí delante 543 00:20:22,640 --> 00:20:24,099 nos pasa lo que os he dicho antes 544 00:20:24,099 --> 00:20:26,519 que entonces la aplicación tenemos que 545 00:20:26,519 --> 00:20:28,400 nosotros llevar en cada main 546 00:20:28,400 --> 00:20:30,200 tenemos que llevar el control de que 547 00:20:30,200 --> 00:20:32,420 todas las propiedades de cada uno 548 00:20:32,420 --> 00:20:33,579 tengan el mismo valor ahí 549 00:20:33,579 --> 00:20:36,380 pues un rollo, mucho mejor si le pongo el static 550 00:20:36,380 --> 00:20:38,420 y ya me da igual acceder 551 00:20:38,420 --> 00:20:40,299 por D1 que por D2 552 00:20:40,299 --> 00:20:42,180 que por departamento directamente 553 00:20:42,180 --> 00:20:46,640 que accedo al mismo lado. ¿Está claro? 554 00:20:48,779 --> 00:20:49,920 Claro, claro, claro. 555 00:20:50,000 --> 00:20:51,079 Por eso hay un espacio de memoria. 556 00:20:53,640 --> 00:20:54,119 Claro. 557 00:20:55,619 --> 00:20:56,619 Claro, yo pongo 558 00:20:56,619 --> 00:20:57,519 ahora D1. 559 00:20:59,180 --> 00:20:59,819 Dirempresa 560 00:20:59,819 --> 00:21:01,880 igual a esto. 561 00:21:03,119 --> 00:21:04,019 A Olso. 562 00:21:04,740 --> 00:21:06,380 Vale, nos hemos mudado a Olso. 563 00:21:07,019 --> 00:21:08,180 Y ahora yo le digo, 564 00:21:08,180 --> 00:21:19,680 Oye, departamento.dirempresa. ¿Cuál es la dirempresa de esta clase? Pues el Olso. 565 00:21:20,359 --> 00:21:21,619 ¿Y dónde está Olso? 566 00:21:22,779 --> 00:21:27,220 Olso, pues en Noguera. 567 00:21:29,700 --> 00:21:31,420 Obviamente casi a la mancha. 568 00:21:33,099 --> 00:21:35,059 Está cerca de Villa Elvilla, de Pontejo. 569 00:21:35,059 --> 00:21:37,019 Por ejemplo, tengo cinco departamentos. 570 00:21:37,019 --> 00:21:45,480 A ver, entonces mi diseño no... 571 00:21:45,480 --> 00:21:47,279 Entonces mi diseño no está muy bien hecho. 572 00:21:47,420 --> 00:21:49,460 Entonces tendría que hacer... 573 00:21:49,460 --> 00:21:49,660 ¿Eh? 574 00:21:49,660 --> 00:21:51,079 Si está en Noruega, 8. 575 00:21:51,880 --> 00:21:53,299 ¿8? ¿En serio? 576 00:21:53,700 --> 00:21:54,559 ¿En serio? 577 00:21:55,259 --> 00:21:56,759 A ver si me digo que me he equivocado. 578 00:21:58,539 --> 00:21:59,859 Qué poco viajás 579 00:21:59,859 --> 00:22:00,359 estáis. 580 00:22:01,240 --> 00:22:02,759 Vale, en esa situación 581 00:22:02,759 --> 00:22:05,660 yo entonces, si hay departamentos 582 00:22:05,660 --> 00:22:07,460 que pueden estar en su propia dirección, 583 00:22:07,460 --> 00:22:09,480 tendré que hacer una propiedad para ellos 584 00:22:09,480 --> 00:22:10,460 una cosa 585 00:22:10,460 --> 00:22:12,660 ¿cómo hago para leer un objeto? 586 00:22:14,359 --> 00:22:15,680 ¿qué? ¿cómo haces para leer un objeto? 587 00:22:15,839 --> 00:22:16,319 sí, porque 588 00:22:16,319 --> 00:22:18,720 en uno de los parámetros 589 00:22:18,720 --> 00:22:19,200 de 590 00:22:19,200 --> 00:22:23,099 el empleado 591 00:22:23,099 --> 00:22:25,079 las variables estáticas 592 00:22:25,079 --> 00:22:26,859 entonces, lo que tú me estabas diciendo 593 00:22:26,859 --> 00:22:29,059 si en la realidad 594 00:22:29,059 --> 00:22:30,980 que me ha explicado a mí el cliente de Appian Software 595 00:22:30,980 --> 00:22:33,099 me dice que puede haber, que los departamentos 596 00:22:33,099 --> 00:22:34,579 pueden estar en departamentos distintos 597 00:22:34,579 --> 00:22:37,220 porque uno puede estar en otro, voy a tener que incluir una variable 598 00:22:37,220 --> 00:22:38,839 no estática, con la dirección, 599 00:22:38,920 --> 00:22:40,240 porque sí que habrá que poner la suya propia, 600 00:22:40,819 --> 00:22:42,579 que luego además quiera incluir una estática 601 00:22:42,579 --> 00:22:44,319 para la dirección por defecto 602 00:22:44,319 --> 00:22:45,740 de los que no tengan una propia, 603 00:22:45,920 --> 00:22:47,200 pues podría incluir una estática. 604 00:22:48,039 --> 00:22:48,180 ¿Vale? 605 00:22:49,579 --> 00:22:50,619 Vale, pues entonces, 606 00:22:51,039 --> 00:22:52,500 lo que es una variable estática está claro. 607 00:22:53,400 --> 00:22:54,480 Pues creo que urra ahora 608 00:22:54,480 --> 00:22:57,359 que el hecho de que existan variables estáticas 609 00:22:57,359 --> 00:23:01,380 implica que también pueden existir métodos estáticos, 610 00:23:01,500 --> 00:23:04,019 que eso sí que ya es la maravilla del mundo. 611 00:23:04,019 --> 00:23:05,579 Que vamos a dejar para el lunes. 612 00:23:05,579 --> 00:23:07,740 eso sí que es ya la maravilla del mundo 613 00:23:07,740 --> 00:23:13,200 que eso nos va a facilitar 614 00:23:13,200 --> 00:23:14,640 la vida muchísimo 615 00:23:14,640 --> 00:23:17,440 los métodos estáticos 616 00:23:17,440 --> 00:23:19,299 que sí, poquita cosa 617 00:23:19,299 --> 00:23:21,160 no lo vamos a poner en práctica 618 00:23:21,160 --> 00:23:22,480 haciendo nuestra propia librería 619 00:23:22,480 --> 00:23:23,599 esa la hacemos el lunes 620 00:23:23,599 --> 00:23:26,480 nuestra propia librería 621 00:23:26,480 --> 00:23:28,140 y así nos da tiempo a mirar el main de Ana 622 00:23:28,140 --> 00:23:30,640 que la pobre se ha esforzado y luego no se lo mira 623 00:23:30,640 --> 00:23:35,259 hombre 624 00:23:35,259 --> 00:23:37,259 vale, pues a ver 625 00:23:37,259 --> 00:23:40,619 vale, pues que ocurriría 626 00:23:40,619 --> 00:23:41,559 imaginaos que 627 00:23:41,559 --> 00:23:43,799 queremos 628 00:23:43,799 --> 00:23:47,019 imaginad 629 00:23:47,019 --> 00:23:47,559 que queremos 630 00:23:47,559 --> 00:23:50,380 un método, la aplicación necesita 631 00:23:50,380 --> 00:23:52,500 en función de donde está 632 00:23:52,500 --> 00:23:54,900 tu, la sede de tu empresa 633 00:23:54,900 --> 00:23:56,519 quiero que me digas 634 00:23:56,519 --> 00:23:57,920 el país, por ejemplo 635 00:23:57,920 --> 00:24:00,519 vale, pues entonces ahí tiene sentido un método 636 00:24:00,519 --> 00:24:02,500 con un switch case, si es 637 00:24:02,500 --> 00:24:04,039 Olso, pues Rusia 638 00:24:04,039 --> 00:24:06,559 si es no sé qué, pues no sé cuántos, tiene sentido un método 639 00:24:06,559 --> 00:24:08,079 que me haga esa funcionalidad, ¿vale? 640 00:24:08,319 --> 00:24:10,140 Pues, por ejemplo, ese método, 641 00:24:10,299 --> 00:24:12,140 como es relativo a departamentos y empresas, 642 00:24:12,779 --> 00:24:14,339 pues yo aquí me haría un método 643 00:24:14,339 --> 00:24:21,630 public, no, 644 00:24:21,730 --> 00:24:23,390 el static no, porque no sabemos lo que es, 645 00:24:23,509 --> 00:24:25,529 public que me devuelva 646 00:24:25,529 --> 00:24:26,950 string 647 00:24:26,950 --> 00:24:29,470 devuelve get país 648 00:24:29,470 --> 00:24:31,549 en función 649 00:24:31,549 --> 00:24:32,210 de 650 00:24:32,210 --> 00:24:34,869 la dirección de la empresa. 651 00:24:35,529 --> 00:24:36,670 Entonces, aquí uno se haría, 652 00:24:37,829 --> 00:24:39,289 pues, en función de la 653 00:24:39,289 --> 00:24:41,390 ir a empresa, vamos a 654 00:24:41,390 --> 00:24:42,769 distinguir dos países solo y ya 655 00:24:42,769 --> 00:24:46,890 pues en el caso de que 656 00:24:46,890 --> 00:24:48,470 la dirección de tu empresa 657 00:24:48,470 --> 00:24:50,930 esté 658 00:24:50,930 --> 00:24:53,289 en esta 659 00:24:53,289 --> 00:24:54,849 pues entonces 660 00:24:54,849 --> 00:24:58,490 vamos a ponerlo para no poner 661 00:24:58,490 --> 00:25:00,829 tanto retún ahí queda muy feo 662 00:25:00,829 --> 00:25:03,049 un result 663 00:25:03,049 --> 00:25:06,599 igual a null 664 00:25:06,599 --> 00:25:08,099 y ahora 665 00:25:08,099 --> 00:25:10,140 en el caso de que esté 666 00:25:10,140 --> 00:25:12,039 la capital de la empresa aquí 667 00:25:12,039 --> 00:25:15,319 Pues resulta igual a 668 00:25:15,319 --> 00:25:17,279 Rusia 669 00:25:17,279 --> 00:25:18,299 Y Brek 670 00:25:18,299 --> 00:25:21,240 No, Olso está en Rusia 671 00:25:21,240 --> 00:25:22,500 Oslo está en Noruega 672 00:25:22,500 --> 00:25:27,019 Claro 673 00:25:27,019 --> 00:25:29,220 En el caso de que estés 674 00:25:29,220 --> 00:25:30,200 En aquí 675 00:25:30,200 --> 00:25:33,000 ¿En qué país tendría que devolver? 676 00:25:33,299 --> 00:25:34,619 Sin mirarlo al internet, venga, rápido 677 00:25:34,619 --> 00:25:36,900 Berna 678 00:25:36,900 --> 00:25:39,400 Rápido, país, no miréis internet 679 00:25:39,400 --> 00:25:43,460 Verna 680 00:25:43,460 --> 00:25:45,940 ¿Quién ha dicho Suiza? 681 00:25:46,339 --> 00:25:47,220 Muy bien 682 00:25:47,220 --> 00:25:49,339 ¿Eh? 683 00:25:53,339 --> 00:25:54,960 Venga, pues 684 00:25:54,960 --> 00:25:57,079 Devolveríamos Suiza 685 00:25:57,079 --> 00:25:59,480 Vale 686 00:25:59,480 --> 00:26:01,220 Y 687 00:26:01,220 --> 00:26:06,980 En cualquier otro caso 688 00:26:06,980 --> 00:26:09,140 Pues nada 689 00:26:09,140 --> 00:26:12,960 result igual a 690 00:26:12,960 --> 00:26:13,420 ni idea 691 00:26:13,420 --> 00:26:16,380 y ya está 692 00:26:16,380 --> 00:26:21,519 vale 693 00:26:21,519 --> 00:26:24,980 o sea, ninguno habéis sabido 694 00:26:24,980 --> 00:26:26,220 dónde estaba Berna 695 00:26:26,220 --> 00:26:31,339 o sea, que geografía no se estudia 696 00:26:31,339 --> 00:26:31,859 hoy en día 697 00:26:39,140 --> 00:26:41,019 Ya, y aparte tú estudiarías 698 00:26:41,019 --> 00:26:43,059 geografía latinoamericana. 699 00:26:43,359 --> 00:26:43,859 Claro que no. 700 00:26:44,519 --> 00:26:45,880 ¿Sabes ubicar todos los países de Europa? 701 00:26:47,200 --> 00:26:48,240 Seguro que no. 702 00:26:48,559 --> 00:26:49,480 Pero vamos, seguro que no. 703 00:26:51,160 --> 00:26:52,599 Sobre todo desde que se 704 00:26:52,599 --> 00:26:53,740 dispersaron. 705 00:26:53,740 --> 00:26:55,099 Y de África lo estoy intentando. 706 00:26:55,319 --> 00:26:56,779 Hostia, de África ya déjalo. 707 00:26:58,599 --> 00:26:59,380 Vale, entonces. 708 00:27:00,819 --> 00:27:01,420 Y ahora me 709 00:27:01,420 --> 00:27:02,700 falta aquí un retun 710 00:27:02,700 --> 00:27:05,099 result. 711 00:27:05,779 --> 00:27:07,240 Bueno, está claro este método, ¿verdad? 712 00:27:07,240 --> 00:27:10,720 Está clarísimo, en función de la dirección 713 00:27:10,720 --> 00:27:11,339 De la empresa 714 00:27:11,339 --> 00:27:14,140 Por Dios 715 00:27:14,140 --> 00:27:15,880 Vale, pues entonces 716 00:27:15,880 --> 00:27:18,259 Vamos a hacer ahora 717 00:27:18,259 --> 00:27:20,160 Nuestro main de prueba 718 00:27:20,160 --> 00:27:23,299 En el cual yo me he creado un departamento 719 00:27:23,299 --> 00:27:24,940 Bueno, he llamado a la empresa 720 00:27:24,940 --> 00:27:29,299 Vale, me he creado el departamento este de aquí 721 00:27:29,299 --> 00:27:32,940 De uno que está aquí creado 722 00:27:32,940 --> 00:27:35,380 Vale, pues entonces 723 00:27:35,380 --> 00:27:36,900 Queremos ver en qué país 724 00:27:36,900 --> 00:27:39,160 está situado 725 00:27:39,160 --> 00:27:40,920 a esa empresa. Pues 726 00:27:40,920 --> 00:27:43,079 este método de toda la vida del 727 00:27:43,079 --> 00:27:45,140 señor, que es lo que nosotros sabemos, 728 00:27:45,900 --> 00:27:47,279 hay que llamarlo asociado a un objeto. 729 00:27:47,779 --> 00:27:49,200 ¿Verdad? Todos los métodos de una 730 00:27:49,200 --> 00:27:51,019 clase se llaman asociados a un objeto. 731 00:27:51,980 --> 00:27:53,079 ¿Vale? Pues vamos a... 732 00:27:53,079 --> 00:27:55,019 Tenemos mi objeto departamento de uno 733 00:27:55,019 --> 00:27:57,119 aquí creado. Voy a borrar esto para que 734 00:27:57,119 --> 00:27:59,299 se vea bien. Que ya casi con esto terminamos. 735 00:27:59,400 --> 00:28:00,839 Un poquito de paciencia. 736 00:28:02,380 --> 00:28:03,000 No, faltan 737 00:28:03,000 --> 00:28:04,420 11 minutos. Entonces, 738 00:28:04,819 --> 00:28:06,539 tenemos nuestro departamento de uno. 739 00:28:06,900 --> 00:28:08,980 Eso 740 00:28:08,980 --> 00:28:11,880 Ahora, queremos ver en qué país está 741 00:28:11,880 --> 00:28:13,279 Pues hacemos 742 00:28:13,279 --> 00:28:15,259 Vamos a mostrar el resultado 743 00:28:15,259 --> 00:28:17,160 De d1.get 744 00:28:17,160 --> 00:28:19,039 País 745 00:28:19,039 --> 00:28:21,319 Vale, y tenemos claro 746 00:28:21,319 --> 00:28:22,640 Que me va a mostrar Rusia, ¿no? 747 00:28:22,640 --> 00:28:24,259 Porque he puesto lo que la capital es Solso 748 00:28:24,259 --> 00:28:25,779 Vamos a ver 749 00:28:25,779 --> 00:28:29,000 Sí, me muestra Rusia 750 00:28:29,000 --> 00:28:31,619 Si esto mismo lo hiciéramos diciendo 751 00:28:31,619 --> 00:28:34,200 Oye, espera, no, es que nos hemos mudado a Berna 752 00:28:34,200 --> 00:28:36,980 Vale, nos hemos mudado a Berna 753 00:28:36,980 --> 00:28:40,940 pues me va a decir 754 00:28:40,940 --> 00:28:42,640 estás en Suiza, vale 755 00:28:42,640 --> 00:28:44,680 hasta ahí está claro, ¿no? pero 756 00:28:44,680 --> 00:28:46,039 esto no era todo 757 00:28:46,039 --> 00:28:49,200 vale, pues ¿de qué nos damos cuenta? 758 00:28:49,680 --> 00:28:51,440 que yo puedo tener mil departamentos 759 00:28:51,440 --> 00:28:52,819 me da igual 760 00:28:52,819 --> 00:28:54,880 qué objeto llame al método get país 761 00:28:54,880 --> 00:28:57,059 ¿verdad? me da igual que lo llame de uno 762 00:28:57,059 --> 00:28:58,880 que lo llame de dos, que lo llame de tres 763 00:28:58,880 --> 00:29:00,839 ¿por qué? porque este 764 00:29:00,839 --> 00:29:02,819 método get país tiene la particularidad 765 00:29:03,500 --> 00:29:04,619 y esto es lo más 766 00:29:04,619 --> 00:29:06,279 interesante de la clase de hoy 767 00:29:06,279 --> 00:29:08,859 este método que te veo 768 00:29:08,859 --> 00:29:10,240 Juan hoy 769 00:29:10,240 --> 00:29:12,240 todo el día con la cara 770 00:29:12,240 --> 00:29:14,380 angustiada, espero que no refleje 771 00:29:14,380 --> 00:29:15,680 tu estado anímico 772 00:29:15,680 --> 00:29:28,160 vale, bueno, aunque parezca que no, yo creo que algo 773 00:29:28,160 --> 00:29:28,859 os quedará 774 00:29:28,859 --> 00:29:30,339 algo os quedará 775 00:29:30,339 --> 00:29:32,359 vale 776 00:29:32,359 --> 00:29:36,500 vale, pues entonces 777 00:29:36,500 --> 00:29:37,859 esto es lo más importante 778 00:29:37,859 --> 00:29:40,059 intentad entender esto último 779 00:29:40,059 --> 00:29:42,000 intentad entender esto último, a ver 780 00:29:42,000 --> 00:29:44,519 y si entendéis esto me voy 781 00:29:44,519 --> 00:29:46,619 y no vuelvo por lo menos hasta el lunes 782 00:29:46,619 --> 00:29:48,660 así que 783 00:29:48,660 --> 00:29:52,160 entonces 784 00:29:52,160 --> 00:29:53,880 a ver 785 00:29:53,880 --> 00:29:56,700 este método tiene la particularidad 786 00:29:56,700 --> 00:29:58,380 de que 787 00:29:58,380 --> 00:30:00,319 la única propiedad que usa 788 00:30:00,319 --> 00:30:02,619 de la clase departamento 789 00:30:02,619 --> 00:30:04,619 la única que usa 790 00:30:04,619 --> 00:30:05,480 es de ir a empresa 791 00:30:05,480 --> 00:30:08,680 que resulta que es común 792 00:30:08,680 --> 00:30:10,039 para todos los departamentos. 793 00:30:10,839 --> 00:30:12,559 Con lo cual, me da igual que a GetPais 794 00:30:12,559 --> 00:30:14,680 lo llame de 1, que lo llame de 2, 795 00:30:15,059 --> 00:30:16,420 que lo llame de 3, porque 796 00:30:16,420 --> 00:30:18,339 tanto para de 1 como para de 2, para de 3, 797 00:30:18,460 --> 00:30:20,519 para todos, Vir Empresa es la misma. 798 00:30:21,539 --> 00:30:22,539 Luego, me da igual 799 00:30:22,539 --> 00:30:23,779 llamar a GetPais 800 00:30:23,779 --> 00:30:26,400 me da igual 801 00:30:26,400 --> 00:30:28,640 llamar a GetPais con de 1, 802 00:30:29,839 --> 00:30:30,700 que me da 803 00:30:30,700 --> 00:30:32,500 igual llamar a GetPais con de 2 804 00:30:32,500 --> 00:30:33,680 si es que de 2 existe, 805 00:30:33,680 --> 00:30:36,200 que con D3 me da lo mismo 806 00:30:36,200 --> 00:30:37,799 porque ese método get país 807 00:30:37,799 --> 00:30:39,759 tiene la particularidad de que la única propiedad 808 00:30:39,759 --> 00:30:41,660 a la que accede es estática 809 00:30:41,660 --> 00:30:42,940 y por tanto es igual para todos 810 00:30:42,940 --> 00:30:45,500 con lo cual 811 00:30:45,500 --> 00:30:46,559 este método 812 00:30:46,559 --> 00:30:49,759 automáticamente en cuanto yo 813 00:30:49,759 --> 00:30:50,640 me doy cuenta 814 00:30:50,640 --> 00:30:54,019 de que este método 815 00:30:54,019 --> 00:30:56,259 solo usa propiedades estáticas 816 00:30:56,259 --> 00:30:57,740 con lo cual 817 00:30:57,740 --> 00:30:59,819 me da igual el objeto que lo llame 818 00:30:59,819 --> 00:31:01,680 porque va a hacer lo mismo 819 00:31:01,680 --> 00:31:03,859 para todos, desde el momento que yo me doy 820 00:31:03,859 --> 00:31:04,819 cuenta de eso digo 821 00:31:04,819 --> 00:31:07,880 anda, entonces este método es 822 00:31:07,880 --> 00:31:09,839 también estático 823 00:31:09,839 --> 00:31:11,059 y se lo planto ahí 824 00:31:11,059 --> 00:31:13,559 y me quedo tan a gusto 825 00:31:13,559 --> 00:31:15,960 y diréis que has ganado 826 00:31:15,960 --> 00:31:17,880 poniendo el estático, primero la satisfacción 827 00:31:17,880 --> 00:31:19,619 personal de haberme dado cuenta 828 00:31:19,619 --> 00:31:21,779 de que este método solo usa 829 00:31:21,779 --> 00:31:23,779 variables estáticas, con lo cual 830 00:31:23,779 --> 00:31:24,779 me da igual quien lo llame 831 00:31:24,779 --> 00:31:27,920 eso lo convierte en estático y ahora ya he ganado 832 00:31:27,920 --> 00:31:29,359 aparte de la satisfacción personal 833 00:31:29,359 --> 00:31:32,140 he ganado la posibilidad 834 00:31:32,140 --> 00:31:34,319 de llamarle con el nombre 835 00:31:34,319 --> 00:31:34,960 de la clase 836 00:31:34,960 --> 00:31:38,380 ya no hace falta llamarle con un objeto 837 00:31:38,380 --> 00:31:38,940 en concreto 838 00:31:38,940 --> 00:31:42,160 antes, cuando yo no tenía puesto 839 00:31:42,160 --> 00:31:44,220 el modificador static, el método 840 00:31:44,220 --> 00:31:45,980 hacía lo mismo, es igual, no pasa nada 841 00:31:45,980 --> 00:31:48,059 la aplicación me va a funcionar igual porque todo hace lo mismo 842 00:31:48,059 --> 00:31:49,960 porque todo hace lo mismo 843 00:31:49,960 --> 00:31:52,259 pero tengo que tener 844 00:31:52,259 --> 00:31:54,180 un objeto y llamarlo con 845 00:31:54,180 --> 00:31:56,059 un objeto, y pues que tontería 846 00:31:56,059 --> 00:31:57,599 porque tengo que llamarlo con un objeto 847 00:31:57,599 --> 00:32:01,519 Si me da igual con qué objeto lo llames y voy a hacer lo mismo en todos. 848 00:32:01,640 --> 00:32:03,980 ¿Qué tontería? Prefiero llamarlo con el nombre de la clase. 849 00:32:04,920 --> 00:32:08,819 Pero para que el compilador te deje llamarlo con el nombre de la clase, 850 00:32:09,440 --> 00:32:11,200 tienes que poner el static. 851 00:32:12,619 --> 00:32:17,500 Si pones el static, entonces ya te deja llamarlo con el nombre de la clase. 852 00:32:19,200 --> 00:32:19,640 ¿Vale? 853 00:32:20,759 --> 00:32:26,799 Entonces, un método estático es un método que no depende de las propiedades concretas de un objeto. 854 00:32:26,799 --> 00:32:29,319 un método estático no depende 855 00:32:29,319 --> 00:32:31,559 de cosas concretas del objeto 856 00:32:31,559 --> 00:32:33,700 no depende ni de su nombre ni de su director 857 00:32:33,700 --> 00:32:35,019 no depende de cosas concretas 858 00:32:35,019 --> 00:32:37,519 depende de información que es global para todos 859 00:32:37,519 --> 00:32:39,839 con lo cual no depende de un objeto en concreto 860 00:32:39,839 --> 00:32:41,039 no depende de un objeto 861 00:32:41,039 --> 00:32:42,740 porque lo único que toca 862 00:32:42,740 --> 00:32:44,700 es lo que es global para todos 863 00:32:44,700 --> 00:32:46,559 eso es un método estático 864 00:32:46,559 --> 00:32:48,779 entonces cuando nos damos cuenta de que un método es así 865 00:32:48,779 --> 00:32:50,980 le ponemos el static delante 866 00:32:50,980 --> 00:32:53,460 y eso nos permite 867 00:32:53,460 --> 00:32:55,400 llamarlo ya sin necesidad 868 00:32:55,400 --> 00:32:56,640 de que exista ningún objeto 869 00:32:56,640 --> 00:32:58,940 yo llamo a departamento get país 870 00:32:58,940 --> 00:33:01,180 y este irá a la variable global 871 00:33:01,180 --> 00:33:02,900 que ya sabemos que puede existir 872 00:33:02,900 --> 00:33:04,079 aunque no existan los objetos 873 00:33:04,079 --> 00:33:06,420 y hará lo que sea con esa variable global 874 00:33:06,420 --> 00:33:08,000 independientemente de 875 00:33:08,000 --> 00:33:11,279 el objeto, de los objetos que existan 876 00:33:11,279 --> 00:33:13,319 y esto que permite 877 00:33:13,319 --> 00:33:14,480 pues me permite hacer 878 00:33:14,480 --> 00:33:16,500 lo que llamamos 879 00:33:16,500 --> 00:33:18,640 funciones de librería, es decir, utilidades 880 00:33:18,640 --> 00:33:20,200 cosas que no dependen de objetos 881 00:33:20,200 --> 00:33:22,420 y ahí ya me hago mis librerías y mis cosas 882 00:33:22,420 --> 00:33:23,279 pero eso ya es lunes 883 00:33:23,279 --> 00:33:25,920 ¿ha quedado claro? 884 00:33:26,640 --> 00:33:30,859 Bueno, pues os lo miráis, por favor.