1 00:00:01,580 --> 00:00:28,320 Vale, bueno pues en esta aplicación que estábamos usando para practicar el modelo de datos, recordad cuando digo el modelo de datos me refiero a las diferentes entidades que gestiona la aplicación, que eso en base de datos son las diferentes tablas, vale, una tabla de una base de datos se va a corresponder con una entidad de mi aplicación, una clase, vale. 2 00:00:28,320 --> 00:00:42,500 Bueno, pues esta aplicación que estábamos usando como ejemplo para ver las listas solamente tenía una clase en el modelo de datos, ya está, solo la clase alumno, con su número de matrícula, su nombre, la edad y las asignaturas que tenía. 3 00:00:42,500 --> 00:00:55,539 Como podía tener muchas asignaturas, cada una caracterizada solo por su nombre, luego cada asignatura es una string por su nombre, pues entonces hacíamos que esta propiedad fuera una lista. 4 00:00:56,399 --> 00:01:07,439 Antes hacíamos que fuera un array, ahora ya no nos hace falta usar un array, usamos una lista que aunque es más ineficiente que el array, es más fácil de programar con ella. 5 00:01:07,439 --> 00:01:09,900 más fácil de programar, esa es su única ventaja 6 00:01:09,900 --> 00:01:11,939 que es más fácil programar 7 00:01:11,939 --> 00:01:13,620 con una lista que programar con un array 8 00:01:13,620 --> 00:01:15,799 es la única ventaja, pero el array siempre va a 9 00:01:15,799 --> 00:01:16,480 funcionar mejor 10 00:01:16,480 --> 00:01:19,780 bueno, pues entonces esta es nuestra entidad 11 00:01:19,780 --> 00:01:21,840 alumno, la única de nuestro modelo 12 00:01:21,840 --> 00:01:23,200 de datos con su constructor 13 00:01:23,200 --> 00:01:25,140 con y sin parámetros 14 00:01:25,140 --> 00:01:27,840 sus get y set para acceder a las 15 00:01:27,840 --> 00:01:30,079 propiedades y además 16 00:01:30,079 --> 00:01:31,900 cuando trabajamos 17 00:01:31,900 --> 00:01:33,739 con colecciones ya, también 18 00:01:33,739 --> 00:01:35,959 dijimos el otro día que entonces ahora ya sí que 19 00:01:35,959 --> 00:01:37,579 empieza a ser importante 20 00:01:37,579 --> 00:01:40,239 que además de caracterizar 21 00:01:40,239 --> 00:01:42,620 nuestra entidad, en nuestro caso alumno 22 00:01:42,620 --> 00:01:44,659 caracterizarla por 23 00:01:44,659 --> 00:01:46,420 matrícula, nombre, edad 24 00:01:46,420 --> 00:01:48,480 y asignaturas, no me hace falta 25 00:01:48,480 --> 00:01:50,760 más, es lo único que mi aplicación 26 00:01:50,760 --> 00:01:52,480 tiene que saber de los alumnos 27 00:01:52,480 --> 00:01:54,420 es decir, cuando el alumno llega 28 00:01:54,420 --> 00:01:55,879 a secretaría a matricularse 29 00:01:55,879 --> 00:01:58,840 tú has hablado con el secretario de secretaría 30 00:01:58,840 --> 00:02:00,480 y le has dicho, oye, que te estoy haciendo la aplicación 31 00:02:00,480 --> 00:02:02,120 ¿a ti qué datos te importan? 32 00:02:03,420 --> 00:02:04,340 pues él te habrá dicho 33 00:02:04,340 --> 00:02:06,219 a mi solamente me importa el número de matrícula 34 00:02:06,219 --> 00:02:07,900 el nombre, la edad y el listado de asignaturas 35 00:02:07,900 --> 00:02:09,860 ¿solo te importan esos datos? vale 36 00:02:09,860 --> 00:02:11,180 pues esos datos son los que van ahí 37 00:02:11,180 --> 00:02:13,219 eso es lo que se hace en el análisis 38 00:02:13,219 --> 00:02:16,300 y hay que ir haciendo 39 00:02:16,300 --> 00:02:18,000 análisis además un poco más finos 40 00:02:18,000 --> 00:02:20,539 sobre todo ahora que ya estamos usando colecciones 41 00:02:20,539 --> 00:02:22,180 un análisis más fino 42 00:02:22,180 --> 00:02:22,599 sería 43 00:02:22,599 --> 00:02:26,400 de estas propiedades 44 00:02:26,400 --> 00:02:28,060 lo ideal es que 45 00:02:28,060 --> 00:02:30,180 al menos una identifique 46 00:02:30,180 --> 00:02:32,460 de forma única al alumno 47 00:02:32,460 --> 00:02:33,659 o sea una aplicación 48 00:02:33,659 --> 00:02:37,939 en las cuales los objetos no se pueden identificar de forma única 49 00:02:37,939 --> 00:02:40,699 es como una tabla que no tiene clave primaria 50 00:02:40,699 --> 00:02:43,000 eso nunca lo queremos 51 00:02:43,000 --> 00:02:47,379 nunca queremos una tabla sin clave primaria 52 00:02:47,379 --> 00:02:50,780 no queremos registros que no se puedan distinguir unos de otros 53 00:02:50,780 --> 00:02:53,819 porque eso crea confusión en las aplicaciones que los manejan 54 00:02:53,819 --> 00:02:56,800 pues aquí, aunque no es obligado 55 00:02:56,800 --> 00:02:59,400 aquí esto no está, no es como en SQL 56 00:02:59,400 --> 00:03:02,039 en los modelos relacionales 57 00:03:02,039 --> 00:03:23,060 Que ahí está implementada la manera de dar unicidad a los registros. Está implementada mediante el concepto de clave primaria. El sistema gestor de base de datos, como tú intentes insertar un registro con una clave primaria que ya existe, te va a petar y te va a decir, no, aquí tienes un problema de restricción de clave única. 58 00:03:23,060 --> 00:03:25,840 en los sistemas gestores de base a todos está implementado 59 00:03:25,840 --> 00:03:27,759 todo eso, aquí no está 60 00:03:27,759 --> 00:03:30,060 implementado, vale, aquí lo programas 61 00:03:30,060 --> 00:03:31,939 tú y lo decides tú, aquí no hay 62 00:03:31,939 --> 00:03:33,340 nadie que ya te obligue 63 00:03:33,340 --> 00:03:35,180 a que uno de estos sea clave 64 00:03:35,180 --> 00:03:37,860 o que si tú instancias un objeto 65 00:03:37,860 --> 00:03:39,539 con una clave repetida 66 00:03:39,539 --> 00:03:41,659 no hay nadie que te vaya a decir, oye, no instancies 67 00:03:41,659 --> 00:03:43,919 un objeto con este número de matrícula 68 00:03:43,919 --> 00:03:45,300 porque ya hay otro, no 69 00:03:45,300 --> 00:03:46,740 eso no está implementado aquí 70 00:03:46,740 --> 00:03:49,620 ahí ya tienes la libertad de programarlo y hacer lo que quieras 71 00:03:49,620 --> 00:03:51,620 pero claro, es que en eso estamos 72 00:03:51,620 --> 00:03:53,199 en hacer aplicaciones que estén bien 73 00:03:53,199 --> 00:03:55,520 entonces la forma de que estén bien es 74 00:03:55,520 --> 00:03:57,819 planteándonos 75 00:03:57,819 --> 00:03:59,520 qué es lo que identifica 76 00:03:59,520 --> 00:04:00,620 de forma única 77 00:04:00,620 --> 00:04:03,520 a los objetos de las clases 78 00:04:03,520 --> 00:04:04,719 entidad que estamos haciendo 79 00:04:04,719 --> 00:04:07,840 porque si no hay una propiedad 80 00:04:07,840 --> 00:04:09,280 que los identifique de forma única 81 00:04:09,280 --> 00:04:11,460 a lo mejor no mañana, pero dentro 82 00:04:11,460 --> 00:04:13,560 de cinco semanas, cuando vayamos a hacer 83 00:04:13,560 --> 00:04:15,599 una funcionalidad, eso nos va 84 00:04:15,599 --> 00:04:17,220 a pesar y vamos a decir, ostras 85 00:04:17,220 --> 00:04:19,160 cómo se me está complicando esto 86 00:04:19,160 --> 00:04:20,379 está perdiendo el sentido 87 00:04:20,379 --> 00:04:22,639 porque no puede distinguir objetos entre sí 88 00:04:22,639 --> 00:04:24,579 pierde el sentido, en la realidad 89 00:04:24,579 --> 00:04:26,680 todo se puede distinguir 90 00:04:26,680 --> 00:04:28,139 de todo, no hay clones 91 00:04:28,139 --> 00:04:29,740 no existen los clones 92 00:04:29,740 --> 00:04:32,100 pues la idea de esto es gestionar eso 93 00:04:32,100 --> 00:04:34,579 esa realidad, bueno pues entonces 94 00:04:34,579 --> 00:04:36,480 uno después 95 00:04:36,480 --> 00:04:38,439 de hacer ese análisis que estamos hablando 96 00:04:38,439 --> 00:04:40,480 diría, oye, ¿algo de esto identifica de forma única 97 00:04:40,480 --> 00:04:42,199 al alumno? hombre, pues el nombre 98 00:04:42,199 --> 00:04:44,480 claramente no, la edad tampoco, las llanuras tampoco 99 00:04:44,480 --> 00:04:46,339 pero esto sí, afortunadamente 100 00:04:46,339 --> 00:04:48,420 tenemos un campo que se identifique de forma única 101 00:04:48,420 --> 00:04:50,360 porque si no lo tengo 102 00:04:50,360 --> 00:04:52,399 es que algo ha fallado en mi análisis 103 00:04:52,399 --> 00:04:55,019 seguramente tenga que añadir otro 104 00:04:55,019 --> 00:04:56,459 en este caso ya tenemos uno 105 00:04:56,459 --> 00:04:57,459 que identifica de forma única 106 00:04:57,459 --> 00:05:00,759 ¿para qué me sirve a mí tener un campo 107 00:05:00,759 --> 00:05:02,779 que identifica de forma única 108 00:05:02,779 --> 00:05:04,139 los objetos de una clase? 109 00:05:04,839 --> 00:05:06,740 me sirve para establecer 110 00:05:06,740 --> 00:05:08,079 el criterio de igualdad 111 00:05:08,079 --> 00:05:10,639 que es importantísimo cuando una aplicación 112 00:05:10,639 --> 00:05:11,839 trabaja con colecciones 113 00:05:11,839 --> 00:05:15,199 ¿vale? si yo tengo una propiedad 114 00:05:15,199 --> 00:05:16,879 que caracteriza unívocamente 115 00:05:16,879 --> 00:05:17,560 a los objetos 116 00:05:17,560 --> 00:05:19,819 el criterio de igualdad ya está claro 117 00:05:19,819 --> 00:05:22,040 y es que esa propiedad 118 00:05:22,040 --> 00:05:23,720 y esta propiedad sean iguales 119 00:05:23,720 --> 00:05:26,379 si lo que identifica de forma única 120 00:05:26,379 --> 00:05:28,259 mis alumnos es el número de matrícula 121 00:05:28,259 --> 00:05:30,000 pues dos alumnos 122 00:05:30,000 --> 00:05:32,519 dos objetos alumno con mismo número de matrícula 123 00:05:32,519 --> 00:05:33,240 son el mismo 124 00:05:33,240 --> 00:05:36,220 aunque físicamente estén en direcciones 125 00:05:36,220 --> 00:05:37,819 de memoria distintas, eso nos da igual 126 00:05:37,819 --> 00:05:39,699 lo que nos importa es la interpretación real 127 00:05:39,699 --> 00:05:40,839 de la situación 128 00:05:40,839 --> 00:05:43,660 yo puedo ver dos fotos de una persona 129 00:05:43,660 --> 00:05:46,240 y digo, hombre, esta persona 130 00:05:46,240 --> 00:05:46,779 es la misma 131 00:05:46,779 --> 00:05:49,040 y son dos fotos distintas 132 00:05:49,040 --> 00:05:51,779 pero hay una sola persona, que haya dos fotos 133 00:05:51,779 --> 00:05:54,579 de la misma persona no significa que esa persona exista dos veces en la realidad 134 00:05:54,579 --> 00:05:57,579 no, pero gracias a que su aspecto 135 00:05:57,579 --> 00:06:00,379 que lo identifica de forma única, su aspecto 136 00:06:00,379 --> 00:06:02,300 es igual en esta foto y es igual en esta foto 137 00:06:02,300 --> 00:06:04,699 yo puedo concluir que esa persona es la misma 138 00:06:04,699 --> 00:06:09,199 pues aquí igual, yo tengo un objeto con número de matrícula no sé qué 139 00:06:09,199 --> 00:06:12,399 y otro objeto con número de matrícula no sé qué, el mismo 140 00:06:12,399 --> 00:06:13,939 pues es el mismo objeto 141 00:06:13,939 --> 00:06:17,439 y la aplicación puede asumir a todos los efectos 142 00:06:17,439 --> 00:06:19,379 que es el mismo 143 00:06:19,379 --> 00:06:20,980 ¿vale? que es el mismo 144 00:06:20,980 --> 00:06:23,720 entonces que haya una clave, un campo que funcione 145 00:06:23,720 --> 00:06:25,819 como clave primaria, nos permite establecer 146 00:06:25,819 --> 00:06:27,560 el criterio de igualdad que hace 147 00:06:27,560 --> 00:06:29,040 que un objeto sea igual a otro 148 00:06:29,040 --> 00:06:31,600 y poder establecer ese criterio 149 00:06:31,600 --> 00:06:33,379 de igualdad, se traduce 150 00:06:33,379 --> 00:06:35,120 en que yo puedo programar el método 151 00:06:35,120 --> 00:06:37,500 equals, que es un método 152 00:06:37,500 --> 00:06:39,600 que tenemos que acostumbrarnos a tener 153 00:06:39,600 --> 00:06:41,459 programado, porque muchas 154 00:06:41,459 --> 00:06:43,199 otras clases tiran de él 155 00:06:43,199 --> 00:06:45,500 por ejemplo 156 00:06:45,500 --> 00:06:46,879 las clases colección 157 00:06:46,879 --> 00:06:49,459 ArrayList, LinkedList, Haset, todas esas 158 00:06:49,459 --> 00:06:51,779 tiran de él, entonces si yo no lo tengo implementado 159 00:06:51,779 --> 00:06:52,899 ese método correctamente 160 00:06:52,899 --> 00:06:55,100 cuando yo use los métodos de esas clases 161 00:06:55,100 --> 00:06:57,120 add, remove, van a estar 162 00:06:57,120 --> 00:06:59,220 no van a dar error de compilación obviamente 163 00:06:59,220 --> 00:07:00,939 pero luego cuando la aplicación funcione 164 00:07:00,939 --> 00:07:03,579 seguramente funcione de una manera que no es la que yo quiero 165 00:07:03,579 --> 00:07:06,040 y diga, uy, que resultado tan extraño 166 00:07:06,040 --> 00:07:07,379 claro, porque 167 00:07:07,379 --> 00:07:09,360 esas aplicaciones, esas clases 168 00:07:09,360 --> 00:07:11,560 están usando el método equals 169 00:07:11,560 --> 00:07:13,519 si yo no lo he implementado 170 00:07:13,519 --> 00:07:15,639 respondiendo a la realidad 171 00:07:15,639 --> 00:07:17,579 de mi problema, si yo no lo he implementado, van a tirar 172 00:07:17,579 --> 00:07:19,620 del equals de object. Y el equals 173 00:07:19,620 --> 00:07:21,800 de object no tiene ningún sentido. El equals de object te dice 174 00:07:21,800 --> 00:07:23,879 oye, tienes dos fotos de Pepito. 175 00:07:25,120 --> 00:07:25,720 Lo siento, 176 00:07:25,819 --> 00:07:27,300 son dos fotos distintas, hay dos Pepitos. 177 00:07:27,899 --> 00:07:29,199 Eso es lo que te dice el método de object. 178 00:07:30,300 --> 00:07:31,319 El equals de object. 179 00:07:31,600 --> 00:07:33,560 Y eso no tiene ningún sentido en una aplicación. 180 00:07:34,100 --> 00:07:34,920 No tiene ningún sentido. 181 00:07:35,339 --> 00:07:37,319 Yo puedo tener tres fotos de Pepito, pero 182 00:07:37,319 --> 00:07:38,600 es que Pepito solo es uno. 183 00:07:39,540 --> 00:07:41,420 Pues entonces hay que implementar el equals 184 00:07:41,420 --> 00:07:43,379 de la clase Pepito que me diga 185 00:07:43,379 --> 00:07:44,240 oye, 186 00:07:44,240 --> 00:07:47,399 donde tú veas este aspecto, aunque lo veas 187 00:07:47,399 --> 00:07:49,620 en tres fotos distintas, es que solo hay uno 188 00:07:49,620 --> 00:07:51,240 es esta única persona 189 00:07:51,240 --> 00:07:53,600 pues eso es lo que hacemos poniendo el equals 190 00:07:53,600 --> 00:07:54,660 diciendo, oye, perdona 191 00:07:54,660 --> 00:07:57,879 todos los que tengan el mismo número de matrícula 192 00:07:57,879 --> 00:07:58,699 son el mismo 193 00:07:58,699 --> 00:08:00,779 estoy refiriendo al mismo 194 00:08:00,779 --> 00:08:03,019 aunque esté instanciado 27 veces 195 00:08:03,019 --> 00:08:04,199 me refiero al mismo 196 00:08:04,199 --> 00:08:06,879 entonces, dar esta información 197 00:08:06,879 --> 00:08:09,339 es fundamental 198 00:08:09,339 --> 00:08:11,240 para que las clases 199 00:08:11,240 --> 00:08:13,040 que trabajan con nosotros 200 00:08:13,040 --> 00:08:15,100 su funcionamiento tenga sentido 201 00:08:15,100 --> 00:08:17,620 y entre esas clases 202 00:08:17,620 --> 00:08:19,620 repito, pues todas las de colecciones 203 00:08:19,620 --> 00:08:20,680 todas las de colecciones 204 00:08:20,680 --> 00:08:25,199 bueno, pues todas estas cosas son 205 00:08:25,199 --> 00:08:28,000 no es que hagan que una aplicación pete o no pete 206 00:08:28,000 --> 00:08:29,379 si las aplicaciones no petan 207 00:08:29,379 --> 00:08:31,699 tú despliegas una aplicación y funciona, todo funciona 208 00:08:31,699 --> 00:08:34,179 el problema de una aplicación 209 00:08:34,179 --> 00:08:35,779 no es que te dé errores de compilación 210 00:08:35,779 --> 00:08:36,879 se arregla en un pifas 211 00:08:36,879 --> 00:08:38,639 que te dé errores de ejecución 212 00:08:38,639 --> 00:08:41,259 se te va a arreglar un poquito más pero también en un pifas 213 00:08:41,259 --> 00:08:43,100 el problema de una aplicación es que lo que haga 214 00:08:43,100 --> 00:08:44,639 sea útil, tenga sentido 215 00:08:44,639 --> 00:08:45,720 ese es el problema 216 00:08:45,720 --> 00:08:49,080 entonces para que sea útil y tenga sentido 217 00:08:49,080 --> 00:08:50,399 todas estas cosas 218 00:08:50,399 --> 00:08:52,700 tienen que estar claras, ¿vale? 219 00:08:53,320 --> 00:08:54,679 bueno, pues en nuestro caso 220 00:08:54,679 --> 00:08:56,059 en nuestra clase alumno 221 00:08:56,059 --> 00:08:59,320 implementamos el criterio de igualdad en base a la clave 222 00:08:59,320 --> 00:08:59,940 primaria 223 00:08:59,940 --> 00:09:02,879 ¿vale? pues ya está 224 00:09:02,879 --> 00:09:05,500 y ahora ya 225 00:09:05,500 --> 00:09:07,240 nos hacíamos 226 00:09:07,240 --> 00:09:08,919 una aplicación como la 227 00:09:08,919 --> 00:09:11,039 el modelo de datos ya está, clase alumno punto pelota 228 00:09:11,039 --> 00:09:13,000 ahora ya podemos hacernos el main 229 00:09:13,000 --> 00:09:14,720 que es la aplicación que gestiona eso 230 00:09:14,720 --> 00:09:17,500 y habíamos decidido estas funcionalidades 231 00:09:17,500 --> 00:09:19,480 bueno pues las vamos a meter 232 00:09:19,480 --> 00:09:21,080 yo no voy a hacer el menú porque es un rollo 233 00:09:21,080 --> 00:09:23,360 simplemente voy a hacer 234 00:09:23,360 --> 00:09:25,299 una clase donde pongo 235 00:09:25,299 --> 00:09:27,139 los métodos que hacen esto y luego ya 236 00:09:27,139 --> 00:09:29,059 el menú del main llamaría 237 00:09:29,059 --> 00:09:30,340 esos métodos y se acabó 238 00:09:30,340 --> 00:09:33,080 venga pues vamos a hacernos 239 00:09:33,080 --> 00:09:34,820 una clase aparte con las operaciones 240 00:09:34,820 --> 00:09:37,059 a las que llamaría el menú 241 00:09:37,059 --> 00:09:39,720 entonces 242 00:09:39,720 --> 00:09:42,840 nuestro proyecto este 243 00:09:42,840 --> 00:09:44,620 era el de jerarquía colecciones 244 00:09:44,620 --> 00:09:46,960 lo vamos a sacar 245 00:09:46,960 --> 00:09:48,360 en un proyecto aparte 246 00:09:48,360 --> 00:09:50,340 porque este es el que habíamos usado para 247 00:09:50,340 --> 00:09:52,759 explicar esto de las listas 248 00:09:52,759 --> 00:09:54,980 el patatín, vamos a hacer un proyecto 249 00:09:54,980 --> 00:09:56,740 aparte, este ejemplito de alumnos 250 00:09:56,740 --> 00:10:02,559 para luego subirlo al aula 251 00:10:02,559 --> 00:10:04,440 virtual, vale, pues ejemplo 252 00:10:04,440 --> 00:10:05,059 alumnos 253 00:10:05,059 --> 00:10:08,539 venga, pues en ejemplo alumnos 254 00:10:08,539 --> 00:10:10,419 me hago mi paquete 255 00:10:10,419 --> 00:10:12,600 modelo, donde solamente va a haber 256 00:10:12,600 --> 00:10:13,399 una clase esta vez. 257 00:10:19,169 --> 00:10:21,590 Vale, mi paquete modelo con las entidades de la aplicación 258 00:10:21,590 --> 00:10:23,169 solo tengo una, la de alumno. 259 00:10:23,429 --> 00:10:25,250 Pues vamos a, la voy a copiar 260 00:10:25,250 --> 00:10:27,269 directamente del otro proyecto. 261 00:10:35,330 --> 00:10:36,090 ¡Hala! Ya tenemos 262 00:10:36,090 --> 00:10:40,559 ahí nuestra clase 263 00:10:40,559 --> 00:10:42,320 alumno que ya está hecha. Y ahora 264 00:10:42,320 --> 00:10:44,779 vamos a hacernos un paquete 265 00:10:44,779 --> 00:10:46,539 con la lógica, las operaciones 266 00:10:46,539 --> 00:10:48,440 que van a ser llamadas luego desde donde sea. 267 00:10:49,059 --> 00:10:50,539 Desde un menú, desde una interfaz 268 00:10:50,539 --> 00:10:51,960 gráfica, me da lo mismo. 269 00:10:54,100 --> 00:10:54,440 A ver. 270 00:10:56,519 --> 00:10:58,460 este va a ser 271 00:10:58,460 --> 00:11:00,200 pues lógica, venga, paquete 272 00:11:00,200 --> 00:11:00,879 lógica 273 00:11:00,879 --> 00:11:04,700 y en paquete lógica vamos a 274 00:11:04,700 --> 00:11:06,399 crear una clase 275 00:11:06,399 --> 00:11:07,899 con las operaciones 276 00:11:07,899 --> 00:11:09,940 que vamos a realizar 277 00:11:09,940 --> 00:11:11,460 sobre los datos 278 00:11:11,460 --> 00:11:13,500 ¿vale? sobre los datos 279 00:11:13,500 --> 00:11:18,940 y luego tendremos pues un paquete 280 00:11:18,940 --> 00:11:20,960 main donde está la clase principal 281 00:11:20,960 --> 00:11:23,059 con el menú 282 00:11:23,059 --> 00:11:23,919 y todo eso 283 00:11:23,919 --> 00:11:28,039 o la interfaz gráfica, lo que sea 284 00:11:28,039 --> 00:11:29,580 como nos queramos comunicar 285 00:11:29,580 --> 00:12:01,799 Entonces aquí uno tendría su clase main y esta clase main pues ya tendría dos tareas, una recuperar los datos, porque recordad que para una aplicación pueda trabajar con datos, los tiene que tener volcados en variables suyas, un código, un programa solamente puede trabajar con variables que hay aquí, solamente puede trabajar con variables que hay aquí. 286 00:12:01,799 --> 00:12:03,399 entonces 287 00:12:03,399 --> 00:12:06,600 el primer problema del main siempre es 288 00:12:06,600 --> 00:12:07,759 volcar esos datos 289 00:12:07,759 --> 00:12:10,399 y luego ya el menú que llama 290 00:12:10,399 --> 00:12:12,659 las operaciones o el frame de interfaz 291 00:12:12,659 --> 00:12:14,639 gráfica, crearlo para lo que 292 00:12:14,639 --> 00:12:16,600 sea, ya una vez 293 00:12:16,600 --> 00:12:18,659 que tiene los datos, cuando se va a trabajar en variables 294 00:12:18,659 --> 00:12:20,000 pues ya el menú con 295 00:12:20,000 --> 00:12:22,500 las llamadas a los métodos que vamos a hacer en otra clase 296 00:12:22,500 --> 00:12:24,279 y listo, entonces 297 00:12:24,279 --> 00:12:26,559 aquí los datos con los que va 298 00:12:26,559 --> 00:12:28,559 a trabajar la aplicación, ¿cuáles 299 00:12:28,559 --> 00:12:30,059 van a ser? pues los datos van a ser 300 00:12:30,059 --> 00:12:32,779 un montón de alumnos, se supone que esta es la aplicación 301 00:12:32,779 --> 00:12:34,460 de secretaría que trabaja con un montón 302 00:12:34,460 --> 00:12:36,460 de alumnos que van y se están matriculando 303 00:12:36,460 --> 00:12:38,440 vale, pues un montón 304 00:12:38,440 --> 00:12:40,340 de alumnos, sus datos tendrán que estar 305 00:12:40,340 --> 00:12:41,740 volcados aquí en algún sitio 306 00:12:41,740 --> 00:12:44,340 bueno, hasta ahora 307 00:12:44,340 --> 00:12:45,740 los volcábamos en un array 308 00:12:45,740 --> 00:12:47,980 vamos a volcarnos en una lista, ¿no? 309 00:12:48,019 --> 00:12:50,019 porque como en principio no sé cuántos alumnos va a haber 310 00:12:50,019 --> 00:12:52,340 bueno, pues este main va a tener 311 00:12:52,340 --> 00:12:53,559 su lista de alumnos 312 00:12:53,559 --> 00:12:59,519 su lista de objetos alumno 313 00:12:59,519 --> 00:13:01,440 ¿vale? 314 00:13:01,440 --> 00:13:03,620 que son los alumnos 315 00:13:03,620 --> 00:13:05,139 con los que va a trabajar 316 00:13:05,139 --> 00:13:07,759 ahora el tema es 317 00:13:07,759 --> 00:13:09,159 aquí importamos 318 00:13:09,159 --> 00:13:14,789 lista y alumno 319 00:13:14,789 --> 00:13:17,169 como veis 320 00:13:17,169 --> 00:13:18,809 yo aquí todavía a la hora de declarar 321 00:13:18,809 --> 00:13:21,190 no me estoy mojando sobre que tipo de lista 322 00:13:21,190 --> 00:13:23,389 cualquier 323 00:13:23,389 --> 00:13:24,710 implementación de list 324 00:13:24,710 --> 00:13:26,610 vale, array list 325 00:13:26,610 --> 00:13:28,870 implementa list, luego vale 326 00:13:28,870 --> 00:13:30,690 linked list 327 00:13:30,690 --> 00:13:32,049 implementa list, luego vale 328 00:13:32,049 --> 00:13:34,389 en el momento de declararlo no me estoy mojando todavía 329 00:13:34,389 --> 00:13:36,690 podría, si quiero 330 00:13:36,690 --> 00:13:38,710 si sé ya qué tipo de lista 331 00:13:38,710 --> 00:13:40,450 quiero que sea alumnos, podría poner aquí 332 00:13:40,450 --> 00:13:42,370 ArrayList o LinkedList, podría, no hay problema 333 00:13:42,370 --> 00:13:44,669 vale, entonces 334 00:13:44,669 --> 00:13:46,970 en un caso real, estos datos 335 00:13:46,970 --> 00:13:48,570 se habrán volcado de una base de datos 336 00:13:48,570 --> 00:13:50,549 claro, los hemos leído con el procedimiento de 337 00:13:50,549 --> 00:13:52,210 acceso a datos 338 00:13:52,210 --> 00:13:54,769 que sea, los hemos leído y ya están 339 00:13:54,769 --> 00:13:56,629 aquí, en nuestro caso no los podemos 340 00:13:56,629 --> 00:13:58,129 volcar ni de una base de datos ni de nada 341 00:13:58,129 --> 00:14:00,009 entonces vamos a crear una lista vacía 342 00:14:00,009 --> 00:14:02,690 y ya está, y la aplicación que vaya insertando 343 00:14:02,690 --> 00:14:04,789 haciendo lo que sea con una lista que inicialmente 344 00:14:04,789 --> 00:14:05,409 está vacía 345 00:14:05,409 --> 00:14:08,470 aquí ya sí que tendríamos que elegir 346 00:14:08,470 --> 00:14:10,190 aquí ya sí que hay que elegir 347 00:14:10,190 --> 00:14:11,490 o ArrayList o LinkedInList 348 00:14:11,490 --> 00:14:12,850 ¿vale? 349 00:14:13,990 --> 00:14:15,129 ¿qué elegimos? 350 00:14:15,929 --> 00:14:17,309 bueno, pues depende 351 00:14:17,309 --> 00:14:20,590 va a haber muchos alumnos o va a haber pocos 352 00:14:20,590 --> 00:14:22,350 si va a haber muchos, muchos 353 00:14:22,350 --> 00:14:24,350 ArrayList ya empieza a ser un poco pesado 354 00:14:24,350 --> 00:14:26,190 una Array así muy largote 355 00:14:26,190 --> 00:14:29,009 el secretario 356 00:14:29,009 --> 00:14:30,509 que está ahí trabajando con los alumnos 357 00:14:30,509 --> 00:14:32,149 sobre todo, ¿qué hace? 358 00:14:32,690 --> 00:14:34,649 insertar alumnos 359 00:14:34,649 --> 00:14:36,730 eliminarlos 360 00:14:36,730 --> 00:14:38,870 coger alumnos nuevos 361 00:14:38,870 --> 00:14:41,450 o borrarlos, es decir, meter y sacar 362 00:14:41,450 --> 00:14:43,210 en la lista, o sobre todo 363 00:14:43,210 --> 00:14:45,029 estás pidiendo certificados de notas 364 00:14:45,029 --> 00:14:46,509 es decir, consultando 365 00:14:46,509 --> 00:14:49,529 sobre todo, ¿qué hace mayoritariamente su trabajo? 366 00:14:50,289 --> 00:14:51,389 consultas para pedir 367 00:14:51,389 --> 00:14:53,250 certificados, lo que sea, o matricular 368 00:14:53,250 --> 00:14:54,350 y desmatricular alumnos 369 00:14:54,350 --> 00:14:57,809 porque si mayoritariamente matricula y desmatricula 370 00:14:57,809 --> 00:14:59,590 un linked list 371 00:14:59,590 --> 00:15:01,370 que es mucho más 372 00:15:01,370 --> 00:15:03,149 Eficiente para insertar y eliminar 373 00:15:03,149 --> 00:15:03,830 Como ya vimos 374 00:15:03,830 --> 00:15:07,350 Pero si esencialmente lo que hace es consultas 375 00:15:07,350 --> 00:15:09,029 Es lo que más hace, pues un ArrayList 376 00:15:09,029 --> 00:15:10,889 Porque consultar un ArrayList es inmediato 377 00:15:10,889 --> 00:15:12,909 Índice y listo 378 00:15:12,909 --> 00:15:15,370 Bueno, pues a elegir 379 00:15:15,370 --> 00:15:16,690 Vamos a poner un LinkedList 380 00:15:16,690 --> 00:15:19,129 Que cuando se habla de volúmenes 381 00:15:19,129 --> 00:15:19,929 De datos grandes 382 00:15:19,929 --> 00:15:22,909 Suele ser la que por defecto 383 00:15:22,909 --> 00:15:24,269 Más se selecciona 384 00:15:24,269 --> 00:15:26,769 ¿Vale? 385 00:15:30,700 --> 00:15:32,740 Pero vamos, que si se trata de 386 00:15:32,740 --> 00:15:34,120 Como hemos dicho ya otras veces 387 00:15:34,120 --> 00:15:35,840 pues uno está trabajando con una chorradita 388 00:15:35,840 --> 00:15:37,580 que sabe que va a haber 10 o 12 elementos 389 00:15:37,580 --> 00:15:38,720 y no va a haber más de 10 o 12 390 00:15:38,720 --> 00:15:39,879 pues un ArrayList y ya está 391 00:15:39,879 --> 00:15:43,200 el ArrayList es mejor, es un Array y listo 392 00:15:43,200 --> 00:15:44,139 bueno 393 00:15:44,139 --> 00:15:46,779 una vez seleccionado 394 00:15:46,779 --> 00:15:49,039 el uso es el mismo, se usan igual 395 00:15:49,039 --> 00:15:51,120 los métodos son iguales, son los métodos de List 396 00:15:51,120 --> 00:15:52,059 son igualitos 397 00:15:52,059 --> 00:15:54,700 me da igual haber seleccionado esta que esta otra 398 00:15:54,700 --> 00:15:56,740 la diferencia es cómo funcionan por dentro 399 00:15:56,740 --> 00:15:58,240 pero cómo funcionan por dentro me da igual 400 00:15:58,240 --> 00:16:00,799 una vez seleccionado 401 00:16:00,799 --> 00:16:02,200 me da igual ArrayList que el LinkedList 402 00:16:02,200 --> 00:16:05,379 lo que yo hago es add, remove, get 403 00:16:05,379 --> 00:16:06,200 es lo que hago 404 00:16:06,200 --> 00:16:08,340 me da igual con esta versión que con otra 405 00:16:08,340 --> 00:16:10,539 esta aporta 406 00:16:10,539 --> 00:16:12,659 métodos adicionales que no tiene ArrayList 407 00:16:12,659 --> 00:16:13,580 aporta 408 00:16:13,580 --> 00:16:14,879 porque esta 409 00:16:14,879 --> 00:16:18,220 la ofrecen también para simular 410 00:16:18,220 --> 00:16:20,200 el funcionamiento de una pila 411 00:16:20,200 --> 00:16:21,860 de una cola, lo mencionamos el otro día 412 00:16:21,860 --> 00:16:24,159 entonces aporta métodos específicos de pilas 413 00:16:24,159 --> 00:16:25,659 que son como push, pop 414 00:16:25,659 --> 00:16:28,320 pero bueno, ya lo mencionamos 415 00:16:28,320 --> 00:16:31,460 en otro momento 416 00:16:31,460 --> 00:16:33,240 ahora primero vamos a hacer esta aplicación 417 00:16:33,240 --> 00:16:34,580 con esto y ya está 418 00:16:34,580 --> 00:16:36,679 bueno pues ya estamos seleccionados 419 00:16:36,679 --> 00:16:37,759 nuestros datos van a estar aquí 420 00:16:37,759 --> 00:16:40,620 y ahora ya, aquí ya estaría el menú 421 00:16:40,620 --> 00:16:41,519 que 422 00:16:41,519 --> 00:16:44,759 con las operaciones que habíamos dicho 423 00:16:44,759 --> 00:16:45,580 que eran 424 00:16:45,580 --> 00:16:52,940 estas de aquí 425 00:16:52,940 --> 00:16:54,659 nuestro, no esto no era 426 00:16:54,659 --> 00:17:01,009 estas eran 427 00:17:01,009 --> 00:17:02,389 nuestras operaciones 428 00:17:02,389 --> 00:17:04,250 vale 429 00:17:04,250 --> 00:17:05,190 pues a ver 430 00:17:05,190 --> 00:17:08,490 el menú llamará 431 00:17:08,490 --> 00:17:10,569 estas operaciones y vamos a hacer los métodos 432 00:17:10,569 --> 00:17:12,029 los métodos que va a usar 433 00:17:12,029 --> 00:17:14,009 entonces aquí 434 00:17:14,009 --> 00:17:15,990 en nuestro este de operaciones 435 00:17:15,990 --> 00:17:19,730 el public sí o sí 436 00:17:19,730 --> 00:17:21,789 obviamente, porque si no, ¿quién lo va a poder usar? 437 00:17:22,250 --> 00:17:23,410 solamente los del paquete 438 00:17:23,410 --> 00:17:25,670 vale, pues el método insertar 439 00:17:25,670 --> 00:17:26,170 alumno 440 00:17:26,170 --> 00:17:32,140 insertar alumno 441 00:17:32,140 --> 00:17:43,269 vale, pues de nuevo 442 00:17:43,269 --> 00:17:45,430 siempre que hacemos un método 443 00:17:45,430 --> 00:17:47,589 tenemos que resolver 444 00:17:47,589 --> 00:17:49,509 aparte del nombre, dos problemas 445 00:17:49,509 --> 00:17:51,829 insertar alumno 446 00:17:51,829 --> 00:17:54,789 ¿Qué datos necesita para trabajar? 447 00:17:55,470 --> 00:17:56,910 ¿Qué le tengo que pasar por aquí? 448 00:17:57,009 --> 00:17:57,930 ¿Qué datos necesita para trabajar? 449 00:18:02,690 --> 00:18:03,450 Claro, dos. 450 00:18:04,009 --> 00:18:07,609 La lista, el alumno que se matricula y el contenedor, 451 00:18:07,710 --> 00:18:08,769 la lista de alumnos a la que va. 452 00:18:09,450 --> 00:18:09,670 ¿Vale? 453 00:18:09,710 --> 00:18:10,490 Necesita esos dos datos. 454 00:18:11,410 --> 00:18:16,069 Entonces, la lista de alumnos la tiene aquí el main dentro. 455 00:18:16,849 --> 00:18:18,089 La tiene aquí el main. 456 00:18:18,769 --> 00:18:21,410 Entonces, podemos, esta de aquí. 457 00:18:22,410 --> 00:18:25,650 Entonces, podemos reorganizarlo como lo hicimos ya 458 00:18:25,650 --> 00:18:28,089 clase, podemos reorganizarlo 459 00:18:28,089 --> 00:18:30,329 para que no tengamos 460 00:18:30,329 --> 00:18:31,829 que pasársela por parámetro 461 00:18:31,829 --> 00:18:33,890 todo el rato, no tengamos que 462 00:18:33,890 --> 00:18:35,349 pasársela por parámetro 463 00:18:35,349 --> 00:18:36,529 podemos 464 00:18:36,529 --> 00:18:39,210 poner la lista aquí 465 00:18:39,210 --> 00:18:44,759 como variable estática 466 00:18:44,759 --> 00:18:48,259 aquí están todos 467 00:18:48,259 --> 00:18:50,380 nuestros datos, aquí van a estar nuestros datos 468 00:18:50,380 --> 00:18:52,160 y así no tenemos 469 00:18:52,160 --> 00:18:54,099 que pasársela todo el rato a los 470 00:18:54,099 --> 00:18:54,700 métodos 471 00:18:54,700 --> 00:18:57,960 y el main no tiene ningún problema porque el main 472 00:18:57,960 --> 00:19:00,140 cuando quiera añadir, cuando quiera acceder 473 00:19:00,140 --> 00:19:02,119 a los datos, los tiene aquí 474 00:19:02,119 --> 00:19:06,779 operaciones 475 00:19:06,779 --> 00:19:07,480 por dios 476 00:19:07,480 --> 00:19:12,579 los tiene aquí, si quiere acceder a ellos 477 00:19:12,579 --> 00:19:14,420 es una variable estática de operaciones 478 00:19:14,420 --> 00:19:15,619 los tiene ahí cuando quiera 479 00:19:15,619 --> 00:19:18,500 entonces va a ser más cómodo 480 00:19:19,380 --> 00:19:20,519 que nuestros datos 481 00:19:20,519 --> 00:19:22,619 los guardemos en una variable estática 482 00:19:22,619 --> 00:19:23,299 de esta clase 483 00:19:23,299 --> 00:19:26,099 y así estos métodos 484 00:19:26,099 --> 00:19:28,039 si los hacemos static 485 00:19:28,039 --> 00:19:30,519 directamente pueden 486 00:19:30,519 --> 00:19:32,480 acceder sin ningún problema a nuestros datos 487 00:19:32,480 --> 00:19:34,940 pueden acceder a nuestros datos, sino hay que pasárselos 488 00:19:34,940 --> 00:19:36,960 todo el rato por parámetros del main 489 00:19:36,960 --> 00:19:37,759 que es un rollo 490 00:19:37,759 --> 00:19:40,779 ¿vale? entonces 491 00:19:40,779 --> 00:19:43,440 ahora mismo este método 492 00:19:43,440 --> 00:19:44,920 y todos los que están aquí 493 00:19:44,920 --> 00:19:46,839 que haremos aquí abajo, solamente 494 00:19:46,839 --> 00:19:48,740 necesita, en este caso 495 00:19:48,740 --> 00:19:50,079 el alumno insertar 496 00:19:50,079 --> 00:19:54,529 ¿vale? 497 00:19:55,329 --> 00:19:57,450 ¿me tiene que devolver algo como valor de retorno? 498 00:19:57,849 --> 00:19:58,450 este método 499 00:19:58,450 --> 00:20:03,509 no tiene que devolver nada, la acción es insertar 500 00:20:03,509 --> 00:20:05,509 en la lista de arriba, no tiene que devolver nada 501 00:20:05,509 --> 00:20:07,349 vale, entonces podemos 502 00:20:07,349 --> 00:20:09,710 poner un void y listo 503 00:20:09,710 --> 00:20:13,029 entonces claro, esto 504 00:20:13,029 --> 00:20:15,690 pues queda mucho más bonito, si uno lo documenta 505 00:20:15,690 --> 00:20:17,369 y dice parámetro a 506 00:20:17,369 --> 00:20:21,730 alumno 507 00:20:21,730 --> 00:20:23,849 a insertar, no lo voy a hacer en todos los métodos 508 00:20:23,849 --> 00:20:24,829 pero no perdáis de vista 509 00:20:24,829 --> 00:20:26,450 esto, esto 510 00:20:26,450 --> 00:20:29,670 vale, no devuelve nada 511 00:20:29,670 --> 00:20:31,210 y aquí se pone la explicación 512 00:20:31,210 --> 00:20:32,990 pues que es lo que hace 513 00:20:32,990 --> 00:20:35,650 inserta el 514 00:20:35,650 --> 00:20:37,829 alumno en la 515 00:20:37,829 --> 00:20:40,289 colección 516 00:20:40,289 --> 00:20:42,910 de alumnos. 517 00:20:43,329 --> 00:20:44,450 Lo que sea, lo que fuera. 518 00:20:44,670 --> 00:20:47,369 Ahí se quedaría el método documentado. 519 00:20:49,349 --> 00:20:50,690 Ahora, el código de este método 520 00:20:50,690 --> 00:20:52,970 ahora ya se ha quedado muy chorra, ¿verdad? 521 00:20:55,269 --> 00:20:56,849 ¿Cuál sería el código de ese método? 522 00:21:04,309 --> 00:21:05,309 ¿Qué escribo ahí? 523 00:21:12,839 --> 00:21:13,900 No sé, ya está aquí. 524 00:21:17,720 --> 00:21:17,960 ¿Vale? 525 00:21:18,799 --> 00:21:20,480 Este método se queda en esto. 526 00:21:20,480 --> 00:21:24,859 ya está 527 00:21:24,859 --> 00:21:27,259 no tiene más que hacer 528 00:21:27,259 --> 00:21:29,160 este método 529 00:21:29,160 --> 00:21:32,559 ¿eh? 530 00:21:34,460 --> 00:21:36,359 sí, se puede poner directamente en el main 531 00:21:36,359 --> 00:21:38,839 pero estamos separando 532 00:21:38,839 --> 00:21:39,680 en clases 533 00:21:39,680 --> 00:21:41,460 ¿vale? estamos separando en clases 534 00:21:41,460 --> 00:21:43,700 que es una buena filosofía de diseño 535 00:21:43,700 --> 00:21:46,859 las clases relacionadas con acceder a los datos 536 00:21:46,859 --> 00:21:47,440 en un lado 537 00:21:47,440 --> 00:21:50,099 la clase relacionada con la vista en otro 538 00:21:50,099 --> 00:21:50,940 ¿vale? 539 00:21:51,660 --> 00:21:53,500 cuanto más vayamos separando mejor 540 00:21:53,500 --> 00:21:55,599 vale 541 00:21:55,599 --> 00:21:57,960 bueno pues esto se quedaría así 542 00:21:57,960 --> 00:22:02,539 aquí de todas maneras 543 00:22:02,539 --> 00:22:04,180 hay que irse 544 00:22:04,180 --> 00:22:08,470 hay que irse acostumbrando 545 00:22:08,470 --> 00:22:10,190 quizás ser consciente de ciertas cosas 546 00:22:10,190 --> 00:22:12,269 yo veo 547 00:22:12,269 --> 00:22:14,430 esta línea alumnos.ad 548 00:22:14,430 --> 00:22:15,750 así directamente la veo 549 00:22:15,750 --> 00:22:18,289 y me parece un código 550 00:22:18,289 --> 00:22:22,970 peligroso 551 00:22:22,970 --> 00:22:24,990 ¿por qué? 552 00:22:27,470 --> 00:22:32,910 Yo miro este método aisladamente y el objeto alumnos llama a un método. 553 00:22:34,190 --> 00:22:36,849 Esto puede ser un null pointer exception, por supuestísimo. 554 00:22:38,190 --> 00:22:42,829 Entonces, siempre hay que proteger las aplicaciones de null pointer exception. 555 00:22:44,190 --> 00:22:44,670 ¿Vale? 556 00:22:45,829 --> 00:22:48,069 Entonces, hombre, esto quedaría más bonito. 557 00:22:48,849 --> 00:22:54,130 Nosotros sabemos que alumnos no va a ser nunca null porque ya le he dado un valor inicial. 558 00:22:54,130 --> 00:22:56,109 pero oye, imagínate 559 00:22:56,109 --> 00:22:56,809 que yo que sé 560 00:22:56,809 --> 00:22:59,809 la colección en algún momento 561 00:22:59,809 --> 00:23:01,890 del software, hay alguien 562 00:23:01,890 --> 00:23:04,029 que la ha puesto a null, pues hombre 563 00:23:04,029 --> 00:23:05,890 yo no sé lo que van a hacer los demás 564 00:23:05,890 --> 00:23:08,109 entonces, cada método 565 00:23:08,109 --> 00:23:09,769 cuanto más protegido 566 00:23:09,769 --> 00:23:11,130 esté frente a error es mejor 567 00:23:11,130 --> 00:23:13,529 entonces hombre, esto queda mucho mejor si es así 568 00:23:13,529 --> 00:23:15,970 si la lista 569 00:23:15,970 --> 00:23:17,650 alumnos es diferente de null 570 00:23:17,650 --> 00:23:20,269 entonces 571 00:23:20,269 --> 00:23:23,589 añado el alumno 572 00:23:23,589 --> 00:23:33,089 Y si no, pues estaría bien crearla, si no la creo y al inserto. 573 00:24:07,779 --> 00:24:11,240 Este método, hombre, es mucho mejor, mucho más bonito. 574 00:24:11,799 --> 00:24:15,500 Aquí que haya un null pointer excepción es imposible, imposible. 575 00:24:16,319 --> 00:24:21,039 Aquí es imposible que lo haya, porque solamente hay dos llamadas aquí, aquí y aquí. 576 00:24:21,039 --> 00:24:24,920 Y en ninguno de los dos casos va a ser null alumnos, en ninguno de los dos. 577 00:24:24,920 --> 00:24:27,200 entonces claro 578 00:24:27,200 --> 00:24:30,000 nosotros en nuestro caso 579 00:24:30,000 --> 00:24:32,000 estamos mirando aquí arriba y decimos 580 00:24:32,000 --> 00:24:33,200 nunca va a ser null pero oye 581 00:24:33,200 --> 00:24:35,539 quien sabe quien puede llamar a ese método 582 00:24:35,539 --> 00:24:37,259 entonces bueno no pasa nada porque 583 00:24:37,259 --> 00:24:39,339 vayamos escribiendo más código 584 00:24:39,339 --> 00:24:41,700 simplemente a efectos de acostumbrarnos 585 00:24:41,700 --> 00:24:43,400 a entender las cosas 586 00:24:43,400 --> 00:24:46,279 vale por insertar alumnos que ya está 587 00:24:46,279 --> 00:24:48,480 inserto uno en la colección 588 00:24:48,480 --> 00:24:53,569 que otra 589 00:24:53,569 --> 00:24:54,309 funcionalidad tenemos 590 00:24:54,309 --> 00:24:57,349 mostrarnos de alumno dado su número 591 00:24:57,349 --> 00:24:59,210 de matrícula 592 00:24:59,210 --> 00:25:00,390 pues 593 00:25:00,390 --> 00:25:03,109 este 594 00:25:03,109 --> 00:25:04,509 método 595 00:25:04,509 --> 00:25:07,690 sería, no lo voy a comentar 596 00:25:07,690 --> 00:25:08,210 pero bueno 597 00:25:08,210 --> 00:25:10,730 public static 598 00:25:10,730 --> 00:25:13,529 vale, mostrar datos de alumno 599 00:25:13,529 --> 00:25:15,529 aquí nos saldría la pregunta 600 00:25:15,529 --> 00:25:17,670 ¿directamente los muestro 601 00:25:17,670 --> 00:25:19,630 en el método o lo devuelvo 602 00:25:19,630 --> 00:25:20,509 en un stream? 603 00:25:21,569 --> 00:25:22,869 es mejor devolverlo 604 00:25:22,869 --> 00:25:25,190 porque si yo cambio la, de repente 605 00:25:25,190 --> 00:25:27,250 cambie la interfaz de la aplicación. Ya no quiero usar una 606 00:25:27,250 --> 00:25:29,190 consola. Quiero usar una interfaz gráfica. 607 00:25:29,930 --> 00:25:30,990 Este método ya no me vale 608 00:25:30,990 --> 00:25:33,430 porque me está mostrando por consola. Entonces, mejor 609 00:25:33,430 --> 00:25:34,450 lo devuelvo en un string 610 00:25:34,450 --> 00:25:37,390 y ya mi main en que en cada momento 611 00:25:37,390 --> 00:25:39,309 decida con ese string que quiere 612 00:25:39,309 --> 00:25:41,250 hacer. Si hacerlo en System.NET 613 00:25:41,250 --> 00:25:43,329 para consola, si llevarlo a una interfaz 614 00:25:43,329 --> 00:25:45,230 gráfica, cuanto más se 615 00:25:45,230 --> 00:25:47,069 separen las cosas, mejor. Entonces, 616 00:25:47,069 --> 00:25:49,009 esto, separado de la 617 00:25:49,009 --> 00:25:50,930 vista, separado de la interacción 618 00:25:50,930 --> 00:25:53,029 con el usuario. Como yo meto 619 00:25:53,029 --> 00:25:54,150 aquí System.NET Println, 620 00:25:54,150 --> 00:25:56,869 ah, ya he mezclado, vista y 621 00:25:56,869 --> 00:25:58,829 lógica, no, no, yo aquí hago 622 00:25:58,829 --> 00:26:00,670 la lógica, te devuelvo lo que sea 623 00:26:00,670 --> 00:26:03,069 y la clase que se ocupa de la vista 624 00:26:03,069 --> 00:26:04,230 en nuestro caso el main 625 00:26:04,230 --> 00:26:06,730 que ya decida con ese string, si te lo muestra 626 00:26:06,730 --> 00:26:09,009 por consola, que hace con él, que ya decida 627 00:26:09,009 --> 00:26:10,930 cuanto más desacoplemos 628 00:26:10,930 --> 00:26:11,650 separemos mejor 629 00:26:11,650 --> 00:26:13,990 pues venga, entonces 630 00:26:13,990 --> 00:26:16,829 buena decisión, devolver en un string 631 00:26:16,829 --> 00:26:17,890 los datos del alumno 632 00:26:17,890 --> 00:26:19,990 y listo 633 00:26:19,990 --> 00:26:22,829 esto era mostrar 634 00:26:22,829 --> 00:26:23,930 datos en general, ¿no? 635 00:26:24,150 --> 00:26:37,980 esto era mostrar datos, sí, mostrar datos del alumno dado su número de matrícula, 636 00:26:42,109 --> 00:26:48,349 entonces el parámetro tiene que ser su número de matrícula, no hay otro, 637 00:26:53,490 --> 00:27:05,220 vale, entonces este va a ser el resultado a mostrar, que tendré que ir construyendo como siempre, 638 00:27:05,220 --> 00:27:07,920 Vale, pues a ver 639 00:27:07,920 --> 00:27:09,819 Y esto cuando ya lo tenga hecho 640 00:27:09,819 --> 00:27:10,940 Lo devolveré 641 00:27:10,940 --> 00:27:17,880 Vale, a ver 642 00:27:17,880 --> 00:27:20,599 ¿Quiénes habéis hecho este método? 643 00:27:23,599 --> 00:27:25,059 Pero mostrándolo por consola 644 00:27:25,059 --> 00:27:26,420 Bueno, pero 645 00:27:26,420 --> 00:27:29,339 Sea mostrándolo por consola y devolviéndolo como stream 646 00:27:29,339 --> 00:27:31,339 ¿Quién lo tiene hecho? 647 00:27:32,000 --> 00:27:33,000 Miguel, ¿tú a tu manera? 648 00:27:33,119 --> 00:27:33,700 ¿Alguien más? 649 00:27:34,460 --> 00:27:35,559 ¿Nadie más levanta la mano? 650 00:27:37,890 --> 00:27:38,730 Pues venga 651 00:27:38,730 --> 00:27:41,529 Cinco minutos 652 00:27:41,529 --> 00:27:42,650 Para hacerlo. 653 00:27:45,750 --> 00:27:46,430 Sony 33.