1 00:00:00,000 --> 00:00:26,059 Bueno, pues si uno ha hecho, Adrián Alonso, cállate. Vale, pues si uno, es Adrián Alonso, pues eso, si uno ha hecho estas funciones tan estupendas que le han llevado tantísimo tiempo, es para que la gente las use, para distribuirlas en internet o para usarlas nosotros mismos en nuestros proyectos. 2 00:00:26,059 --> 00:00:27,859 pero bueno, realmente 3 00:00:27,859 --> 00:00:30,100 a ver, esto nadie 4 00:00:30,100 --> 00:00:32,079 nos lo va a comprar y nosotros mismos no lo vamos 5 00:00:32,079 --> 00:00:33,579 a usar, vamos a hacer 6 00:00:33,579 --> 00:00:35,960 una clase con métodos estáticos 7 00:00:35,960 --> 00:00:37,979 que si nos sea útil 8 00:00:37,979 --> 00:00:40,020 a lo mejor y que si 9 00:00:40,020 --> 00:00:40,960 podamos usar 10 00:00:40,960 --> 00:00:43,240 pues 11 00:00:43,240 --> 00:00:46,200 estamos todo el rato leyendo el teclado 12 00:00:46,200 --> 00:00:47,420 y es un rollo patatero 13 00:00:47,420 --> 00:00:49,659 porque tenemos que hacer la clase scanner 14 00:00:49,659 --> 00:00:51,920 quitar los next lines 15 00:00:51,920 --> 00:00:53,539 si he leído un número y luego no sé qué 16 00:00:53,539 --> 00:00:55,840 pues mira, vamos a hacernos ya que estamos 17 00:00:55,840 --> 00:00:58,320 una clase con métodos estáticos 18 00:00:58,320 --> 00:01:01,399 para leer entero, leer decimal, leer cadena 19 00:01:01,399 --> 00:01:02,640 y ya está 20 00:01:02,640 --> 00:01:05,379 y esa clase la importamos 21 00:01:05,379 --> 00:01:07,379 desde cualquier proyecto que estemos haciendo 22 00:01:07,379 --> 00:01:09,340 eso que implicará que ya nos olvidamos 23 00:01:09,340 --> 00:01:11,379 del escáner, nos olvidamos de la madre que lo trajo 24 00:01:11,379 --> 00:01:15,459 ya, pero no tienes que escribir escáner todo el rato 25 00:01:15,459 --> 00:01:17,400 tú llamas a un método y punto, pelota 26 00:01:17,400 --> 00:01:19,579 te olvidas del escáner 27 00:01:19,579 --> 00:01:20,519 te olvidas de 28 00:01:20,519 --> 00:01:25,780 a ver, vamos a hacer 29 00:01:25,780 --> 00:01:27,879 un método, vamos a hacer 30 00:01:27,879 --> 00:01:29,640 una clase con métodos 31 00:01:29,640 --> 00:01:31,840 estáticos útiles 32 00:01:31,840 --> 00:01:33,920 para cualquier otro proyecto 33 00:01:33,920 --> 00:01:35,700 de los míos y ahora 34 00:01:35,700 --> 00:01:37,620 vamos a ver cómo lo puedo yo exportar 35 00:01:37,620 --> 00:01:40,019 e importar desde cualquier otro proyecto para usarlo 36 00:01:40,019 --> 00:01:41,640 porque en el ejemplo que hemos visto 37 00:01:41,640 --> 00:01:43,620 antes, como estábamos 38 00:01:43,620 --> 00:01:45,700 en el mismo proyecto, aquí no había 39 00:01:45,700 --> 00:01:47,480 ningún problema, yo desde mi main 40 00:01:47,480 --> 00:01:48,920 aunque estaba en otro paquete 41 00:01:48,920 --> 00:01:50,180 aunque estaba en otro paquete 42 00:01:50,180 --> 00:01:53,480 yo usaba la clase sin más 43 00:01:53,480 --> 00:01:54,480 con el nombre del paquete 44 00:01:54,480 --> 00:01:56,200 pero si estuviera en otro proyecto 45 00:01:56,200 --> 00:01:57,359 esto no podría hacerlo 46 00:01:57,359 --> 00:01:59,379 esto solo podría hacerlo 47 00:01:59,379 --> 00:02:03,000 desde paquetes de la misma clase 48 00:02:03,000 --> 00:02:04,379 de la misma proyecto 49 00:02:04,379 --> 00:02:06,780 pues venga, vamos a hacernos aquí 50 00:02:06,780 --> 00:02:10,020 otro paquete 51 00:02:10,020 --> 00:02:15,729 venga, dentro de matemáticas 52 00:02:15,729 --> 00:02:16,969 vamos a hacernos un paquete 53 00:02:16,969 --> 00:02:19,569 que se llame pues 54 00:02:19,569 --> 00:02:20,870 consola, por ejemplo 55 00:02:20,870 --> 00:02:23,349 porque van a ser utilidades de consola 56 00:02:23,349 --> 00:02:25,370 un paquete 57 00:02:25,370 --> 00:02:27,430 consola y ahora vamos 58 00:02:27,430 --> 00:02:29,289 a hacer una clase con esos 59 00:02:29,289 --> 00:02:33,360 métodos, esa clase 60 00:02:33,360 --> 00:02:34,740 por ejemplo que se llame 61 00:02:34,740 --> 00:02:36,300 leer 62 00:02:36,300 --> 00:02:39,039 por ejemplo 63 00:02:39,039 --> 00:02:41,319 porque es una clase con métodos 64 00:02:41,319 --> 00:02:43,500 para leer por consola 65 00:02:43,500 --> 00:02:45,259 pues venga, vamos a hacer 66 00:02:45,259 --> 00:02:46,400 como haríamos un método 67 00:02:46,400 --> 00:02:49,280 le vamos a poner ya al public porque ya hemos avanzado 68 00:02:49,280 --> 00:02:51,159 que la idea es usarlo desde, por supuesto 69 00:02:51,159 --> 00:02:52,080 fuera de ese paquete 70 00:02:52,080 --> 00:02:54,340 un método 71 00:02:54,340 --> 00:02:56,800 que me lea del teclado una cadena 72 00:02:56,800 --> 00:02:58,400 y me la devuelva como 73 00:02:58,400 --> 00:03:00,919 valor de retorno 74 00:03:00,919 --> 00:03:02,900 bueno pues este método 75 00:03:02,900 --> 00:03:04,800 sería, nos hacemos nuestro 76 00:03:04,800 --> 00:03:06,740 escáner, aquí como mi 77 00:03:06,740 --> 00:03:07,620 variable local 78 00:03:07,620 --> 00:03:18,479 y ahora, pues ahora ya 79 00:03:18,479 --> 00:03:20,159 puedo hacerme esto 80 00:03:20,159 --> 00:03:31,080 ¿verdad? 81 00:03:34,370 --> 00:03:36,629 o sea este método me lee 82 00:03:36,629 --> 00:03:38,050 una cadena del teclado 83 00:03:38,050 --> 00:03:41,810 Y de hecho hasta 84 00:03:41,810 --> 00:03:44,569 Podría no tener que arrastrar 85 00:03:44,569 --> 00:03:45,409 Los system out 86 00:03:45,409 --> 00:03:47,370 Pues yo que sé, podríamos hacer 87 00:03:47,370 --> 00:03:50,520 Vamos a probar 88 00:03:50,520 --> 00:03:53,919 Introduzca 89 00:03:53,919 --> 00:03:55,719 Cadena de texto 90 00:03:55,719 --> 00:04:01,389 Cadena de texto 91 00:04:01,389 --> 00:04:02,789 Ala 92 00:04:02,789 --> 00:04:04,210 Pues este método 93 00:04:04,210 --> 00:04:06,849 Me dice introduzca cadena de texto 94 00:04:06,849 --> 00:04:09,349 Se queda esperando a que yo meta una cadena de texto 95 00:04:09,349 --> 00:04:11,289 Y cuando yo la he metido me la devuelve 96 00:04:11,289 --> 00:04:12,330 Como valor de retorno 97 00:04:12,330 --> 00:04:19,790 Aquí ya veis que ya empezamos a entender 98 00:04:19,790 --> 00:04:20,709 Lo que estamos haciendo 99 00:04:20,709 --> 00:04:25,649 Scan es un objeto de la clase Scanner 100 00:04:25,649 --> 00:04:29,649 Al que efectivamente he instanciado con el constructor 101 00:04:29,649 --> 00:04:31,629 Ya entendemos las cosas que hacíamos 102 00:04:31,629 --> 00:04:35,129 El constructor de Scanner necesita el qué 103 00:04:35,129 --> 00:04:37,870 El sitio al que se va a enganchar el Scanner 104 00:04:37,870 --> 00:04:40,629 Sistening que es la consola 105 00:04:40,629 --> 00:04:42,350 next line ¿qué es? 106 00:04:42,410 --> 00:04:44,350 next line es un método de la clase 107 00:04:44,350 --> 00:04:46,490 escáner, no estático por supuesto 108 00:04:46,490 --> 00:04:48,089 porque lo llamo asociado a un objeto scan 109 00:04:48,089 --> 00:04:50,490 next line es un método, ¿qué es lo que hace ese 110 00:04:50,490 --> 00:04:52,490 método? pues si no se mete a ver cómo está programado 111 00:04:52,490 --> 00:04:54,730 por dentro, pues se quedará esperando 112 00:04:54,730 --> 00:04:56,629 y cuando tú le metes algo te lo devuelve 113 00:04:56,629 --> 00:04:58,569 entonces ya las cosas que hemos 114 00:04:58,569 --> 00:05:00,589 escrito toda la vida ya cobran sentido 115 00:05:00,589 --> 00:05:02,649 vale, vamos a hacer ahora un método 116 00:05:02,649 --> 00:05:04,430 para leer un entero, por ejemplo 117 00:05:04,430 --> 00:05:11,370 entero 118 00:05:11,370 --> 00:05:13,370 y este me va a devolver un int 119 00:05:13,370 --> 00:05:15,990 y ahora cambiamos el mensaje 120 00:05:15,990 --> 00:05:17,089 introduzca 121 00:05:17,089 --> 00:05:20,600 número 122 00:05:20,600 --> 00:05:22,699 entero 123 00:05:22,699 --> 00:05:26,180 y ahora en lugar de con next line 124 00:05:26,180 --> 00:05:27,839 pues lo leemos con next int 125 00:05:27,839 --> 00:05:32,680 claro, y vamos a hacernos un método 126 00:05:32,680 --> 00:05:34,339 para un decimal 127 00:05:34,339 --> 00:05:37,019 que son las tres cosas que leemos habitualmente 128 00:05:37,019 --> 00:05:42,279 o dabble 129 00:05:42,279 --> 00:05:44,480 dabble para que tenga más 130 00:05:44,480 --> 00:05:45,959 precisión 131 00:05:45,959 --> 00:05:49,920 No sé, a mí me 132 00:05:49,920 --> 00:05:51,379 Me cae mal 133 00:05:51,379 --> 00:05:54,360 Vale, introduzca número decimal 134 00:05:54,360 --> 00:05:58,379 Y ahora scan next double 135 00:05:58,379 --> 00:06:03,600 Vale, pues si yo pudiera 136 00:06:03,600 --> 00:06:05,620 Usar estos métodos desde cualquier sitio 137 00:06:05,620 --> 00:06:07,259 Cuando tengo que leer una cadena 138 00:06:07,259 --> 00:06:08,680 Pondría leer punto cadena 139 00:06:08,680 --> 00:06:11,459 Y me olvidaría de hacer el escáner en mi proyecto 140 00:06:11,459 --> 00:06:12,180 Me olvidaría de todo 141 00:06:12,180 --> 00:06:14,819 Cuando tengo que leer un entero, pondría 142 00:06:14,819 --> 00:06:16,120 Leer punto entero 143 00:06:16,120 --> 00:06:18,540 ¿Verdad? 144 00:06:19,000 --> 00:06:21,079 Sí. No, súper mentira, porque no he puesto 145 00:06:21,079 --> 00:06:22,899 un static, con lo cual nunca podría hacerlo así. 146 00:06:23,839 --> 00:06:25,060 Si quiero hacerlo así, tendría 147 00:06:25,060 --> 00:06:26,759 que poner un static. Nos han mentido, profesor. 148 00:06:26,939 --> 00:06:28,300 No, es que se me ha olvidado poner static. 149 00:06:31,829 --> 00:06:33,670 Vale, ahora ya sí. Estos métodos 150 00:06:33,670 --> 00:06:35,589 son static y pueden serlo, no tienen ningún 151 00:06:35,589 --> 00:06:37,629 problema, porque no dependen de ninguna propiedad 152 00:06:37,629 --> 00:06:39,589 de la clase. Porque de hecho la clase 153 00:06:39,589 --> 00:06:40,810 no tiene propiedades. Eso es. 154 00:06:42,089 --> 00:06:43,110 Vale, pues yo ahora 155 00:06:43,110 --> 00:06:47,069 desde cualquier... 156 00:06:47,069 --> 00:06:47,490 Ahora a mí 157 00:06:47,490 --> 00:06:51,050 me encantaría, cada vez que quiera leer 158 00:06:51,050 --> 00:06:52,949 algo de esto, poner leer.cadena 159 00:06:52,949 --> 00:06:55,029 y ya está, y me olvido de hacer el escáner 160 00:06:55,029 --> 00:06:57,350 leer.entero y ya está, me olvido de hacer el escáner 161 00:06:57,350 --> 00:06:59,250 vale, entonces desde otras 162 00:06:59,250 --> 00:07:01,370 clases de mi mismo proyecto 163 00:07:01,370 --> 00:07:03,009 está claro, no tengo ningún 164 00:07:03,009 --> 00:07:05,069 problema, por ejemplo, pues yo que sé 165 00:07:05,069 --> 00:07:06,910 me voy a hacer aquí en app 166 00:07:06,910 --> 00:07:08,910 de mates, esta 167 00:07:08,910 --> 00:07:10,310 aplicación main, por ejemplo 168 00:07:10,310 --> 00:07:13,250 aquí yo he hecho, en esta aplicación 169 00:07:13,250 --> 00:07:14,930 main que hemos hecho antes para 170 00:07:14,930 --> 00:07:16,490 probar las utilidades matemáticas 171 00:07:16,490 --> 00:07:18,310 cuando tenía que leer el número 172 00:07:18,310 --> 00:07:20,949 me he tenido que hacer un escáner, he hecho el next 173 00:07:20,949 --> 00:07:22,850 in, pues si yo 174 00:07:22,850 --> 00:07:24,850 ahora ya 175 00:07:24,850 --> 00:07:26,790 con esto, podría cambiar esto 176 00:07:26,790 --> 00:07:28,990 me olvido 177 00:07:28,990 --> 00:07:30,649 de tener que hacer el escáner al principio 178 00:07:30,649 --> 00:07:32,129 de todo, me olvido de todo esto 179 00:07:32,129 --> 00:07:35,269 y aquí por ejemplo 180 00:07:35,269 --> 00:07:38,470 no, pero 181 00:07:38,470 --> 00:07:41,069 aquí por ejemplo, ¿qué puedo hacer? 182 00:07:41,689 --> 00:07:42,990 venga, char 183 00:07:42,990 --> 00:07:45,110 op igual a 184 00:07:45,110 --> 00:07:46,870 leer punto 185 00:07:46,870 --> 00:07:49,350 cadena 186 00:07:49,350 --> 00:07:50,930 Y me da la cadena leída 187 00:07:50,930 --> 00:07:54,170 Que luego yo me quedo con el carácter en la primera posición 188 00:07:54,170 --> 00:07:56,410 Pues me quedo, eso ya es problema mío 189 00:07:56,410 --> 00:07:57,649 Vale 190 00:07:57,649 --> 00:07:59,649 He llamado a leer cadena 191 00:07:59,649 --> 00:08:01,189 Eso me va a leer una cadena 192 00:08:01,189 --> 00:08:02,750 Y no tengo que poder escanear ni nada 193 00:08:02,750 --> 00:08:04,170 Ya el método me lo hace todo dentro 194 00:08:04,170 --> 00:08:07,709 Y aquí igual cuando he leído el número 195 00:08:07,709 --> 00:08:09,870 Pues yo podría hacer así 196 00:08:09,870 --> 00:08:11,589 Int num igual a 197 00:08:11,589 --> 00:08:14,370 Leer punto entero 198 00:08:14,370 --> 00:08:16,110 Y ya está 199 00:08:16,110 --> 00:08:19,100 Y aquí lo mismo 200 00:08:19,100 --> 00:08:20,120 Cuando he leído el número 201 00:08:20,120 --> 00:08:23,199 pues me olvido del scan y de todo 202 00:08:23,199 --> 00:08:31,410 ¿vale? 203 00:08:32,610 --> 00:08:34,429 entonces yo tengo estos métodos que los uso 204 00:08:34,429 --> 00:08:36,450 cada vez que quiero un entero, cada vez que quiero una cadena 205 00:08:36,450 --> 00:08:38,590 y me despreocupo de escáneres 206 00:08:38,590 --> 00:08:39,970 y de cosas, completamente 207 00:08:39,970 --> 00:08:41,990 y no solo de eso, sino que como podemos comprobar 208 00:08:41,990 --> 00:08:44,610 me despreocupo del salto de línea 209 00:08:44,610 --> 00:08:46,269 que se ha quedado de tener que eliminarlo 210 00:08:46,269 --> 00:08:48,610 porque el escáner es una variable local que aparece 211 00:08:48,610 --> 00:08:50,929 y desaparece, luego se le elimina 212 00:08:50,929 --> 00:08:51,929 todo lo que tenga en el buffer 213 00:08:51,929 --> 00:08:54,389 no es como aquí 214 00:08:54,389 --> 00:08:56,149 que tengo un escáner compartido por todos 215 00:08:56,149 --> 00:08:59,250 vale, pues igual que es útil 216 00:08:59,250 --> 00:09:00,789 para clases de mi mismo proyecto 217 00:09:00,789 --> 00:09:03,250 utilísimo si lo puedo usar ya 218 00:09:03,250 --> 00:09:04,889 en cualquier otro proyecto que yo tenga 219 00:09:04,889 --> 00:09:07,009 que yo empiece de nuevas, lo uso 220 00:09:07,009 --> 00:09:08,409 y ya me olvido del escáner y de todo 221 00:09:08,409 --> 00:09:08,730 pregunta 222 00:09:08,730 --> 00:09:13,629 ¿por qué esto que es más cómodo 223 00:09:13,629 --> 00:09:15,110 no es lo que te dejan importar? 224 00:09:17,470 --> 00:09:19,409 ¿por qué la clase escáner no hace esto directamente? 225 00:09:21,389 --> 00:09:23,169 bueno, la clase escáner lo hace con Slime 226 00:09:23,169 --> 00:09:25,070 pero que tenga un método exacto para esto 227 00:09:25,070 --> 00:09:26,090 que te abre tercero el escáner 228 00:09:26,090 --> 00:09:30,500 bueno, a ver, te ofrece 229 00:09:30,500 --> 00:09:32,299 Scanner y tú lo usas como quieras 230 00:09:32,299 --> 00:09:33,980 pero no puede cerrarse a sí mismo tampoco 231 00:09:33,980 --> 00:09:36,120 claro, pero hay que estar pendiente de cerrarlo 232 00:09:36,120 --> 00:09:37,580 y esto no, porque esto lo usas y 233 00:09:37,580 --> 00:09:40,759 automáticamente desaparece 234 00:09:40,759 --> 00:09:42,000 ya, pero a ver 235 00:09:42,000 --> 00:09:44,279 o sea, me refieres, ¿por qué no hay una 236 00:09:44,279 --> 00:09:45,539 utilidad añadida que 237 00:09:45,539 --> 00:09:48,519 es más cómodo 238 00:09:48,519 --> 00:09:49,299 al final y es igual 239 00:09:49,299 --> 00:09:52,399 bueno, a ver, tú tienes varias 240 00:09:52,399 --> 00:09:53,419 clases de entrada y salida 241 00:09:53,419 --> 00:09:57,340 no, a ver, es 242 00:09:57,340 --> 00:10:01,200 escáner se acopla al teclado 243 00:10:01,200 --> 00:10:03,480 y te lee cosas, y luego tú lo usas como quieras 244 00:10:03,480 --> 00:10:04,639 pues que lo quieres meter en 245 00:10:04,639 --> 00:10:07,659 bueno, pues entonces 246 00:10:07,659 --> 00:10:11,399 vale, pues entonces nosotros, esta clase 247 00:10:11,399 --> 00:10:13,500 nos encantaría usarla desde cualquier otro proyecto 248 00:10:13,500 --> 00:10:15,480 para ya cada vez que tengamos que leer del teclado 249 00:10:15,480 --> 00:10:17,860 usarla sin más, pero efectivamente 250 00:10:17,860 --> 00:10:19,620 si yo ahora me hago un proyecto nuevo 251 00:10:19,620 --> 00:10:22,620 vamos a hacer un proyecto nuevo 252 00:10:22,620 --> 00:10:24,860 pues para hacer cualquier cosita 253 00:10:24,860 --> 00:10:29,210 Proyecto prueba 254 00:10:29,210 --> 00:10:31,330 Porque este no es solamente para hacer la prueba 255 00:10:31,330 --> 00:10:32,350 Y lo voy a subir ni nada 256 00:10:32,350 --> 00:10:34,190 Pues haga 257 00:10:34,190 --> 00:10:37,669 Me hago este proyecto de prueba por aquí 258 00:10:37,669 --> 00:10:40,169 Y me voy a hacer 259 00:10:40,169 --> 00:10:41,450 Pues una aplicación 260 00:10:41,450 --> 00:10:45,190 Aquí en mi paquete main 261 00:10:45,190 --> 00:10:47,149 Me voy a hacer 262 00:10:47,149 --> 00:10:48,070 Una clase main 263 00:10:48,070 --> 00:10:55,110 Y ahora pues resulta que yo aquí 264 00:10:55,110 --> 00:10:57,450 Pues quiero hacer cosas y entre ellas me interesa 265 00:10:57,450 --> 00:10:58,950 Pues leer un número entero por ejemplo 266 00:10:58,950 --> 00:11:00,649 Entonces claro 267 00:11:00,649 --> 00:11:03,389 A mi me encantaría pues poder llamar 268 00:11:03,389 --> 00:11:05,009 A el paquete que se llamaba 269 00:11:05,009 --> 00:11:05,789 Consola 270 00:11:05,789 --> 00:11:08,549 Punto, pues leer 271 00:11:08,549 --> 00:11:10,730 Y ahora punto, pues entero 272 00:11:10,730 --> 00:11:12,450 Por ejemplo, y esto me 273 00:11:12,450 --> 00:11:15,389 Leería un numerito entero 274 00:11:15,389 --> 00:11:19,500 ¿Vale? 275 00:11:19,600 --> 00:11:21,980 Pero esta ruta, para este proyecto 276 00:11:21,980 --> 00:11:23,759 No pinta nada, no es nadie 277 00:11:23,759 --> 00:11:25,559 Porque el paquete consola 278 00:11:25,559 --> 00:11:27,019 Está en otro sitio 279 00:11:27,019 --> 00:11:28,399 Está 280 00:11:28,399 --> 00:11:34,679 No, no, no 281 00:11:34,679 --> 00:11:36,799 ¿Vale? 282 00:11:36,799 --> 00:11:38,139 Está aquí, está en nuestro proyecto. 283 00:11:40,940 --> 00:11:42,039 Está aquí. 284 00:11:42,759 --> 00:11:43,600 Consola está aquí. 285 00:11:44,340 --> 00:11:45,399 Consola es un paquete. 286 00:11:52,009 --> 00:11:53,769 Consola es un paquete que está aquí, 287 00:11:54,230 --> 00:11:55,309 que tiene leer. 288 00:11:55,870 --> 00:11:57,690 Entonces, consola.leer 289 00:11:57,690 --> 00:11:59,789 tiene sentido aquí dentro 290 00:11:59,789 --> 00:12:01,169 de este proyecto matemáticas. 291 00:12:01,649 --> 00:12:03,610 Aquí dentro tiene sentido consola.leer. 292 00:12:04,009 --> 00:12:05,330 Pero aquí en otro proyecto, 293 00:12:05,330 --> 00:12:07,129 que es otro proyecto distinto, 294 00:12:07,129 --> 00:12:14,029 claro, pero te tienen que haber dado el código fuente 295 00:12:14,029 --> 00:12:16,009 es que yo no te voy a dar el código fuente 296 00:12:16,009 --> 00:12:22,210 claro, no vaya a ser que te dé el código fuente 297 00:12:22,210 --> 00:12:23,929 y me piratees el código 298 00:12:23,929 --> 00:12:26,429 y te haga rico a mi costa 299 00:12:26,429 --> 00:12:29,830 vale, entonces está claro 300 00:12:29,830 --> 00:12:32,330 que desde este proyecto, que no tiene nada que ver con este 301 00:12:32,330 --> 00:12:34,929 aquí, consola.leer 302 00:12:34,929 --> 00:12:35,909 no es nadie 303 00:12:35,909 --> 00:12:39,049 consola.leer es alguien aquí en este 304 00:12:39,049 --> 00:12:41,250 consola.leer es alguien aquí 305 00:12:41,250 --> 00:12:42,009 pero aquí no es nadie 306 00:12:42,009 --> 00:12:43,970 vale, pues entonces ¿qué hacemos? 307 00:12:45,049 --> 00:12:46,710 pero yo aún así quiero que usen mi código 308 00:12:46,710 --> 00:12:47,850 y quiero distribuirlo 309 00:12:47,850 --> 00:12:50,110 por eso me lo voy a decir a la gente, oye, copia y pega 310 00:12:50,110 --> 00:12:52,370 eso es muy cutre, me lo voy a decir eso 311 00:12:52,370 --> 00:12:54,269 entonces ¿qué hago? 312 00:12:54,730 --> 00:12:56,870 voy a exportar este paquetillo 313 00:12:56,870 --> 00:12:58,710 lo voy a exportar a un hard 314 00:12:58,710 --> 00:13:01,210 porque un hard es la manera en la que se distribuyen 315 00:13:01,210 --> 00:13:03,009 las aplicaciones java 316 00:13:03,009 --> 00:13:04,970 me da igual que sean clases de librería 317 00:13:04,970 --> 00:13:07,509 clases con método main como ya hicimos 318 00:13:07,509 --> 00:13:09,649 el otro día, es la manera en la que se distribuyen 319 00:13:09,649 --> 00:13:11,289 las clases, pues venga 320 00:13:11,289 --> 00:13:13,389 hacemos aquí en matemáticas, que es donde estaba 321 00:13:13,389 --> 00:13:14,690 ese paquete, export 322 00:13:14,690 --> 00:13:17,409 en hard, ahora nada 323 00:13:17,409 --> 00:13:19,470 de runable, porque lo que 324 00:13:19,470 --> 00:13:21,470 yo voy a exportar no son clases con método 325 00:13:21,470 --> 00:13:23,629 main, no son aplicaciones para ejecutarse 326 00:13:23,629 --> 00:13:26,049 con main, lo que yo voy a 327 00:13:26,049 --> 00:13:27,850 exportar 328 00:13:27,850 --> 00:13:29,250 son clases sin más 329 00:13:29,250 --> 00:13:31,529 clases sin más, pues entonces 330 00:13:31,529 --> 00:13:33,529 marco hard, esto no es una 331 00:13:33,529 --> 00:13:34,629 aplicación ejecutable 332 00:13:34,629 --> 00:13:37,610 vale, pues hard, y ahora que me dice 333 00:13:37,610 --> 00:13:38,590 vale, sí, pero 334 00:13:38,590 --> 00:13:41,429 si fuera capaz de verlo, me dice 335 00:13:41,429 --> 00:13:43,590 pero que quieres exportar realmente 336 00:13:43,590 --> 00:13:45,529 pues marco aquí todo 337 00:13:45,529 --> 00:13:47,490 no, yo quiero el paquete solo este, es que aquí está 338 00:13:47,490 --> 00:13:48,629 tan mínimo que no lo veo 339 00:13:48,629 --> 00:13:51,450 marco consola solo, vale 340 00:13:51,450 --> 00:13:52,870 quiero exportar solo consola 341 00:13:52,870 --> 00:13:55,409 es que eso yo quiero 342 00:13:55,409 --> 00:13:57,470 solo quiero mi clase de leer que está en consola 343 00:13:57,470 --> 00:14:03,090 solo quiero esa, ah, bueno 344 00:14:03,090 --> 00:14:03,909 vale 345 00:14:03,909 --> 00:14:06,830 en consola, que quiero exportar, todo, solo dejas 346 00:14:06,830 --> 00:14:07,690 hay todo, ¿vale? 347 00:14:08,690 --> 00:14:10,230 Vale, entonces aquí te dice 348 00:14:10,230 --> 00:14:12,629 ¿quieres exportar también el código 349 00:14:12,629 --> 00:14:14,629 fuente? Hombre, si eres muy 350 00:14:14,629 --> 00:14:16,730 generoso, pero no lo vamos a exportar. 351 00:14:16,870 --> 00:14:18,049 No, que se joda. 352 00:14:18,450 --> 00:14:19,570 Vamos a exportar el código fuente. 353 00:14:21,330 --> 00:14:22,750 Y ahora, ¿a qué 354 00:14:22,750 --> 00:14:24,009 jar lo quieres exportar? 355 00:14:24,730 --> 00:14:26,490 Bueno, al que nos dé la gana. Venga, 356 00:14:26,590 --> 00:14:28,149 llamadlo como queráis, ¿vale? 357 00:14:28,250 --> 00:14:30,750 Yo lo tengo ahí llamado en el escritorio 358 00:14:30,750 --> 00:14:31,830 para encontrarlo rápido. 359 00:14:32,990 --> 00:14:33,429 ¿Vale? 360 00:14:36,340 --> 00:14:37,500 Yo lo tengo aquí para 361 00:14:37,500 --> 00:14:39,700 encontrarlo rapidito, lo tengo en el escritorio 362 00:14:39,700 --> 00:14:40,639 teclado.jar 363 00:14:40,639 --> 00:14:43,080 vale, exportame eso 364 00:14:43,080 --> 00:14:45,399 el paquete este de aquí 365 00:14:45,399 --> 00:14:47,620 consola, que no sé muy bien lo que estoy 366 00:14:47,620 --> 00:14:49,340 exportando porque no lo veo, pero vamos 367 00:14:49,340 --> 00:14:51,179 estará exportando todo bien, lo que hay dentro 368 00:14:51,179 --> 00:14:53,720 teclado, ala, next 369 00:14:53,720 --> 00:14:55,440 todo esto lo dejamos por 370 00:14:55,440 --> 00:14:56,500 defecto 371 00:14:56,500 --> 00:15:03,350 y next, todo por 372 00:15:03,350 --> 00:15:04,409 defecto 373 00:15:04,409 --> 00:15:07,389 y finish, vale 374 00:15:07,389 --> 00:15:10,980 ala 375 00:15:10,980 --> 00:15:13,120 pues mi 376 00:15:13,120 --> 00:15:14,700 jar está aquí. 377 00:15:16,940 --> 00:15:18,659 Esto no es una cosa que se puede ejecutar. 378 00:15:18,779 --> 00:15:20,320 No tiene un método main. No es una clase que 379 00:15:20,320 --> 00:15:22,379 tenga un método main. Esto tiene una clase 380 00:15:22,379 --> 00:15:24,320 con métodos estáticos. No es 381 00:15:24,320 --> 00:15:25,139 algo para ejecutar. 382 00:15:26,139 --> 00:15:28,100 Claro, ¿para qué me sirve a mí este teclado 383 00:15:28,100 --> 00:15:30,240 .jar? Pues yo ahora estoy en 384 00:15:30,240 --> 00:15:32,159 cualquier proyecto y digo, oye, me 385 00:15:32,159 --> 00:15:34,460 interesan las clases que hay en este jar. Me interesan. 386 00:15:35,460 --> 00:15:36,019 Pues voy a 387 00:15:36,019 --> 00:15:38,279 importarlas. Entonces 388 00:15:38,279 --> 00:15:40,299 alguien me tiene que haber dado físicamente 389 00:15:40,299 --> 00:15:42,220 este jar con sus clases. O 390 00:15:42,220 --> 00:15:44,500 Yo lo he descargado de internet o de donde sea. 391 00:15:44,639 --> 00:15:45,899 O lo he cogido de un repositorio. 392 00:15:46,320 --> 00:15:47,600 Pero una vez que ya lo tengo, 393 00:15:48,279 --> 00:15:49,840 ahora ya yo me voy a mi proyecto. 394 00:15:51,019 --> 00:15:52,299 ¿En qué proyecto estaba yo 395 00:15:52,299 --> 00:15:53,659 en el que quería usar estas clases? 396 00:15:54,480 --> 00:15:56,360 Pues estaba en mi proyecto, proyecto prueba. 397 00:15:57,259 --> 00:15:58,399 Pues ahora me voy al 398 00:15:58,399 --> 00:16:00,019 botón derecho. 399 00:16:01,720 --> 00:16:02,720 Eso, muy bien. 400 00:16:05,350 --> 00:16:06,009 Me voy 401 00:16:06,009 --> 00:16:06,809 al botón derecho. 402 00:16:07,950 --> 00:16:09,889 Y de import, nada. 403 00:16:09,889 --> 00:16:11,590 Que eso es muy listo. Me voy a 404 00:16:11,590 --> 00:16:12,110 build path. 405 00:16:13,850 --> 00:16:15,169 Y me voy a 406 00:16:15,169 --> 00:16:16,789 Configure BillPath 407 00:16:16,789 --> 00:16:19,169 A ver, puedo ir por muchos camiones al mismo sitio 408 00:16:19,169 --> 00:16:20,750 Pero es el que más entendemos 409 00:16:20,750 --> 00:16:22,470 No hay una carpeta física en el explorador 410 00:16:22,470 --> 00:16:23,570 Donde se pueda meter ese hack 411 00:16:23,570 --> 00:16:26,169 Que la detecte quién 412 00:16:26,169 --> 00:16:30,230 Pero eso tendrás que decirle 413 00:16:30,230 --> 00:16:32,350 Él no detecta todos los hacks que hay en el mundo 414 00:16:32,350 --> 00:16:33,090 Lo tendrás que decir 415 00:16:33,090 --> 00:16:36,710 Pero tendrás que decírselo 416 00:16:36,710 --> 00:16:37,649 Que es lo que estamos haciendo 417 00:16:37,649 --> 00:16:40,210 ¿Cómo que si no tiene un pad? 418 00:16:40,210 --> 00:16:42,250 Hombre, Java tendrá un pad por defecto 419 00:16:42,250 --> 00:16:43,710 Donde tendrá todas las clases guardadas 420 00:16:43,710 --> 00:16:46,490 Java no, los proyectos de Java 421 00:16:46,490 --> 00:16:48,429 Eclipse tendrá un 422 00:16:48,429 --> 00:16:49,990 path de donde buscará 423 00:16:49,990 --> 00:16:52,009 para los proyectos, para las claves que usas 424 00:16:52,009 --> 00:16:54,309 No, tiene uno para cada 425 00:16:54,309 --> 00:16:56,389 proyecto, y tú en cada proyecto lo fijas 426 00:16:56,389 --> 00:16:57,629 y lo estamos fijando con esto 427 00:16:57,629 --> 00:16:59,970 Claro, es lo que vamos a hacer ahora 428 00:16:59,970 --> 00:17:01,450 Pero pensaba que tenía uno común 429 00:17:01,450 --> 00:17:03,929 No, no, no, no, no, no, cada aplicación 430 00:17:03,929 --> 00:17:05,210 Java lleva su propio path 431 00:17:05,210 --> 00:17:07,690 Cada vez que construyes un proyecto te crea 432 00:17:07,690 --> 00:17:09,309 un directorio con todas las 433 00:17:09,309 --> 00:17:11,450 con un montón de librerías 434 00:17:11,450 --> 00:17:13,410 que se pueden utilizar como 435 00:17:13,410 --> 00:17:15,589 a ver, si tú 436 00:17:15,589 --> 00:17:17,650 a ver, las librerías 437 00:17:17,650 --> 00:17:19,130 que están dentro de la JRE 438 00:17:19,130 --> 00:17:21,069 esas sí están en un 439 00:17:21,069 --> 00:17:22,970 claro, pero tú tendrías que meter 440 00:17:22,970 --> 00:17:25,650 teclado.jar dentro de las del JRE 441 00:17:25,650 --> 00:17:27,269 si lo metes dentro, sí 442 00:17:27,269 --> 00:17:29,210 pero lo que no puedes es 443 00:17:29,210 --> 00:17:31,569 meterlo en otra carpeta y decir esto es por defecto para todas 444 00:17:31,569 --> 00:17:33,269 porque cada proyecto tiene que conseguir 445 00:17:33,269 --> 00:17:33,869 el suyo propio 446 00:17:33,869 --> 00:17:39,450 a ver, si tú la metes, el teclado.jar 447 00:17:39,450 --> 00:17:40,769 lo metes dentro de la JRE 448 00:17:40,769 --> 00:17:43,710 pero tienes que irte al directorio JRE 449 00:17:43,710 --> 00:17:45,569 comprimirlo en la manera que el JR 450 00:17:45,569 --> 00:17:46,549 y meterlo ahí, entonces sí 451 00:17:46,549 --> 00:17:49,650 pero claro, no es lo que hacemos, la JR nunca la tocamos 452 00:17:49,650 --> 00:17:51,470 de esa manera, nunca se toca la JR 453 00:17:51,470 --> 00:17:53,390 vale, entonces ahora 454 00:17:53,390 --> 00:17:55,329 venga, pues a ver 455 00:17:55,329 --> 00:17:57,869 nosotros vamos, botón derecho del proyecto 456 00:17:57,869 --> 00:17:59,029 configure buildpad 457 00:17:59,029 --> 00:18:01,509 ¿qué hacemos cuando entramos en 458 00:18:01,509 --> 00:18:02,569 configure buildpad? 459 00:18:03,750 --> 00:18:05,130 pues le estamos diciendo 460 00:18:05,130 --> 00:18:07,470 ¿dónde puede él encontrar 461 00:18:07,470 --> 00:18:09,410 clases? normalmente 462 00:18:09,410 --> 00:18:10,930 él puede encontrar clases 463 00:18:10,930 --> 00:18:13,349 en el raíz del proyecto y en 464 00:18:13,349 --> 00:18:14,789 todos los paquetes que te da por debajo. 465 00:18:15,069 --> 00:18:16,430 Entonces, cada vez que hacemos un paquete, 466 00:18:17,190 --> 00:18:20,069 añadimos a esa RU, a ese ClassPad, 467 00:18:20,190 --> 00:18:22,089 llamémoslo, aunque no quiero meterme en esos líos, 468 00:18:22,529 --> 00:18:24,269 al proyecto, a Java, le estamos diciendo, 469 00:18:24,430 --> 00:18:27,869 oye, ojo, que este proyecto puede tener clases en el raíz 470 00:18:27,869 --> 00:18:31,509 y en todas estas carpetas que cuelgan de ti, ¿vale? 471 00:18:32,150 --> 00:18:35,509 Pero teclado.jar no cuelga de ninguna carpeta 472 00:18:35,509 --> 00:18:37,369 dentro del proyecto, no cuelga ninguna dentro. 473 00:18:38,269 --> 00:18:42,789 Entonces, hay que añadir esa ruta al proyecto. 474 00:18:42,789 --> 00:18:45,789 Pues, para eso entramos aquí en Configure Buildpad, ¿vale? 475 00:18:47,329 --> 00:18:52,309 Pues, aquí os metéis en la pestaña esta de librerías, ¿vale? 476 00:18:52,730 --> 00:18:57,430 Y veis, aquí hay una cosita que tiene esa palabra clave que yo 477 00:18:57,430 --> 00:18:59,490 he mencionado sin querer meterme mucho, que es Classpath. 478 00:19:00,289 --> 00:19:01,529 Entonces, ¿qué es el Classpath? 479 00:19:02,089 --> 00:19:04,890 Cada proyecto tiene su Classpath, que repito, 480 00:19:05,450 --> 00:19:07,589 es una variable, una variable de entorno, 481 00:19:07,589 --> 00:19:10,750 que guarda todas las rutas 482 00:19:10,750 --> 00:19:12,410 donde esa aplicación 483 00:19:12,410 --> 00:19:14,289 puede tener clases accesibles. 484 00:19:15,430 --> 00:19:16,609 El Clash Path ahora mismo 485 00:19:16,609 --> 00:19:17,490 al estar vacío 486 00:19:17,490 --> 00:19:21,109 significa que es la ruta por defecto 487 00:19:21,109 --> 00:19:22,750 que es la del propio proyecto 488 00:19:22,750 --> 00:19:24,430 y todos los paquetes que cuelgan de él. 489 00:19:24,950 --> 00:19:25,950 Que eso no hay que meterlo, 490 00:19:26,089 --> 00:19:26,869 es la suya propia. 491 00:19:27,750 --> 00:19:29,470 Y luego aparte tenemos aquí esto 492 00:19:29,470 --> 00:19:31,309 porque esta es común para todos 493 00:19:31,309 --> 00:19:32,589 y las clases que están aquí 494 00:19:32,589 --> 00:19:34,009 son accesibles para todo el mundo. 495 00:19:35,230 --> 00:19:37,430 Pero tendrías que irte aquí dentro. 496 00:19:37,589 --> 00:19:38,130 Creo que decía yo. 497 00:19:38,210 --> 00:19:38,869 Claro, vale. 498 00:19:39,109 --> 00:19:41,930 Sí, pero jamás. 499 00:19:42,269 --> 00:19:43,509 Nunca toques una JRE 500 00:19:43,509 --> 00:19:44,869 porque la máquina virtual 501 00:19:44,869 --> 00:19:46,769 se usa para millones de aplicaciones 502 00:19:46,769 --> 00:19:47,410 de tu ordenador. 503 00:19:47,549 --> 00:19:48,670 Entonces, cualquier modificación 504 00:19:48,670 --> 00:19:49,170 que hagas en ella 505 00:19:49,170 --> 00:19:49,910 tiene mucho peligro. 506 00:19:50,230 --> 00:19:50,589 Curiosidad, 507 00:19:50,990 --> 00:19:51,890 tiene una cosa igual, 508 00:19:51,990 --> 00:19:52,450 un nombre igual. 509 00:19:52,450 --> 00:19:53,670 Claro, no la toques nunca 510 00:19:53,670 --> 00:19:54,450 sobre todo porque 511 00:19:54,450 --> 00:19:55,769 hay una forma más fácil 512 00:19:55,769 --> 00:19:58,069 que es meter ese hard. 513 00:19:58,130 --> 00:19:59,170 Entonces, ¿qué tenemos que hacer ahora? 514 00:19:59,650 --> 00:20:00,589 Decirle al Clashpad, 515 00:20:00,890 --> 00:20:02,029 oye, tú, Clashpad, 516 00:20:02,789 --> 00:20:04,609 que aparte de las clases 517 00:20:04,609 --> 00:20:06,309 que cuelgan de tu propio proyecto, 518 00:20:06,630 --> 00:20:06,789 dime. 519 00:20:06,789 --> 00:20:23,509 Sí, el ClassPass es una variable que tiene cada proyecto, la suya propia, y es una variable que te informa del conjunto de rutas dentro de las cuales puede haber clases que use esa aplicación. 520 00:20:23,509 --> 00:20:26,210 ¿Quieres que te lo diga? 521 00:20:31,420 --> 00:20:35,700 El ClassPath es una variable que guarda todas las rutas 522 00:20:35,700 --> 00:20:39,279 en las cuales hay clases 523 00:20:39,279 --> 00:20:42,859 que la aplicación puede usar. 524 00:20:46,589 --> 00:20:47,069 ¿Vale? 525 00:20:51,049 --> 00:20:52,450 Vale, pues entonces, 526 00:20:52,569 --> 00:20:54,869 hay una por proyecto. 527 00:20:55,190 --> 00:20:57,329 Cada aplicación Java tiene su propio ClassPath. 528 00:20:57,329 --> 00:20:59,950 y lo podemos editar 529 00:20:59,950 --> 00:21:01,670 por supuesto desde la consola 530 00:21:01,670 --> 00:21:03,789 pero si tenemos un entorno de desarrollo 531 00:21:03,789 --> 00:21:05,990 nos es más fácil editarlo a partir de aquí 532 00:21:05,990 --> 00:21:07,710 properties, configure build path 533 00:21:07,710 --> 00:21:08,809 y entramos aquí en libraries 534 00:21:08,809 --> 00:21:11,750 vale, ahora mismo no tiene nada, que no tenga nada 535 00:21:11,750 --> 00:21:13,529 significa que las únicas 536 00:21:13,529 --> 00:21:15,829 rutas en las que hay clases que la aplicación 537 00:21:15,829 --> 00:21:17,829 puede usar son las propias del proyecto 538 00:21:17,829 --> 00:21:19,049 las suyas propias 539 00:21:19,049 --> 00:21:21,849 el raíz y los paquetes que cuelguen 540 00:21:21,849 --> 00:21:24,049 pero resulta que queremos añadirle 541 00:21:24,049 --> 00:21:26,130 el hard que está fuera del proyecto 542 00:21:26,130 --> 00:21:27,309 de hecho está en el escritorio 543 00:21:27,309 --> 00:21:29,569 se lo queremos añadir y decirle, ojo 544 00:21:29,569 --> 00:21:31,910 que en este jar hay clases que también quiero que uses 545 00:21:31,910 --> 00:21:33,690 ojo, pues entonces 546 00:21:33,690 --> 00:21:34,170 ¿qué hacemos? 547 00:21:37,750 --> 00:21:39,289 nos vamos aquí en 548 00:21:39,289 --> 00:21:42,970 le voy a quitar la esta 549 00:21:42,970 --> 00:21:45,289 vale 550 00:21:45,289 --> 00:21:46,769 y ahora veis 551 00:21:46,769 --> 00:21:49,750 vale, pues ahora pincháis classpad 552 00:21:49,750 --> 00:21:51,750 y veis que aquí se abre 553 00:21:51,750 --> 00:21:53,730 un montón de botones 554 00:21:53,730 --> 00:21:55,890 y uno de ellos es, añade un jar 555 00:21:55,890 --> 00:21:58,450 externo, es justo lo que queremos 556 00:21:58,450 --> 00:22:00,250 un JAR que está fuera en el escritorio 557 00:22:00,250 --> 00:22:01,210 que está fuera del proyecto 558 00:22:01,210 --> 00:22:04,190 quiero añadirlo, no significa que lo meta 559 00:22:04,190 --> 00:22:05,930 dentro del proyecto, lo que significa es que 560 00:22:05,930 --> 00:22:08,049 su ruta la agrego al classpath 561 00:22:08,049 --> 00:22:10,329 pero el JAR no lo muevo 562 00:22:10,329 --> 00:22:11,730 el JAR se queda en el escritorio 563 00:22:11,730 --> 00:22:13,930 añado la ruta al classpath 564 00:22:13,930 --> 00:22:16,069 pero o sea que si tú el JAR 565 00:22:16,069 --> 00:22:18,250 por ejemplo lo eliminas, ya quedó grabado aquí 566 00:22:18,250 --> 00:22:20,109 no, no, no, como el JAR lo eliminas 567 00:22:20,109 --> 00:22:22,250 ya quedó grabado, porque lo único que es configurado 568 00:22:22,250 --> 00:22:23,829 en el classpath es la ruta 569 00:22:23,829 --> 00:22:26,849 Entonces, cuando el proyecto no es de usar esa clase, 570 00:22:27,369 --> 00:22:29,269 va a ir a través de la ruta al JAR. 571 00:22:29,430 --> 00:22:31,630 Si el JAR no ha escrito en el escritorio, está jodido. 572 00:22:32,450 --> 00:22:32,690 ¿Vale? 573 00:22:33,289 --> 00:22:37,210 Bueno, pues entonces, vamos a añadir un JAR externo. 574 00:22:37,309 --> 00:22:38,609 Le damos a ADE externo al JAR. 575 00:22:39,309 --> 00:22:42,250 Y nos dice, pues dime dónde está A, alma de cántaro. 576 00:22:42,369 --> 00:22:46,690 Pues tú te vas al escritorio, aquí, teclado.jar. 577 00:22:47,230 --> 00:22:47,630 Abrir. 578 00:22:48,549 --> 00:22:48,849 ¿Veis? 579 00:22:48,890 --> 00:22:49,769 Ha aparecido aquí debajo. 580 00:22:49,769 --> 00:22:52,069 entonces como veis 581 00:22:52,069 --> 00:22:54,130 lo que hemos añadido es solo la ruta 582 00:22:54,130 --> 00:22:55,970 hemos dicho, oye que este proyecto 583 00:22:55,970 --> 00:22:58,029 tiene derecho a usar 584 00:22:58,029 --> 00:22:59,009 a partir de ahora 585 00:22:59,009 --> 00:23:01,230 a partir de ahora tiene derecho a usar 586 00:23:01,230 --> 00:23:03,049 aparte de la JRE 587 00:23:03,049 --> 00:23:05,869 aparte de las propias clases suyas 588 00:23:05,869 --> 00:23:08,029 a ver, te decides 589 00:23:08,029 --> 00:23:08,990 te vas o te quedas 590 00:23:08,990 --> 00:23:11,369 vale 591 00:23:11,369 --> 00:23:13,089 vale 592 00:23:13,089 --> 00:23:15,109 pues con esto es lo que estamos diciendo 593 00:23:15,109 --> 00:23:17,369 ojo, que este proyecto a partir de ahora 594 00:23:17,369 --> 00:23:19,430 tiene derecho a usar, tres cosas 595 00:23:19,430 --> 00:23:22,349 las clases de la máquina virtual como siempre 596 00:23:22,349 --> 00:23:24,230 por supuesto, System.out, Scanner 597 00:23:24,230 --> 00:23:26,470 String, todas esas que están en la máquina virtual 598 00:23:26,470 --> 00:23:28,390 las suyas propias 599 00:23:28,390 --> 00:23:30,390 que ha hecho él, lógicamente faltaría más 600 00:23:30,390 --> 00:23:31,890 las que ha hecho él dentro de su proyecto 601 00:23:31,890 --> 00:23:34,269 y además las que estén aquí 602 00:23:34,269 --> 00:23:35,430 ¿vale? 603 00:23:36,069 --> 00:23:38,130 pues ya está, ya hemos hecho esto, ya le damos 604 00:23:38,130 --> 00:23:39,430 Apply, Close 605 00:23:39,430 --> 00:23:42,369 y se me ha 606 00:23:42,369 --> 00:23:44,569 quitado el rojo, ¿veis que automáticamente 607 00:23:44,569 --> 00:23:46,230 se me ha quitado el rojo? ahora ya 608 00:23:46,230 --> 00:23:47,869 esto es accesible 609 00:23:47,869 --> 00:23:51,150 si miramos lo que ha pasado en mi proyecto 610 00:23:51,150 --> 00:23:54,559 lupa 611 00:23:54,559 --> 00:23:56,200 efectivamente 612 00:23:56,200 --> 00:23:58,079 aparte de JRE 613 00:23:58,079 --> 00:23:59,799 me ha aparecido aquí esto 614 00:23:59,799 --> 00:24:02,039 que me dice 615 00:24:02,039 --> 00:24:05,220 ah mira, tienes acceso a teclado.jar 616 00:24:05,220 --> 00:24:05,859 que está aquí 617 00:24:05,859 --> 00:24:07,619 y si lo despliegas dentro 618 00:24:07,619 --> 00:24:09,779 hasta te informa de las clases que hay dentro 619 00:24:09,779 --> 00:24:10,740 te informa de ellas 620 00:24:10,740 --> 00:24:14,480 pero eso sí, solo tienes el compilado 621 00:24:14,480 --> 00:24:15,339 el fuente no tienes 622 00:24:15,339 --> 00:24:17,579 entonces el tío te ha distribuido su jar 623 00:24:17,579 --> 00:24:19,420 pero tú no sabes cómo ha hecho el código 624 00:24:19,420 --> 00:24:21,000 Pero es que no te hace ninguna falta 625 00:24:21,000 --> 00:24:22,119 ¿Vale? 626 00:24:23,119 --> 00:24:24,839 Si yo pincho aquí, de hecho me dice 627 00:24:24,839 --> 00:24:27,619 Uh, lo siento pero 628 00:24:27,619 --> 00:24:29,279 Me dice 629 00:24:29,279 --> 00:24:30,299 No sé 630 00:24:30,299 --> 00:24:32,720 No sé qué es eso 631 00:24:32,720 --> 00:24:35,619 Porque está solo el compilado, o sea, yo no tengo acceso a su código 632 00:24:35,619 --> 00:24:36,619 Pero no lo necesito 633 00:24:36,619 --> 00:24:38,079 Lo único que quiero es usarlo 634 00:24:38,079 --> 00:24:40,579 ¿Vale? Y ahora ya 635 00:24:40,579 --> 00:24:42,519 Como ya lo tengo aquí, pues este 636 00:24:42,519 --> 00:24:44,259 Paquete consola me ha aparecido 637 00:24:44,259 --> 00:24:46,619 No es que físicamente esté ahí dentro 638 00:24:46,619 --> 00:24:48,460 Lo que hay es una referencia 639 00:24:48,460 --> 00:24:50,559 a donde está en el 640 00:24:50,559 --> 00:24:51,740 escritorio, ¿vale? 641 00:24:52,200 --> 00:24:54,440 Y ahora yo ya puedo usar esto perfectamente 642 00:24:54,440 --> 00:24:56,440 para leer un entero. 643 00:24:56,839 --> 00:24:58,319 Por ejemplo, vamos a leer una cadena. 644 00:24:58,940 --> 00:25:00,619 Vamos a ver si hemos solucionado 645 00:25:00,619 --> 00:25:02,400 lo del, al ser variable, un segundito, al ser 646 00:25:02,400 --> 00:25:04,519 variable local, vamos a ver 647 00:25:04,519 --> 00:25:06,519 si hemos solucionado lo del salto de 648 00:25:06,519 --> 00:25:08,400 línea. Recordad que el salto de línea nos 649 00:25:08,400 --> 00:25:10,480 ocurría cuando después de leer un número 650 00:25:10,480 --> 00:25:11,579 leíamos una cadena, ¿verdad? 651 00:25:12,380 --> 00:25:14,440 Pues voy a leer un número y voy a leer 652 00:25:14,440 --> 00:25:16,019 ahora una cadena con mi 653 00:25:16,019 --> 00:25:17,079 super librería. 654 00:25:17,079 --> 00:25:25,539 leer.cadena 655 00:25:25,539 --> 00:25:31,400 vale, como veis 656 00:25:31,400 --> 00:25:33,099 mi código es más cómodo 657 00:25:33,099 --> 00:25:35,220 que si tuviera que haber hecho el escáner, luego el 658 00:25:35,220 --> 00:25:37,339 scan next line, pues esto es 659 00:25:37,339 --> 00:25:38,759 más cómodo, que quiero leer un número 660 00:25:38,759 --> 00:25:41,240 leer entero, le quiero una cadena 661 00:25:41,240 --> 00:25:42,720 leer cadena, ya está 662 00:25:42,720 --> 00:25:44,940 vamos a ejecutarlo 663 00:25:44,940 --> 00:25:51,289 venga, primero un numerito entero 664 00:25:51,289 --> 00:25:52,890 ¿veis? 665 00:25:53,130 --> 00:25:54,809 y se queda esperando la cadena 666 00:25:54,809 --> 00:25:57,309 no tengo el problema ese de que 667 00:25:57,309 --> 00:25:59,170 el salto de línea después del número 668 00:25:59,170 --> 00:26:00,990 alimenta al otro next 669 00:26:00,990 --> 00:26:02,670 y no porque son independientes 670 00:26:02,670 --> 00:26:04,710 son dos objetos escáner que han desaparecido 671 00:26:04,710 --> 00:26:06,890 vale, entonces 672 00:26:06,890 --> 00:26:10,319 hemos ganado con esto 673 00:26:10,319 --> 00:26:11,319 dos ventajas 674 00:26:11,319 --> 00:26:13,720 dejar de arrastrar el escáner 675 00:26:13,720 --> 00:26:15,640 y 676 00:26:15,640 --> 00:26:17,700 lo del salto de línea famoso 677 00:26:17,700 --> 00:26:19,259 ahora ya 678 00:26:19,259 --> 00:26:22,279 si hacéis eso del build path 679 00:26:22,279 --> 00:26:24,259 con cualquier proyecto 680 00:26:24,259 --> 00:26:26,359 que hagáis, pues podéis usar esta clase para leer 681 00:26:26,359 --> 00:26:28,059 y no tenéis 682 00:26:28,059 --> 00:26:30,359 que acordaros del escáner todo el rato 683 00:26:30,359 --> 00:26:34,289 vale, esto es un ejemplo 684 00:26:34,289 --> 00:26:35,990 en realidad era un ejemplo 685 00:26:35,990 --> 00:26:38,089 de utilidad de los métodos 686 00:26:38,089 --> 00:26:39,829 estáticos, son métodos de librería 687 00:26:39,829 --> 00:26:42,450 métodos que no dependen de propiedades de la clase 688 00:26:42,450 --> 00:26:43,349 los llamo 689 00:26:43,349 --> 00:26:46,109 con el nombre de la clase, con lo cual 690 00:26:46,109 --> 00:26:47,950 es comodísimo, no tengo que crear ningún objeto 691 00:26:47,950 --> 00:26:48,890 lo llamo con el nombre 692 00:26:48,890 --> 00:26:52,210 que los quiero usar en otro proyecto, los exporto con un 693 00:26:52,210 --> 00:26:53,710 jar y luego los importo 694 00:26:53,710 --> 00:26:55,470 ah, sí, dime