1 00:00:00,000 --> 00:00:09,359 Bueno, pues con lo que nos hemos despedido antes está claro, ¿no? 2 00:00:11,019 --> 00:00:14,740 Entonces, ¿ves que estas variables de aquí? 3 00:00:17,079 --> 00:00:17,719 Silencio. 4 00:00:20,989 --> 00:00:21,890 En la interfaz... 5 00:00:21,890 --> 00:00:23,789 A ver, callaos. 6 00:00:25,469 --> 00:00:26,769 Y guárdate la comida. 7 00:00:33,899 --> 00:00:36,880 vale, entonces esta variable 8 00:00:36,880 --> 00:00:37,579 que está aquí 9 00:00:37,579 --> 00:00:40,600 bueno, pues 10 00:00:40,600 --> 00:00:42,979 efectivamente la podemos usar como variable 11 00:00:42,979 --> 00:00:43,539 estática 12 00:00:43,539 --> 00:00:45,840 desde cualquier sitio 13 00:00:45,840 --> 00:00:48,560 llamándola simplemente con el nombre de la clase 14 00:00:48,560 --> 00:00:50,899 vale, podríamos haber ubicado ahí 15 00:00:50,899 --> 00:00:52,399 una variable que nos interese 16 00:00:52,399 --> 00:00:54,159 pues para hacer cualquier cosa 17 00:00:54,159 --> 00:00:56,820 yo que sé, vale, entonces podemos llamarla 18 00:00:56,820 --> 00:00:57,500 sin problema 19 00:00:57,500 --> 00:01:05,620 veis, aquí se puede usar esta variable 20 00:01:05,620 --> 00:01:06,819 pues para lo que sea 21 00:01:06,819 --> 00:01:35,120 a ver 22 00:01:35,120 --> 00:01:37,239 Andrés vente aquí al lado 23 00:01:37,239 --> 00:01:39,120 venga 24 00:01:39,120 --> 00:01:46,359 bueno pues las interfaces 25 00:01:46,359 --> 00:01:48,040 muchas veces a veces son 26 00:01:48,040 --> 00:01:50,500 contenedores 27 00:01:50,500 --> 00:01:52,439 de datos 28 00:01:52,439 --> 00:01:53,200 estáticos 29 00:01:53,200 --> 00:01:56,540 que están asociados a lo mejor a un concepto 30 00:01:56,540 --> 00:01:58,140 por ejemplo podría haber una 31 00:01:58,140 --> 00:02:00,200 interfaz math. En este caso hay una 32 00:02:00,200 --> 00:02:02,200 clase math. Vale, pero podría haber una interfaz 33 00:02:02,200 --> 00:02:03,879 math. Tú tampoco puedes comer, ¿eh? 34 00:02:05,420 --> 00:02:06,120 Pues, hombre, 35 00:02:07,620 --> 00:02:08,060 no sé 36 00:02:08,060 --> 00:02:10,159 si es para hablar, sí, pero si no, no se 37 00:02:10,159 --> 00:02:11,319 debe mover la boca en clase. 38 00:02:16,259 --> 00:02:16,680 Venga. 39 00:02:18,379 --> 00:02:19,960 Vale, pues a veces las interfaces 40 00:02:19,960 --> 00:02:22,099 pueden ser contenedores de datos estáticos 41 00:02:22,099 --> 00:02:23,919 que viene bien ubicarlos ahí. 42 00:02:24,400 --> 00:02:25,780 O sea, las variables globales 43 00:02:25,780 --> 00:02:27,919 en Java, como sabéis, no existen. 44 00:02:28,060 --> 00:02:29,620 Tienen que estar siempre en algún sitio. 45 00:02:29,900 --> 00:02:32,319 dentro de una clase tienen que estar siempre 46 00:02:32,319 --> 00:02:33,340 las variables, siempre 47 00:02:33,340 --> 00:02:35,060 no hay variables sueltas 48 00:02:35,060 --> 00:02:38,199 entonces cuando hay una información 49 00:02:38,199 --> 00:02:40,060 que tengo que ubicarla yo en algún sitio 50 00:02:40,060 --> 00:02:42,020 pero no es una información 51 00:02:42,020 --> 00:02:44,699 que caracterice a un objeto en particular 52 00:02:44,699 --> 00:02:46,039 y lo distinga de los demás 53 00:02:46,039 --> 00:02:47,740 sino es una información global 54 00:02:47,740 --> 00:02:49,039 que puedan usar muchos 55 00:02:49,039 --> 00:02:52,300 pues no me queda más remedio que guardarla en variables estáticas 56 00:02:52,300 --> 00:02:54,199 como ya sabemos, porque las variables estáticas 57 00:02:54,199 --> 00:02:55,699 es el sitio para guardar 58 00:02:55,699 --> 00:02:58,580 información que es común 59 00:02:58,580 --> 00:03:00,759 para todos los objetos de una clase 60 00:03:00,759 --> 00:03:02,080 que no depende del objeto 61 00:03:02,080 --> 00:03:04,620 bueno, ahí me vale, porque como Moisés en un ratín va a ir ahí 62 00:03:04,620 --> 00:03:05,840 pues ahí le dejamos el sitio 63 00:03:05,840 --> 00:03:07,879 ¿vale? 64 00:03:08,960 --> 00:03:10,180 entonces, por ejemplo 65 00:03:10,180 --> 00:03:12,699 la clase 66 00:03:12,699 --> 00:03:13,719 math esta de Java 67 00:03:13,719 --> 00:03:16,680 es una interfaz 68 00:03:16,680 --> 00:03:18,639 entonces no es 69 00:03:18,639 --> 00:03:20,360 un buen ejemplo, pero 70 00:03:20,360 --> 00:03:22,719 a ver, un momentito 71 00:03:22,719 --> 00:03:24,120 si encontramos en 72 00:03:24,120 --> 00:03:28,719 rápidamente aquí, en el paquete 73 00:03:28,719 --> 00:03:30,699 java lang 74 00:03:30,699 --> 00:03:35,629 aquí en el eclipse las que son interfaces 75 00:03:35,629 --> 00:03:37,949 aparecen con una i delante 76 00:03:37,949 --> 00:03:38,590 en vez de una j 77 00:03:38,590 --> 00:03:39,949 ¿veis? 78 00:03:41,169 --> 00:03:42,889 en todas estas aparece una j aquí 79 00:03:42,889 --> 00:03:44,250 eso es que son clases 80 00:03:44,250 --> 00:03:46,669 si fueran interfaces aparecerían con una i 81 00:03:46,669 --> 00:03:49,449 entonces voy a buscar a ver si encontramos 82 00:03:49,449 --> 00:03:51,449 alguna aquí de la librería estándar de java 83 00:03:51,449 --> 00:03:53,449 para que 84 00:03:54,090 --> 00:04:03,389 nada, no son todas clases 85 00:04:03,389 --> 00:04:10,490 sí, lo que pasa es que quería una 86 00:04:10,490 --> 00:04:12,610 que tuviera variables 87 00:04:12,610 --> 00:04:13,969 que tuvieran un sentido para nosotros 88 00:04:13,969 --> 00:04:16,610 pero bueno, da igual 89 00:04:16,610 --> 00:04:35,360 se me ha ido la M 90 00:04:35,360 --> 00:04:37,120 aquí 91 00:04:37,120 --> 00:04:51,870 vale, esta clase, esta de aquí 92 00:04:51,870 --> 00:04:53,930 que es la clase math, que ya la hemos abierto a veces 93 00:04:53,930 --> 00:04:54,730 y usado a veces 94 00:04:54,730 --> 00:04:58,329 vale, pues incorpora esa idea 95 00:04:58,329 --> 00:05:00,850 incorpora la idea de, oye, hay datos 96 00:05:00,850 --> 00:05:02,449 hay datos que 97 00:05:02,449 --> 00:05:05,050 a lo mejor le interesa usar a cualquier aplicación 98 00:05:05,050 --> 00:05:06,529 como el número e 99 00:05:06,529 --> 00:05:08,689 para hacer las exponenciales 100 00:05:08,689 --> 00:05:10,110 como el número pi 101 00:05:10,110 --> 00:05:12,329 como la constante tau 102 00:05:12,329 --> 00:05:14,589 ¿vale? entonces 103 00:05:14,589 --> 00:05:16,569 la constante para cambiar 104 00:05:16,569 --> 00:05:19,209 grados a radianes 105 00:05:19,209 --> 00:05:21,069 ¿no? la unidad de medida de ángulos 106 00:05:21,069 --> 00:05:22,689 que puede ser grados o radianes 107 00:05:22,689 --> 00:05:24,970 entonces, hay datos 108 00:05:24,970 --> 00:05:26,889 que a lo mejor le puede interesar a cualquier aplicación 109 00:05:26,889 --> 00:05:28,930 donde los ubico, es que tienen que ir dentro 110 00:05:28,930 --> 00:05:31,310 de clases, no pueden ir a otro sitio, tienen que ir dentro de clases 111 00:05:31,310 --> 00:05:32,910 bueno, vale 112 00:05:32,910 --> 00:05:34,949 pues los ubico dentro de clases pero como variables 113 00:05:34,949 --> 00:05:36,949 estáticas, para que quede claro 114 00:05:36,949 --> 00:05:38,889 que no describen a ningún objeto 115 00:05:38,889 --> 00:05:40,810 en particular, no sirven para describir 116 00:05:40,810 --> 00:05:41,490 a ningún objeto 117 00:05:41,490 --> 00:05:44,430 simplemente incorporan datos 118 00:05:44,430 --> 00:05:47,189 que se puede acceder en cualquier momento 119 00:05:47,189 --> 00:05:49,209 sin más que nombre de la clase 120 00:05:49,209 --> 00:05:50,410 punto constante 121 00:05:50,410 --> 00:05:52,949 en cualquier momento, no hace falta que exista ni un objeto 122 00:05:52,949 --> 00:05:55,110 ni nada, esa es la utilidad 123 00:05:55,110 --> 00:05:56,230 de las variables estáticas 124 00:05:56,230 --> 00:05:59,389 meter ahí una información que puede usar cualquiera 125 00:05:59,389 --> 00:06:00,490 porque es interesante 126 00:06:00,490 --> 00:06:03,769 sin más que poner nombre de la clase 127 00:06:03,769 --> 00:06:05,050 punto nombre de propiedad 128 00:06:05,050 --> 00:06:08,069 no tiene que existir ningún objeto 129 00:06:08,069 --> 00:06:09,990 porque es que esas variables 130 00:06:09,990 --> 00:06:12,050 esas propiedades no identifican a objetos 131 00:06:12,050 --> 00:06:14,889 ese es el uso de las variables estáticas 132 00:06:14,889 --> 00:06:17,149 y son imprescindibles de hecho 133 00:06:17,149 --> 00:06:18,509 para reflejar eso 134 00:06:18,509 --> 00:06:20,670 lo que pasa es que claro 135 00:06:20,670 --> 00:06:22,310 como tienen que estar dentro de una clase 136 00:06:22,310 --> 00:06:24,709 pues hombre la idea es que uno decida 137 00:06:24,709 --> 00:06:26,629 ubicarlas en las clases donde 138 00:06:26,629 --> 00:06:28,850 al menos están relacionadas 139 00:06:28,850 --> 00:06:30,649 por concepto, hombre pues las 140 00:06:30,649 --> 00:06:32,629 constantes matemáticas están relacionadas con las 141 00:06:32,629 --> 00:06:34,730 matemáticas, pues vamos a meterlas en una 142 00:06:34,730 --> 00:06:35,350 clase más 143 00:06:35,350 --> 00:06:38,569 vale, entonces esto en particular 144 00:06:38,569 --> 00:06:40,850 no es una interfaz sino que es una clase 145 00:06:40,850 --> 00:06:42,970 porque además nos da métodos 146 00:06:42,970 --> 00:06:44,829 además nos da métodos para hacer cosas 147 00:06:44,829 --> 00:06:46,550 como el seno, el coseno, el random 148 00:06:46,550 --> 00:06:48,370 el no se que, nos da métodos, entonces es una clase 149 00:06:48,370 --> 00:06:50,350 no es una interfaz porque nos da métodos hechos 150 00:06:50,350 --> 00:06:52,870 pero perfectamente una interfaz 151 00:06:52,870 --> 00:06:54,870 podría ser también un contenedor 152 00:06:54,870 --> 00:06:56,089 de variables estáticas 153 00:06:56,089 --> 00:06:57,670 podría serlo también 154 00:06:57,670 --> 00:07:00,829 y sería un uso perfectamente para 155 00:07:00,829 --> 00:07:02,910 o sea, yo tengo un montón de datos 156 00:07:02,910 --> 00:07:04,589 que no identifican un objeto 157 00:07:04,589 --> 00:07:06,750 sino son datos que interesan 158 00:07:06,750 --> 00:07:07,490 a mi aplicación 159 00:07:07,490 --> 00:07:10,290 que están relacionados 160 00:07:10,290 --> 00:07:12,569 con no sé qué proceso de conversión 161 00:07:12,569 --> 00:07:14,689 de algo, pues me hago una interfaz 162 00:07:14,689 --> 00:07:16,269 y meto ahí esas variables 163 00:07:16,269 --> 00:07:18,490 estáticas y ya puedo acceder 164 00:07:18,490 --> 00:07:20,269 a ellas perfectamente con nombre de la 165 00:07:20,269 --> 00:07:21,769 interfaz, nombre de la propiedad 166 00:07:21,769 --> 00:07:24,610 como he accedido aquí en particular a esta 167 00:07:24,610 --> 00:07:26,290 ¿vale? 168 00:07:27,750 --> 00:07:29,110 entonces también las interfaces 169 00:07:29,110 --> 00:07:30,949 pueden servirnos en un momento dado 170 00:07:30,949 --> 00:07:33,110 dentro de nuestro diseño para eso, ser contenedores 171 00:07:33,110 --> 00:07:34,990 de variables estáticas que incorporan datos 172 00:07:34,990 --> 00:07:37,230 que son independientes 173 00:07:37,230 --> 00:07:39,389 de los objetos pero me sirven ahí para hacer cosas 174 00:07:39,389 --> 00:07:42,459 ¿vale? y 175 00:07:42,459 --> 00:07:43,839 el otro uso 176 00:07:43,839 --> 00:07:46,819 es este que hemos dicho antes de irnos 177 00:07:46,819 --> 00:07:48,819 generar 178 00:07:48,819 --> 00:07:50,379 una especie de plantilla 179 00:07:50,379 --> 00:07:51,980 vacía de comportamiento 180 00:07:51,980 --> 00:07:54,019 cosas que hay que hacer 181 00:07:54,019 --> 00:07:56,399 aquellos objetos 182 00:07:56,399 --> 00:07:58,079 que lo implementen, cosas que hay que hacer 183 00:07:58,079 --> 00:07:59,759 recoger un comportamiento 184 00:07:59,759 --> 00:08:00,800 esa es su 185 00:08:00,800 --> 00:08:03,779 función principal 186 00:08:03,779 --> 00:08:06,259 vale, pues nosotros 187 00:08:06,259 --> 00:08:07,819 podemos incluirlos en nuestro diseño 188 00:08:07,819 --> 00:08:09,779 como lo hemos incluido ahora 189 00:08:09,779 --> 00:08:12,579 como tenemos empleados que pueden ser despedidos 190 00:08:12,579 --> 00:08:14,160 pero no son todos 191 00:08:14,160 --> 00:08:15,939 pues me hago yo una interfaz 192 00:08:15,939 --> 00:08:18,259 y solamente heredan de la interfaz despedible 193 00:08:18,259 --> 00:08:20,420 los que puedan ser despedidos, los otros no, etc 194 00:08:20,420 --> 00:08:37,419 Bueno, pues ya están los 5 planes de su diseño. Pero claro, también nos podemos aprovechar de interfaces que ya están hechas en la librería que nos viene en los proyectos cada vez que creamos uno. 195 00:08:37,419 --> 00:08:39,340 Cada vez que creamos uno 196 00:08:39,340 --> 00:08:41,500 Como ya hemos dicho muchas veces 197 00:08:41,500 --> 00:08:42,779 Nos viene todo esto 198 00:08:42,779 --> 00:08:47,529 Nos vienen todas estas clases 199 00:08:47,529 --> 00:08:49,529 Todas las que están aquí 200 00:08:49,529 --> 00:08:51,850 Y hay tropecientas mil 201 00:08:51,850 --> 00:08:53,110 En cada uno de estos jar 202 00:08:53,110 --> 00:08:54,389 Porque cada uno de esos es un jar 203 00:08:54,389 --> 00:08:57,350 En cada uno de ellos hay tropecientos mil paquetes 204 00:08:57,350 --> 00:09:00,230 Y en cada paquete hay tropecientas mil clases 205 00:09:00,230 --> 00:09:02,129 Y así en todos estos jar 206 00:09:02,129 --> 00:09:03,070 O sea, aquí hay 207 00:09:03,070 --> 00:09:04,570 De todo 208 00:09:04,570 --> 00:09:06,929 ¿Vale? De todo 209 00:09:06,929 --> 00:09:11,909 bueno, pues toda esta librería virtual 210 00:09:11,909 --> 00:09:13,909 toda esta librería de la máquina virtual 211 00:09:13,909 --> 00:09:15,590 está ya diseñada 212 00:09:15,590 --> 00:09:17,850 con esta arquitectura de interfaces 213 00:09:17,850 --> 00:09:19,570 de clases abstractas 214 00:09:19,570 --> 00:09:21,850 que yo puedo poco a poco 215 00:09:21,850 --> 00:09:23,850 ir incorporando, ir aprovechándome 216 00:09:23,850 --> 00:09:25,309 de ella, e irla utilizando 217 00:09:25,309 --> 00:09:27,889 por ejemplo, para que lo 218 00:09:27,889 --> 00:09:31,700 entendamos, vamos a hacer 219 00:09:31,700 --> 00:09:33,980 otro proyecto distinto, esto de las interfaces 220 00:09:33,980 --> 00:09:35,840 aparte de un 221 00:09:35,840 --> 00:09:38,059 par de cositas que incorporamos 222 00:09:38,059 --> 00:09:39,120 luego al final para no liar. 223 00:09:40,200 --> 00:09:42,000 Esto está claro, ¿no? Lo que es una interfaz 224 00:09:42,000 --> 00:09:43,659 y qué sentido tiene 225 00:09:43,659 --> 00:09:45,940 incluirlas en nuestro diseño y luego 226 00:09:45,940 --> 00:09:48,100 cómo se usan. Pues se usan 227 00:09:48,100 --> 00:09:48,919 como hemos visto. 228 00:09:50,440 --> 00:09:51,960 Puedes declarar una variable 229 00:09:51,960 --> 00:09:54,279 de tipo interfaz y luego instancias, lo que quieras. 230 00:09:55,360 --> 00:09:55,940 Bueno, pues esto 231 00:09:55,940 --> 00:09:57,460 está claro, vamos a cerrar este proyecto. 232 00:10:01,580 --> 00:10:03,220 Vale, y ahora vamos a hacernos un proyecto nuevo 233 00:10:03,220 --> 00:10:05,259 para poner un ejemplo. Vamos a usar 234 00:10:05,259 --> 00:10:06,879 ahora interfaces que ya están hechas 235 00:10:06,879 --> 00:10:09,220 en mi máquina virtual y vamos a 236 00:10:09,220 --> 00:10:11,419 servirnos de ese mecanismo. De ese mecanismo 237 00:10:11,419 --> 00:10:12,559 que hemos incorporado aquí 238 00:10:12,559 --> 00:10:15,139 y que parece que puede ser útil. 239 00:10:17,100 --> 00:10:17,340 Venga, 240 00:10:17,440 --> 00:10:18,639 pues lo voy a llamar a este 241 00:10:18,639 --> 00:10:20,320 ejemplo comparable. 242 00:10:23,019 --> 00:10:23,379 Comparable. 243 00:10:24,559 --> 00:10:24,860 Vale. 244 00:10:29,350 --> 00:10:30,049 Bueno, pues 245 00:10:30,049 --> 00:10:32,769 vamos a hacer una aplicación 246 00:10:32,769 --> 00:10:34,149 que gestione alumnos. 247 00:10:35,590 --> 00:10:35,690 ¿Vale? 248 00:10:41,090 --> 00:10:41,490 Entonces, 249 00:10:41,610 --> 00:10:42,909 si va a gestionar alumnos, bueno, 250 00:10:42,909 --> 00:10:45,570 vale, me valdría cualquier cosa 251 00:10:45,570 --> 00:10:47,809 pero bueno, es lo primero que me va a venir a la cabeza 252 00:10:47,809 --> 00:10:50,820 entonces si va a gestionar 253 00:10:50,820 --> 00:10:52,879 alumnos, pues una entidad alumno 254 00:10:52,879 --> 00:10:53,899 no hay otra, lo de siempre 255 00:10:53,899 --> 00:10:56,879 si mi aplicación gestiona mesas, pues una entidad mesa 256 00:10:56,879 --> 00:10:58,980 si gestiona ventanas, pues una entidad 257 00:10:58,980 --> 00:11:00,860 ventana, pues gestiona 258 00:11:00,860 --> 00:11:02,240 alumnos, pues una entidad alumno 259 00:11:02,240 --> 00:11:06,230 y aquí 260 00:11:06,230 --> 00:11:08,730 pues nada 261 00:11:08,730 --> 00:11:11,590 después de analizar el problema 262 00:11:11,590 --> 00:11:12,450 uno decide 263 00:11:12,450 --> 00:11:15,789 que propiedades son las que le interesan 264 00:11:15,789 --> 00:11:19,309 pues imaginamos que fuera esta 265 00:11:19,309 --> 00:11:21,029 y también nos interesa 266 00:11:21,029 --> 00:11:25,539 la nota 267 00:11:25,539 --> 00:11:26,740 entera, sin decimales 268 00:11:26,740 --> 00:11:29,740 de esta aplicación que genera alumnos 269 00:11:29,740 --> 00:11:31,519 solo nos hace falta saber 270 00:11:31,519 --> 00:11:32,820 NIF, nombre y nota 271 00:11:32,820 --> 00:11:35,019 no queremos saber nada más de los alumnos 272 00:11:35,019 --> 00:11:37,259 porque todas las funcionalidades están relacionadas 273 00:11:37,259 --> 00:11:39,059 con su NIF, su nombre y su nota, solamente 274 00:11:39,059 --> 00:11:40,919 pues entonces son las propiedades que hay que meter 275 00:11:40,919 --> 00:11:43,399 ¿vale? no se meten propiedades 276 00:11:43,399 --> 00:11:45,299 que están de más y que sobran, no 277 00:11:45,299 --> 00:11:47,559 solo las propiedades relacionadas 278 00:11:47,559 --> 00:11:49,980 con las tareas que va a hacer la aplicación 279 00:11:49,980 --> 00:11:53,019 vale, pues nada 280 00:11:53,019 --> 00:11:54,899 como de costumbre haríamos 281 00:11:54,899 --> 00:12:01,340 los constructores 282 00:12:01,340 --> 00:12:12,139 y 283 00:12:12,139 --> 00:12:14,299 Getty Set 284 00:12:14,299 --> 00:12:15,799 pues tres Getty Set 285 00:12:15,799 --> 00:12:19,450 tres pares 286 00:12:19,450 --> 00:12:25,919 vale 287 00:12:25,919 --> 00:12:27,799 pues entonces, ahora 288 00:12:27,799 --> 00:12:30,539 ya está, una aplicación que va a gestionar 289 00:12:30,539 --> 00:12:31,700 solamente alumnos 290 00:12:31,700 --> 00:12:34,019 con esas tres propiedades, luego 291 00:12:34,019 --> 00:12:36,879 no hay que hacer más entidades, es una aplicación muy sencilla 292 00:12:36,879 --> 00:12:38,700 que va a trabajar con alumnos 293 00:12:38,700 --> 00:12:40,279 y les va a poner notas y todo eso 294 00:12:40,279 --> 00:12:42,419 bueno, pues a ver 295 00:12:42,419 --> 00:12:44,580 por ejemplo, ahora hacemos 296 00:12:44,580 --> 00:12:54,279 nuestro main, vale 297 00:12:54,279 --> 00:12:56,639 esta ya es nuestra aplicación que gestiona a los alumnos 298 00:12:56,639 --> 00:12:57,740 entonces 299 00:12:57,740 --> 00:13:00,659 los alumnos 300 00:13:00,659 --> 00:13:02,240 con los que trabaja 301 00:13:02,240 --> 00:13:04,379 ¿dónde están? lo de siempre 302 00:13:04,379 --> 00:13:06,620 normalmente estarán en una base de datos 303 00:13:06,620 --> 00:13:07,559 normalmente 304 00:13:07,559 --> 00:13:10,320 pero para trabajar con ellos los tenemos 305 00:13:10,320 --> 00:13:11,240 que volcar 306 00:13:11,240 --> 00:13:13,240 a variables de la aplicación 307 00:13:13,240 --> 00:13:16,240 y cuando ya están en variables de la aplicación 308 00:13:16,240 --> 00:13:17,700 uno ya puede trabajar con ellos 309 00:13:17,700 --> 00:13:20,399 mientras no estén volcados en variables de la aplicación 310 00:13:20,399 --> 00:13:21,600 no se puede trabajar con ellos 311 00:13:21,600 --> 00:13:24,059 la parte de volcar 312 00:13:24,059 --> 00:13:25,899 de la base de datos a variables de la aplicación 313 00:13:25,899 --> 00:13:28,240 no la sabemos hacer, con lo cual vamos a asumir 314 00:13:28,240 --> 00:13:29,779 que ya directamente tengo los alumnos 315 00:13:29,779 --> 00:13:32,000 volcados en variables de mi aplicación 316 00:13:32,000 --> 00:13:33,679 ¿dónde? como son muchos 317 00:13:33,679 --> 00:13:36,100 pues por ahora un array 318 00:13:36,100 --> 00:13:38,759 ¿dónde vamos a meterlo? 319 00:13:38,960 --> 00:13:39,899 vale, para variar 320 00:13:39,899 --> 00:13:46,059 vamos a incluir otra clase 321 00:13:46,059 --> 00:13:52,529 que va a estar solamente para guardar 322 00:13:52,529 --> 00:13:56,129 los alumnos, para guardar los datos de mi aplicación 323 00:13:56,129 --> 00:13:59,190 que son los alumnos, sería el repositorio de datos 324 00:13:59,190 --> 00:14:02,169 el repositorio, pues venga, vamos a llamarlo así 325 00:14:02,169 --> 00:14:04,169 repositorio 326 00:14:04,169 --> 00:14:07,490 entendiendo repositorio 327 00:14:07,490 --> 00:14:10,950 como algo donde hay datos, eso es un repositorio en general 328 00:14:10,950 --> 00:14:14,830 un repositorio es un sitio donde yo puedo ir a coger datos 329 00:14:14,830 --> 00:14:17,090 eso es un repositorio 330 00:14:17,090 --> 00:14:19,289 bueno, pues vamos a llamar a esta clase repositorio 331 00:14:19,289 --> 00:14:23,070 vale, esto es por meter 332 00:14:23,070 --> 00:14:24,370 yo que sé, diferentes cosas 333 00:14:24,370 --> 00:14:28,870 bueno, pues esta clase, su objetivo va a ser que estén ahí 334 00:14:28,870 --> 00:14:30,149 los datos de la aplicación 335 00:14:30,149 --> 00:14:34,649 los datos de la aplicación con los que va a trabajar hemos dicho que es 336 00:14:34,649 --> 00:14:36,309 unos cuantos alumnos 337 00:14:36,309 --> 00:14:40,250 bueno, pues entonces los datos de la aplicación que van a estar aquí 338 00:14:40,250 --> 00:14:40,950 va a ser 339 00:14:40,950 --> 00:14:44,289 un array de objetos 340 00:14:44,289 --> 00:14:49,509 alumno, ala 341 00:14:49,509 --> 00:14:53,220 inicialmente de nuevo 342 00:14:53,220 --> 00:14:54,460 para lo de siempre 343 00:14:54,460 --> 00:14:57,159 para evitar 344 00:14:57,159 --> 00:14:59,039 los null pointer 345 00:14:59,039 --> 00:15:01,059 exception, vamos a dejarlo 346 00:15:01,059 --> 00:15:02,600 instanciado con tamaño 0 347 00:15:02,600 --> 00:15:04,940 y ya está, y según vayan llegando alumnos 348 00:15:04,940 --> 00:15:06,600 vale 349 00:15:06,600 --> 00:15:11,899 bueno, entonces 350 00:15:11,899 --> 00:15:13,539 siguiente cosa que podemos ir haciendo 351 00:15:13,539 --> 00:15:15,340 para ir dejando esta aplicación un poco más bonita 352 00:15:15,340 --> 00:15:16,600 para irla dejando un poco más bonita 353 00:15:16,600 --> 00:15:20,480 solamente va a haber en toda mi aplicación 354 00:15:20,480 --> 00:15:22,559 solamente va a haber un conjunto de alumnos 355 00:15:22,559 --> 00:15:23,799 que es este, solo va a haber uno 356 00:15:23,799 --> 00:15:26,759 entonces, si solo va a haber uno 357 00:15:26,759 --> 00:15:28,940 pues por ejemplo 358 00:15:28,940 --> 00:15:31,220 puedo añadir un modificador a esta variable 359 00:15:31,220 --> 00:15:31,799 que sea 360 00:15:31,799 --> 00:15:34,100 static 361 00:15:34,100 --> 00:15:36,879 y aquí pegaría y tendría mucho sentido 362 00:15:36,879 --> 00:15:40,500 ¿vale? 363 00:15:41,659 --> 00:15:42,740 solamente voy a tener 364 00:15:42,740 --> 00:15:45,440 un array de alumnos en toda mi aplicación 365 00:15:45,440 --> 00:15:47,200 con el que van a trabajar el main 366 00:15:47,200 --> 00:15:49,480 y los que quieran trabajar con ese array de alumnos 367 00:15:49,480 --> 00:15:51,299 no es que vaya a haber 368 00:15:51,299 --> 00:15:53,779 muchos objetos repositorio 369 00:15:53,779 --> 00:15:55,960 y cada repositorio con su array de alumnos 370 00:15:55,960 --> 00:15:57,679 podría ser 371 00:15:57,679 --> 00:15:59,679 pero no es el diseño que estamos planteando 372 00:15:59,679 --> 00:16:01,059 estoy haciendo esto a propósito 373 00:16:01,059 --> 00:16:03,899 porque es uno de los muchos patrones de diseño que hay 374 00:16:03,899 --> 00:16:05,879 este es uno que es el patrón 375 00:16:05,879 --> 00:16:07,039 repositorio que se llama 376 00:16:07,039 --> 00:16:09,659 que es habitual, que es tu aplicación trabaja con datos 377 00:16:09,659 --> 00:16:11,600 ahí están tus datos 378 00:16:11,600 --> 00:16:13,379 esos son, y eso, solo eso, los únicos 379 00:16:13,379 --> 00:16:15,980 y ahora esos datos tienes que meterlos en algún sitio 380 00:16:15,980 --> 00:16:18,179 pues los metes en una clase 381 00:16:18,179 --> 00:16:20,019 cuya única función es 382 00:16:20,019 --> 00:16:21,480 tener ahí los datos dentro 383 00:16:21,480 --> 00:16:23,919 vale, entonces 384 00:16:23,919 --> 00:16:24,899 de esa clase 385 00:16:24,899 --> 00:16:26,960 esos datos 386 00:16:26,960 --> 00:16:30,080 con los que va a trabajar la aplicación son solo esos 387 00:16:30,080 --> 00:16:32,120 están ahí, no es que vaya a haber 388 00:16:32,120 --> 00:16:34,039 varias instancias de esa clase 389 00:16:34,039 --> 00:16:35,639 cada una con sus conjuntos de datos 390 00:16:35,639 --> 00:16:37,559 no, esos son mis únicos datos de la aplicación 391 00:16:37,559 --> 00:16:39,620 pues planto ahí un static y ya está 392 00:16:39,620 --> 00:16:41,700 y al plantar un static 393 00:16:41,700 --> 00:16:43,779 ¿qué gano? que puedo acceder 394 00:16:43,779 --> 00:16:45,460 a ellos poniendo 395 00:16:45,460 --> 00:16:47,740 nombre de la clase repositorio.alumnos 396 00:16:47,740 --> 00:16:48,379 es lo que gano 397 00:16:48,379 --> 00:16:50,539 si no pusiera el static 398 00:16:50,539 --> 00:16:53,379 para acceder a ellos tendría que instanciar un objeto 399 00:16:53,379 --> 00:16:54,200 repositorio 400 00:16:54,200 --> 00:16:57,899 y acceder con r.alumnos 401 00:16:57,899 --> 00:16:58,840 ¿para qué? 402 00:16:59,279 --> 00:17:01,659 si solamente tengo un array 403 00:17:01,659 --> 00:17:03,580 un único conjunto de alumnos al que quiero 404 00:17:03,580 --> 00:17:05,440 que accedan todas las clases que 405 00:17:05,440 --> 00:17:07,059 intervengan 406 00:17:07,059 --> 00:17:09,279 pues variable estática y se acabó 407 00:17:09,279 --> 00:17:11,380 entonces yo ahora ya desde mi main 408 00:17:11,380 --> 00:17:13,460 desde mi main que quiero 409 00:17:13,460 --> 00:17:14,599 hacer algo con ese 410 00:17:14,599 --> 00:17:16,579 Array de alumnos 411 00:17:16,579 --> 00:17:18,279 Que quiero hacerlo, pues ya está 412 00:17:18,279 --> 00:17:19,500 Accedo así y se acabó 413 00:17:19,500 --> 00:17:22,160 Lo que sea que quiera hacer, ya veremos lo que sea 414 00:17:22,160 --> 00:17:23,759 Yo quería poner aquí, punto 415 00:17:23,759 --> 00:17:27,930 O sea, lo que sea que yo quiera hacer 416 00:17:27,930 --> 00:17:33,920 Pues poniendo repositorio.alumnos 417 00:17:33,920 --> 00:17:36,039 Ya está, ya lo tengo 418 00:17:36,039 --> 00:17:37,079 ¿No? 419 00:17:38,940 --> 00:17:40,039 Es lo que he ganado 420 00:17:40,039 --> 00:17:41,599 Poniéndole aquí static 421 00:17:41,599 --> 00:17:43,359 Es lo que he ganado 422 00:17:43,359 --> 00:17:45,079 ¿Vale? Si no pongo static 423 00:17:45,079 --> 00:17:48,000 Para acceder a ese array 424 00:17:48,000 --> 00:17:49,880 Tendría que instanciar un objeto 425 00:17:49,880 --> 00:17:51,779 repositorio, ¿verdad? Tendría que 426 00:17:51,779 --> 00:18:00,400 instanciarlo y ahora 427 00:18:00,400 --> 00:18:01,519 ya acceder así. 428 00:18:03,180 --> 00:18:04,140 ¿Pero para qué? 429 00:18:04,960 --> 00:18:06,859 ¿Para qué? Si solo tengo un conjunto 430 00:18:06,859 --> 00:18:08,339 de alumnos, un array de alumnos 431 00:18:08,339 --> 00:18:10,299 porque así funciona mi aplicación. 432 00:18:11,000 --> 00:18:12,599 Pues le pongo el static delante 433 00:18:12,599 --> 00:18:16,250 y se acabó. Vale. 434 00:18:17,269 --> 00:18:18,509 Bueno, pues esta clase 435 00:18:18,509 --> 00:18:20,470 esta clase es la clase que 436 00:18:20,470 --> 00:18:22,390 tiene exclusivamente como 437 00:18:22,390 --> 00:18:24,230 función guardar ahí 438 00:18:24,230 --> 00:18:26,589 en una variable estática suya los alumnos 439 00:18:26,589 --> 00:18:28,210 con los que mi aplicación trabaja. 440 00:18:28,390 --> 00:18:31,170 Ya está, que van a ser alumnos, se acabó. 441 00:18:34,349 --> 00:18:51,029 Entonces, por comodidad, lo que se suele hacer en esta clase es, hombre, ya de paso, vamos a meterle métodos para las operaciones básicas con un almacén de datos, que es insertar, eliminar, consultar, ¿verdad? 442 00:18:53,890 --> 00:18:57,769 Entonces, vamos a utilizar hacer estos métodos como repaso. 443 00:18:57,769 --> 00:19:00,210 entonces yo podría hacer aquí 444 00:19:00,210 --> 00:19:02,630 un método que fuera 445 00:19:02,630 --> 00:19:04,970 insertar 446 00:19:04,970 --> 00:19:05,470 alumno 447 00:19:05,470 --> 00:19:08,670 al que le paso un objeto alumno 448 00:19:08,670 --> 00:19:14,779 y este método 449 00:19:14,779 --> 00:19:16,059 insertar uno en el array 450 00:19:16,059 --> 00:19:18,940 lo escribo rápidamente o como si queréis hacer 451 00:19:18,940 --> 00:19:20,920 un copia y pega de lo que hemos hecho toda la vida 452 00:19:20,920 --> 00:19:22,740 que es esto 453 00:19:22,740 --> 00:19:23,400 simplemente 454 00:19:23,400 --> 00:19:52,470 aquí se haría lo de siempre 455 00:19:53,190 --> 00:19:56,500 aux 456 00:19:56,500 --> 00:20:06,400 no, aux de i 457 00:20:06,400 --> 00:20:07,759 Igual a 458 00:20:07,759 --> 00:20:10,460 Alumnos de i 459 00:20:10,460 --> 00:20:12,079 Y una vez que ya he copiado 460 00:20:12,079 --> 00:20:13,099 Pongo la adicional 461 00:20:13,099 --> 00:20:16,960 Que la adicional estará en esta posición 462 00:20:16,960 --> 00:20:20,980 Aquí pondría el nuevo 463 00:20:20,980 --> 00:20:23,099 Y ahora ya sobrescribo 464 00:20:23,099 --> 00:20:25,640 Alumnos igual a aux 465 00:20:25,640 --> 00:20:30,259 Vale, pues entonces esta clase que estoy haciendo 466 00:20:30,259 --> 00:20:32,299 Es una clase que está orientada 467 00:20:32,299 --> 00:20:34,119 Simplemente a guardar los alumnos 468 00:20:34,119 --> 00:20:34,859 El almacén 469 00:20:34,859 --> 00:20:36,000 Dentro 470 00:20:36,000 --> 00:20:39,240 Y hacer las operaciones básicas con ese almacén 471 00:20:39,240 --> 00:20:41,240 insertar, recuperar 472 00:20:41,240 --> 00:20:45,119 entonces estamos tratando de reproducir 473 00:20:45,119 --> 00:20:47,000 la idea de la que ya he hablado a veces 474 00:20:47,000 --> 00:20:48,839 de desacoplamiento de código 475 00:20:48,839 --> 00:20:50,720 que es muy importante 476 00:20:50,720 --> 00:20:53,180 no se trata de hacer una única 477 00:20:53,180 --> 00:20:54,940 una aplicación que consista 478 00:20:54,940 --> 00:20:57,180 en una única clase con un barullo 479 00:20:57,180 --> 00:20:58,920 ahí enorme, no 480 00:20:58,920 --> 00:21:01,019 vamos a separar las cosas 481 00:21:01,019 --> 00:21:03,119 esta clase se ocupa 482 00:21:03,119 --> 00:21:04,660 de los datos y del tratamiento de los datos 483 00:21:04,660 --> 00:21:05,339 ya está 484 00:21:05,339 --> 00:21:07,680 y se ocupa de eso 485 00:21:07,680 --> 00:21:10,279 luego habrá otra clase que se ocupe 486 00:21:10,279 --> 00:21:12,099 de otras funcionalidades y cada clase 487 00:21:12,099 --> 00:21:13,079 se ocupa de lo suyo 488 00:21:13,079 --> 00:21:15,819 pues esta se ocupa de los datos 489 00:21:15,819 --> 00:21:17,859 y del tratamiento de esos datos 490 00:21:17,859 --> 00:21:20,380 ya está, vamos a ir tratando 491 00:21:20,380 --> 00:21:21,660 de hacer un código desacoplado 492 00:21:21,660 --> 00:21:23,960 vale, y esta 493 00:21:23,960 --> 00:21:26,220 y esta clase repositorio 494 00:21:26,220 --> 00:21:29,759 pues lo normal sería que tuviera 495 00:21:29,759 --> 00:21:31,920 voy a dejarlos ahora mismo en blanco 496 00:21:31,920 --> 00:21:33,920 para, pues que tendría 497 00:21:33,920 --> 00:21:35,200 que tuviera un método 498 00:21:35,200 --> 00:21:38,079 que fuera eliminar 499 00:21:38,079 --> 00:21:39,960 alumno por 500 00:21:39,960 --> 00:21:42,000 clave primaria, porque así es como se eliminan 501 00:21:42,000 --> 00:21:43,940 entonces alumno, su clave 502 00:21:43,940 --> 00:21:45,920 primaria, pues tendría sentido que fuera el 503 00:21:45,920 --> 00:21:52,069 nif, entonces este método 504 00:21:52,069 --> 00:21:53,690 pues lo podríamos hacer, lo hemos hecho 505 00:21:53,690 --> 00:21:55,690 otras veces, quitar de un array, que es 506 00:21:55,690 --> 00:21:57,829 hacer uno con una posición menos, copiar, pegar 507 00:21:57,829 --> 00:21:59,730 etcétera, también 508 00:21:59,730 --> 00:22:01,009 podríamos hacer el método 509 00:22:01,009 --> 00:22:04,640 consultar alumno 510 00:22:04,640 --> 00:22:11,220 vamos a llamarle, que suele ser 511 00:22:11,220 --> 00:22:18,019 tú le pasas un nif 512 00:22:18,019 --> 00:22:21,200 Y te devuelve el objeto alumno del array 513 00:22:21,200 --> 00:22:22,819 Que tiene ese nif 514 00:22:22,819 --> 00:22:25,440 Este método es muy rápido de hacer 515 00:22:25,440 --> 00:22:26,519 Hacemos un for 516 00:22:26,519 --> 00:22:43,160 Y ahora aquí haríamos 517 00:22:43,160 --> 00:22:49,150 Si alumnos de i 518 00:22:49,150 --> 00:22:50,890 Punto 519 00:22:50,890 --> 00:22:52,269 Get nif 520 00:22:52,269 --> 00:22:58,579 Equals 521 00:22:58,579 --> 00:23:02,960 El nif que me han pasado 522 00:23:02,960 --> 00:23:05,339 Pues ala, ya he encontrado el alumno 523 00:23:05,339 --> 00:23:07,440 Entonces pondría, ala, return 524 00:23:07,440 --> 00:23:11,109 Alumnos de i 525 00:23:11,109 --> 00:23:20,730 ¿por qué me lo pone rojo? 526 00:23:28,190 --> 00:23:33,839 ¿por qué creéis que el compilador 527 00:23:33,839 --> 00:23:36,619 me da este rojo de ahí? 528 00:23:39,960 --> 00:23:40,599 porque si 529 00:23:40,599 --> 00:23:42,680 no es igual 530 00:23:42,680 --> 00:23:43,700 no devuelve nada 531 00:23:43,700 --> 00:23:46,059 claro, porque el compilador 532 00:23:46,059 --> 00:23:48,539 él simplemente mira que todo encaje 533 00:23:48,539 --> 00:23:50,640 dices, oye, dices que devuelves un alumno 534 00:23:50,640 --> 00:23:52,980 muy bien, si encuentras un alumno 535 00:23:52,980 --> 00:23:54,180 cuyo NIF coincide 536 00:23:54,180 --> 00:23:56,079 sí, efectivamente lo devuelves 537 00:23:56,079 --> 00:23:58,279 pero ¿qué pasa si nunca jamás entras en el NIF? 538 00:23:58,579 --> 00:24:00,440 si nunca jamás entras en el NIF 539 00:24:00,440 --> 00:24:02,859 el for termina, venimos por aquí 540 00:24:02,859 --> 00:24:05,000 y ahí no hay nada que te diga 541 00:24:05,000 --> 00:24:06,180 que devuelves entonces 542 00:24:06,180 --> 00:24:08,920 claro, no pasa nada 543 00:24:08,920 --> 00:24:10,559 pues en ese caso devuelvo un null 544 00:24:10,559 --> 00:24:11,579 ¿vale? 545 00:24:13,160 --> 00:24:14,759 uy, perdón, es que he puesto aquí 546 00:24:14,759 --> 00:24:17,039 alumno, lo he cambiado 547 00:24:17,039 --> 00:24:17,900 ahí 548 00:24:17,900 --> 00:24:20,460 así, ¿vale? 549 00:24:21,180 --> 00:24:22,160 ahora ya sí 550 00:24:22,160 --> 00:24:25,079 recorro mi array, si encuentro 551 00:24:25,079 --> 00:24:26,759 un alumno cuyo nif coincide 552 00:24:26,759 --> 00:24:28,420 devuelvo ese alumno 553 00:24:28,420 --> 00:24:29,819 entonces al hacer el return 554 00:24:29,819 --> 00:24:32,039 es que ya salgo del método 555 00:24:32,039 --> 00:24:34,019 he dejado ya el for a la mitad, pero no pasa nada 556 00:24:34,019 --> 00:24:35,900 el nif es clave primaria, solo habrá un alumno 557 00:24:35,900 --> 00:24:37,819 he dejado el for a la mitad 558 00:24:37,819 --> 00:24:38,859 he salido y ya está 559 00:24:38,859 --> 00:24:41,859 que el for termina y nunca jamás 560 00:24:41,859 --> 00:24:43,920 entré en este if, nunca jamás he entrado 561 00:24:43,920 --> 00:24:46,000 el for termina y continúo por aquí 562 00:24:46,000 --> 00:24:48,180 y entonces me dice el compilado 563 00:24:48,180 --> 00:24:49,440 oye, entonces ¿qué devuelves? 564 00:24:49,900 --> 00:24:51,660 un objeto tienes que devolver sí o sí 565 00:24:51,660 --> 00:24:53,759 bueno, pues en este caso 566 00:24:53,759 --> 00:24:55,140 es porque no existía el alumno 567 00:24:55,140 --> 00:24:57,920 pues entonces devuelvo null y ya está 568 00:24:57,920 --> 00:24:59,240 ¿vale? 569 00:24:59,819 --> 00:25:08,099 Y también se podría hacer un método modifica alumno, que serían las cuatro tareas básicas que se hacen con los datos. 570 00:25:09,500 --> 00:25:21,400 Insertar uno nuevo, eliminar uno, dado clave primaria, consultar uno, para verlo, dado clave primaria y modificar uno, dado clave primaria, datos nuevos. 571 00:25:21,400 --> 00:25:24,559 son las cuatro tareas que se hacen siempre con los datos 572 00:25:24,559 --> 00:25:30,079 insertar, eliminar, consultar y modificar 573 00:25:30,079 --> 00:25:33,180 y esas cuatro tareas 574 00:25:33,180 --> 00:25:35,599 lo normal es que se incluyan en nuestra aplicación 575 00:25:35,599 --> 00:25:37,339 en la clase que trabaja con los datos 576 00:25:37,339 --> 00:25:40,140 en mi caso esta que he llamado repositorio 577 00:25:40,140 --> 00:25:42,559 ¿vale? eso es un patrón habitual de diseño 578 00:25:42,559 --> 00:25:44,579 la clase que trabaja con mis datos 579 00:25:44,579 --> 00:25:47,140 incluye esas cuatro tareas básicas que siempre se hacen 580 00:25:47,140 --> 00:25:48,900 insertar, eliminar, consultar y borrar 581 00:25:48,900 --> 00:25:51,440 entonces eso es tanto así 582 00:25:51,440 --> 00:25:53,740 tanto así que esas cuatro tareas 583 00:25:53,740 --> 00:25:55,519 básicas con los datos reciben un nombre 584 00:25:55,519 --> 00:25:57,079 que es este 585 00:25:57,079 --> 00:25:59,890 esto 586 00:25:59,890 --> 00:26:02,490 en lenguaje 587 00:26:02,490 --> 00:26:04,650 de desarrollo 588 00:26:04,650 --> 00:26:06,769 tiene un significado muy concreto 589 00:26:06,769 --> 00:26:09,329 que si vais, pues os vais apuntando 590 00:26:09,329 --> 00:26:11,650 las cositas para que os vaya ahí todo quedando 591 00:26:11,650 --> 00:26:13,609 eso tiene un significado 592 00:26:13,609 --> 00:26:15,450 muy concreto y en el lenguaje 593 00:26:15,450 --> 00:26:16,650 técnico nuestro 594 00:26:16,650 --> 00:26:18,750 CRUD viene de 595 00:26:18,750 --> 00:26:21,210 crear, leer, modificar y borrar 596 00:26:21,210 --> 00:26:22,269 ¿no? 597 00:26:22,849 --> 00:26:24,650 crear e insertar, leer 598 00:26:24,650 --> 00:26:27,309 consultar, update 599 00:26:27,309 --> 00:26:29,250 modificar y delete de borrar 600 00:26:29,250 --> 00:26:30,890 entonces 601 00:26:30,890 --> 00:26:32,170 CRUD significa 602 00:26:32,170 --> 00:26:34,769 las tareas que se hacen con los datos 603 00:26:34,769 --> 00:26:36,750 en informática, que son esas cuatro 604 00:26:36,750 --> 00:26:39,250 entonces a ti, pues cuando tú 605 00:26:39,250 --> 00:26:41,049 vas a hacer una aplicación, te puede decir 606 00:26:41,049 --> 00:26:42,089 tú vas a hacer el CRUD 607 00:26:42,089 --> 00:26:44,890 y no puedes decir, uh, que voy a hacer el CRUD 608 00:26:44,890 --> 00:26:46,509 lo que te están diciendo es 609 00:26:46,509 --> 00:26:51,730 oye, hazme todos los métodos necesarios para trabajar con esos datos. 610 00:26:52,450 --> 00:26:55,049 Y los métodos necesarios son esos cuatro que decimos. 611 00:26:56,970 --> 00:27:01,910 Pues esto es un término muy habitual para decir de forma resumida 612 00:27:01,910 --> 00:27:06,549 las acciones que se hacen con los datos en una aplicación cualquiera. 613 00:27:07,930 --> 00:27:10,849 Bueno, pues esas cuatro acciones en nuestra aplicación estarían aquí. 614 00:27:11,410 --> 00:27:14,450 Insertar que la hemos hecho, eliminar que la podríamos hacer, 615 00:27:14,450 --> 00:27:16,309 consultar que la podríamos hacer 616 00:27:16,309 --> 00:27:17,609 y modificar 617 00:27:17,609 --> 00:27:20,710 pues que podría ser algo así por ejemplo 618 00:27:20,710 --> 00:27:25,019 modifica alumno 619 00:27:25,019 --> 00:27:26,319 pues por ejemplo 620 00:27:26,319 --> 00:27:28,200 le damos un nif 621 00:27:28,200 --> 00:27:30,220 y al alumno con ese nif 622 00:27:30,220 --> 00:27:33,160 le cambiamos su nombre 623 00:27:33,160 --> 00:27:34,299 y su nota por ejemplo 624 00:27:34,299 --> 00:27:41,250 vamos a hacerlo rápidamente porque este 625 00:27:41,250 --> 00:27:42,589 es rápido también 626 00:27:42,589 --> 00:27:45,349 modifica alumno pues sería 627 00:27:45,349 --> 00:27:46,269 parecido a este 628 00:27:46,269 --> 00:27:55,640 y ahora buscamos el alumno 629 00:27:55,640 --> 00:27:58,940 y cuando ya lo hemos encontrado el alumno con ese NIF 630 00:27:58,940 --> 00:28:01,019 el alumno cuyo NIF es este 631 00:28:01,019 --> 00:28:02,180 cuando ya lo hemos encontrado 632 00:28:02,180 --> 00:28:05,559 pues a ese alumno le modificamos con los nuevos datos 633 00:28:05,559 --> 00:28:10,299 su nombre que sea el nombre que me han pasado por parámetro 634 00:28:10,299 --> 00:28:20,190 y su nota que sea la nota que me han pasado por parámetro 635 00:28:20,190 --> 00:28:22,849 vale, este sería el método de modificar 636 00:28:22,849 --> 00:28:26,329 busco dentro de mi conjunto de datos de mi array 637 00:28:26,329 --> 00:28:28,670 el alumno cuyo NIF es el que me han pasado 638 00:28:28,670 --> 00:28:31,170 y cuando lo encuentre le cambio el nombre 639 00:28:31,170 --> 00:28:32,490 y la nota por las que me han pasado 640 00:28:32,490 --> 00:28:35,789 recordad que la clave primaria 641 00:28:35,789 --> 00:28:37,470 no se cambia 642 00:28:37,470 --> 00:28:37,849 porque entonces 643 00:28:37,849 --> 00:28:41,329 no tiene mucho sentido, sería como cambiar el objeto 644 00:28:41,329 --> 00:28:43,589 pero bueno, todas estas son cosas de bases de datos 645 00:28:43,589 --> 00:28:49,019 vale, pues nos hemos hecho aquí 646 00:28:49,019 --> 00:28:51,119 nuestra clase repositorio 647 00:28:51,119 --> 00:28:53,400 que esta va por libre, esta la hace un programador 648 00:28:53,400 --> 00:28:55,039 aparte, uno que ha dicho 649 00:28:55,039 --> 00:28:57,180 oye, tú me haces el club de la base de datos 650 00:28:57,180 --> 00:28:58,599 pues ya está, se ha sentado y ha hecho esto 651 00:28:58,599 --> 00:29:01,039 y lo que haga el resto de los programadores le da igual 652 00:29:01,039 --> 00:29:02,859 pues el resto de los programadores 653 00:29:02,859 --> 00:29:04,420 ahora lo que harán será hacer 654 00:29:04,420 --> 00:29:07,140 la aplicación que seguramente 655 00:29:07,140 --> 00:29:08,920 necesite llamar a estos métodos 656 00:29:08,920 --> 00:29:09,680 para hacer cosas 657 00:29:09,680 --> 00:29:13,910 bueno 658 00:29:13,910 --> 00:29:17,170 este método de aquí, por ejemplo 659 00:29:17,170 --> 00:29:19,730 ¿no le pondríais 660 00:29:19,730 --> 00:29:20,890 algo, alguna cosita 661 00:29:20,890 --> 00:29:22,609 aunque solo fuera una, una cosita 662 00:29:22,609 --> 00:29:25,210 a la vista de esto que os estoy enseñando 663 00:29:25,210 --> 00:29:27,349 ¿no le pondríais una cosita 664 00:29:27,349 --> 00:29:28,910 más a este método, una palabrita más 665 00:29:28,910 --> 00:29:30,470 para facilitar su uso 666 00:29:30,470 --> 00:29:34,940 static, o sea este método 667 00:29:34,940 --> 00:29:36,599 solo usa variables 668 00:29:36,599 --> 00:29:38,579 estáticas porque de hecho la clase no 669 00:29:38,579 --> 00:29:40,140 tiene otra cosa que no sea variables estáticas 670 00:29:40,140 --> 00:29:42,579 entonces este por definición es un método estático 671 00:29:42,579 --> 00:29:44,960 solo está usando variables estáticas 672 00:29:44,960 --> 00:29:46,519 entonces no es que 673 00:29:46,519 --> 00:29:48,359 sea obligatorio, pero si yo se lo pongo 674 00:29:48,359 --> 00:29:50,480 ahora ya, al 675 00:29:50,480 --> 00:29:52,440 ponérselo, voy a poder 676 00:29:52,440 --> 00:29:54,579 llamarlo mucho más fácilmente, voy a poder 677 00:29:54,579 --> 00:29:56,480 llamarlo así, cuando quiera 678 00:29:56,480 --> 00:30:02,539 yo hacer cosas, lo voy a 679 00:30:02,539 --> 00:30:04,539 poder llamar con el 680 00:30:04,539 --> 00:30:05,640 nombre de la clase sin más 681 00:30:05,640 --> 00:30:09,190 inserta alumno 682 00:30:09,190 --> 00:30:11,829 le paso el alumno que sea y lo inserta 683 00:30:11,829 --> 00:30:13,970 si yo no hubiera puesto el static 684 00:30:13,970 --> 00:30:15,329 porque no me doy cuenta 685 00:30:15,329 --> 00:30:18,329 pues no es que pase nada 686 00:30:18,329 --> 00:30:20,230 pero que es un rollo, ya no puedo llamarlo así 687 00:30:20,230 --> 00:30:21,450 ya es imposible llamarlo así 688 00:30:21,450 --> 00:30:23,750 tendría que instanciar un objeto repositorio 689 00:30:23,750 --> 00:30:25,109 y llamarlo con el objeto, ¿y para qué? 690 00:30:25,950 --> 00:30:27,849 ¿para qué voy a instanciar un objeto repositorio 691 00:30:27,849 --> 00:30:28,769 si no lo necesito? 692 00:30:31,170 --> 00:30:32,509 pues le pongo el static 693 00:30:32,509 --> 00:30:33,630 y estupendo 694 00:30:33,630 --> 00:30:36,349 y eso pasaría con el resto 695 00:30:36,349 --> 00:30:37,410 de los métodos 696 00:30:37,410 --> 00:30:42,339 todos tendrían su static delante 697 00:30:42,339 --> 00:30:47,230 vale 698 00:30:47,230 --> 00:30:49,750 a ver, como lo estoy haciendo todo en el mismo paquete 699 00:30:49,750 --> 00:30:51,869 me estoy despreocupando de los public y de todo 700 00:30:51,869 --> 00:30:54,109 pero lo natural sería que estos 701 00:30:54,109 --> 00:30:55,970 métodos estuvieran en el public porque yo los 702 00:30:55,970 --> 00:30:57,970 fuera a usar desde otro paquete, etc 703 00:30:57,970 --> 00:30:59,910 sería lo normal 704 00:30:59,910 --> 00:31:01,930 que todo esto fuera public 705 00:31:01,930 --> 00:31:03,950 porque esta clase está en un paquete 706 00:31:03,950 --> 00:31:05,730 y se va a usar desde clases de otras 707 00:31:05,730 --> 00:31:13,069 si yo no pongo el public lo voy a poder 708 00:31:13,069 --> 00:31:13,650 usar desde 709 00:31:13,650 --> 00:31:16,150 clases de fuera del paquete 710 00:31:16,150 --> 00:31:19,869 ¿Vale? Entonces 711 00:31:19,869 --> 00:31:21,390 En cada cosa que hacemos 712 00:31:21,390 --> 00:31:23,809 Yo estoy aprovechando para 713 00:31:23,809 --> 00:31:25,990 Repasarlo todo, o sea, esto que estamos diciendo 714 00:31:25,990 --> 00:31:27,410 Es de hace dos meses 715 00:31:27,410 --> 00:31:28,789 ¿Vale? Entonces 716 00:31:28,789 --> 00:31:31,829 Verificad si realmente 717 00:31:31,829 --> 00:31:33,750 Lo vais teniendo claro o no 718 00:31:33,750 --> 00:31:35,970 ¿Vale? Bueno, pues ya tengo mi clase 719 00:31:35,970 --> 00:31:36,730 Repositorio 720 00:31:36,730 --> 00:31:39,809 Vale, donde tengo mis datos 721 00:31:39,809 --> 00:31:41,450 Entonces 722 00:31:41,450 --> 00:31:44,049 Ahora 723 00:31:44,049 --> 00:31:46,230 El que hace la aplicación 724 00:31:46,230 --> 00:31:48,349 pues ahora ya se habrá puesto 725 00:31:48,349 --> 00:31:50,569 en contacto con el cliente y dice, oye, yo quiero que mi aplicación 726 00:31:50,569 --> 00:31:52,450 de gestión haga esto, pues inserte 727 00:31:52,450 --> 00:31:54,150 alumnos, me compare 728 00:31:54,150 --> 00:31:56,190 me diga, me busque el alumno 729 00:31:56,190 --> 00:31:56,890 que se llama no sé qué 730 00:31:56,890 --> 00:32:00,069 dados los alumnos, me diga 731 00:32:00,069 --> 00:32:02,630 cuántos aprobados hay, pues lo que sea 732 00:32:02,630 --> 00:32:04,309 entonces uno ya recoge 733 00:32:04,309 --> 00:32:06,509 los requisitos y vamos a hacer 734 00:32:06,509 --> 00:32:08,190 rápidamente, para que quede una aplicación 735 00:32:08,190 --> 00:32:10,410 ya aprovechamos de repaso un poco así 736 00:32:10,410 --> 00:32:12,250 más decente, vamos a hacer pues un 737 00:32:12,250 --> 00:32:13,589 un main 738 00:32:13,589 --> 00:32:15,089 un main 739 00:32:15,089 --> 00:32:16,390 con un menú 740 00:32:16,390 --> 00:32:19,990 para hacer las funcionalidades que hemos decidido hacer 741 00:32:19,990 --> 00:32:22,869 por ejemplo 742 00:32:22,869 --> 00:32:25,130 vamos a hacer un main que sea 743 00:32:25,130 --> 00:32:27,509 insertar alumno 744 00:32:27,509 --> 00:32:28,950 porque inicialmente 745 00:32:28,950 --> 00:32:30,130 nuestro repositorio está vacío 746 00:32:30,130 --> 00:32:32,329 entonces vamos a permitir insertar alumno 747 00:32:32,329 --> 00:32:35,289 aquí se podría poner un montón más 748 00:32:35,289 --> 00:32:36,869 eliminar alumno dado 749 00:32:36,869 --> 00:32:38,829 ni modificar todas 750 00:32:38,829 --> 00:32:40,230 yo voy a poner 751 00:32:40,230 --> 00:32:43,849 insertar alumno 752 00:32:43,849 --> 00:32:46,029 para poder insertar datos y trabajar con ellos 753 00:32:46,029 --> 00:32:48,170 voy a poner 754 00:32:48,170 --> 00:32:50,630 que muestre porcentaje de aprobados 755 00:32:50,630 --> 00:32:55,240 para volver a trabajar 756 00:32:55,240 --> 00:32:56,799 un poco con las sumas otra vez 757 00:32:56,799 --> 00:32:59,039 y voy a poner también 758 00:32:59,039 --> 00:33:01,720 que esta es la que me interesa de cara a las interfaces 759 00:33:01,720 --> 00:33:03,700 que todo esto venía a cuento de las interfaces 760 00:33:03,700 --> 00:33:05,539 voy a poner también una funcionalidad 761 00:33:05,539 --> 00:33:06,059 que sea 762 00:33:06,059 --> 00:33:08,400 ordenar alumnos por nota 763 00:33:08,400 --> 00:33:11,119 porque hay que 764 00:33:11,119 --> 00:33:13,200 darles un premio 765 00:33:13,200 --> 00:33:14,359 y hay que tenerlos ordenaditos 766 00:33:14,359 --> 00:33:18,619 a ver hasta dónde... 767 00:33:18,619 --> 00:33:20,660 O sea, mostrar listado, ordenado por nota. 768 00:33:25,450 --> 00:33:26,490 Y vamos a incorporar una 769 00:33:26,490 --> 00:33:28,210 que sea mostrar listado sin más 770 00:33:28,210 --> 00:33:30,410 para verificar según vayamos insertando 771 00:33:30,410 --> 00:33:31,890 que lo está insertando bien. 772 00:33:32,069 --> 00:33:34,109 Porque si no ponemos ninguna funcionalidad de mostrar 773 00:33:34,109 --> 00:33:36,809 no podemos verificar 774 00:33:36,809 --> 00:33:37,789 si lo está haciendo bien o mal. 775 00:33:38,730 --> 00:33:40,470 Venga, nuestra aplicación tiene sólo 776 00:33:40,470 --> 00:33:41,470 estas funcionalidades. 777 00:33:42,190 --> 00:33:44,390 Puede meter alumnos, puede sacar el porcentaje 778 00:33:44,390 --> 00:33:46,170 de aprobados y puede sacar listados. 779 00:33:46,930 --> 00:33:47,930 ¿Ordenados por nota o no? 780 00:33:48,410 --> 00:33:49,950 Ya está. Esto es lo único que le interesa 781 00:33:49,950 --> 00:33:51,829 al que nos pide la aplicación, poder hacer estas cosas 782 00:33:51,829 --> 00:33:54,150 solo le interesa esto, pues estupendo 783 00:33:54,150 --> 00:33:55,609 solo le interesa esto, vamos a hacerlo 784 00:33:55,609 --> 00:33:58,009 ¿vale? entonces el que 785 00:33:58,009 --> 00:33:59,950 está haciendo esta aplicación main, como 786 00:33:59,950 --> 00:34:01,809 veis, esta 787 00:34:01,809 --> 00:34:03,529 ni la ha hecho ni le importa 788 00:34:03,529 --> 00:34:05,329 lo único que le importa es 789 00:34:05,329 --> 00:34:07,309 poder llamarla 790 00:34:07,309 --> 00:34:09,150 si la necesita 791 00:34:09,150 --> 00:34:11,949 pero como está hecha por dentro, le da 792 00:34:11,949 --> 00:34:13,889 exactamente igual, la ha hecho otro programador 793 00:34:13,889 --> 00:34:15,449 ¿vale? 794 00:34:17,210 --> 00:34:17,650 esto 795 00:34:17,650 --> 00:34:19,469 es la ventaja de que el código 796 00:34:19,469 --> 00:34:21,690 esté diseñado desde el principio 797 00:34:21,690 --> 00:34:22,929 con desacoplamiento 798 00:34:22,929 --> 00:34:24,190 las clases van por libre 799 00:34:24,190 --> 00:34:26,530 bueno, pues venga, nuestro main 800 00:34:26,530 --> 00:34:28,150 le voy a poner 801 00:34:28,150 --> 00:34:30,469 la 802 00:34:30,469 --> 00:34:33,489 la clase 803 00:34:33,489 --> 00:34:35,329 esa teclado hard que hicimos para 804 00:34:35,329 --> 00:34:37,489 leer por teclado 805 00:34:37,489 --> 00:34:38,110 más rápido 806 00:34:38,110 --> 00:34:51,019 vale, pues venga, la opción del main 807 00:34:51,019 --> 00:34:52,539 recordad que tiene que estar fuera 808 00:34:52,539 --> 00:34:55,099 para que luego 809 00:34:55,099 --> 00:34:55,739 en el while 810 00:34:55,739 --> 00:34:58,619 vamos a poner salir 811 00:34:58,619 --> 00:35:09,360 Uno, dos 812 00:35:09,360 --> 00:35:13,059 Tres 813 00:35:13,059 --> 00:35:15,199 Cuatro 814 00:35:15,199 --> 00:35:17,000 Y le voy a poner cero 815 00:35:17,000 --> 00:35:18,260 Por si alguno añadiera 816 00:35:18,260 --> 00:35:19,960 Funcionalidades 817 00:35:19,960 --> 00:35:24,760 Vale, y hace esto mientras la opción 818 00:35:24,760 --> 00:35:28,639 Sea diferente 819 00:35:28,639 --> 00:35:30,420 De la de salir 820 00:35:30,420 --> 00:35:32,039 Que es la cero 821 00:35:32,039 --> 00:35:34,360 Vale, entonces aquí 822 00:35:34,360 --> 00:35:35,400 Leeremos la opción 823 00:35:35,400 --> 00:35:43,340 Y ahora una vez que hemos leído la opción 824 00:35:43,340 --> 00:35:44,679 Pues el switch case 825 00:35:44,679 --> 00:35:54,719 en el caso de que la opción sea 826 00:35:54,719 --> 00:35:58,300 la opción que sea el numerito 1 827 00:35:58,300 --> 00:36:06,300 vale, pues habría que pedir los datos del alumno 828 00:36:06,300 --> 00:36:10,659 y pasárselo a la clase 829 00:36:10,659 --> 00:36:15,260 al método, afortunadamente como tenemos 830 00:36:15,260 --> 00:36:19,260 esta clase disponible, repositorio 831 00:36:19,260 --> 00:36:21,800 que tiene el método insertalumnos 832 00:36:21,800 --> 00:36:25,679 Y ahora, ¿qué vamos a insertar? 833 00:36:25,760 --> 00:36:26,739 Un nuevo alumno 834 00:36:26,739 --> 00:36:31,900 Lo estoy haciendo todo muy 835 00:36:31,900 --> 00:36:34,739 En lugar de pedir 836 00:36:34,739 --> 00:36:36,800 Introduzca NIF, introduzca nombre, introduzca no sé qué 837 00:36:36,800 --> 00:36:38,840 Voy a poner los scans directamente 838 00:36:38,840 --> 00:36:40,659 Ahí dentro, en el constructor y ya está 839 00:36:40,659 --> 00:36:42,860 Pues le voy a 840 00:36:42,860 --> 00:36:44,260 Decir que lea 841 00:36:44,260 --> 00:36:46,860 El NIF 842 00:36:46,860 --> 00:36:53,960 Le voy a decir que lea 843 00:36:53,960 --> 00:36:54,420 El nombre 844 00:36:54,420 --> 00:36:59,949 Y le voy a decir que lea la nota 845 00:36:59,949 --> 00:37:04,369 ¿Vale? 846 00:37:04,369 --> 00:37:05,530 Hombre, para que no quede 847 00:37:05,530 --> 00:37:07,289 Y ya estaría esta función 848 00:37:07,289 --> 00:37:08,130 Bueno, me falta el break 849 00:37:08,130 --> 00:37:13,219 A ver, para que no me quede tan feo 850 00:37:13,219 --> 00:37:14,019 A la hora de ejecutarlo 851 00:37:14,019 --> 00:37:16,340 Voy a ponerle un mensaje 852 00:37:16,340 --> 00:37:16,980 Aunque sea 853 00:37:16,980 --> 00:37:18,440 Introduzca NIF, nombre y nota 854 00:37:18,440 --> 00:37:22,659 Voy a poner así 855 00:37:22,659 --> 00:37:23,559 NIF 856 00:37:23,559 --> 00:37:25,940 Nombre y nota 857 00:37:25,940 --> 00:37:28,099 Entonces 858 00:37:28,099 --> 00:37:29,719 Instalaría el objeto 859 00:37:29,719 --> 00:37:31,659 Con NIF, nombre y nota 860 00:37:31,659 --> 00:37:33,440 Creará un alumno 861 00:37:33,440 --> 00:37:36,579 Y llamará a insertar alumno 862 00:37:36,579 --> 00:37:38,239 De la clase repositorio 863 00:37:38,239 --> 00:37:41,599 que lo insertará en el array correspondiente 864 00:37:41,599 --> 00:37:46,030 como veis 865 00:37:46,030 --> 00:37:48,809 esta es la primera vez 866 00:37:48,809 --> 00:37:50,750 que mi main llama a la clase repositorio 867 00:37:50,750 --> 00:37:51,389 es la primera vez 868 00:37:51,389 --> 00:37:54,170 luego esta variable estática que yo he hecho aquí 869 00:37:54,170 --> 00:37:58,530 esta aparece 870 00:37:58,530 --> 00:37:59,730 esa no existía 871 00:37:59,730 --> 00:38:02,429 porque es una variable asociada a esta clase estática 872 00:38:02,429 --> 00:38:04,349 entonces no aparece hasta la primera vez 873 00:38:04,349 --> 00:38:05,309 que se usa esa clase 874 00:38:05,309 --> 00:38:07,369 ¿cuándo es la primera vez que se usa? 875 00:38:08,110 --> 00:38:08,789 pues aquí 876 00:38:08,789 --> 00:38:11,010 en este momento 877 00:38:11,010 --> 00:38:12,829 pues ahí en ese momento 878 00:38:12,829 --> 00:38:15,210 me aparece esa variable estática 879 00:38:15,210 --> 00:38:17,269 y ya se queda ahí para siempre, ya se queda ahí para siempre 880 00:38:17,269 --> 00:38:19,130 porque es la primera vez 881 00:38:19,130 --> 00:38:20,030 que uso esa clase 882 00:38:20,030 --> 00:38:23,170 la primera vez que uso una clase es cuando me aparece todo lo estático 883 00:38:23,170 --> 00:38:25,170 que tenga dentro, pues ahí me 884 00:38:25,170 --> 00:38:27,309 aparece, la primera vez que la uso 885 00:38:27,309 --> 00:38:29,250 me aparece y ya de paso 886 00:38:29,250 --> 00:38:30,809 inserta a esta 887 00:38:30,809 --> 00:38:33,170 y ya esa variable estática se queda ahí 888 00:38:33,170 --> 00:38:35,090 ya para siempre, todo el tiempo que la 889 00:38:35,090 --> 00:38:37,130 aplicación dure, ya se queda ahí siempre 890 00:38:37,130 --> 00:38:38,650 esa variable estática, con mis datos 891 00:38:38,650 --> 00:38:41,030 vale, pues venga, el caso 1 892 00:38:41,030 --> 00:38:42,469 ya está, que es insertar a un alumno 893 00:38:42,469 --> 00:38:44,929 Porcentaje de aprobados 894 00:38:44,929 --> 00:38:46,050 Para hacer algo así 895 00:38:46,050 --> 00:38:48,150 De siempre 896 00:38:48,150 --> 00:38:50,469 Pues porcentaje de aprobados 897 00:38:50,469 --> 00:38:52,650 Tendríamos que sumar los que tienen nota mayor o igual que 5 898 00:38:52,650 --> 00:38:53,090 Y ya está 899 00:38:53,090 --> 00:38:56,469 Entonces eso ya sabemos de toda la vida como hacerlo 900 00:38:56,469 --> 00:38:58,489 Vamos sumando 901 00:38:58,489 --> 00:38:59,329 Y se acabó 902 00:38:59,329 --> 00:39:02,230 Para cada alumno 903 00:39:02,230 --> 00:39:06,119 A 904 00:39:06,119 --> 00:39:07,679 En mi array 905 00:39:07,679 --> 00:39:11,059 Repositorio 906 00:39:12,179 --> 00:39:13,239 Punto alumnos 907 00:39:13,239 --> 00:39:16,380 veis lo cómodo que es 908 00:39:16,380 --> 00:39:17,860 que mi array esté aquí 909 00:39:17,860 --> 00:39:19,480 en una variable estática 910 00:39:19,480 --> 00:39:21,940 mi array está aquí aparte en una variable estática 911 00:39:21,940 --> 00:39:23,880 todos pueden acceder a él 912 00:39:23,880 --> 00:39:26,639 y de forma tan sencilla 913 00:39:26,639 --> 00:39:28,139 como llamar a la clase y esto 914 00:39:28,139 --> 00:39:30,480 en lugar de tener mi array 915 00:39:30,480 --> 00:39:32,079 ubicado aquí en el main y todo mezclado 916 00:39:32,079 --> 00:39:34,139 tengo mi array de alumnos 917 00:39:34,139 --> 00:39:35,820 ahí aparte en su clase repositorio 918 00:39:35,820 --> 00:39:36,719 en una variable estática 919 00:39:36,719 --> 00:39:39,599 pues ahora aquí simplemente haríamos 920 00:39:39,599 --> 00:39:41,340 si 921 00:39:41,340 --> 00:39:44,400 a.guernota 922 00:39:44,400 --> 00:39:48,530 mayor 923 00:39:48,530 --> 00:39:51,070 o igual que 5 924 00:39:51,070 --> 00:39:53,489 pues en ese caso 925 00:39:53,489 --> 00:39:55,510 suma 926 00:39:55,510 --> 00:39:57,989 más igual a.guernota 927 00:39:57,989 --> 00:39:59,869 no, ah que estoy contando 928 00:39:59,869 --> 00:40:01,829 perdón, es porcentaje de aprobado, esto es un contador 929 00:40:01,829 --> 00:40:03,769 no es nota media 930 00:40:03,769 --> 00:40:04,510 y nada de eso 931 00:40:04,510 --> 00:40:07,050 con más más 932 00:40:07,050 --> 00:40:09,789 ala 933 00:40:09,789 --> 00:40:10,869 pues estoy contando 934 00:40:10,869 --> 00:40:13,150 mediante un contador 935 00:40:13,150 --> 00:40:16,769 estoy contando todos los que tengan nota mayor o igual que 5.