1 00:00:00,000 --> 00:00:01,219 Public static void. 2 00:00:01,960 --> 00:00:03,960 Vale, pues el void ya sabemos lo que es. 3 00:00:04,660 --> 00:00:05,919 El static ahora dentro de un rato. 4 00:00:07,179 --> 00:00:09,640 De comer, no paráis de comer, por favor. 5 00:00:10,119 --> 00:00:10,439 Ya está. 6 00:00:11,599 --> 00:00:12,480 No se come todo el rato. 7 00:00:13,660 --> 00:00:14,980 Joder, tenéis que saber parar. 8 00:00:15,400 --> 00:00:17,699 Hay que crecer, pero es que es la bola. 9 00:00:17,980 --> 00:00:18,760 Es pecado la bola. 10 00:00:19,100 --> 00:00:20,719 Pues vaya pecado. 11 00:00:20,780 --> 00:00:21,199 Tan malo. 12 00:00:21,760 --> 00:00:22,000 Bueno. 13 00:00:24,000 --> 00:00:26,039 Vale, entonces void ya sabéis lo que es. 14 00:00:26,039 --> 00:00:27,679 Cuando el método no devuelve nada. 15 00:00:29,179 --> 00:00:29,739 Public. 16 00:00:30,000 --> 00:00:48,840 Hemos visto que se ponía delante de una clase, pero también lo hemos visto que lo ponía delante del método constructor, siempre lo hemos borrado, pero no teníamos ni idea de lo que significaba. Se puede poner tanto delante de clases como de propiedades, como de métodos, significando esto que vayamos a ver ahora. 17 00:00:48,840 --> 00:01:23,459 Bueno, pues esto tiene que ver los modificadores de acceso, esto que vamos a contar ahora en la versión live, que son estos, el public, el package, que es como no haber nada, cuando no se pone nada es esto, el protected, este protege mucho, y el private. 18 00:01:23,459 --> 00:01:25,019 estos modificadores de acceso 19 00:01:25,019 --> 00:01:27,060 que son los que vamos a entender ahora 20 00:01:27,060 --> 00:01:28,560 que significan 21 00:01:28,560 --> 00:01:30,900 estos tienen que ver 22 00:01:30,900 --> 00:01:33,379 con el concepto de paquete 23 00:01:33,379 --> 00:01:33,980 ¿vale? 24 00:01:34,859 --> 00:01:37,819 pues entonces, nosotros ahora ya sabemos 25 00:01:37,819 --> 00:01:40,019 que una aplicación en Java 26 00:01:40,019 --> 00:01:42,239 una aplicación 27 00:01:42,239 --> 00:01:43,599 son 28 00:01:43,599 --> 00:01:46,000 un montón de clases distintas 29 00:01:46,000 --> 00:01:48,019 ¿vale? nosotros a lo mejor hemos hecho 30 00:01:48,019 --> 00:01:50,180 pues una aplicación con tres clases 31 00:01:50,180 --> 00:01:51,480 profesor 32 00:01:51,480 --> 00:01:54,000 Departamento y la mail 33 00:01:54,000 --> 00:01:56,000 Bueno, pues ya esa tenía tres clases 34 00:01:56,000 --> 00:01:57,799 Pero una aplicación puede tener 35 00:01:57,799 --> 00:01:59,180 Pues muchas, cientos, miles 36 00:01:59,180 --> 00:02:00,200 ¿Vale? 37 00:02:00,719 --> 00:02:03,000 Esa es una aplicación, ya lo sabemos 38 00:02:03,000 --> 00:02:05,180 Que es un montón de clases distintas 39 00:02:05,180 --> 00:02:07,359 De esas clases 40 00:02:07,359 --> 00:02:09,159 Muchas de ellas 41 00:02:09,159 --> 00:02:10,259 Serán entidades 42 00:02:10,259 --> 00:02:13,639 El profesor, el departamento, el aula, el no sé qué 43 00:02:13,639 --> 00:02:15,979 Y al menos una 44 00:02:15,979 --> 00:02:17,060 Al menos una 45 00:02:17,060 --> 00:02:19,780 Será la clase que tiene el famoso método mail 46 00:02:19,780 --> 00:02:21,300 Al menos una 47 00:02:21,300 --> 00:02:40,419 ¿Verdad? Y la máquina virtual, cuando le decimos, oye tú, arranca esta aplicación, cuando le decimos eso, lo que hace la máquina virtual es buscar la que tiene el método main, ahora ya veremos cómo la encuentra, porque buscar ahí en un montón de 200.000 clases no sería fácil. 48 00:02:40,419 --> 00:02:42,539 ahora ya después veremos cómo la encuentra 49 00:02:42,539 --> 00:02:44,580 pues lo que hace la máquina virtual es 50 00:02:44,580 --> 00:02:45,780 buscar la que tiene el main 51 00:02:45,780 --> 00:02:47,960 y arrancar a partir de ahí 52 00:02:47,960 --> 00:02:50,699 y ya todas las sentencias del main 53 00:02:50,699 --> 00:02:51,879 se van ejecutando 54 00:02:51,879 --> 00:02:54,719 muchas de ellas serán precisamente 55 00:02:54,719 --> 00:02:56,759 instanciar objetos 56 00:02:56,759 --> 00:02:58,120 de estas clases, lo que sea 57 00:02:58,120 --> 00:03:00,939 vale, pues es una aplicación JAO, un montón de clases 58 00:03:00,939 --> 00:03:02,580 pero si tenemos 100, 200 59 00:03:02,580 --> 00:03:04,759 300, 1000, 400, 1000 clases 60 00:03:04,759 --> 00:03:06,680 todas ahí en la misma 61 00:03:06,680 --> 00:03:08,240 carpeta, pues es 62 00:03:08,240 --> 00:03:10,580 un poco desorganizado y farragoso. 63 00:03:11,620 --> 00:03:13,860 Entonces, ¿cómo se organiza una aplicación Java? 64 00:03:14,539 --> 00:03:18,419 Se organiza metiendo las clases en diferentes paquetes. 65 00:03:19,159 --> 00:03:22,360 A lo mejor estas clases se pueden meter en un paquete. 66 00:03:26,780 --> 00:03:28,500 Estas dos de aquí en otro. 67 00:03:31,250 --> 00:03:32,650 Es decir, ¿qué son paquetes? 68 00:03:32,810 --> 00:03:35,389 Los paquetes son única y exclusivamente 69 00:03:35,389 --> 00:03:38,770 carpetas del sistema de archivos. 70 00:03:38,969 --> 00:03:40,650 Carpetas del sistema de archivos 71 00:03:40,650 --> 00:03:43,449 que tienen clases. 72 00:03:43,550 --> 00:03:44,469 ya está 73 00:03:44,469 --> 00:03:47,370 no se supone que tienen que estar todas en la misma carpeta 74 00:03:47,370 --> 00:03:48,789 para poderse llamar entre sí 75 00:03:48,789 --> 00:03:50,590 o están todas dentro de lo mismo 76 00:03:50,590 --> 00:03:51,409 no 77 00:03:51,409 --> 00:03:55,229 o sea, porque estén en un proyecto ya se pueden llamar así 78 00:03:55,229 --> 00:03:57,770 incluso aunque no estén en el mismo proyecto 79 00:03:57,770 --> 00:04:01,050 lo que pasa es que Eclipse 80 00:04:01,050 --> 00:04:03,270 edita una organización, pero Eclipse es Eclipse 81 00:04:03,270 --> 00:04:04,930 que es el entorno de desarrollo 82 00:04:04,930 --> 00:04:07,069 en el que trabajamos cuando estamos desarrollando 83 00:04:07,069 --> 00:04:08,069 y tenemos nuestra organización 84 00:04:08,069 --> 00:04:11,250 luego cuando ya la aplicación está hecha, otra cosa es esa aplicación 85 00:04:11,250 --> 00:04:13,270 como ya se distribuye 86 00:04:13,270 --> 00:04:16,170 y se va a distribuir en un montón de carpetas 87 00:04:16,170 --> 00:04:17,889 con clases dentro, ya está 88 00:04:17,889 --> 00:04:19,370 no hay más, para Java no hay más que eso 89 00:04:19,370 --> 00:04:21,509 un montón de carpetas con clases dentro 90 00:04:21,509 --> 00:04:23,050 ahora lo vemos un poquito más 91 00:04:23,050 --> 00:04:25,490 la organización que vemos en el Eclipse 92 00:04:25,490 --> 00:04:26,730 esa no es de Java 93 00:04:26,730 --> 00:04:28,689 esa es del Eclipse 94 00:04:28,689 --> 00:04:31,930 lo organiza pues con esas carpetitas, la SRC 95 00:04:31,930 --> 00:04:33,790 para que nosotros lo veamos 96 00:04:33,790 --> 00:04:35,189 y podamos desarrollar cómodamente 97 00:04:35,189 --> 00:04:37,350 pero no es una organización que entienda esta 98 00:04:37,350 --> 00:04:39,250 a esta hay que darle 99 00:04:39,250 --> 00:04:40,829 un montón de carpetas 100 00:04:40,829 --> 00:04:42,730 con clases dentro, se acabó 101 00:04:42,730 --> 00:05:01,060 Nada más. No hay más organización que esa. Vale. Bueno, pues entonces, lo habitual es que cuando a la máquina virtual le damos una aplicación, no le damos las carpetas así a su vez en una carpeta todas, no. 102 00:05:01,060 --> 00:05:18,009 Lo que le damos es todas esas carpetas comprimidas en un único archivo con extensión .jar. Es decir, jar es una herramienta para comprimir archivos, como puede ser el zip, exactamente igual. 103 00:05:19,189 --> 00:05:24,110 Pero esta herramienta de comprimir archivos, esta la entiende la máquina virtual. 104 00:05:24,810 --> 00:05:32,490 Entonces, si a la máquina virtual le damos un fichero .jar que lleva dentro comprimidas un montón de carpetas con clases, 105 00:05:33,029 --> 00:05:40,009 pues la máquina virtual sabe descomprimir el .jar y ya tiene ahí las carpetitas con clases dentro. 106 00:05:41,189 --> 00:05:45,230 Y repito, cada una de esas carpetas es un paquete. 107 00:05:45,230 --> 00:05:47,730 Es decir, un paquete, una carpeta. 108 00:05:48,029 --> 00:05:49,009 Una carpeta, un paquete. 109 00:05:49,189 --> 00:05:50,589 Hay una correspondencia 110 00:05:50,589 --> 00:05:52,449 miunívoca entre 111 00:05:52,449 --> 00:05:54,509 carpeta y paquete. Pues un montón 112 00:05:54,509 --> 00:05:55,670 de esas carpetas, 113 00:05:56,790 --> 00:05:58,430 llamémoslas paquetes, un montón 114 00:05:58,430 --> 00:06:00,889 de esos, comprimidos 115 00:06:00,889 --> 00:06:02,910 en un fichero .hard 116 00:06:02,910 --> 00:06:04,550 es la 117 00:06:04,550 --> 00:06:06,550 aplicación. Eso se 118 00:06:06,550 --> 00:06:08,470 le da a la máquina virtual, la máquina virtual 119 00:06:08,470 --> 00:06:10,529 recibe el .hard, ahora lo veremos, 120 00:06:11,529 --> 00:06:12,350 lo descomprime, 121 00:06:13,069 --> 00:06:14,329 encuentra la que tiene 122 00:06:14,329 --> 00:06:16,269 la main dentro de todo ese caos de 123 00:06:16,269 --> 00:06:18,509 carpetas, habrá que ver cómo lo encuentra, 124 00:06:18,509 --> 00:06:20,930 dentro de todo ese caos se encuentra la que tiene el método main 125 00:06:20,930 --> 00:06:21,649 una solo 126 00:06:21,649 --> 00:06:23,769 y ahí arranca la aplicación 127 00:06:23,769 --> 00:06:26,910 y repito, ya hemos visto que esta aplicación 128 00:06:26,910 --> 00:06:27,790 que tendrá aquí dentro 129 00:06:27,790 --> 00:06:30,269 pues ya irá llamando al resto 130 00:06:30,269 --> 00:06:32,110 creando objetos profesor 131 00:06:32,110 --> 00:06:34,209 llamando a los métodos de profesor 132 00:06:34,209 --> 00:06:36,490 creando objetos departamento, llamando a métodos 133 00:06:36,490 --> 00:06:38,589 ya desde aquí se van instanciando 134 00:06:38,589 --> 00:06:40,490 objetos de las demás, llamando a los métodos 135 00:06:40,490 --> 00:06:42,449 lo que sea, ¿vale? eso es una aplicación Java 136 00:06:42,449 --> 00:06:44,410 de escritorio 137 00:06:44,410 --> 00:06:46,949 una aplicación Java pues que se ejecuta en tu ordenador 138 00:06:46,949 --> 00:06:49,709 hay otras arquitecturas, claro, una aplicación web 139 00:06:49,709 --> 00:06:51,149 que se ejecuta en un servidor web 140 00:06:51,149 --> 00:06:52,410 pero otra arquitectura 141 00:06:52,410 --> 00:06:55,389 pues ya lo veremos el año que viene 142 00:06:55,389 --> 00:06:57,449 pero la aplicación Java de escritorio es esto 143 00:06:57,449 --> 00:06:59,269 un montón de paquetes o carpetas 144 00:06:59,269 --> 00:07:00,470 todas esas comprimidas 145 00:07:00,470 --> 00:07:03,730 en un archivo .jar que la máquina virtual 146 00:07:03,730 --> 00:07:05,129 es capaz de descomprimir 147 00:07:05,129 --> 00:07:07,129 buscar la main y ejecutarla 148 00:07:07,129 --> 00:07:10,269 bueno, pues entonces 149 00:07:10,269 --> 00:07:12,870 los paquetes 150 00:07:12,870 --> 00:07:14,990 que son diferentes carpetas 151 00:07:14,990 --> 00:07:17,449 y contienen clases, ya nos plantean 152 00:07:17,449 --> 00:07:19,389 el problema de, oye, 153 00:07:19,629 --> 00:07:20,430 pero ¿cómo 154 00:07:20,430 --> 00:07:23,750 desde esta main que está en este paquete 155 00:07:23,750 --> 00:07:25,790 ¿cómo podemos 156 00:07:25,790 --> 00:07:27,750 llamar, hacer referencia 157 00:07:27,750 --> 00:07:28,970 a una clase que está en otro? 158 00:07:29,569 --> 00:07:31,149 Porque hasta ahora eso nunca lo hemos hecho. 159 00:07:31,470 --> 00:07:32,730 Con lo cual nos hemos despreocupado. 160 00:07:33,529 --> 00:07:35,529 Hasta ahora, todas las clases 161 00:07:35,529 --> 00:07:37,509 de una aplicación nuestra, todas 162 00:07:37,509 --> 00:07:39,829 estaban en la misma carpetita 163 00:07:39,829 --> 00:07:40,750 o en el mismo paquete. 164 00:07:41,310 --> 00:07:43,329 Hemos hecho un paquete ahí, ejercicio 1. 165 00:07:43,910 --> 00:07:45,569 Ejercicio 1. Y lo hemos metido 166 00:07:45,569 --> 00:07:47,370 todo dentro. Con lo cual, 167 00:07:47,449 --> 00:07:50,550 como hemos hecho las aplicaciones siempre todas en el mismo paquete, 168 00:07:50,730 --> 00:07:51,509 ¿qué era el ejercicio 2? 169 00:07:51,949 --> 00:07:53,329 Ejercicio 2, todas dentro. 170 00:07:53,930 --> 00:07:55,329 Pues nos hemos despreocupado de eso. 171 00:07:56,069 --> 00:07:58,430 Nos hemos despreocupado porque ahí no hacía falta buscar nada. 172 00:07:59,050 --> 00:08:00,649 Pero ¿qué pasa si tenemos una aplicación 173 00:08:00,649 --> 00:08:05,189 que tiene diferentes paquetes, la misma aplicación, 174 00:08:05,329 --> 00:08:06,329 diferentes carpetas? 175 00:08:06,870 --> 00:08:08,269 Pues ahí ya no es tan sencillo. 176 00:08:08,810 --> 00:08:11,790 Ahí ya, para que unas clases puedan usar otras, 177 00:08:12,629 --> 00:08:13,870 ya sí que interviene esto. 178 00:08:13,870 --> 00:08:15,470 Ya sí que hay que manejar esto. 179 00:08:15,850 --> 00:08:16,290 Perdón. 180 00:08:16,290 --> 00:08:20,129 ¿Es como la música de fondo? 181 00:08:21,449 --> 00:08:28,370 Vale, pues entonces, antes de verlo, para simplificar, antes de verlo así en el ordenador, 182 00:08:28,970 --> 00:08:31,310 algunas cositas que hay que tener claras. 183 00:08:31,730 --> 00:08:32,269 Vamos a ver. 184 00:08:34,750 --> 00:08:44,700 Cada, el nombre del paquete, es decir, las carpetas, no tienen que ser carpetas al mismo nivel todas y ya. 185 00:08:44,700 --> 00:08:47,360 los paquetes pueden involucrar 186 00:08:47,360 --> 00:08:49,299 sus carpetas, es decir, una aplicación 187 00:08:49,299 --> 00:08:50,379 puede tener, a lo mejor 188 00:08:50,379 --> 00:08:53,299 una aplicación mía, pues puede 189 00:08:53,299 --> 00:08:54,639 tener una carpeta que sea 190 00:08:54,639 --> 00:08:55,779 entidades 191 00:08:55,779 --> 00:08:59,000 y esto es una carpetilla 192 00:08:59,000 --> 00:09:02,200 ¿esto qué significa? 193 00:09:05,450 --> 00:09:06,570 Tenías dibujado la carpetita 194 00:09:06,570 --> 00:09:08,789 Yo lo hubiera tenido que pensar mucho más 195 00:09:08,789 --> 00:09:11,629 Es que estoy nojando 196 00:09:11,629 --> 00:09:13,169 mucho mis habilidades artísticas 197 00:09:13,169 --> 00:09:15,250 Si le haces un triangulito más 198 00:09:15,250 --> 00:09:17,210 ya parece que es como si hubiese una escoba adentro 199 00:09:17,210 --> 00:09:19,549 ¿Un triangulito más como así? 200 00:09:20,990 --> 00:09:22,970 No, ahí ya lo he estropeado 201 00:09:22,970 --> 00:09:26,009 Hay que dibujar el papel dentro de la carpeta 202 00:09:26,009 --> 00:09:28,269 No voy a dibujar nada 203 00:09:28,269 --> 00:09:30,870 Silencio, vale 204 00:09:30,870 --> 00:09:32,570 Entonces, en esta carpeta 205 00:09:32,570 --> 00:09:34,350 Que se llama entidades 206 00:09:34,350 --> 00:09:36,230 Aquí ya puede haber 207 00:09:36,230 --> 00:09:37,789 Unas cuantas clases 208 00:09:37,789 --> 00:09:40,129 Por ejemplo, a lo mejor yo aquí he metido 209 00:09:40,129 --> 00:09:42,909 La clase profesor y la clase alumna 210 00:09:42,909 --> 00:09:43,990 Por ejemplo 211 00:09:43,990 --> 00:09:45,809 Vale 212 00:09:45,809 --> 00:10:16,000 A lo mejor tengo en mi aplicación otra carpetita, ¿vale? Otra carpetita para meter las clases relacionadas con utilidades que me interesan. Esta aplicación va a hacer cosas matemáticas y tengo yo aquí algunas clases con utilidades matemáticas de números primos de patatín patatán que la voy a meter en una carpetita, esa carpetita utilidades, ¿vale? 213 00:10:16,000 --> 00:10:35,899 Y aquí a lo mejor pues tengo unas cuantas clases como por ejemplo pues una clase primos donde tengo yo ahí métodos para hacer cosas con números primos o lo que sea, ¿vale? Entonces a lo mejor tengo también clases relacionadas con hacer lecturas de teclado. 214 00:10:35,899 --> 00:10:38,360 Bueno, pues entonces 215 00:10:38,360 --> 00:10:39,820 Esa clase la voy a meter 216 00:10:39,820 --> 00:10:42,480 Por cuestión de organización en otra carpetita 217 00:10:42,480 --> 00:10:44,039 Y ahí a lo mejor 218 00:10:44,039 --> 00:10:46,360 Tengo una clase que se llama teclado 219 00:10:46,360 --> 00:10:48,259 Pues para tener 220 00:10:48,259 --> 00:10:49,919 Ahí recogiditos, los meto 221 00:10:49,919 --> 00:10:50,960 Hacia abajo en el teclado 222 00:10:50,960 --> 00:10:53,019 Entonces, primera pauta 223 00:10:53,019 --> 00:10:55,740 Cuando una aplicación tiene un montón de clases 224 00:10:55,740 --> 00:10:58,019 La idea es separarlas 225 00:10:58,019 --> 00:10:59,940 Por de qué van estas clases 226 00:10:59,940 --> 00:11:00,759 A qué se refieren 227 00:11:00,759 --> 00:11:03,379 Siempre va a haber un conjunto de clases 228 00:11:03,379 --> 00:11:04,899 Que son las entidades, siempre 229 00:11:04,899 --> 00:11:06,320 de lo que se ocupa la aplicación. 230 00:11:06,960 --> 00:11:08,879 Pues esas irán en un paquete aparte. 231 00:11:09,259 --> 00:11:10,019 Un paquete aparte. 232 00:11:10,419 --> 00:11:10,620 ¿Vale? 233 00:11:12,200 --> 00:11:13,120 O lo que es lo mismo, 234 00:11:13,179 --> 00:11:14,100 una carpeta aparte. 235 00:11:14,620 --> 00:11:16,279 Luego a lo mejor hay clases relacionadas 236 00:11:16,279 --> 00:11:17,480 con la entrada y salida de datos. 237 00:11:18,299 --> 00:11:19,600 Pues esas clases relacionadas 238 00:11:19,600 --> 00:11:20,320 con la entrada y salida 239 00:11:20,320 --> 00:11:21,259 irán en una carpetita, 240 00:11:21,399 --> 00:11:21,840 paquete, 241 00:11:22,759 --> 00:11:23,340 interfaz, 242 00:11:23,419 --> 00:11:24,360 o como uno lo quiera llamar. 243 00:11:24,840 --> 00:11:25,080 ¿Vale? 244 00:11:29,210 --> 00:11:31,250 Y así uno organiza su aplicación. 245 00:11:31,809 --> 00:11:31,909 ¿Vale? 246 00:11:31,970 --> 00:11:33,490 Entonces de organización de aplicación, 247 00:11:33,570 --> 00:11:34,409 del modelo en capas, 248 00:11:34,450 --> 00:11:35,009 de todo eso, 249 00:11:35,090 --> 00:11:37,110 pues hay muchos rollos 250 00:11:37,110 --> 00:11:37,830 y muchas historias, 251 00:11:37,830 --> 00:11:39,049 pero no es el momento de meternos ahora. 252 00:11:39,990 --> 00:11:41,789 Bueno, pues entonces, esta aplicación tendría 253 00:11:41,789 --> 00:11:43,629 tres paquetes. Entidades, utilidades, 254 00:11:43,809 --> 00:11:45,490 entrada y salida. Tres paquetes. Vale. 255 00:11:47,210 --> 00:11:47,690 Pero 256 00:11:47,690 --> 00:11:49,769 si yo quiero más 257 00:11:49,769 --> 00:11:51,830 paquetes, ¿es obligatorio que estén 258 00:11:51,830 --> 00:11:53,330 todos al mismo nivel de anidamiento? 259 00:11:53,730 --> 00:11:55,850 No. Estas carpetas 260 00:11:55,850 --> 00:11:57,870 físicas pueden 261 00:11:57,870 --> 00:11:59,389 tener subcarpetas. 262 00:11:59,509 --> 00:12:01,669 Pueden tener subcarpetas. Por ejemplo, 263 00:12:01,830 --> 00:12:03,590 dentro de las entidades, a lo mejor hay 264 00:12:03,590 --> 00:12:05,629 algunas entidades que solo 265 00:12:05,629 --> 00:12:07,529 se usan para una cosa específica, 266 00:12:07,830 --> 00:12:14,909 Y quiero yo meterlas, porque queda más organizado, en una subcarpeta dentro de entidades. 267 00:12:15,269 --> 00:12:29,559 Bueno, pues a lo mejor entidades puede tener una subcarpeta que se llame, pues yo qué sé, solamente para las clases relacionadas con la secretaría. 268 00:12:34,029 --> 00:12:37,090 Y aquí a lo mejor pues tengo una clase que es la clase secretaria. 269 00:12:37,090 --> 00:12:40,899 secretario. Entonces, por la razón 270 00:12:40,899 --> 00:12:42,320 que sea, a mí me interesa 271 00:12:42,320 --> 00:12:44,980 esta clase ponerla en una 272 00:12:44,980 --> 00:12:46,980 subcarpeta de entidades, no en una 273 00:12:46,980 --> 00:12:48,960 carpeta aparte, porque 274 00:12:48,960 --> 00:12:50,879 me parece que una carpeta aparte no 275 00:12:50,879 --> 00:12:51,899 refleja tan bien 276 00:12:51,899 --> 00:12:54,820 la realidad de la 277 00:12:54,820 --> 00:12:57,120 situación. El secretario 278 00:12:57,120 --> 00:12:59,039 es una entidad también, la quiero 279 00:12:59,039 --> 00:13:00,960 poner aquí, pero no es una entidad 280 00:13:00,960 --> 00:13:02,940 del mismo estilo que profesor y alumno, 281 00:13:03,080 --> 00:13:04,460 pues me hago una subcarpeta. 282 00:13:05,220 --> 00:13:07,059 Entonces, las carpetas pueden tener subcarpetas. 283 00:13:07,059 --> 00:13:09,259 ¿eso qué significa? que aquí tengo 284 00:13:09,259 --> 00:13:10,419 cuatro paquetes 285 00:13:10,419 --> 00:13:13,340 tengo tantos paquetes como carpetas 286 00:13:13,340 --> 00:13:15,940 me da igual que unas carpetas estén metidas dentro de otras 287 00:13:15,940 --> 00:13:17,000 me da lo mismo 288 00:13:17,000 --> 00:13:20,080 tengo tantos paquetes 289 00:13:20,080 --> 00:13:21,679 como carpetas, aquí tendría cuatro 290 00:13:21,679 --> 00:13:23,580 ¿vale? me da igual 291 00:13:23,580 --> 00:13:24,960 que estén metidos uno dentro de otros 292 00:13:24,960 --> 00:13:26,759 para Java eso es lo de menos 293 00:13:26,759 --> 00:13:29,139 a Java le da igual que estén metidas dentro de otros 294 00:13:29,139 --> 00:13:31,779 tiene cuatro paquetes completamente distintos 295 00:13:31,779 --> 00:13:32,340 distintos 296 00:13:32,340 --> 00:13:35,279 y este y este no están relacionados 297 00:13:35,279 --> 00:13:37,919 aquí no existe 298 00:13:37,919 --> 00:13:39,679 lo de tengo un paquete dentro del otro 299 00:13:39,679 --> 00:13:42,000 no, lo que pasa es que 300 00:13:42,000 --> 00:13:44,000 físicamente, si está 301 00:13:44,000 --> 00:13:45,919 uno en una carpeta, que está dentro 302 00:13:45,919 --> 00:13:48,120 de la otra, pero son paquetes 303 00:13:48,120 --> 00:13:49,960 independientes, me da igual 304 00:13:49,960 --> 00:13:52,039 que físicamente una carpeta esté dentro de la otra 305 00:13:52,039 --> 00:13:52,960 pero a nivel de código no incluye 306 00:13:52,960 --> 00:13:55,179 para Java 307 00:13:55,179 --> 00:13:58,080 este paquete y este tienen la misma relación entre ellos 308 00:13:58,080 --> 00:13:59,960 que este y este, la misma, para Java 309 00:13:59,960 --> 00:14:01,580 para Java hay un portal 310 00:14:01,580 --> 00:14:02,159 justo 311 00:14:02,159 --> 00:14:04,659 entonces 312 00:14:04,659 --> 00:14:08,940 Entonces, ¿qué nombre tienen que recibir los paquetes? 313 00:14:09,960 --> 00:14:13,419 Pues, para que Java, porque claro, luego esto, 314 00:14:13,840 --> 00:14:15,440 si se distribuye ya la aplicación, 315 00:14:15,980 --> 00:14:19,159 todo esto es lo que va metido en un hard, 316 00:14:19,879 --> 00:14:21,059 todo esto va metido en un hard. 317 00:14:22,159 --> 00:14:24,320 Entonces, la máquina virtual lo descomprime, 318 00:14:24,860 --> 00:14:26,179 la máquina virtual lo descomprime, 319 00:14:26,980 --> 00:14:30,039 y ¿qué nombre reciben, tienen que recibir los paquetes 320 00:14:30,039 --> 00:14:32,940 a la hora de llamarlos, ya veremos cómo, dentro del código? 321 00:14:32,940 --> 00:14:34,820 Pues para que Java se aclare 322 00:14:34,820 --> 00:14:38,639 Porque si no es capaz de encontrar en las carpetas 323 00:14:38,639 --> 00:14:41,299 Lo que nosotros le vamos a pedir por código 324 00:14:41,299 --> 00:14:42,139 Cuando se lo pidamos 325 00:14:42,139 --> 00:14:43,460 Para que Java se aclare 326 00:14:43,460 --> 00:14:45,259 El nombre del paquete 327 00:14:45,259 --> 00:14:46,980 Tiene que ser exactamente igual 328 00:14:46,980 --> 00:14:48,580 Que el nombre de la carpeta 329 00:14:48,580 --> 00:14:51,639 Si hablamos de una subcarpeta 330 00:14:51,639 --> 00:14:53,679 Tiene que acompañar también 331 00:14:53,679 --> 00:14:54,259 Con el punto 332 00:14:54,259 --> 00:14:56,220 Con toda la ruta 333 00:14:56,220 --> 00:14:59,259 Por ejemplo, aquí tendríamos cuatro paquetes 334 00:14:59,259 --> 00:15:00,620 Paquete 1 335 00:15:00,620 --> 00:15:01,840 Entidades 336 00:15:01,840 --> 00:15:07,250 Ahí tendríamos un paquete, entidades. 337 00:15:08,009 --> 00:15:09,809 Otro paquete, utilidades. 338 00:15:16,860 --> 00:15:18,639 Otro paquete, entrada-salida. 339 00:15:21,320 --> 00:15:25,460 Y tendríamos un cuarto paquete, que es el correspondiente a esta carpeta. 340 00:15:25,960 --> 00:15:27,240 ¿Cuál sería el nombre de este? 341 00:15:27,500 --> 00:15:31,860 Toda la ruta, donde el separador ahora sería un puntito. 342 00:15:33,139 --> 00:15:38,159 Sería entidades.secretaría. 343 00:15:38,159 --> 00:15:43,659 Secretaría. Claro, cuatro 344 00:15:43,659 --> 00:15:45,559 paquetes completamente independientes 345 00:15:45,559 --> 00:15:47,539 para Java, cada uno con sus 346 00:15:47,539 --> 00:15:49,600 clases. Lo que pasa es que Java 347 00:15:49,600 --> 00:15:51,620 cuando nosotros, desde el 348 00:15:51,620 --> 00:15:53,559 código, le digamos algo relacionado 349 00:15:53,559 --> 00:15:55,500 con este paquete, al decirle 350 00:15:55,500 --> 00:15:57,519 entidades.secretaría, él va a decir 351 00:15:57,519 --> 00:15:59,419 ah, voy a buscar las clases 352 00:15:59,419 --> 00:16:01,360 de este paquete en la carpeta 353 00:16:01,360 --> 00:16:03,320 entidades y dentro de él en la carpeta 354 00:16:03,320 --> 00:16:05,440 secretaría. Es decir, 355 00:16:05,580 --> 00:16:07,080 el nombre del paquete 356 00:16:07,080 --> 00:16:09,419 le sirve a Java para cuando le 357 00:16:09,419 --> 00:16:16,700 Digamos, la clase que está en este paquete, Java entonces dice, ah, vale, me voy a la estructura de carpetas y me voy a la carpeta con ese nombre. 358 00:16:16,919 --> 00:16:19,299 ¿Qué tiene puntitos dentro? Pues sigo toda la ruta. 359 00:16:20,399 --> 00:16:28,500 Entonces Java necesita que el nombre del paquete sea igual que el de la carpeta y si está en subcarpeta, añadido con la ruta, 360 00:16:28,799 --> 00:16:33,340 porque luego le vamos a decir nosotros dentro, coge clases de este paquete, coge clases de este otro, 361 00:16:33,340 --> 00:16:35,019 y él va a tener que saber 362 00:16:35,019 --> 00:16:36,299 ¿y dónde me voy a buscarlas? 363 00:16:36,840 --> 00:16:38,860 Pues lo saca de aquí, tanto la ruta 364 00:16:38,860 --> 00:16:40,659 como el nombrecito, ¿vale? 365 00:16:41,799 --> 00:16:42,700 Bueno, pues... 366 00:16:42,700 --> 00:16:43,820 Ahora de importar es más fácil, ¿no? 367 00:16:44,000 --> 00:16:46,759 Porque puedes importar entidades asterisco 368 00:16:46,759 --> 00:16:48,379 y importas todos los que estén dentro, ¿no es cierto? 369 00:16:48,799 --> 00:16:50,240 No, importas todas las... 370 00:16:50,240 --> 00:16:52,980 Eso lo haces solo con la clase, no todos los paquetes que estén dentro. 371 00:16:53,779 --> 00:16:55,000 O sea, yo puedes hacer... 372 00:16:55,000 --> 00:16:56,500 Bueno, ahora lo vemos, ¿vale? 373 00:16:56,879 --> 00:16:58,659 El asterisco es para importar todas las clases 374 00:16:58,659 --> 00:17:00,480 dentro de un paquete, no todos los subpaquetes. 375 00:17:00,639 --> 00:17:02,460 Pero no todas las clases de los subpaquetes tampoco. 376 00:17:02,460 --> 00:17:04,279 no, no, no, no, eso 377 00:17:04,279 --> 00:17:06,920 vale, pues 378 00:17:06,920 --> 00:17:08,480 esto está claro, ¿no? porque a veces 379 00:17:08,480 --> 00:17:10,599 induce mucho error y os hacéis un lío 380 00:17:10,599 --> 00:17:14,779 bueno, pues entonces 381 00:17:14,779 --> 00:17:16,660 ahora ya, ¿qué ocurre con 382 00:17:16,660 --> 00:17:18,859 nuestras aplicaciones cuando tenemos 383 00:17:18,859 --> 00:17:20,660 clases que están en diferentes 384 00:17:20,660 --> 00:17:22,539 paquetes? vamos a suponer que aquí 385 00:17:22,539 --> 00:17:24,299 tenemos, yo tengo un paquete main 386 00:17:24,299 --> 00:17:29,859 por aquí, este paquete 387 00:17:29,859 --> 00:17:31,299 que es el paquete main 388 00:17:31,299 --> 00:17:33,779 tendría aquí un quinto 389 00:17:33,779 --> 00:17:35,440 paquete que es el paquete main 390 00:17:35,440 --> 00:17:37,799 no comáis 391 00:17:37,799 --> 00:17:39,339 por favor 392 00:17:39,339 --> 00:17:42,500 tenéis que ser capaces de parar de comer 393 00:17:42,500 --> 00:17:43,119 alguna vez 394 00:17:43,119 --> 00:17:47,619 vale 395 00:17:47,619 --> 00:17:49,920 además es que venís del recreo, venís comidos 396 00:17:49,920 --> 00:17:52,440 y bebidos y fumados y de todo 397 00:17:52,440 --> 00:17:53,720 vale 398 00:17:53,720 --> 00:17:54,740 pues a ver 399 00:17:54,740 --> 00:17:58,519 bueno, venís metidos 400 00:17:58,519 --> 00:17:59,279 lo que sea 401 00:17:59,279 --> 00:18:01,599 bastante que venís 402 00:18:01,599 --> 00:18:03,839 bueno, vale 403 00:18:03,839 --> 00:18:05,759 Pues ahora tenemos nuestra aplicación 404 00:18:05,759 --> 00:18:07,420 Con clases en diferentes paquetes 405 00:18:07,420 --> 00:18:09,039 Por ejemplo, ahora tenemos la main 406 00:18:09,039 --> 00:18:11,480 Tengo mi clase main que está en el paquete main 407 00:18:11,480 --> 00:18:13,660 Entonces nosotros tendríamos aquí nuestra 408 00:18:13,660 --> 00:18:14,519 Clase main 409 00:18:14,519 --> 00:18:18,079 Con el método main, por ejemplo 410 00:18:18,079 --> 00:18:21,119 Y vamos a imaginarnos que la clase main 411 00:18:21,119 --> 00:18:22,339 Lo que quiere hacer es 412 00:18:22,339 --> 00:18:24,720 Instanciar un objeto profesor 413 00:18:24,720 --> 00:18:27,180 ¿Nosotros qué hemos hecho hasta ahora? 414 00:18:27,980 --> 00:18:28,980 Pues hemos hecho aquí 415 00:18:28,980 --> 00:18:31,039 Profesor 416 00:18:31,839 --> 00:18:32,480 P 417 00:18:32,480 --> 00:18:34,200 Igual a bla bla bla 418 00:18:34,200 --> 00:18:52,720 Vale, pues si nosotros seguimos haciendo eso, en una situación en la que las clases están en paquetes distintos, el compilador me va a decir, ¿eh? ¿Quién es profesor? No tengo ni idea de quién es profesor, porque el compilador va a mirar solo en la carpetita donde está esta. 419 00:18:53,299 --> 00:18:54,160 Eso es la carpetita. 420 00:18:55,319 --> 00:18:57,039 Entonces, ¿qué tenemos que hacer? 421 00:18:57,359 --> 00:18:59,460 Pues va a hacer falta dos cosas. 422 00:19:00,380 --> 00:19:04,819 Una, decirle a esta clase dónde está esta. 423 00:19:05,319 --> 00:19:07,559 Esa es la primera cosa que va a hacer falta, pero no es suficiente. 424 00:19:08,440 --> 00:19:14,099 Luego, además, la clase profesor tiene que dar permiso para ser utilizada fuera del paquete. 425 00:19:14,640 --> 00:19:19,680 ¿Y cómo da permiso la clase profesor para ser utilizada fuera del paquete? 426 00:19:19,680 --> 00:19:23,079 Pues da permiso poniéndose el public delante 427 00:19:23,079 --> 00:19:26,859 Entonces, cuando uno pone un public 428 00:19:26,859 --> 00:19:28,059 Delante de una clase, dice 429 00:19:28,059 --> 00:19:29,819 Oye, doy permiso 430 00:19:29,819 --> 00:19:33,259 Al resto de las clases de otros paquetes 431 00:19:33,259 --> 00:19:34,140 A que me usen 432 00:19:34,140 --> 00:19:36,259 ¿Vale? A que me usen 433 00:19:36,259 --> 00:19:38,119 Porque si no se pone el public, no 434 00:19:38,119 --> 00:19:40,819 Nosotros hasta ahora, como todas las clases 435 00:19:40,819 --> 00:19:42,900 Las teníamos siempre en el mismo 436 00:19:42,900 --> 00:19:44,559 Nos olvidamos del public 437 00:19:44,559 --> 00:19:46,259 Porque no hay que dar ese permiso explícito 438 00:19:46,259 --> 00:19:48,000 ¿Vale? Pero ahora sí 439 00:19:48,000 --> 00:19:50,759 y no solo hay que dar permiso 440 00:19:50,759 --> 00:19:51,960 sino que además en esta 441 00:19:51,960 --> 00:19:54,779 hay que decir, oye, profesor está en este paquete 442 00:19:54,779 --> 00:19:57,339 ¿y cómo lo podemos decir? 443 00:19:57,539 --> 00:19:58,440 de dos maneras 444 00:19:58,440 --> 00:20:00,559 o bien dando el nombre 445 00:20:00,559 --> 00:20:02,400 completo de la clase, que os he mentido 446 00:20:02,400 --> 00:20:03,839 como tantas veces que os miento 447 00:20:03,839 --> 00:20:07,059 profesor no es el nombre 448 00:20:07,059 --> 00:20:08,500 aunque yo ya he hecho una clase 449 00:20:08,500 --> 00:20:09,119 profesor 450 00:20:09,119 --> 00:20:12,660 la clase no se llama profesor 451 00:20:12,660 --> 00:20:14,700 la clase se llama profesor 452 00:20:14,700 --> 00:20:16,859 y con todo el paquete 453 00:20:16,859 --> 00:20:19,140 en el que está adelante. Esta clase profesor 454 00:20:19,140 --> 00:20:20,859 al estar dentro de entidades 455 00:20:20,859 --> 00:20:22,539 su nombre verdadero 456 00:20:22,539 --> 00:20:23,980 es 457 00:20:23,980 --> 00:20:26,599 entidades.profesor 458 00:20:26,599 --> 00:20:28,859 Lo que pasa es que cuando yo no pongo 459 00:20:28,859 --> 00:20:30,779 esto, cuando yo no pongo esto 460 00:20:30,779 --> 00:20:32,720 la máquina virtual asume que está en este 461 00:20:32,720 --> 00:20:34,359 paquete. Entonces no hay problema. 462 00:20:34,880 --> 00:20:36,700 Como nosotros hasta ahora todas las clases estaban 463 00:20:36,700 --> 00:20:38,559 en el mismo, no poníamos esto. 464 00:20:39,240 --> 00:20:40,720 Porque entonces el compilador 465 00:20:40,720 --> 00:20:42,400 lo busca en la misma carpeta y lo encuentra. 466 00:20:42,940 --> 00:20:44,480 Pero si profesor está en otro 467 00:20:44,480 --> 00:20:46,720 hay que poner 468 00:20:46,720 --> 00:20:48,220 el nombre real de la clase 469 00:20:48,220 --> 00:20:50,220 y el nombre real de la clase es 470 00:20:50,220 --> 00:20:52,000 el que acompaña al class 471 00:20:52,000 --> 00:20:54,279 y delante el nombre del paquete 472 00:20:54,279 --> 00:20:56,440 entidades o entidades 473 00:20:56,440 --> 00:20:58,000 punto secretaría, el que sea 474 00:20:58,000 --> 00:21:00,539 lo que pasa es que eso a veces se hace 475 00:21:00,539 --> 00:21:02,700 pesado, el tener nombres de clases tan largos 476 00:21:02,700 --> 00:21:04,660 pues podemos hacer un apañito 477 00:21:04,660 --> 00:21:06,700 un apañito poniendo un import 478 00:21:06,700 --> 00:21:08,299 arriba, ¿vale? 479 00:21:08,359 --> 00:21:10,279 esa es la idea, ahora viéndolo en código 480 00:21:10,279 --> 00:21:12,619 va a quedar más claro que aquí en el lío de la pizarra 481 00:21:12,619 --> 00:21:14,740 pero la idea en general está 482 00:21:14,740 --> 00:21:14,940 ¿no? 483 00:21:14,940 --> 00:21:17,160 puntos de la idea 484 00:21:17,160 --> 00:21:19,079 las clases 485 00:21:19,079 --> 00:21:20,900 están en diferentes paquetes 486 00:21:20,900 --> 00:21:22,539 y la aplicación es 487 00:21:22,539 --> 00:21:25,519 un ficherito .jar que comprime 488 00:21:25,519 --> 00:21:27,539 todas estas carpetas con los paquetes 489 00:21:27,539 --> 00:21:30,690 vale, cada 490 00:21:30,690 --> 00:21:32,630 carpeta, me da igual que esté dentro 491 00:21:32,630 --> 00:21:34,390 una de la otra, es un paquete distinto 492 00:21:34,390 --> 00:21:36,869 que tiene que recibir obligatoriamente 493 00:21:36,869 --> 00:21:38,930 tiene que recibir el nombre 494 00:21:38,930 --> 00:21:40,170 de la carpeta en la que está 495 00:21:40,170 --> 00:21:42,769 si es subcarpeta 496 00:21:42,769 --> 00:21:45,069 pues tiramos hasta arriba hacia toda la ruta 497 00:21:45,069 --> 00:21:46,509 pero el separador un poco 498 00:21:46,509 --> 00:21:50,109 y ahora ya, cuando una clase de un paquete 499 00:21:50,109 --> 00:21:52,049 quiere usar clases 500 00:21:52,049 --> 00:21:53,890 de otro para instanciarlas 501 00:21:53,890 --> 00:21:55,190 para hacer el nido, para lo que sea 502 00:21:55,190 --> 00:21:57,869 esa otra clase tiene que haber dado 503 00:21:57,869 --> 00:21:59,829 permiso con el public delante, que de eso es 504 00:21:59,829 --> 00:22:00,950 de lo que haremos los detalles 505 00:22:00,950 --> 00:22:03,710 y además la otra clase tiene que 506 00:22:03,710 --> 00:22:05,869 especificar dónde está, porque si no 507 00:22:05,869 --> 00:22:08,309 lo especifica, el compilador 508 00:22:08,309 --> 00:22:09,049 va 509 00:22:09,049 --> 00:22:11,910 a asumir que está en el mismo paquete 510 00:22:11,910 --> 00:22:13,630 con lo cual no la va a encontrar nunca 511 00:22:13,630 --> 00:22:15,730 ¿Vale? Esas son las ideas 512 00:22:15,730 --> 00:22:16,670 Y ahora ya 513 00:22:16,670 --> 00:22:19,309 Lo vemos en concreto 514 00:22:19,309 --> 00:22:20,789 En el código que se ve más limpio 515 00:22:20,789 --> 00:22:26,480 Pues venga 516 00:22:26,480 --> 00:22:28,059 A ver 517 00:22:28,059 --> 00:22:52,369 A ver 518 00:22:52,369 --> 00:22:55,730 Ejemplito, paquetitos 519 00:22:55,730 --> 00:23:05,289 Bueno, pues 520 00:23:05,289 --> 00:23:07,390 Todo, todo lo que vemos aquí es 521 00:23:07,390 --> 00:23:08,789 Importante, ¿eh? 522 00:23:09,150 --> 00:23:12,089 No está todo seleccionado para que sea imprescindible 523 00:23:12,089 --> 00:23:13,750 Así que todo 524 00:23:13,750 --> 00:23:15,009 Lo tenéis que saber, todo 525 00:23:15,009 --> 00:23:15,930 Vale, no 526 00:23:15,930 --> 00:23:18,750 Contamos ni una mamonada, ni una 527 00:23:18,750 --> 00:23:20,690 Todo imprescindible 528 00:23:20,690 --> 00:23:23,309 Luego ya vosotros tenéis espacio para ampliar 529 00:23:23,309 --> 00:23:24,109 Todo lo que queráis 530 00:23:24,109 --> 00:23:29,569 Vale, pues venga, vamos a hacernos un proyecto 531 00:23:29,569 --> 00:23:31,470 De ejemplo que subiremos para ver esto 532 00:23:31,470 --> 00:23:32,630 De los modificadores de acceso 533 00:23:32,630 --> 00:23:35,609 Pues vamos a 534 00:23:35,609 --> 00:23:38,930 Llamarlo 535 00:23:38,930 --> 00:23:41,410 A ver, ya se, tapo tanto 536 00:23:41,410 --> 00:23:47,319 Un nuevo proyecto 537 00:23:47,319 --> 00:23:51,140 Ejemplo 538 00:23:51,140 --> 00:23:52,259 Clase 539 00:23:52,259 --> 00:23:55,440 Modificadores 540 00:23:55,440 --> 00:23:58,619 Bueno, paquetes para que no sea un nombre tan largo 541 00:23:58,619 --> 00:24:00,200 Ejemplo clase, paquetes 542 00:24:00,200 --> 00:24:07,319 Pues venga 543 00:24:07,319 --> 00:24:09,559 Vamos a hacernos ahora ya una aplicación 544 00:24:09,559 --> 00:24:10,140 Con 545 00:24:10,140 --> 00:24:12,900 Tres paquetes distintos 546 00:24:12,900 --> 00:24:14,859 Uno de ellos metido dentro de 547 00:24:14,859 --> 00:24:16,799 En una carpeta metida dentro de la otra 548 00:24:16,799 --> 00:24:18,500 Vale, pues venga 549 00:24:18,500 --> 00:24:20,980 Aunque no tenga mucho sentido, vamos a hacer algo parecido a eso 550 00:24:20,980 --> 00:24:23,259 Vamos a hacernos un primer paquete 551 00:24:23,259 --> 00:24:26,480 Entonces 552 00:24:26,480 --> 00:24:28,619 Un primer paquete, entidades 553 00:24:28,619 --> 00:24:40,589 vale, este primer paquete 554 00:24:40,589 --> 00:24:42,329 de entidades pues va a tener una clase 555 00:24:42,329 --> 00:24:43,549 profesor 556 00:24:43,549 --> 00:24:49,859 vamos a ponerle 557 00:24:49,859 --> 00:24:52,259 una propiedad y un método 558 00:24:52,259 --> 00:24:54,700 le voy a quitar el public por ahora 559 00:24:54,700 --> 00:24:58,740 le vamos a poner como hemos hecho hasta ahora 560 00:24:58,740 --> 00:25:00,559 una propiedad 561 00:25:00,559 --> 00:25:02,119 y un método para luego ver como 562 00:25:02,119 --> 00:25:04,000 funcionan los modificadores de acceso 563 00:25:04,000 --> 00:25:05,720 tanto en las propiedades como en métodos 564 00:25:05,720 --> 00:25:08,079 este profesor tiene su nombre 565 00:25:08,079 --> 00:25:10,180 y 566 00:25:10,180 --> 00:25:12,240 vamos a ponerle 567 00:25:12,240 --> 00:25:13,660 un constructor 568 00:25:13,660 --> 00:25:20,440 Al que le vamos a quitar lo que le hemos quitado hasta ahora 569 00:25:20,440 --> 00:25:21,000 Siempre 570 00:25:21,000 --> 00:25:22,720 El public y esto 571 00:25:22,720 --> 00:25:26,880 Es una clase como la que hemos hecho hasta ahora 572 00:25:26,880 --> 00:25:28,640 Sin public y sin nada, ignorándolo todo 573 00:25:28,640 --> 00:25:32,240 Y vamos a poner un método cualquiera 574 00:25:32,240 --> 00:25:34,220 Para mostrar el nombre 575 00:25:34,220 --> 00:25:35,019 Sin más 576 00:25:35,019 --> 00:25:47,940 Este método es un método de la clase profesor 577 00:25:47,940 --> 00:25:49,279 Que cuando un profesor lo llame 578 00:25:49,279 --> 00:25:51,720 Mostrará por consola el nombre del profesor 579 00:25:51,720 --> 00:25:52,640 Pues ya está, nada más 580 00:25:52,640 --> 00:25:55,180 Sin parámetros de entrada y sin nada 581 00:25:55,180 --> 00:26:00,670 Que suba 582 00:26:00,670 --> 00:26:03,509 Ah 583 00:26:03,509 --> 00:26:11,420 Un paquete entidades cualquiera 584 00:26:11,420 --> 00:26:16,500 ¿Vale? 585 00:26:17,180 --> 00:26:19,160 Una clase mínima porque vamos a 586 00:26:19,160 --> 00:26:20,460 Lo que vamos a ver aquí solo son 587 00:26:20,460 --> 00:26:23,019 Cómo funciona lo de los diferentes paquetes 588 00:26:23,019 --> 00:26:23,799 Y los modificadores 589 00:26:23,799 --> 00:26:25,819 ¿Vale? 590 00:26:29,539 --> 00:26:31,140 Vamos a hacernos 591 00:26:31,140 --> 00:26:34,140 Otro paquete, el paquete main 592 00:26:34,140 --> 00:26:35,319 Que va a tener la clase main 593 00:26:35,319 --> 00:26:38,039 Pues nos hacemos un paquete 594 00:26:38,039 --> 00:26:42,180 Main 595 00:26:42,180 --> 00:26:47,480 y vamos a hacer aquí la clase main 596 00:26:47,480 --> 00:26:49,500 para hacer cosas con este de aquí. 597 00:26:58,400 --> 00:26:59,859 Vale, todavía no hacemos nada en el main. 598 00:27:02,640 --> 00:27:04,940 Tengo el main, todavía no hace nada la aplicación. 599 00:27:07,309 --> 00:27:07,549 ¿Vale? 600 00:27:14,309 --> 00:27:14,789 Vale. 601 00:27:15,670 --> 00:27:18,309 Ahora vamos a hacernos un paquete 602 00:27:18,309 --> 00:27:22,170 para tener al secretario del instituto 603 00:27:22,170 --> 00:27:23,349 que por la razón que sea, 604 00:27:24,069 --> 00:27:27,849 a mí ese paquete me interesa que esté dentro de entidades 605 00:27:27,849 --> 00:27:29,430 porque me parece mejor organizado. 606 00:27:29,430 --> 00:27:31,650 Pues entonces 607 00:27:31,650 --> 00:27:34,089 En el mismo SRC 608 00:27:34,089 --> 00:27:34,769 Digo 609 00:27:34,769 --> 00:27:37,390 Voy a crearme un paquete 610 00:27:37,390 --> 00:27:41,119 Y a este paquete le llamo 611 00:27:41,119 --> 00:27:45,640 Entidades.secretaria 612 00:27:45,640 --> 00:27:46,400 Por ejemplo 613 00:27:46,400 --> 00:27:57,279 ¿Veis? Y tengo tres paquetes completamente distintos 614 00:27:57,279 --> 00:28:00,039 Este paquete me lo he creado yo desde aquí 615 00:28:00,039 --> 00:28:01,799 SRC, nuevo paquete 616 00:28:01,799 --> 00:28:02,720 Y le he dado yo el nombre 617 00:28:02,720 --> 00:28:04,599 Entidades.secretaria 618 00:28:04,599 --> 00:28:07,500 Entonces tengo tres paquetes distintos 619 00:28:07,500 --> 00:28:10,039 entidades, entidades secretaría y el main 620 00:28:10,039 --> 00:28:14,200 en entidades secretaría 621 00:28:14,200 --> 00:28:15,660 vamos a hacernos una clase también 622 00:28:15,660 --> 00:28:18,099 la del secretario 623 00:28:18,099 --> 00:28:20,299 nos hacemos 624 00:28:20,299 --> 00:28:21,240 una nueva clase 625 00:28:21,240 --> 00:28:29,119 también le quitamos el public porque todavía 626 00:28:29,119 --> 00:28:30,500 no sabemos ni para qué 627 00:28:30,500 --> 00:28:33,559 y le vamos a poner también al secretario 628 00:28:33,559 --> 00:28:34,539 pues una 629 00:28:34,539 --> 00:28:39,400 una propiedad, un constructor 630 00:28:39,400 --> 00:28:43,849 que también le quitamos 631 00:28:43,849 --> 00:28:47,710 esto y esto 632 00:28:47,710 --> 00:28:49,269 y un método cualquiera 633 00:28:49,269 --> 00:28:51,730 un método cualquiera también 634 00:28:51,730 --> 00:28:53,710 para mostrar el nombre del secretario 635 00:28:53,710 --> 00:28:57,970 vale 636 00:28:57,970 --> 00:29:04,470 bueno, pues ya está 637 00:29:04,470 --> 00:29:07,109 entonces ya tenemos 638 00:29:07,109 --> 00:29:08,650 tres paquetes distintos 639 00:29:08,650 --> 00:29:10,650 efectivamente 640 00:29:10,650 --> 00:29:12,869 si vemos la estructura de carpetas 641 00:29:12,869 --> 00:29:15,150 que se ha hecho por dentro 642 00:29:15,150 --> 00:29:17,490 pues Eclipse 643 00:29:17,490 --> 00:29:19,490 ha creado una subcarpeta 644 00:29:19,490 --> 00:29:20,769 secretaria dentro de entidades 645 00:29:20,769 --> 00:29:23,690 de hecho vámonos a la estructura de carpetas 646 00:29:23,690 --> 00:29:25,690 que la forma sencilla de iros 647 00:29:25,690 --> 00:29:28,869 que siempre os lo digo en el examen, pues si dais aquí en el botón derecho, 648 00:29:28,970 --> 00:29:32,609 decir muéstrame el proyecto en el sistema de archivos, muéstramelo. 649 00:29:34,970 --> 00:29:37,390 Pues este es el proyecto en el sistema de archivos. 650 00:29:41,900 --> 00:29:44,319 Si miramos nuestro proyecto en el sistema de archivos, 651 00:29:45,779 --> 00:29:51,279 aquí en SRC efectivamente tiene carpeta main con la clase main, 652 00:29:52,500 --> 00:29:58,099 carpeta entidades con la clase profesor y dentro secretaría con la clase secretario. 653 00:29:58,099 --> 00:30:14,859 Y aunque secretaría sea una subcarpeta de esta, aunque sea una subcarpeta, son dos paquetes independientes, dos paquetes independientes. Y de hecho aquí en el eclipse pues lo veo que son, ¿dónde está esto? 654 00:30:14,859 --> 00:30:19,400 lo veo que son tres paquetes independientes 655 00:30:19,400 --> 00:30:20,940 lo que es obligatorio 656 00:30:20,940 --> 00:30:22,859 eso sí es que el nombre de este arrastre 657 00:30:22,859 --> 00:30:24,180 toda la ruta de carpetas 658 00:30:24,180 --> 00:30:26,980 desde la raíz del proyecto, con el puntito 659 00:30:26,980 --> 00:30:30,900 y podría haber siete subcarpetas 660 00:30:30,900 --> 00:30:32,880 anidadas, el nombre del proyecto sería 661 00:30:32,880 --> 00:30:35,180 del paquete sería larguísimo 662 00:30:35,180 --> 00:30:37,059 papá, punto, papá, punto 663 00:30:37,059 --> 00:30:38,960 papá, papá, vale, pero no pasa nada 664 00:30:38,960 --> 00:30:40,599 es que en un proyecto real 665 00:30:40,599 --> 00:30:43,099 es así, si uno 666 00:30:43,099 --> 00:30:44,039 redespliega 667 00:30:44,039 --> 00:30:46,680 no os acordaréis, claro, el proyecto 668 00:30:46,680 --> 00:30:48,859 que desplegó Iván el otro día, que tenía un montón de paquetes 669 00:30:48,859 --> 00:30:51,079 algunos paquetes, tenía un nombre enorme 670 00:30:51,079 --> 00:30:52,380 porque 671 00:30:52,380 --> 00:30:54,579 estaban separados por un montón de puntos, porque eran muchas 672 00:30:54,579 --> 00:30:56,220 sus carpetas, ¿vale? 673 00:30:57,279 --> 00:30:58,839 vale, pues entonces 674 00:30:58,839 --> 00:31:00,859 ya tenemos esta organización de paquetes 675 00:31:00,859 --> 00:31:02,640 porque hemos querido hacerla así 676 00:31:02,640 --> 00:31:03,980 ahora 677 00:31:03,980 --> 00:31:06,740 ¿qué implicaciones tiene si yo desde mi 678 00:31:06,740 --> 00:31:07,940 main quiero hacer profesores? 679 00:31:08,640 --> 00:31:09,759 pues nos vamos al main 680 00:31:09,759 --> 00:31:12,720 esta aplicación, lo primero 681 00:31:12,720 --> 00:31:14,579 lo que quiere hacer es crear un objeto profesor. 682 00:31:15,640 --> 00:31:16,819 Venga, vamos a crear un objeto 683 00:31:16,819 --> 00:31:17,420 profesor. 684 00:31:19,039 --> 00:31:20,440 Y nosotros hasta ahora 685 00:31:20,440 --> 00:31:22,099 hemos actuado de esta manera. 686 00:31:23,720 --> 00:31:24,500 ¿No os has engañado? 687 00:31:25,200 --> 00:31:26,759 No os he engañado. Lo que pasa es que 688 00:31:26,759 --> 00:31:27,880 no os he dado toda la información. 689 00:31:28,680 --> 00:31:30,839 Bueno, entonces... 690 00:31:30,839 --> 00:31:32,319 A ver, en realidad no os he... 691 00:31:32,319 --> 00:31:34,220 Gracias. 692 00:31:34,940 --> 00:31:36,400 En realidad no os he engañado. Lo que pasa es que 693 00:31:36,400 --> 00:31:38,640 trabajamos en un único paquete, pues para no tener 694 00:31:38,640 --> 00:31:39,259 estos problemas. 695 00:31:40,640 --> 00:31:40,759 Bueno. 696 00:31:42,720 --> 00:31:44,480 Efectivamente, me dice 697 00:31:44,480 --> 00:31:46,079 ¿Qué error me dice? Me dice 698 00:31:46,079 --> 00:31:48,220 Uy, profesor no tengo 699 00:31:48,220 --> 00:31:50,259 Ni puñetera idea de a qué te refieres 700 00:31:50,259 --> 00:31:52,180 Con profesor, porque lo que 701 00:31:52,180 --> 00:31:54,339 Hace él es ir dentro del paquete 702 00:31:54,339 --> 00:31:55,519 En el que está, que es el main 703 00:31:55,519 --> 00:31:58,460 Y ahí en ese paquete main no ve a nadie que se llame profesor 704 00:31:58,460 --> 00:32:00,339 No ve a nadie 705 00:32:00,339 --> 00:32:02,140 Le decimos, tranquilo 706 00:32:02,140 --> 00:32:03,740 No te preocupes, es que yo 707 00:32:03,740 --> 00:32:05,500 Te he dado el nombre corto 708 00:32:05,500 --> 00:32:07,680 Dice 709 00:32:07,680 --> 00:32:09,359 Te he dado el nombre corto 710 00:32:09,359 --> 00:32:11,880 Y el nombre corto de la clase 711 00:32:11,880 --> 00:32:14,099 es válido solo cuando 712 00:32:14,099 --> 00:32:15,200 está en el mismo paquete. 713 00:32:16,039 --> 00:32:18,000 Como no está en el mismo paquete, dice, te voy a dar 714 00:32:18,000 --> 00:32:20,240 el nombre largo. ¿Y el nombre largo 715 00:32:20,240 --> 00:32:22,099 cuál es? Este es el nombre 716 00:32:22,099 --> 00:32:23,259 largo. ¿Vale? 717 00:32:24,359 --> 00:32:25,400 Entidades, uy. 718 00:32:27,759 --> 00:32:28,240 Punto 719 00:32:28,240 --> 00:32:29,779 profesor. ¿Vale? 720 00:32:30,799 --> 00:32:32,059 Este es el nombre largo. 721 00:32:34,220 --> 00:32:36,039 Vale. Pero me sigue 722 00:32:36,039 --> 00:32:38,180 diciendo. Ahora 723 00:32:38,180 --> 00:32:40,140 ya no me 724 00:32:40,140 --> 00:32:42,099 dice, no tengo ni idea de a quién te 725 00:32:42,099 --> 00:32:45,650 refieres. Ahora me dice 726 00:32:45,650 --> 00:32:47,569 otro mensaje. Ahora me dice, 727 00:32:47,690 --> 00:32:49,710 ya sé a quién te refieres, porque me has dado el nombre largo. 728 00:32:49,789 --> 00:32:50,809 Y el nombre largo es 729 00:32:50,809 --> 00:32:53,609 absolutamente unívoco. Ahora me dice, 730 00:32:53,789 --> 00:32:55,329 ojo, es que no es visible. 731 00:32:56,190 --> 00:32:56,829 No es visible. 732 00:32:57,990 --> 00:32:59,769 Vale. Pues venga, vámonos 733 00:32:59,769 --> 00:33:01,650 a profesor. ¿Qué es lo que 734 00:33:01,650 --> 00:33:03,589 tenemos que hacer? Lo primero 735 00:33:03,589 --> 00:33:05,150 y no último que tenemos que hacer. 736 00:33:06,410 --> 00:33:07,450 Poner el public. 737 00:33:08,970 --> 00:33:09,450 Vale. 738 00:33:10,109 --> 00:33:11,589 Hemos arreglado todos nuestros problemas. 739 00:33:11,710 --> 00:33:14,509 no, hemos arreglado este 740 00:33:14,509 --> 00:33:16,329 pero poner aquí 741 00:33:16,329 --> 00:33:18,470 el public, lo único que significa 742 00:33:18,470 --> 00:33:20,670 es que yo permito 743 00:33:20,670 --> 00:33:21,670 voy a permitir 744 00:33:21,670 --> 00:33:23,690 que esta clase sea usada 745 00:33:23,690 --> 00:33:26,349 pero que voy a permitir que sea usado 746 00:33:26,349 --> 00:33:28,309 lo que además especifique 747 00:33:28,309 --> 00:33:30,029 aquí uno por uno, es decir 748 00:33:30,029 --> 00:33:32,450 public no significa poner aquí public arriba 749 00:33:32,450 --> 00:33:34,349 que yo pueda usar todo lo que 750 00:33:34,349 --> 00:33:35,589 hay dentro según me dé la gana 751 00:33:35,589 --> 00:33:38,250 por ejemplo, aquí estoy usando 752 00:33:38,250 --> 00:33:38,829 el constructor 753 00:33:38,829 --> 00:33:42,170 el constructor tiene un public 754 00:33:42,170 --> 00:33:43,470 delante, no 755 00:33:43,470 --> 00:33:45,569 con lo cual no puedo usarlo 756 00:33:45,569 --> 00:33:47,789 entonces 757 00:33:47,789 --> 00:33:49,750 poner public delante de la clase 758 00:33:49,750 --> 00:33:52,089 es el primer paso 759 00:33:52,089 --> 00:33:53,769 pero luego yo ya adentro 760 00:33:53,769 --> 00:33:55,470 decido de todo lo que hay dentro 761 00:33:55,470 --> 00:33:57,950 que hago publico y que no, puedo decidir que solo 762 00:33:57,950 --> 00:33:59,789 sea publico el constructor y lo demás no 763 00:33:59,789 --> 00:34:01,730 puedo decidir lo que yo quiera 764 00:34:01,730 --> 00:34:03,730 hombre, pues si quiero instanciar un objeto 765 00:34:03,730 --> 00:34:05,710 el constructor va a tener que ser publico, no hay otra 766 00:34:05,710 --> 00:34:07,190 pues entonces ahora ya sí 767 00:34:07,190 --> 00:34:08,650 le ponemos un public 768 00:34:08,650 --> 00:34:10,030 vale 769 00:34:10,030 --> 00:34:12,269 entonces ahora ya el main se cayó 770 00:34:12,269 --> 00:34:14,809 porque ha encontrado tanto la referencia 771 00:34:14,809 --> 00:34:16,710 a la clase, ya la ha encontrado porque le hemos dado 772 00:34:16,710 --> 00:34:18,909 el nombre largo y ha encontrado 773 00:34:18,909 --> 00:34:20,250 que el constructor es público 774 00:34:20,250 --> 00:34:22,789 magnífico, pero claro 775 00:34:22,789 --> 00:34:24,690 ¿qué pasaría si nosotros 776 00:34:24,690 --> 00:34:26,710 quisiéramos ahora llamar al 777 00:34:26,710 --> 00:34:28,909 método de profesor 778 00:34:28,909 --> 00:34:30,510 mostrar nombre 779 00:34:30,510 --> 00:34:32,750 o como se llama el método 780 00:34:32,750 --> 00:34:35,130 es que no me lo ofrece 781 00:34:35,130 --> 00:34:36,650 porque no es público, claro, mostrar nombre 782 00:34:36,650 --> 00:34:39,230 ¿Qué pasa si yo quiero ahora 783 00:34:39,230 --> 00:34:40,489 Llamar a este método? 784 00:34:40,570 --> 00:34:42,630 Que es un método que tiene esa clase hecho ahí estupendo 785 00:34:42,630 --> 00:34:43,489 Para mostrar el nombre 786 00:34:43,489 --> 00:34:45,389 ¿Se puede? 787 00:34:46,550 --> 00:34:47,690 Pues que de nuevo 788 00:34:47,690 --> 00:34:50,070 De nuevo me dice el compilador 789 00:34:50,070 --> 00:34:50,670 ¡Ojo! 790 00:34:51,469 --> 00:34:53,349 Mostrar nombre no está visible 791 00:34:53,349 --> 00:34:56,010 Lo siento, pero mostrar nombre no está visible 792 00:34:56,010 --> 00:34:57,989 Entonces 793 00:34:57,989 --> 00:34:59,170 ¿Queremos 794 00:34:59,170 --> 00:35:02,110 ¿Queremos dar permiso 795 00:35:02,110 --> 00:35:04,150 A usar este método desde fuera? 796 00:35:04,389 --> 00:35:06,230 Sí, queremos dar permiso 797 00:35:06,230 --> 00:35:08,230 pues entonces le pongo un public 798 00:35:08,230 --> 00:35:09,969 entonces 799 00:35:09,969 --> 00:35:13,190 lo ultimito por recopilación solo 800 00:35:13,190 --> 00:35:14,329 recordad 801 00:35:14,329 --> 00:35:16,730 el public aquí delante de la clase 802 00:35:16,730 --> 00:35:19,329 significa que la referencia 803 00:35:19,329 --> 00:35:21,489 ahora he declarado una clase, a declararla la va a encontrar 804 00:35:21,489 --> 00:35:23,230 pero luego tú ya 805 00:35:23,230 --> 00:35:25,070 lo que puedas usar o no 806 00:35:25,070 --> 00:35:27,570 de métodos, de propiedades, dependerá del public 807 00:35:27,570 --> 00:35:29,550 por ejemplo, ¿qué pasa si yo 808 00:35:29,550 --> 00:35:30,710 quiero acceder directamente 809 00:35:30,710 --> 00:35:32,449 a la propiedad nombre? 810 00:35:32,989 --> 00:35:36,420 como hemos hecho hasta ahora 811 00:35:36,420 --> 00:35:39,059 yo quiero acceder directamente a la propiedad nombre 812 00:35:39,059 --> 00:35:39,900 directamente 813 00:35:39,900 --> 00:35:43,300 me dice, no, nombre no está visible 814 00:35:43,300 --> 00:35:44,500 ¿por qué? 815 00:35:44,719 --> 00:35:46,099 porque no tiene el public delante 816 00:35:46,099 --> 00:35:48,960 ¿quiero yo acceder desde el main 817 00:35:48,960 --> 00:35:50,480 directamente a la propiedad nombre? 818 00:35:51,000 --> 00:35:52,900 hombre, pues en este caso, en este ejemplo 819 00:35:52,900 --> 00:35:54,159 en concreto sería una tontería 820 00:35:54,159 --> 00:35:56,480 porque ya tengo un método que me muestra el nombre 821 00:35:56,480 --> 00:35:58,260 a lo mejor 822 00:35:58,260 --> 00:36:00,739 me interesa acceder para darle un valor 823 00:36:00,739 --> 00:36:02,940 por ejemplo, yo quiero 824 00:36:02,940 --> 00:36:05,000 acceder a la propiedad 825 00:36:05,000 --> 00:36:06,360 nombre para cambiárselo. 826 00:36:08,860 --> 00:36:10,900 Pues no podría. Tal y como está 827 00:36:10,900 --> 00:36:12,980 en la aplicación, no puedo. Porque la 828 00:36:12,980 --> 00:36:15,139 propiedad nombre no tiene el public delante. 829 00:36:15,219 --> 00:36:15,780 No es visible. 830 00:36:16,960 --> 00:36:19,079 Vale. Yo quiero acceder a la propiedad 831 00:36:19,079 --> 00:36:21,019 nombre. Pues 832 00:36:21,019 --> 00:36:21,960 le pongo el public. 833 00:36:23,659 --> 00:36:25,099 Ahora ya sí me deja. 834 00:36:25,960 --> 00:36:26,199 ¿Vale? 835 00:36:26,980 --> 00:36:28,260 Pedro, ¿qué ibas a preguntar? 836 00:36:28,559 --> 00:36:31,019 Nada. ¿He perdido 837 00:36:31,019 --> 00:36:31,559 la oportunidad? 838 00:36:32,599 --> 00:36:34,199 Pues nada. Es tu opinión. 839 00:36:35,000 --> 00:36:39,530 Vale, entonces 840 00:36:39,530 --> 00:36:41,050 ¿Necesitáis descansar? 841 00:36:42,150 --> 00:36:43,889 Vale, pues antes de descansar 842 00:36:43,889 --> 00:36:45,309 Ya lo último 843 00:36:45,309 --> 00:36:47,409 Y así os vais con el cuerpo más tranquilo 844 00:36:47,409 --> 00:36:49,349 Realmente 845 00:36:49,349 --> 00:36:51,550 Arrastrar el nombre largo de la clase 846 00:36:51,550 --> 00:36:52,550 Todo el rato es un rollo 847 00:36:52,550 --> 00:36:55,389 Porque imaginaos que ahora quiero yo hacer un secretario 848 00:36:55,389 --> 00:36:57,530 Me queda un pedazo de nombre 849 00:36:57,530 --> 00:36:59,610 Muy largo 850 00:36:59,610 --> 00:37:00,550 Entidades 851 00:37:00,550 --> 00:37:03,349 Punto secretaría 852 00:37:03,349 --> 00:37:05,550 Punto secretario 853 00:37:05,550 --> 00:37:18,539 secretario. Voy a ponerle public para que me deje. Vale, entonces, ¿que yo quiero declarar 854 00:37:18,539 --> 00:37:23,980 un secretario? Pues un nombre largo es que es muy largo, es larguísimo. ¿Y qué ocurre 855 00:37:23,980 --> 00:37:31,179 si tengo un paquete así de largo con 200.000 nombres separados por puntitos? ¿Qué ocurre? 856 00:37:31,179 --> 00:37:37,539 Pues que me queda ahí solamente para declararle el objeto, me queda una línea gigante. No 857 00:37:37,539 --> 00:37:39,440 pasa nada, lo puedo hacer, pero queda un poco 858 00:37:39,440 --> 00:37:41,400 feo. Entonces, la máquina 859 00:37:41,400 --> 00:37:43,380 virtual me dice, o Java 860 00:37:43,380 --> 00:37:45,480 en general, me dice, venga, te dejo 861 00:37:45,480 --> 00:37:47,380 un truquito, para no tener que estar 862 00:37:47,380 --> 00:37:49,300 arrastrando el nombre largo todo el rato, 863 00:37:49,500 --> 00:37:51,420 que es bastante recomendable, para no tener 864 00:37:51,420 --> 00:37:53,420 lo que está arrastrando, te dejo 865 00:37:53,420 --> 00:37:54,420 que hagas un import arriba. 866 00:37:55,059 --> 00:37:56,760 ¿Un import? 867 00:37:57,559 --> 00:37:58,860 Entonces, yo digo, a ver, 868 00:37:59,500 --> 00:38:01,519 yo quiero decir a la clase main, oye, clase 869 00:38:01,519 --> 00:38:03,420 main, cada vez que uses 870 00:38:03,420 --> 00:38:05,059 la palabra secretario, 871 00:38:05,059 --> 00:38:10,940 cada vez que use la palabra secretario 872 00:38:10,940 --> 00:38:13,260 me refiero al secretario 873 00:38:13,260 --> 00:38:14,480 de entidad de secretaría 874 00:38:14,480 --> 00:38:17,079 entonces, para no tener que verlo todo el rato 875 00:38:17,079 --> 00:38:19,000 no, dis no, le pones esto aquí 876 00:38:19,000 --> 00:38:21,059 delante, después del package 877 00:38:21,059 --> 00:38:21,840 que por otro no hemos dicho 878 00:38:21,840 --> 00:38:24,679 que siempre tiene que haber una línea package 879 00:38:24,679 --> 00:38:27,179 al principio del paquete, ponme aquí delante 880 00:38:27,179 --> 00:38:28,460 el nombre de la clase 881 00:38:28,460 --> 00:38:33,539 entidades.secretaria.secretario 882 00:38:33,539 --> 00:38:39,159 entonces poniendo este import 883 00:38:39,159 --> 00:38:41,659 ahora ya, cada vez que pongas 884 00:38:41,659 --> 00:38:42,599 secretario aquí 885 00:38:42,599 --> 00:38:45,480 él ya sabe que te refieres a este 886 00:38:45,480 --> 00:38:47,559 entonces poniendo 887 00:38:47,559 --> 00:38:49,559 esta línea no tienes que arrastrar todo el rato 888 00:38:49,559 --> 00:38:51,960 entidades.secretaria.secretario 889 00:38:51,960 --> 00:38:55,719 y también que no queremos arrastrar 890 00:38:55,719 --> 00:38:57,280 la entidad de profesor todo el rato 891 00:38:57,280 --> 00:38:59,099 que quiero yo trabajar con profesor solo 892 00:38:59,099 --> 00:39:01,679 pues podría hacer otro import 893 00:39:01,679 --> 00:39:03,039 e import hago los que me den la gana 894 00:39:03,039 --> 00:39:05,380 normalmente una clase normal pues tiene 895 00:39:05,380 --> 00:39:08,360 57 import, porque estás importando 896 00:39:08,360 --> 00:39:09,880 muchos paquetes de muchos sitios 897 00:39:09,880 --> 00:39:15,159 vale, si yo pongo el import 898 00:39:15,159 --> 00:39:17,320 pues entonces ya no me hace falta 899 00:39:17,320 --> 00:39:18,559 lo puedo poner, no sobra 900 00:39:18,559 --> 00:39:20,739 pero ya no me hace falta el nombre largo 901 00:39:20,739 --> 00:39:23,460 ya no me hace falta, pero porque he puesto 902 00:39:23,460 --> 00:39:24,780 el import, vale 903 00:39:24,780 --> 00:39:29,079 está claro, si yo no pongo el import 904 00:39:29,079 --> 00:39:30,820 tengo que poner 905 00:39:30,820 --> 00:39:31,559 el nombre largo 906 00:39:31,559 --> 00:39:35,159 que es el nombre con todo su prefijo 907 00:39:35,159 --> 00:39:43,940 del paquete, vale 908 00:39:43,940 --> 00:39:48,409 cuidado con los import 909 00:39:48,409 --> 00:39:50,909 porque imaginaos 910 00:39:50,909 --> 00:39:52,670 que en la clase main 911 00:39:52,670 --> 00:39:54,269 tengo una clase que se llama profesor 912 00:39:54,269 --> 00:39:56,630 y tengo otra 913 00:39:56,630 --> 00:39:57,789 que se llama profesor otro paquete 914 00:39:57,789 --> 00:40:01,010 no hay ningún problema, yo puedo tener perfectamente 915 00:40:01,010 --> 00:40:02,349 clases con el mismo nombre 916 00:40:02,349 --> 00:40:04,670 en la misma aplicación, con que estén en diferentes 917 00:40:04,670 --> 00:40:06,510 paquetes, porque como ya sabemos 918 00:40:06,510 --> 00:40:08,469 que el nombre real de la clase le acompaña 919 00:40:08,469 --> 00:40:10,670 el nombre de su paquete, los nombres van a ser 920 00:40:10,670 --> 00:40:12,789 distintos, puedo tener una clase profesor 921 00:40:12,789 --> 00:40:14,730 en este paquete y otra clase profesor 922 00:40:14,730 --> 00:40:16,590 en ese otro, perfectamente, y cada una tendrá 923 00:40:16,590 --> 00:40:17,730 su nombre largo distinto 924 00:40:17,730 --> 00:40:20,190 pues ¿qué ocurre si en esta clase main 925 00:40:20,190 --> 00:40:22,429 tengo yo una clase que se llama 926 00:40:22,429 --> 00:40:24,409 en este paquete, perdón, tengo una que se llama 927 00:40:24,409 --> 00:40:24,889 profesor 928 00:40:24,889 --> 00:40:28,409 justo, si yo no pongo el apellido este 929 00:40:28,409 --> 00:40:30,190 pongo profesor 930 00:40:30,190 --> 00:40:32,610 él va a asumir que te refieres 931 00:40:32,610 --> 00:40:34,650 a la que está en el paquete y no va a mirar el import 932 00:40:34,650 --> 00:40:36,030 no va a mirar el import 933 00:40:36,030 --> 00:40:38,429 y a lo mejor tú te crees porque has puesto 934 00:40:38,429 --> 00:40:38,889 el import 935 00:40:38,889 --> 00:40:41,789 te crees que se está refiriendo 936 00:40:41,789 --> 00:40:43,969 al profesor de este paquete 937 00:40:43,969 --> 00:40:46,409 y no, se refiere al profesor 938 00:40:46,409 --> 00:40:48,110 que está en el paquete en el que estás tú. 939 00:40:48,369 --> 00:40:49,409 Es la primera que mira. 940 00:40:50,050 --> 00:40:50,789 La primera que mira. 941 00:40:51,869 --> 00:40:54,090 Entonces, cuidado con si hay clases 942 00:40:54,090 --> 00:40:55,070 que se llaman igual. 943 00:40:56,230 --> 00:40:57,489 Cuidado, ¿vale? 944 00:41:04,179 --> 00:41:06,039 Entonces, si tienes clases 945 00:41:06,039 --> 00:41:07,059 que se llaman igual, 946 00:41:07,300 --> 00:41:09,360 llámalas a todas, 947 00:41:09,760 --> 00:41:10,500 dándole el nombre. 948 00:41:10,500 --> 00:41:10,739 Entonces, 949 00:41:11,019 --> 00:41:14,500 si yo pongo aquí entidades profesor, 950 00:41:14,679 --> 00:41:15,719 no hay ninguna confusión. 951 00:41:16,579 --> 00:41:17,820 Si pongo entidades profesor, 952 00:41:17,820 --> 00:41:19,920 sé que se va a referir a esa. Entonces, a veces 953 00:41:19,920 --> 00:41:21,619 el nombre largo es imprescindible 954 00:41:21,619 --> 00:41:23,559 porque es la única forma de decirle exactamente 955 00:41:23,559 --> 00:41:25,699 es que quiero esta. No quiero la 956 00:41:25,699 --> 00:41:27,599 que está en el mismo paquete tuyo. Quiero 957 00:41:27,599 --> 00:41:29,840 esa. Pues no es el importe 958 00:41:29,840 --> 00:41:31,619 en ese caso la manera, sino exponiendo 959 00:41:31,619 --> 00:41:35,579 su nombre real. Bueno, hasta aquí 960 00:41:35,579 --> 00:41:37,400 que es la pequeña introducción 961 00:41:37,400 --> 00:41:39,219 más o menos. Pues entonces 962 00:41:39,219 --> 00:41:41,340 paramos, vale. Lo de levantar la 963 00:41:41,340 --> 00:41:43,159 mano era el descansito. Un segundísimo.