1 00:00:00,000 --> 00:00:29,899 Ve, hagamos de una cosa muy bonita, que sí, que os va a gustar mucho. Vale, pues entonces, en el ejercicio este 21 que habíamos visto el otro día las clases empleado, departamento y el main, pues no llegamos a mirarlo, habíamos dicho, claro, ahora ya nuestra clase tiene dos tipos de propiedades, propiedades como estas que no tienen static y esta que sí que lo tiene. 2 00:00:29,899 --> 00:00:42,719 Entonces ya sabemos lo que significa esto, que estas propiedades de aquí implican que cada objeto departamento, cada objeto tiene su propio nombre, su propio director y su propio array de empleados. 3 00:00:42,719 --> 00:00:44,799 Cada objeto departamento tiene el suyo propio 4 00:00:44,799 --> 00:00:48,340 Pero al aparecer esta propiedad aquí 5 00:00:48,340 --> 00:00:51,280 Y tener el static delante 6 00:00:51,280 --> 00:00:55,460 Significa que todos los objetos departamento 7 00:00:55,460 --> 00:01:00,100 Todos acceden a la misma propiedad 8 00:01:00,100 --> 00:01:00,899 Dirección empresa 9 00:01:00,899 --> 00:01:02,679 Porque es compartida por todos 10 00:01:02,679 --> 00:01:06,120 ¿Vale? 11 00:01:06,120 --> 00:01:09,000 No, no es que sea el par, es una propiedad compartida 12 00:01:09,000 --> 00:01:11,540 Sin embargo, nombre, ¿tiene cada uno su nombre? 13 00:01:11,540 --> 00:01:13,700 cada uno su director 14 00:01:13,700 --> 00:01:15,019 y cada uno sus empleados 15 00:01:15,019 --> 00:01:17,540 y sin embargo 16 00:01:17,540 --> 00:01:19,900 dirección empresa es una variable que está ahí 17 00:01:19,900 --> 00:01:22,079 compartida por todos los objetos 18 00:01:22,079 --> 00:01:23,780 entonces por eso en este 19 00:01:23,780 --> 00:01:25,519 main de pruebas que hicimos 20 00:01:25,519 --> 00:01:27,959 pues me da igual hacer 21 00:01:27,959 --> 00:01:29,560 de uno punto dir empresa 22 00:01:29,560 --> 00:01:31,560 que hacer de dos punto 23 00:01:31,560 --> 00:01:33,620 dir empresa me da igual porque dir empresa 24 00:01:33,620 --> 00:01:35,879 es la misma variable para todos 25 00:01:35,879 --> 00:01:36,560 compartida 26 00:01:36,560 --> 00:01:39,379 entonces como daba igual el objeto que la llamara 27 00:01:39,379 --> 00:01:41,579 daba igual, pues la forma habitual de llamar 28 00:01:41,579 --> 00:01:43,560 las variables estáticas es con el nombre de la clase 29 00:01:43,560 --> 00:01:45,439 porque me da igual el objeto que la llame 30 00:01:45,439 --> 00:01:47,540 que yo la llamo con de 1 31 00:01:47,540 --> 00:01:49,900 me da igual, estoy accediendo al mismo sitio 32 00:01:49,900 --> 00:01:51,099 me da exactamente igual 33 00:01:51,099 --> 00:01:53,760 como si la llamo con otro objeto departamento 34 00:01:53,760 --> 00:01:55,799 de 2 que he hecho por aquí 35 00:01:55,799 --> 00:02:01,549 me da lo mismo decir de 1.empresa 36 00:02:01,549 --> 00:02:03,170 que de 2.empresa me da igual 37 00:02:03,170 --> 00:02:04,909 porque esta es la variable compartida por todos 38 00:02:04,909 --> 00:02:06,650 entonces como me da igual 39 00:02:06,650 --> 00:02:08,150 la puedo llamar así 40 00:02:08,150 --> 00:02:10,789 y de hecho 41 00:02:10,789 --> 00:02:13,090 lo que habíamos dicho es que podemos incluso 42 00:02:13,090 --> 00:02:15,030 llamar a esta variable, aunque no 43 00:02:15,030 --> 00:02:15,870 existan 44 00:02:15,870 --> 00:02:18,949 objetos departamento, aunque no 45 00:02:18,949 --> 00:02:19,789 exista ninguno. 46 00:02:20,610 --> 00:02:22,090 Desde el momento en que 47 00:02:22,090 --> 00:02:24,810 llamamos a la variable dirEmpresa 48 00:02:24,810 --> 00:02:26,770 con el nombre de la clase, esa variable 49 00:02:26,770 --> 00:02:28,689 aparece ahí. Y es una variable 50 00:02:28,689 --> 00:02:30,650 fuera de cualquier objeto, 51 00:02:30,830 --> 00:02:32,389 completamente fuera de cualquier objeto. 52 00:02:33,710 --> 00:02:35,030 ¿Vale? Es una variable global. 53 00:02:35,490 --> 00:02:36,870 No pertenece a ningún objeto 54 00:02:36,870 --> 00:02:38,870 y a la vez pertenece a todos, porque todos 55 00:02:38,870 --> 00:02:40,129 lo comparten. 56 00:02:40,789 --> 00:02:42,969 ¿Vale? Entonces 57 00:02:42,969 --> 00:02:45,150 ¿Por qué la hemos ubicado aquí? 58 00:02:46,270 --> 00:02:46,990 Dentro, bueno 59 00:02:46,990 --> 00:02:49,210 Porque es una información relativa a los departamentos 60 00:02:49,210 --> 00:02:51,550 Entonces los temas de diseño no se nos tienen que olvidar 61 00:02:51,550 --> 00:02:53,169 Y los temas de diseño 62 00:02:53,169 --> 00:02:55,389 Significan qué propiedades les doy a las clases 63 00:02:55,389 --> 00:02:56,490 Qué clases hago 64 00:02:56,490 --> 00:02:59,150 Todo lo que estáis trabajando en 65 00:02:59,150 --> 00:03:00,569 Bases de datos, pues aquí igual 66 00:03:00,569 --> 00:03:02,509 Pues hombre, dirección empresa 67 00:03:02,509 --> 00:03:05,229 Tiene que ver con dónde están los departamentos 68 00:03:05,229 --> 00:03:07,229 Pues dónde pongo esa variable 69 00:03:07,229 --> 00:03:08,650 No la puedo poner fuera de todas las clases 70 00:03:08,650 --> 00:03:09,870 Porque ahí no se puede poner nada en Java 71 00:03:09,870 --> 00:03:12,810 pues la pongo dentro de la clase departamento 72 00:03:12,810 --> 00:03:14,090 pero me acuerdo del static 73 00:03:14,090 --> 00:03:16,250 porque no está asociada a ningún objeto 74 00:03:16,250 --> 00:03:17,210 no está asociada 75 00:03:17,210 --> 00:03:18,610 va por libre 76 00:03:18,610 --> 00:03:21,830 y accedo a ella a través del nombre de la clase 77 00:03:21,830 --> 00:03:22,969 ¿vale? 78 00:03:23,729 --> 00:03:26,310 entonces precisamente como no va asociada a ningún objeto 79 00:03:26,310 --> 00:03:28,830 pues dijimos que a las propiedades 80 00:03:28,830 --> 00:03:29,550 estáticas 81 00:03:29,550 --> 00:03:32,330 no es convenio de programación 82 00:03:32,330 --> 00:03:34,030 que se acceda a ellas con getty set 83 00:03:34,030 --> 00:03:35,889 se las pone public 84 00:03:35,889 --> 00:03:37,289 y punto pelota 85 00:03:37,289 --> 00:03:39,289 no hay get y set, entonces accedemos 86 00:03:39,289 --> 00:03:41,210 directamente con el nombre de la clase 87 00:03:41,210 --> 00:03:42,689 punto la propiedad 88 00:03:42,689 --> 00:03:45,169 o de uno punto propiedad o de dos 89 00:03:45,169 --> 00:03:47,030 punto propiedad, me da igual 90 00:03:47,030 --> 00:03:49,330 si es que de uno y de dos existen 91 00:03:49,330 --> 00:03:49,610 vale 92 00:03:49,610 --> 00:03:57,729 entonces, si hay 93 00:03:57,729 --> 00:03:59,129 propiedades estáticas 94 00:03:59,129 --> 00:04:06,120 inicializada, te refieres 95 00:04:06,120 --> 00:04:08,120 bueno, si en ese momento 96 00:04:08,120 --> 00:04:10,060 si tiene un valor inicial por defecto, si 97 00:04:10,060 --> 00:04:11,419 aquí no lo hemos inicializado 98 00:04:11,419 --> 00:04:13,860 depende de la aplicación, depende 99 00:04:13,860 --> 00:04:41,980 Podríamos, podríamos aquí inicializarla, darle un valor y ya está, ¿vale? Depende de los requisitos de la aplicación. Vale, entonces, el modificador estático aplicaba tanto a propiedades como a métodos. Por ejemplo, aquí habíamos hecho un método, este de aquí, que lo hicimos, un método para devolver el país en el que estaba la empresa según la ubicación. 100 00:04:41,980 --> 00:04:44,240 Entonces, este método 101 00:04:44,240 --> 00:04:47,920 Para devolver el país al que pertenece la empresa 102 00:04:47,920 --> 00:04:49,279 Según la ubicación 103 00:04:49,279 --> 00:04:50,579 De la 104 00:04:50,579 --> 00:04:52,439 De la empresa 105 00:04:52,439 --> 00:04:55,600 La única propiedad a la que necesita acceder 106 00:04:55,600 --> 00:04:56,079 Es a esta 107 00:04:56,079 --> 00:04:59,420 La única, ¿vale? 108 00:04:59,980 --> 00:05:01,259 Luego este método 109 00:05:01,259 --> 00:05:03,620 No depende para nada del objeto 110 00:05:03,620 --> 00:05:04,220 Que lo llame 111 00:05:04,220 --> 00:05:06,220 Lo puede llamar cualquier objeto 112 00:05:06,220 --> 00:05:07,680 No depende para nada del objeto que lo llame 113 00:05:07,680 --> 00:05:08,560 Lo puede llamar cualquiera 114 00:05:08,560 --> 00:05:10,600 lo puede llamar 115 00:05:10,600 --> 00:05:12,699 de uno punto get país 116 00:05:12,699 --> 00:05:14,839 o lo podría llamar 117 00:05:14,839 --> 00:05:16,399 de dos punto get país 118 00:05:16,399 --> 00:05:17,779 nos da igual el que lo llame 119 00:05:17,779 --> 00:05:20,860 porque el objeto que lo llame va a hacer lo mismo 120 00:05:20,860 --> 00:05:22,620 que es mirar 121 00:05:22,620 --> 00:05:24,379 la variable común estática 122 00:05:24,379 --> 00:05:25,259 y devolver el país 123 00:05:25,259 --> 00:05:26,740 entonces como nos da igual 124 00:05:26,740 --> 00:05:29,139 los métodos estáticos 125 00:05:29,139 --> 00:05:32,600 no se llaman con un objeto 126 00:05:32,600 --> 00:05:33,740 se pueden llamar pero 127 00:05:33,740 --> 00:05:36,819 es mucho más claro para el código 128 00:05:36,819 --> 00:05:38,579 si los llevamos directamente con el nombre de la clase 129 00:05:38,579 --> 00:05:40,839 entonces a los métodos 130 00:05:40,839 --> 00:05:43,000 estáticos se les llama 131 00:05:43,000 --> 00:05:44,740 muchas veces métodos de librería 132 00:05:44,740 --> 00:05:46,879 porque son métodos para hacer utilidades 133 00:05:46,879 --> 00:05:48,800 independientes de cualquier objeto 134 00:05:48,800 --> 00:05:50,959 son utilidades independientes de cualquier 135 00:05:50,959 --> 00:05:51,819 objeto porque son 136 00:05:51,819 --> 00:05:54,519 funciones, métodos 137 00:05:54,519 --> 00:05:56,800 que no trabajan con 138 00:05:56,800 --> 00:05:58,600 propiedades concretas de un objeto 139 00:05:58,600 --> 00:06:00,240 no trabajan con propiedades concretas de un objeto 140 00:06:00,240 --> 00:06:02,360 luego son como métodos para hacer 141 00:06:02,360 --> 00:06:04,459 funciones auxiliares, utilidades 142 00:06:04,459 --> 00:06:05,319 por ejemplo 143 00:06:05,319 --> 00:06:34,589 Por ejemplo, vamos a hacer aquí un proyecto, para no liar tanto, un proyecto pues matemáticas, porque resulta que nos vendría bien, por ejemplo, nosotros hicimos en su momento el código para ver si un número es primo o no es primo, el código para ver si un número es triangular o no es triangular, 144 00:06:34,589 --> 00:06:38,129 para calcular el factorial de un número 145 00:06:38,129 --> 00:06:39,870 hicimos ciertos 146 00:06:39,870 --> 00:06:41,709 algoritmos para calcular 147 00:06:41,709 --> 00:06:43,490 funciones matemáticas 148 00:06:43,490 --> 00:06:45,910 entonces si resulta que nosotros queremos hacer 149 00:06:45,910 --> 00:06:47,050 esas cosas varias veces 150 00:06:47,050 --> 00:06:49,769 pues vamos a meterlos en unos métodos 151 00:06:49,769 --> 00:06:51,930 de estos y los llevamos cada vez que queramos 152 00:06:51,930 --> 00:06:53,610 por ejemplo 153 00:06:53,610 --> 00:06:55,810 vamos a hacernos una clase 154 00:06:55,810 --> 00:06:57,769 utilidades matemáticas 155 00:06:57,769 --> 00:06:58,550 Matemáticas 156 00:06:58,550 --> 00:07:05,370 A ver, no tengo por qué crear el paquete 157 00:07:05,370 --> 00:07:07,149 Pero bueno, voy a crear un paquete, no es obligatorio 158 00:07:07,149 --> 00:07:08,370 Pero bueno 159 00:07:08,370 --> 00:07:11,569 No tiene por qué haber siempre un paquete 160 00:07:11,569 --> 00:07:12,810 Puedes trabajar en 161 00:07:12,810 --> 00:07:15,370 Vale, pues vamos a hacernos un paquete que sea 162 00:07:15,370 --> 00:07:16,550 Utilidades 163 00:07:16,550 --> 00:07:20,939 Y dentro del paquete utilidades 164 00:07:20,939 --> 00:07:25,209 Vamos a hacernos 165 00:07:25,209 --> 00:07:26,889 Una clase 166 00:07:26,889 --> 00:07:27,490 Que sea 167 00:07:27,490 --> 00:07:30,550 Matemáticas, para ser utilidades 168 00:07:30,550 --> 00:07:31,290 matemáticas 169 00:07:31,290 --> 00:07:36,720 vale, venga pues por ejemplo 170 00:07:36,720 --> 00:07:38,439 a mi resulta que me va a 171 00:07:38,439 --> 00:07:40,519 interesar en un montón de sitios 172 00:07:40,519 --> 00:07:42,699 de mi proyecto, de mis aplicaciones 173 00:07:42,699 --> 00:07:44,360 que estoy haciendo por ahí, que estoy haciendo en mis aplicaciones 174 00:07:44,360 --> 00:07:46,540 distintas, me va a interesar muy 175 00:07:46,540 --> 00:07:48,019 a menudo saber si un número es primo o no 176 00:07:48,019 --> 00:07:50,259 porque estoy haciendo aplicaciones de 177 00:07:50,259 --> 00:07:52,480 criptografía, de lo que sea y necesito saber 178 00:07:52,480 --> 00:07:53,300 si un número es primo o no 179 00:07:53,300 --> 00:07:55,879 pues vamos a hacernos una función 180 00:07:55,879 --> 00:07:58,439 un método, ahora ya no uso la palabra 181 00:07:58,439 --> 00:08:00,139 función, un método que 182 00:08:00,139 --> 00:08:02,379 me diga 183 00:08:02,379 --> 00:08:04,660 sí o no en función de si un número 184 00:08:04,660 --> 00:08:06,500 que yo le paso por 185 00:08:06,500 --> 00:08:08,339 teclado es primo o no es primo 186 00:08:08,339 --> 00:08:10,399 vale, esto ya 187 00:08:10,399 --> 00:08:12,899 esta función 188 00:08:12,899 --> 00:08:14,399 este código lo he hecho un montón de veces 189 00:08:14,399 --> 00:08:15,939 entonces bueno 190 00:08:15,939 --> 00:08:18,259 podemos hacerla 191 00:08:18,259 --> 00:08:20,779 hacerla así 192 00:08:20,779 --> 00:08:22,139 rápidamente otra vez 193 00:08:22,139 --> 00:08:24,519 asumo que de partida 194 00:08:24,519 --> 00:08:26,699 es primo, pero si encuentro 195 00:08:26,699 --> 00:08:27,420 un divisor 196 00:08:27,420 --> 00:08:30,620 si encuentro 197 00:08:30,620 --> 00:08:31,399 un divisor 198 00:08:31,399 --> 00:08:36,159 entre 2 y n-1 que lo divida, pues exprimo será falso. 199 00:08:50,769 --> 00:08:57,909 If n dividido entre i es igual a 0, 200 00:08:58,629 --> 00:09:02,990 entonces exprimo igual a falso. 201 00:09:04,570 --> 00:09:06,990 Y ahora, return exprimo. 202 00:09:09,179 --> 00:09:11,399 Vale, pues ahora ya un algoritmo de estos 203 00:09:11,399 --> 00:09:16,000 os tiene que salir de corrido y bien hecho 204 00:09:16,000 --> 00:09:17,980 y prácticamente sin pensarlo, porque esto ya lo hemos 205 00:09:17,980 --> 00:09:20,279 hecho, ya hemos explicado 206 00:09:20,279 --> 00:09:21,759 programación estructurada 207 00:09:21,759 --> 00:09:22,779 hemos explicado 208 00:09:22,779 --> 00:09:25,799 algoritmia relacionada con sumas 209 00:09:25,799 --> 00:09:27,539 con contar, con ver si algo ocurre o no ocurre 210 00:09:27,539 --> 00:09:29,460 todo eso lo tenemos hiper mega explicado, entonces bueno 211 00:09:29,460 --> 00:09:31,419 este código debería salirnos de corrido 212 00:09:31,419 --> 00:09:33,340 y si no, pues tenemos que estudiar 213 00:09:33,340 --> 00:09:36,120 desde el principio y ponernos 214 00:09:36,120 --> 00:09:37,159 ponernos otra vez 215 00:09:37,159 --> 00:09:39,360 las pilas, vale 216 00:09:39,360 --> 00:09:41,779 bueno, pues ya está, hemos hecho una función 217 00:09:41,779 --> 00:09:43,120 un método maravilloso 218 00:09:43,120 --> 00:09:45,980 un método maravilloso al que yo le paso un número 219 00:09:45,980 --> 00:09:50,120 y me devuelve true, si es primo, y false, si no. 220 00:09:51,179 --> 00:09:51,720 ¿Vale? 221 00:09:54,299 --> 00:09:56,940 Ahora, yo este método lo quiero usar 222 00:09:56,940 --> 00:09:59,179 desde cualquier sitio del mundo mundial. 223 00:10:00,039 --> 00:10:01,519 Desde cualquier sitio del mundo mundial. 224 00:10:02,299 --> 00:10:04,120 Entonces voy y pienso, anda, 225 00:10:04,980 --> 00:10:06,500 ¿qué particularidad tiene este método? 226 00:10:07,200 --> 00:10:10,440 Que no está usando ninguna propiedad de la clase. 227 00:10:11,299 --> 00:10:12,600 De hecho, no podría aunque quisiera, 228 00:10:12,679 --> 00:10:14,019 porque la clase no tiene propiedades. 229 00:10:14,019 --> 00:10:18,159 pero no está usando ninguna propiedad de la clase 230 00:10:18,159 --> 00:10:21,639 ninguna, con lo cual este método no depende para nada 231 00:10:21,639 --> 00:10:24,440 de un objeto matemáticas concreto 232 00:10:24,440 --> 00:10:25,480 no depende para nada 233 00:10:25,480 --> 00:10:28,080 entonces cuando yo me doy cuenta 234 00:10:28,080 --> 00:10:32,000 cuando escribo un método 235 00:10:32,000 --> 00:10:36,000 de que ese método no depende para nada de propiedades de la clase 236 00:10:36,000 --> 00:10:38,600 pues digo, anda, es estático 237 00:10:38,600 --> 00:10:41,039 voy y se lo pongo 238 00:10:41,039 --> 00:10:42,980 es estático 239 00:10:42,980 --> 00:10:45,159 y que he ganado 240 00:10:45,159 --> 00:10:46,399 poniendo static 241 00:10:46,399 --> 00:10:48,779 que ahora ya voy a poder llamar a ese método 242 00:10:48,779 --> 00:10:51,279 tranquilamente con el nombre 243 00:10:51,279 --> 00:10:53,419 de la clase matemáticas.exprimo 244 00:10:53,419 --> 00:10:54,899 como si fuera una función de librería 245 00:10:54,899 --> 00:10:55,980 para hacer lo que yo quiera 246 00:10:55,980 --> 00:11:00,820 ¿vale? por ejemplo yo ya tengo aquí 247 00:11:00,820 --> 00:11:02,960 esto, vamos a meter otra función más 248 00:11:02,960 --> 00:11:04,759 para que sea una clase 249 00:11:04,759 --> 00:11:06,279 con métodos de librería 250 00:11:06,279 --> 00:11:07,940 por ejemplo 251 00:11:07,940 --> 00:11:10,919 pues vamos a hacer el factorial de un número 252 00:11:10,919 --> 00:11:12,299 aunque esté en otro proyecto 253 00:11:12,299 --> 00:11:14,700 ahora lo vemos, si está en otro proyecto 254 00:11:14,700 --> 00:11:16,100 también, pero habría que ver 255 00:11:16,100 --> 00:11:18,039 cómo, ahora lo vemos, ¿vale? 256 00:11:22,299 --> 00:11:24,039 y n, venga, vamos a hacernos el 257 00:11:24,039 --> 00:11:25,299 factorial de un numerito n 258 00:11:25,299 --> 00:11:28,340 esto es el factorial de una multiplicación acumulativa 259 00:11:28,340 --> 00:11:30,000 pues si era una 260 00:11:30,000 --> 00:11:32,399 multiplicación acumulativa, pues la multiplicación 261 00:11:32,399 --> 00:11:33,960 acumulativa se inicializa en 1 262 00:11:33,960 --> 00:11:36,100 y ahora ya, pues podemos 263 00:11:36,100 --> 00:11:38,200 hacer, while n 264 00:11:38,200 --> 00:11:40,120 sea mayor o igual que 1 265 00:11:40,120 --> 00:11:42,279 pues hacemos 266 00:11:42,279 --> 00:11:44,279 mul por igual 267 00:11:44,279 --> 00:11:47,080 n y a n lo dejamos decrementado 268 00:11:47,080 --> 00:11:50,710 y ahora ya devolvemos 269 00:11:50,710 --> 00:11:52,210 como no está pedro, no voy a poner 270 00:11:52,210 --> 00:11:53,929 ni una sola llave si es que no hace falta 271 00:11:53,929 --> 00:11:56,070 devolvemos mult 272 00:11:56,070 --> 00:11:58,429 vale 273 00:11:58,429 --> 00:11:59,850 algoritmo parece el factorial 274 00:11:59,850 --> 00:12:01,750 multiplicamos 275 00:12:01,750 --> 00:12:04,389 el número primero 276 00:12:04,389 --> 00:12:05,929 por n 277 00:12:05,929 --> 00:12:08,429 luego por n-1, por n-2, por n-3 278 00:12:08,429 --> 00:12:10,629 así mientras n sea mayor o igual que 1 279 00:12:10,629 --> 00:12:16,080 si me dan el 0 280 00:12:16,080 --> 00:12:18,259 pues me va a devolver 281 00:12:18,259 --> 00:12:19,899 uno, que es el factorial de cero. Estupendo. 282 00:12:20,620 --> 00:12:22,379 Claro. O sea, ese caso 283 00:12:22,379 --> 00:12:23,919 peculiar 284 00:12:23,919 --> 00:12:25,720 tenemos la suerte de que lo satisfacemos. 285 00:12:25,860 --> 00:12:26,460 El factorial de cero es uno. 286 00:12:31,360 --> 00:12:33,980 Vale. Pues... 287 00:12:33,980 --> 00:12:40,590 Pues ya está. Ahora estas dos funciones 288 00:12:40,590 --> 00:12:41,730 es primo y es factorial. 289 00:12:42,570 --> 00:12:44,610 Punto importantísimo. Nos hemos dado cuenta 290 00:12:44,610 --> 00:12:46,669 de que no dependen de ninguna propiedad 291 00:12:46,669 --> 00:12:48,610 de la clase. Luego son independientes 292 00:12:49,169 --> 00:12:50,590 de que exista 293 00:12:50,590 --> 00:12:52,490 un objeto matemática. Son independientes. 294 00:12:52,490 --> 00:12:54,250 no dependen de ninguna propiedad, porque repito 295 00:12:54,250 --> 00:12:56,230 la clase no tiene ni propiedades, ¿cómo puede depender? 296 00:12:56,909 --> 00:12:57,950 te aburro mucho, ¿verdad? 297 00:12:58,450 --> 00:12:59,330 me lo dicen mucho 298 00:12:59,330 --> 00:13:02,370 entonces, como me he dado cuenta de eso 299 00:13:02,370 --> 00:13:04,549 pongo el static delante 300 00:13:04,549 --> 00:13:05,409 ¿vale? 301 00:13:06,769 --> 00:13:08,529 y ahora ya, poniendo el static 302 00:13:08,529 --> 00:13:09,470 delante, ¿qué puedo hacer? 303 00:13:09,990 --> 00:13:12,110 pues ahora yo estoy haciendo mis clases matemáticas 304 00:13:12,110 --> 00:13:13,169 por ahora aquí dentro 305 00:13:13,169 --> 00:13:16,210 yo tengo aquí ahora ya un programita que hace cosas 306 00:13:16,210 --> 00:13:16,830 ¿dime? 307 00:13:19,190 --> 00:13:20,129 ¿hará falta el public? 308 00:13:20,250 --> 00:13:22,149 cuando lo use fuera de la clase, ahora mismo 309 00:13:22,149 --> 00:13:24,250 Yo me voy a hacer mi main aquí mismo 310 00:13:24,250 --> 00:13:25,330 En utilidades, ¿vale? 311 00:13:26,269 --> 00:13:28,090 Entonces, primer paso 312 00:13:28,090 --> 00:13:30,769 Venga, pues me voy a hacer aquí una clase main 313 00:13:30,769 --> 00:13:32,429 Que haga cosas con matemáticas 314 00:13:32,429 --> 00:13:35,149 Por ejemplo 315 00:13:35,149 --> 00:13:37,470 Pues yo ahora le digo a este 316 00:13:37,470 --> 00:13:52,379 Pues nada, bueno, para que quede un programa 317 00:13:52,379 --> 00:13:54,259 Con un poco de sentido 318 00:13:54,259 --> 00:13:55,740 Pues le podemos decir 319 00:13:55,740 --> 00:14:00,629 ¿Qué quieres hacer? 320 00:14:07,740 --> 00:14:09,639 Y le digo, oye, dime 321 00:14:09,639 --> 00:14:12,419 Uno si quieres hacerlo de número primo 322 00:14:12,419 --> 00:14:16,059 Y dos 323 00:14:16,059 --> 00:14:17,480 Si quieres hacerlo del factorial 324 00:14:17,480 --> 00:14:18,279 Por ejemplo 325 00:14:18,279 --> 00:14:21,080 Venga que quieres hacer 326 00:14:21,080 --> 00:14:22,840 Primo o factorial 327 00:14:22,840 --> 00:14:24,379 Elige 328 00:14:24,379 --> 00:14:27,659 Pues entonces ahora ya leo la opción 329 00:14:27,659 --> 00:14:31,870 Eee 330 00:14:31,870 --> 00:14:34,009 El scan punto 331 00:14:34,009 --> 00:14:39,370 Next line 332 00:14:39,370 --> 00:14:41,309 Punto char 333 00:14:41,309 --> 00:14:43,250 At 334 00:14:43,250 --> 00:14:44,190 Cero 335 00:14:44,190 --> 00:14:47,789 Y ahora ya, pues ahora ya en función de lo que me haya dicho 336 00:14:47,789 --> 00:14:48,490 Pues ya está 337 00:14:48,490 --> 00:14:56,159 Dime 338 00:14:56,159 --> 00:14:59,919 A ver, porque me estoy quedando 339 00:14:59,919 --> 00:15:02,019 Él se supone que le ha metido uno o dos 340 00:15:02,019 --> 00:15:03,799 Pues yo me quedo con el primer carácter 341 00:15:03,799 --> 00:15:04,500 De lo que ha metido 342 00:15:04,500 --> 00:15:07,440 Ah, vale, vale, sí, bueno 343 00:15:07,440 --> 00:15:09,720 Podría luego comparar con el número entero 344 00:15:09,720 --> 00:15:11,220 Que codifica el uno y el dos 345 00:15:11,220 --> 00:15:12,480 Pero tendría que mirar la tabla ASCII 346 00:15:12,480 --> 00:15:14,759 Entonces, vale, bien apuntado 347 00:15:14,759 --> 00:15:16,879 Más cómodo si lo pongo en charas y comparo 348 00:15:16,879 --> 00:15:19,279 Bueno, aunque ponga linda igual 349 00:15:19,279 --> 00:15:20,639 Podría comparar con la cadena 350 00:15:20,639 --> 00:15:23,399 Yo se lo pongo un int y pido que sea un int 351 00:15:23,399 --> 00:15:25,139 Bueno, da igual 352 00:15:25,139 --> 00:15:25,639 Vamos, pero 353 00:15:25,639 --> 00:15:28,899 Y luego lo arreglo 354 00:15:28,899 --> 00:15:29,919 Pues con un int 355 00:15:29,919 --> 00:15:32,919 Sí, cada uno, pues como se apañe mejor 356 00:15:32,919 --> 00:15:33,259 Bueno 357 00:15:33,259 --> 00:15:37,240 En el caso de que me hayan dicho uno 358 00:15:37,240 --> 00:15:38,759 Pues ahora le diré 359 00:15:38,759 --> 00:15:42,769 Oye, dame el número 360 00:15:42,769 --> 00:15:47,820 Dame el número 361 00:15:47,820 --> 00:15:49,659 Y ahora leemos el número 362 00:15:49,659 --> 00:15:58,210 Leemos el número 363 00:15:58,210 --> 00:15:59,809 Y ahora es cuando con este número 364 00:15:59,809 --> 00:16:02,210 tenemos que decir si es primo 365 00:16:02,210 --> 00:16:02,990 o no es primo 366 00:16:02,990 --> 00:16:06,429 ¿qué ocurre? que tenemos aquí en la clase 367 00:16:06,429 --> 00:16:07,330 matemáticas 368 00:16:07,330 --> 00:16:09,809 un método 369 00:16:09,809 --> 00:16:12,090 al que si yo le paso un número entero 370 00:16:12,090 --> 00:16:14,210 me devuelve true o false el número es primo 371 00:16:14,210 --> 00:16:15,429 ¿no? que es justo lo que quiero 372 00:16:15,429 --> 00:16:17,929 y además como ese método es static 373 00:16:17,929 --> 00:16:20,409 lo puedo llamar con el nombre de la clase 374 00:16:20,409 --> 00:16:22,710 pues perfecto 375 00:16:22,710 --> 00:16:24,450 ala, me hago esto 376 00:16:24,450 --> 00:16:26,409 matemáticas 377 00:16:26,409 --> 00:16:29,090 punto 378 00:16:29,090 --> 00:16:32,009 es primo, y le paso el numerito 379 00:16:32,009 --> 00:16:35,710 esto me devolverá true o false 380 00:16:35,710 --> 00:16:37,809 bueno, pues ya está, lo meto en un if 381 00:16:37,809 --> 00:17:05,910 ala, pues ya está 382 00:17:05,910 --> 00:17:07,509 he llamado 383 00:17:07,509 --> 00:17:09,390 de la manera estática 384 00:17:09,390 --> 00:17:10,849 que es la que le tengo que llamar 385 00:17:10,849 --> 00:17:13,170 al método es primo 386 00:17:13,170 --> 00:17:15,529 y no me he tenido que crear ningún objeto matemáticas 387 00:17:15,529 --> 00:17:16,970 en ningún momento, no ha hecho falta 388 00:17:16,970 --> 00:17:17,950 no me lo he tenido que crear 389 00:17:17,950 --> 00:17:21,029 porque este método es estático, no necesita 390 00:17:21,029 --> 00:17:22,970 que exista un objeto para ser llamado 391 00:17:22,970 --> 00:17:25,009 no lo necesita, entonces yo puedo 392 00:17:25,009 --> 00:17:26,990 llamar a exprimo con el nombre de la clase 393 00:17:26,990 --> 00:17:29,049 y magnífico 394 00:17:29,049 --> 00:17:31,029 le paso el numerito y sé que me va a 395 00:17:31,029 --> 00:17:32,930 devolver un true o un false en lugar 396 00:17:32,930 --> 00:17:34,170 de ese exprimo, no exprimo 397 00:17:34,170 --> 00:17:36,970 luego de alguna manera lo que hacemos con 398 00:17:36,970 --> 00:17:39,009 métodos estáticos es que tenemos la 399 00:17:39,009 --> 00:17:41,210 opción de hacer como métodos 400 00:17:41,210 --> 00:17:42,809 que hacen utilidades 401 00:17:42,809 --> 00:17:44,950 métodos tipo librería que no 402 00:17:44,950 --> 00:17:46,710 hacen cosas con un objeto en concreto 403 00:17:46,710 --> 00:17:48,210 sino como utilidades genéricas 404 00:17:48,210 --> 00:17:50,710 es una de sus utilidades, claro 405 00:17:50,710 --> 00:17:54,660 vale porque 406 00:17:54,660 --> 00:17:59,519 Os veo copiar ahí muy copistas, pero no sé si lo estáis enterando. 407 00:18:03,279 --> 00:18:03,839 Vale. 408 00:18:04,759 --> 00:18:08,359 Entonces, bueno, pues el caso 2 sería lo mismo. 409 00:18:17,480 --> 00:18:20,240 En el caso 2, en este caso, dame el número. 410 00:18:20,359 --> 00:18:21,960 Ya tengo declarada la variable y ahora 411 00:18:21,960 --> 00:18:25,700 ya vamos a mostrar el factorial directamente. 412 00:18:26,640 --> 00:18:30,759 Gracias a que tenemos un método estático en la clase matemáticas 413 00:18:30,759 --> 00:18:33,480 que me calcula el factorial de un número 414 00:18:33,480 --> 00:18:34,440 pues yo lo llamo 415 00:18:34,440 --> 00:18:36,640 tranquilamente 416 00:18:36,640 --> 00:18:38,140 una duda, aquí en el caso de switch case 417 00:18:38,140 --> 00:18:40,480 que tú tienes inicializado la variable num 418 00:18:40,480 --> 00:18:41,720 en el caso 1 419 00:18:41,720 --> 00:18:44,240 si nunca se ejecuta el caso 1 420 00:18:44,240 --> 00:18:45,980 sigue inicializado, ¿vale? igualmente 421 00:18:45,980 --> 00:18:46,660 sí, porque 422 00:18:46,660 --> 00:18:51,180 a ver, porque 423 00:18:51,180 --> 00:18:52,680 hay un único bloque 424 00:18:52,680 --> 00:18:55,039 el switch se abre aquí en un único bloque 425 00:18:55,039 --> 00:18:56,380 otra cosa es que tú abrías otro dentro 426 00:18:56,380 --> 00:18:58,079 pero si no abres ninguno dentro 427 00:18:58,079 --> 00:19:00,359 dentro del case no hay un bloque 428 00:19:00,359 --> 00:19:01,380 que hay un único bloque. 429 00:19:01,700 --> 00:19:04,900 Entonces, el compilador, o sea, cuando genera el .class, 430 00:19:06,420 --> 00:19:08,380 efectivamente, ya genera espacio 431 00:19:08,380 --> 00:19:10,460 para todas las que estén declaradas en ese bloque. 432 00:19:19,440 --> 00:19:21,880 Claro, en cuanto la máquina virtual 433 00:19:21,880 --> 00:19:24,059 tiene que ejecutar una sentencia que está en un bloque, 434 00:19:25,559 --> 00:19:27,180 todas las variables declaradas en ese bloque 435 00:19:27,180 --> 00:19:29,019 habrá creado espacio para ellas, 436 00:19:29,220 --> 00:19:31,019 aunque no haya pasado por su ejecución. 437 00:19:31,019 --> 00:19:32,480 Aunque no haya pasado por su ejecución. 438 00:19:34,160 --> 00:19:40,890 Entonces, vale. 439 00:19:40,890 --> 00:19:43,009 Y aquí después de los next in 440 00:19:43,009 --> 00:19:43,869 Como luego hay un 441 00:19:43,869 --> 00:19:45,650 Ah no, porque no hay bucle, da igual 442 00:19:45,650 --> 00:19:46,789 Solo lo deja hacer una vez 443 00:19:46,789 --> 00:19:52,670 Pues ya está, entonces nosotros aquí tan apañados 444 00:19:52,670 --> 00:20:00,500 Venga, dame el número 445 00:20:00,500 --> 00:20:01,599 Este es primo 446 00:20:01,599 --> 00:20:03,819 Pues sí, es primo 447 00:20:03,819 --> 00:20:08,480 Vamos a 448 00:20:08,480 --> 00:20:11,059 Venga, dame el factorial de 54 449 00:20:11,059 --> 00:20:13,519 Buf, me he pasado, me he pasado 450 00:20:13,519 --> 00:20:14,819 No va a tener 451 00:20:14,819 --> 00:20:17,839 Ah, es que no lo he puesto en un siso 452 00:20:17,839 --> 00:20:18,839 Pero ha terminado 453 00:20:18,839 --> 00:20:20,380 Ah no, es que le he dado 54 454 00:20:20,380 --> 00:20:21,799 Estoy gilipichis 455 00:20:21,799 --> 00:20:23,400 A ver, 2 456 00:20:23,400 --> 00:20:24,559 Dame el número 457 00:20:24,559 --> 00:20:25,720 65 458 00:20:25,720 --> 00:20:29,700 Sí que he hecho bien la función 459 00:20:29,700 --> 00:20:31,359 El factorial de 65 460 00:20:31,359 --> 00:20:32,940 Es 0 461 00:20:32,940 --> 00:20:35,779 Vamos a ver 462 00:20:35,779 --> 00:20:39,119 Función factorial 463 00:20:39,119 --> 00:20:50,180 Vale, multiplicando 464 00:20:50,180 --> 00:20:51,500 Lo va multiplicando por n 465 00:20:51,500 --> 00:20:53,859 y luego lo deja decrementado para la siguiente 466 00:20:53,859 --> 00:20:54,480 entonces multiplica 467 00:20:54,480 --> 00:20:56,579 está bien, ¿no? 468 00:21:17,299 --> 00:21:18,359 factorial de num 469 00:21:18,359 --> 00:21:19,299 dame el número 470 00:21:19,299 --> 00:21:25,079 2, dame el número 4 471 00:21:25,079 --> 00:21:27,359 pues será que es muy alto 472 00:21:27,359 --> 00:21:29,920 pero no, es mucha casualidad 473 00:21:29,920 --> 00:21:34,339 ya, pero entonces lo que debería 474 00:21:34,339 --> 00:21:36,140 es desbordar y no dar 475 00:21:36,140 --> 00:21:37,440 un cero, sin más 476 00:21:37,440 --> 00:21:39,640 debería desbordar el int y ya está 477 00:21:39,640 --> 00:21:46,220 es que ha sido mucha casualidad atinar con el que desborde 478 00:21:46,220 --> 00:21:46,920 y se queda en cero 479 00:21:46,920 --> 00:21:50,180 por ejemplo, había puesto 64 antes 480 00:21:50,180 --> 00:21:52,279 voy a poner 64 481 00:21:52,279 --> 00:21:55,819 a partir de cierto ya da cero siempre 482 00:21:55,819 --> 00:22:07,339 No, porque me da mucha manía 483 00:22:07,339 --> 00:22:08,440 Lo de buggeáis vosotros 484 00:22:08,440 --> 00:22:10,000 Odio el de buggear, ¿eh? 485 00:22:10,640 --> 00:22:13,099 Que no, que no, que sé ejecutar en modo de bug 486 00:22:13,099 --> 00:22:14,680 Y sé ver las variables 487 00:22:14,680 --> 00:22:16,700 Sé poner puntos de ruptura, todo eso lo sé hacer 488 00:22:16,700 --> 00:22:18,200 Pero me da una pereza 489 00:22:18,200 --> 00:22:19,599 ¿Qué paso? 490 00:22:21,960 --> 00:22:22,359 50 491 00:22:22,359 --> 00:22:24,140 Con 50 sigue siendo 0 492 00:22:24,140 --> 00:22:26,400 A ver, 2 493 00:22:26,400 --> 00:22:29,700 vale, aquí ya ha desbordado 494 00:22:29,700 --> 00:22:31,680 entonces, a partir de cierto 495 00:22:31,680 --> 00:22:32,160 número 496 00:22:32,160 --> 00:22:37,660 vale, es que el desbordamiento a partir de cierto número 497 00:22:37,660 --> 00:22:39,640 como se queda con la parte menos significativa 498 00:22:39,640 --> 00:22:41,759 el resto no son ceros, pero esa parte 499 00:22:41,759 --> 00:22:43,700 sí, entonces empieza 500 00:22:43,700 --> 00:22:45,640 a dar, pero llegará un momento, si no lo pone uno 501 00:22:45,640 --> 00:22:47,559 muy grandote, que vuelva a dejar 502 00:22:47,559 --> 00:22:48,240 de ser cero 503 00:22:48,240 --> 00:22:51,619 ah, pues sí, porque ha 504 00:22:51,619 --> 00:22:53,119 desbordado el int 505 00:22:53,119 --> 00:22:55,660 o sea, las multiplicaciones, y se ha salido de los 506 00:22:55,660 --> 00:22:57,000 32, entonces 507 00:22:57,000 --> 00:22:59,660 el significado que te muestra ya ha perdido su sentido 508 00:22:59,660 --> 00:23:01,599 necesitaríamos 64 bits 509 00:23:01,599 --> 00:23:02,799 para mostrarlo 510 00:23:02,799 --> 00:23:05,759 entonces a partir de cierto desbordamiento 511 00:23:05,759 --> 00:23:06,740 se 512 00:23:06,740 --> 00:23:10,269 uy no, no, no 513 00:23:10,269 --> 00:23:18,509 dame el número, ah no, es que me he pasado de largo 514 00:23:18,509 --> 00:23:20,190 es que no cabe en un entero, claro 515 00:23:20,190 --> 00:23:25,880 bueno, se podría 516 00:23:25,880 --> 00:23:28,299 pero bueno, a ver, no es lo que nos interesa ahora 517 00:23:28,299 --> 00:23:30,599 si queréis jugar con esto, jugáis vosotros 518 00:23:30,599 --> 00:23:32,140 ¿vale? pero vamos 519 00:23:32,140 --> 00:23:34,660 lo que está claro es que el único problema 520 00:23:34,660 --> 00:23:36,440 es que si el factorial es mayor de lo que 521 00:23:36,440 --> 00:23:38,420 cabe en 32, el resultado no es válido, ya está 522 00:23:38,420 --> 00:23:40,119 desbordado y no es válido 523 00:23:40,119 --> 00:23:40,480 entonces 524 00:23:40,480 --> 00:23:44,079 si el factorial es mayor que el int 525 00:23:44,079 --> 00:23:45,619 más value, pues 526 00:23:45,619 --> 00:23:48,000 no va a dar un valor 527 00:23:48,000 --> 00:23:53,369 un valor consentido, claro 528 00:23:53,369 --> 00:24:00,589 no, no, no, no, porque 529 00:24:00,589 --> 00:24:03,309 no, a ver 530 00:24:03,309 --> 00:24:05,450 es que tendrías tú que hacer tú tus cuentas 531 00:24:05,450 --> 00:24:07,109 para saber cuál es el número 532 00:24:07,109 --> 00:24:09,069 que te llega al 533 00:24:09,069 --> 00:24:11,130 integer max value 534 00:24:11,130 --> 00:24:13,269 y cuando lo supieras 535 00:24:13,269 --> 00:24:15,250 decirle si el número es mayor 536 00:24:15,250 --> 00:24:17,410 igual que este, pues no hagas el factorial 537 00:24:17,410 --> 00:24:19,150 porque te has pasado, que podríamos 538 00:24:19,150 --> 00:24:20,789 llegar a encontrar cuál es ese número 539 00:24:20,789 --> 00:24:23,130 haciendo pruebas viendo cuando empieza 540 00:24:23,130 --> 00:24:25,210 a ser negativo, claro 541 00:24:25,210 --> 00:24:27,130 o se hace un for 542 00:24:27,130 --> 00:24:29,569 y la primera vez que le sale negativo 543 00:24:29,569 --> 00:24:31,390 o más que 544 00:24:31,390 --> 00:24:33,029 negativo, que le sale menor que el anterior 545 00:24:33,029 --> 00:24:34,769 pues ahí es donde ha desbordado 546 00:24:34,769 --> 00:24:37,829 vale, bueno, pues entonces 547 00:24:37,829 --> 00:24:40,109 lo que nos interesa a nosotros 548 00:24:40,109 --> 00:24:41,789 vale, pues ya está 549 00:24:41,789 --> 00:24:43,869 nos hemos hecho aquí unas funciones de librería 550 00:24:43,869 --> 00:24:45,750 ahora, nosotros las hemos 551 00:24:45,750 --> 00:24:47,210 usado desde un main 552 00:24:47,210 --> 00:24:49,069 que está en el mismo paquete 553 00:24:49,069 --> 00:24:51,670 por eso, no me he 554 00:24:51,670 --> 00:24:53,009 preocupado yo por el public 555 00:24:53,009 --> 00:24:55,609 pero claro, si nosotros queremos 556 00:24:55,609 --> 00:24:57,049 usar estos métodos 557 00:24:57,049 --> 00:24:59,690 desde clases que están fuera del paquete 558 00:24:59,690 --> 00:25:01,690 pues ya sabemos que entonces tendríamos que añadir 559 00:25:01,690 --> 00:25:02,589 el public, ¿verdad? 560 00:25:03,029 --> 00:25:26,500 Es decir, ahora ya como he añadido el public, si yo quiero usar estas utilidades desde otro paquete, por ejemplo, voy a hacerme otro paquete distinto, pues app mates, yo que sé, otro paquete distinto y aquí ya voy a hacer el main. 561 00:25:26,500 --> 00:25:31,619 copio este main 562 00:25:31,619 --> 00:25:35,029 y lo pego aquí 563 00:25:35,029 --> 00:25:36,789 vale 564 00:25:36,789 --> 00:25:45,180 vale, entonces ahora ya estoy 565 00:25:45,180 --> 00:25:46,799 en otro paquete, vale 566 00:25:46,799 --> 00:25:48,420 estoy en otro 567 00:25:48,420 --> 00:25:51,259 en el paquete main que está en este otro de aquí 568 00:25:51,259 --> 00:25:52,579 vale, aquí 569 00:25:52,579 --> 00:25:55,019 entonces si yo 570 00:25:55,019 --> 00:25:56,819 desde este main que está en otro paquete 571 00:25:56,819 --> 00:25:59,240 diferente al que está mi clase de matemáticas 572 00:25:59,240 --> 00:26:00,740 quiero usarlo 573 00:26:00,740 --> 00:26:02,559 pues efectivamente 574 00:26:02,559 --> 00:26:05,119 matemáticas así a palo seco no me dice 575 00:26:05,119 --> 00:26:06,819 nada. ¿Qué tendría que poner ahí? 576 00:26:09,670 --> 00:26:11,329 Para que se me quitara esa línea roja, 577 00:26:11,710 --> 00:26:13,250 ¿qué tengo que poner en esa línea? 578 00:26:14,049 --> 00:26:15,049 Estoy en un main 579 00:26:15,049 --> 00:26:17,049 que está fuera del paquete donde 580 00:26:17,049 --> 00:26:18,369 está la clase de matemáticas. 581 00:26:21,509 --> 00:26:22,809 Mi pregunta es, 582 00:26:23,210 --> 00:26:25,269 ¿qué tecleo hay aquí? 583 00:26:25,490 --> 00:26:27,069 No en otro sitio. Ahí, ¿dónde tengo yo 584 00:26:27,069 --> 00:26:28,630 el cursor para que se me quite la línea roja? 585 00:26:28,990 --> 00:26:32,690 Pregunta de prueba técnica 586 00:26:32,690 --> 00:26:33,170 de Java. 587 00:26:34,029 --> 00:26:35,470 No quiero generalidades. 588 00:26:35,970 --> 00:26:36,789 La pregunta es, 589 00:26:37,130 --> 00:26:42,769 ¿Qué tengo que teclear yo aquí, en este punto que tengo al cursor, para que se me quite esa línea roja? 590 00:26:47,380 --> 00:26:50,039 Muy bien, efectivamente. 591 00:26:51,220 --> 00:26:52,539 Tengo que teclear esto. 592 00:26:54,059 --> 00:26:55,099 Y ya se me ha quitado. 593 00:26:55,480 --> 00:26:55,839 ¿Por qué? 594 00:26:56,539 --> 00:26:59,700 Porque matemáticas es una clase que está en otro paquete. 595 00:27:00,259 --> 00:27:06,480 Luego, desde otro paquete, o uso su nombre largo, o pongo el import arriba. 596 00:27:06,480 --> 00:27:10,299 Pero como yo os he dicho que tengo que teclear ahí, ahí no puedo poner import, obviamente. 597 00:27:10,900 --> 00:27:28,339 Si no quiero poner utilidades ahí, pues pongo arriba import utilidades.matemáticas 598 00:27:28,339 --> 00:27:32,160 y ahora ya aquí podríamos quitar esto si quisiéramos. 599 00:27:32,940 --> 00:27:34,539 Esto ya también lo hemos visto. 600 00:27:39,180 --> 00:27:44,880 Y claro, todo esto funciona y encaja porque los métodos son públicos, lógicamente. 601 00:27:45,599 --> 00:27:47,500 si yo este public 602 00:27:47,500 --> 00:27:48,500 no lo hubiera puesto, 603 00:27:48,660 --> 00:27:51,359 si yo este public 604 00:27:51,359 --> 00:27:52,240 no lo hubiera puesto, 605 00:27:53,500 --> 00:27:55,220 por mucho import, 606 00:27:55,599 --> 00:27:57,440 mucho nombre largo, 607 00:27:57,660 --> 00:27:59,180 mucho lo que fuera, 608 00:28:00,240 --> 00:28:01,119 me diría, uy, 609 00:28:01,740 --> 00:28:02,880 este método no es visible, 610 00:28:03,640 --> 00:28:05,359 ¿verdad? Porque no tiene el public delante. 611 00:28:06,039 --> 00:28:07,440 Me da igual nombre largo 612 00:28:07,440 --> 00:28:09,500 import. Si el método no es public, 613 00:28:10,319 --> 00:28:11,640 aquí me va a decir, lo siento, 614 00:28:11,640 --> 00:28:13,200 no tienes acceso a ese 615 00:28:13,200 --> 00:28:15,279 método de la clase matemáticas, 616 00:28:15,279 --> 00:28:17,500 porque no es public y tú estás fuera del paquete 617 00:28:17,500 --> 00:28:21,359 entonces pues, ah, vale 618 00:28:21,359 --> 00:28:22,839 pues le ponemos public 619 00:28:22,839 --> 00:28:24,880 y listo 620 00:28:24,880 --> 00:28:27,519 que es la idea si yo quiero usar esto desde cualquier lado 621 00:28:27,519 --> 00:28:30,819 vale, siguiente paso 622 00:28:30,819 --> 00:28:32,599 si yo he hecho esta 623 00:28:32,599 --> 00:28:34,700 siguiente paso y paramos unos minutos 624 00:28:34,700 --> 00:28:37,059 si yo he hecho este paso 625 00:28:37,059 --> 00:28:39,200 si yo he hecho esta clase librería con unos 626 00:28:39,200 --> 00:28:41,319 métodos impresionantes 627 00:28:41,319 --> 00:28:42,380 para que use la gente 628 00:28:42,380 --> 00:28:44,299 pues hombre, la gente lo usará 629 00:28:44,299 --> 00:28:45,940 desde sus propios proyectos 630 00:28:45,940 --> 00:28:47,140 ¿no? 631 00:28:47,339 --> 00:28:50,319 no es mi proyecto, lo usa desde sus propios proyectos 632 00:28:50,319 --> 00:28:51,619 entonces 633 00:28:51,619 --> 00:28:54,599 ¿cómo hago yo? ¿cómo distribuyo yo esto? 634 00:28:55,240 --> 00:28:56,619 ¿qué hago yo con esta clase? 635 00:28:56,740 --> 00:28:57,940 para que los demás la puedan usar 636 00:28:57,940 --> 00:28:59,900 la meto en un jar 637 00:28:59,900 --> 00:29:02,019 con lo cual la gente de sus proyectos 638 00:29:02,019 --> 00:29:03,720 la tendrá que importar 639 00:29:03,720 --> 00:29:06,480 ahora veremos cómo, ¿vale? vamos a parar un ratinino