1 00:00:00,300 --> 00:00:01,500 o sea, Juanito es la instancia 2 00:00:01,500 --> 00:00:04,740 claro, Juanito, el que tiene nombre Juanito 3 00:00:04,740 --> 00:00:06,259 y no sé qué, es la instancia 4 00:00:06,259 --> 00:00:09,099 instancias de una clase 5 00:00:09,099 --> 00:00:10,099 puede haber mil 6 00:00:10,099 --> 00:00:12,380 dos mil, tres mil, es que hagan falta 7 00:00:12,380 --> 00:00:14,660 clases solo hay una, la que tú has escrito 8 00:00:14,660 --> 00:00:15,580 en tiempo de desarrollo 9 00:00:15,580 --> 00:00:21,100 entonces cuando la aplicación 10 00:00:21,100 --> 00:00:22,399 que ya se está ejecutando 11 00:00:22,399 --> 00:00:25,300 crea un ejemplo 12 00:00:25,300 --> 00:00:27,239 concreto de mi clase 13 00:00:27,239 --> 00:00:29,059 se llama que instancia 14 00:00:29,059 --> 00:00:31,440 la clase, porque crea una instancia 15 00:00:31,960 --> 00:00:34,600 Entonces se dice, vamos a instanciar la clase alumno. 16 00:00:34,899 --> 00:00:37,219 ¿Qué significa instanciar la clase alumno? 17 00:00:37,299 --> 00:00:38,500 Crear un ejemplo concreto. 18 00:00:39,179 --> 00:00:41,259 Puedes instanciar la clase alumno 19 00:00:41,259 --> 00:00:42,539 tantas veces como quieras 20 00:00:42,539 --> 00:00:44,700 y por cada una de esas veces te crea un objeto. 21 00:00:45,520 --> 00:00:46,880 Bueno, pues esta es la idea 22 00:00:46,880 --> 00:00:50,000 del funcionamiento de una aplicación orientada a objetos. 23 00:00:50,759 --> 00:00:51,600 Ahora diréis, vale, 24 00:00:52,079 --> 00:00:53,500 esta aplicación orientada a objetos 25 00:00:53,500 --> 00:00:56,200 hace que aparezcan objetos. 26 00:00:57,100 --> 00:00:57,960 Vale, muy bien, 27 00:00:57,960 --> 00:00:59,960 pero la aplicación son objetos que aparecen 28 00:00:59,960 --> 00:01:01,579 aparecen y están ahí cruzados de brazos 29 00:01:01,579 --> 00:01:03,840 no, las aplicaciones hacen cosas 30 00:01:03,840 --> 00:01:05,359 lógicamente, tienen que hacer cosas 31 00:01:05,359 --> 00:01:08,239 claro, pues dentro 32 00:01:08,239 --> 00:01:09,180 de cada clase 33 00:01:09,180 --> 00:01:12,659 además de las propiedades 34 00:01:12,659 --> 00:01:14,299 que me importan 35 00:01:14,299 --> 00:01:16,340 de los objetos 36 00:01:16,340 --> 00:01:18,379 en particular, dentro de cada 37 00:01:18,379 --> 00:01:20,219 clase, yo tengo un espacio 38 00:01:20,219 --> 00:01:22,379 para declarar una cosa que se 39 00:01:22,379 --> 00:01:23,299 llaman métodos 40 00:01:23,299 --> 00:01:28,370 y cada clase tiene su espacio 41 00:01:28,370 --> 00:01:30,049 para declarar 42 00:01:30,049 --> 00:01:32,450 programar una cosa que se llama métodos 43 00:01:32,450 --> 00:01:35,810 ¿y qué son los métodos? 44 00:01:36,329 --> 00:01:37,450 trozos de código 45 00:01:37,450 --> 00:01:39,370 esos son los métodos 46 00:01:39,370 --> 00:01:41,489 trocitos de código que reciben un nombre 47 00:01:41,489 --> 00:01:43,670 ahora cuando ya hagamos una clase 48 00:01:43,670 --> 00:01:46,030 en particular, ya lo vamos poniendo 49 00:01:46,030 --> 00:01:47,549 en los comentarios 50 00:01:47,549 --> 00:01:49,890 ahora es para que tengáis una idea general 51 00:01:49,890 --> 00:01:50,750 de de qué va esto 52 00:01:50,750 --> 00:01:53,930 vale, pues los métodos son 53 00:01:53,930 --> 00:01:55,709 trocitos de código con un nombre 54 00:01:55,709 --> 00:01:57,989 y cada clase 55 00:01:57,989 --> 00:01:59,409 puede tener un montón de ellos 56 00:01:59,409 --> 00:02:04,109 Pues ahí en los métodos es donde programamos ya las cosas que se hacen 57 00:02:04,109 --> 00:02:07,870 Las que se hacen se programan ahí, en los métodos 58 00:02:07,870 --> 00:02:11,750 Entonces, la aplicación ejecutándose, ¿qué va a ser? 59 00:02:12,430 --> 00:02:15,050 Va a ser objetos que se han creado 60 00:02:15,050 --> 00:02:20,949 Y que esos objetos llaman a estos métodos 61 00:02:20,949 --> 00:02:22,189 Que son los que hacen las cosas 62 00:02:22,189 --> 00:02:26,919 A estos trozos de código que yo he puesto aquí 63 00:02:26,919 --> 00:02:30,219 ¿Quién los lanza para que se puedan ejecutar? 64 00:02:30,219 --> 00:02:33,159 los lanzan los objetos de cada clase 65 00:02:33,159 --> 00:02:35,300 a estos trozos de código 66 00:02:35,300 --> 00:02:37,319 los lanzan los objetos alumno 67 00:02:37,319 --> 00:02:38,719 cuando quieren y se interesa 68 00:02:38,719 --> 00:02:41,340 y a los métodos de esta clase 69 00:02:41,340 --> 00:02:43,539 los códigos que yo he puesto aquí 70 00:02:43,539 --> 00:02:45,479 los llaman, los lanzan 71 00:02:45,479 --> 00:02:47,780 los ejecutan los objetos matrícula 72 00:02:47,780 --> 00:02:49,639 que yo he instanciado aquí 73 00:02:49,639 --> 00:02:51,139 entonces yo decido 74 00:02:51,139 --> 00:02:53,680 donde coloco esos trozos 75 00:02:53,680 --> 00:02:55,340 de código, decido donde coloco 76 00:02:55,340 --> 00:02:57,580 en función del diseño que me parezca 77 00:02:57,580 --> 00:02:59,219 más coherente y que tiene más sentido 78 00:02:59,219 --> 00:03:02,479 porque habrá cosas que se hacen en la aplicación 79 00:03:02,479 --> 00:03:04,439 que tienen que ver con los alumnos. 80 00:03:05,280 --> 00:03:07,360 Pues esas cosas que tienen que ver con los alumnos 81 00:03:07,360 --> 00:03:09,000 las meteré aquí dentro 82 00:03:09,000 --> 00:03:11,099 y así queda más organizadito mi código. 83 00:03:11,719 --> 00:03:14,099 Sin embargo, habrá cosas que tenga que hacer mi aplicación 84 00:03:14,099 --> 00:03:15,960 que tienen que ver con las matrículas, 85 00:03:16,479 --> 00:03:17,840 como hacer cosas con el precio. 86 00:03:18,500 --> 00:03:20,360 Pues esas operaciones las meteré aquí 87 00:03:20,360 --> 00:03:22,099 porque tienen que ver con la matrícula. 88 00:03:22,099 --> 00:03:25,740 Entonces yo voy colocando lo que hace la aplicación, 89 00:03:25,819 --> 00:03:27,319 lo voy colocando en métodos 90 00:03:27,319 --> 00:03:32,300 que va metido en las entidades relacionadas 91 00:03:32,300 --> 00:03:34,539 con lo que hace ese método. 92 00:03:35,500 --> 00:03:37,759 Si hace cosas con los alumnos, pues aquí, 93 00:03:37,900 --> 00:03:39,680 como darle de baja, como cambiarle el nombre. 94 00:03:40,139 --> 00:03:41,759 Si hace cosas con matrícula, pues aquí. 95 00:03:44,340 --> 00:03:47,680 Luego una aplicación orientada a objetos ejecutándose 96 00:03:47,680 --> 00:03:50,939 es un montón de objetos que aparecen 97 00:03:50,939 --> 00:03:53,780 y están ahí, que aparecen y se han creado 98 00:03:53,780 --> 00:03:58,060 y ahora esos objetos llamando a estos códigos para ejecutarse. 99 00:03:58,060 --> 00:04:00,280 Eso es una aplicación orientada a objetos. 100 00:04:01,180 --> 00:04:07,620 Objetos que hago aparecer, que responden a estas clases, a estas plantillas, 101 00:04:08,240 --> 00:04:10,419 y esos objetos van llamando a estos métodos. 102 00:04:11,439 --> 00:04:13,919 Ese es el funcionamiento de una aplicación orientada a objetos. 103 00:04:14,759 --> 00:04:20,060 Una aplicación orientada a objetos admite tantos diseños como clases me dé a mí la gana. 104 00:04:20,620 --> 00:04:23,459 Una misma aplicación que a mí me han pedido que gestione cosas, 105 00:04:23,680 --> 00:04:25,459 la puedo diseñar de formas muy distintas. 106 00:04:25,459 --> 00:04:27,540 distintas, porque a lo mejor en un diseño 107 00:04:27,540 --> 00:04:29,360 decido que estas entidades son 108 00:04:29,360 --> 00:04:31,079 las que me gustan y hago los métodos así 109 00:04:31,079 --> 00:04:33,319 en otro diseño decido estas otras 110 00:04:33,319 --> 00:04:35,160 entidades y hago los métodos de otra manera 111 00:04:35,160 --> 00:04:37,480 habrá diseños mejores y peores 112 00:04:37,480 --> 00:04:39,060 ¿cuáles son los mejores? 113 00:04:39,579 --> 00:04:41,199 los que hacen que la aplicación sea 114 00:04:41,199 --> 00:04:43,540 clara, elegible, que tú la veas y la entiendas 115 00:04:43,540 --> 00:04:45,220 que si tienes que retocar algo 116 00:04:45,220 --> 00:04:46,920 no tengas que retocar en mil sitios 117 00:04:46,920 --> 00:04:49,079 eso hará que la aplicación sea buena 118 00:04:49,079 --> 00:04:50,740 que te va a funcionar a lo mejor igual que otra 119 00:04:50,740 --> 00:04:52,339 con otro diseño distinto 120 00:04:52,339 --> 00:04:55,560 pero si una aplicación tiene un diseño 121 00:04:55,560 --> 00:04:57,779 que cualquier modificación implica 122 00:04:57,779 --> 00:04:59,279 que tienes que tocar mil clases 123 00:04:59,279 --> 00:05:01,399 etcétera, pues que diseño más malo 124 00:05:01,399 --> 00:05:02,160 aunque te funcione 125 00:05:02,160 --> 00:05:03,560 ¿vale? 126 00:05:05,139 --> 00:05:07,560 luego, recopilando 127 00:05:07,560 --> 00:05:09,800 no hay una única forma de hacer una aplicación 128 00:05:09,800 --> 00:05:11,100 dentro de objetos, admite 129 00:05:11,100 --> 00:05:13,360 todas las que a ti te dé la gana en función 130 00:05:13,360 --> 00:05:15,420 del diseño de clases que tú quieras hacer 131 00:05:15,420 --> 00:05:16,600 las clases que tú decidas 132 00:05:16,600 --> 00:05:19,759 en función a eso, te haces los métodos 133 00:05:19,759 --> 00:05:21,860 en consonancia y creas los objetos 134 00:05:21,860 --> 00:05:22,860 como vaya tocando 135 00:05:22,860 --> 00:05:25,660 cada diseño, pues bueno 136 00:05:25,660 --> 00:05:28,040 funcionará de una manera 137 00:05:28,040 --> 00:05:30,199 funcionará de otra, harán lo mismo entre ellos 138 00:05:30,199 --> 00:05:31,980 pero a la hora de retocarlos es donde pueden 139 00:05:31,980 --> 00:05:33,360 medir las diferencias 140 00:05:33,360 --> 00:05:35,560 puede que retocar uno para 141 00:05:35,560 --> 00:05:38,220 incorporar una funcionalidad sea más complicado 142 00:05:38,220 --> 00:05:40,060 que retocar otro, pues entonces ahí ya 143 00:05:40,060 --> 00:05:41,060 falla 144 00:05:41,060 --> 00:05:47,529 ventaja enorme de la programación orientada a objetos 145 00:05:47,529 --> 00:05:49,670 o ventajas, ¿por qué programamos 146 00:05:49,670 --> 00:05:49,990 así? 147 00:05:51,810 --> 00:05:53,350 primero, porque es 148 00:05:53,350 --> 00:05:55,250 algo absolutamente natural, surge de forma 149 00:05:55,250 --> 00:05:57,290 natural, si mi aplicación gestiona entidades 150 00:05:57,290 --> 00:05:59,370 pues hombre, vamos 151 00:05:59,370 --> 00:06:01,290 a hacer la foto de las entidades, vamos a hacer 152 00:06:01,290 --> 00:06:03,550 la foto y voy a organizar los códigos 153 00:06:03,550 --> 00:06:05,269 así, entonces es 154 00:06:05,269 --> 00:06:07,250 muchísimo más claro, tiene 155 00:06:07,250 --> 00:06:09,310 mucho más sentido, es natural, que no me voy 156 00:06:09,310 --> 00:06:10,370 a hacer un chorizo enorme 157 00:06:10,370 --> 00:06:13,029 y me voy a poner a hacer 200.000 líneas 158 00:06:13,029 --> 00:06:15,050 en un main, en un main 159 00:06:15,050 --> 00:06:17,050 que hemos hecho hasta ahora 200.000 líneas, pues hombre 160 00:06:17,050 --> 00:06:18,069 eso es una locura, no 161 00:06:18,069 --> 00:06:20,910 voy a hacer primero una foto de mi alumno y 162 00:06:20,910 --> 00:06:23,230 matrícula, luego el código 163 00:06:23,230 --> 00:06:25,290 de las matrículas lo meto aquí 164 00:06:25,290 --> 00:06:26,930 pues es mucho más organizado 165 00:06:26,930 --> 00:06:29,310 más limpio, más bonito, clases separadas 166 00:06:29,310 --> 00:06:31,170 esa es la principal ventaja 167 00:06:31,170 --> 00:06:33,089 que está separado en clases 168 00:06:33,089 --> 00:06:34,689 no hay un único main con todo el chorizo 169 00:06:34,689 --> 00:06:36,149 está separado por clases 170 00:06:36,149 --> 00:06:37,810 y es mucho más claro 171 00:06:37,810 --> 00:06:40,209 y el segundo 172 00:06:40,209 --> 00:06:42,850 mucho más importante incluso 173 00:06:42,850 --> 00:06:45,470 la reutilización 174 00:06:45,470 --> 00:06:47,069 ese es el básico 175 00:06:47,069 --> 00:06:49,209 el que ha hecho que esto 176 00:06:49,209 --> 00:06:50,529 sea una herramienta poderosa 177 00:06:50,529 --> 00:06:52,370 la reutilización 178 00:06:52,370 --> 00:06:55,310 una vez que tienes hecha una clase matrícula 179 00:06:55,310 --> 00:06:57,329 con sus propiedades 180 00:06:57,329 --> 00:06:58,629 y los métodos 181 00:06:58,629 --> 00:07:00,389 eso se convierte 182 00:07:00,389 --> 00:07:03,029 en un fichero ahí autónomo 183 00:07:03,029 --> 00:07:04,930 que tú puedes reutilizar 184 00:07:04,930 --> 00:07:07,129 en un montón de aplicaciones distintas 185 00:07:07,129 --> 00:07:08,850 en las que vayas a trabajar con matrículas 186 00:07:08,850 --> 00:07:11,230 ahora te haces otra aplicación, versión B 187 00:07:11,230 --> 00:07:13,250 que trabaja con matrículas, pero ahora es para mi cole 188 00:07:13,250 --> 00:07:14,170 no es para el instituto 189 00:07:14,170 --> 00:07:17,009 ah, pues me cojo esta clase 190 00:07:17,009 --> 00:07:18,910 tal cual, porque está estupenda 191 00:07:18,910 --> 00:07:21,230 y la reutilizo tal cual en mi otra 192 00:07:21,230 --> 00:07:23,129 aplicación, tal cual, porque ahora 193 00:07:23,129 --> 00:07:25,089 mi aplicación está hecha con retazos 194 00:07:25,089 --> 00:07:27,089 pues esos retazos 195 00:07:27,089 --> 00:07:29,230 que son las clases, algunos 196 00:07:29,230 --> 00:07:31,069 de ellos igual me interesan tal cual 197 00:07:31,069 --> 00:07:32,889 en otra aplicación, pues cojo el retazo 198 00:07:32,889 --> 00:07:35,050 y lo utilizo como retazo para 199 00:07:35,050 --> 00:07:37,129 esa otra aplicación, eso es 200 00:07:37,129 --> 00:07:39,370 lo fundamental, la reutilización del código 201 00:07:39,370 --> 00:07:41,050 la reutilización de las clases, al organizarlo 202 00:07:41,050 --> 00:07:41,629 de esta manera 203 00:07:41,629 --> 00:07:44,490 por eso programamos así 204 00:07:44,490 --> 00:07:47,269 por la claridad, ahora de separar el código 205 00:07:47,269 --> 00:07:49,230 en partes, y la reutilización 206 00:07:49,230 --> 00:07:51,370 Utilización. Son las dos razones 207 00:07:51,370 --> 00:07:52,110 fundamentales. 208 00:07:54,129 --> 00:07:55,029 Bueno, pues dicho esto, 209 00:07:55,110 --> 00:07:56,529 vamos a programar una clase 210 00:07:56,529 --> 00:07:59,110 para ver cómo podemos luego, desde un programa 211 00:07:59,110 --> 00:08:00,629 en ejecución, instanciar objetos 212 00:08:00,629 --> 00:08:03,329 y llamar a métodos 213 00:08:03,329 --> 00:08:04,089 que hagan cosas. 214 00:08:05,610 --> 00:08:06,050 ¿Vale? 215 00:08:06,870 --> 00:08:07,649 Pues venga. 216 00:08:16,620 --> 00:08:17,339 A ver. 217 00:08:48,309 --> 00:08:49,669 Pero bueno, es un tema mío. 218 00:08:49,710 --> 00:08:50,730 Tú llámalo como te dé la gana. 219 00:08:51,070 --> 00:09:01,450 Venga, pues vamos a hacernos un pequeño proyecto para declarar una clase e instanciarla y utilizarla. 220 00:09:02,649 --> 00:09:21,129 Pues venga, un proyecto de Java, que en mi caso se va a llamar Programación orientada a objetos, ejemplo, ejemplos. 221 00:09:21,129 --> 00:09:57,960 Vamos a hacer un pequeño paquete para meter las entidades. 222 00:10:01,129 --> 00:10:03,669 Vamos a llamar a este paquete entidades, por ejemplo. 223 00:10:04,750 --> 00:10:06,090 Vamos a meter aquí las clases. 224 00:10:06,570 --> 00:10:08,210 Ahora ya cuando sepamos clases, 225 00:10:09,129 --> 00:10:11,470 ya vamos a entender un poco más qué sentido tienen los paquetes 226 00:10:11,470 --> 00:10:12,450 y ya nos vamos a meter con ellos. 227 00:10:12,549 --> 00:10:15,730 Hasta ahora los hemos creado para meter cosas en ellos, 228 00:10:15,850 --> 00:10:17,889 pero no sabíamos ni lo que eran ni nada. 229 00:10:18,370 --> 00:10:21,610 Ahora ya sé que vamos a poder entenderlo un poquito después. 230 00:10:22,210 --> 00:10:23,970 Pues me voy a crear un paquete, se llama entidades, 231 00:10:24,750 --> 00:10:28,970 porque yo he decidido que mi aplicación va a trabajar con alumnos. 232 00:10:29,389 --> 00:10:31,370 Entonces, como mi aplicación va a trabajar con alumnos, 233 00:10:31,929 --> 00:10:33,929 pues identifico una entidad alumno. 234 00:10:34,669 --> 00:10:34,850 ¡Hala! 235 00:10:35,610 --> 00:10:40,230 Pues venga, me hago nueva clase. 236 00:10:41,470 --> 00:10:42,590 Una nueva clase. 237 00:10:43,830 --> 00:10:46,450 Porque programar una entidad es programar una clase. 238 00:10:46,950 --> 00:10:48,070 Pues nueva clase. 239 00:10:49,070 --> 00:10:50,690 ¿A esta clase cómo la voy a llamar? 240 00:10:51,610 --> 00:10:52,690 A alumno. 241 00:10:56,919 --> 00:10:58,059 No, vale. 242 00:11:03,059 --> 00:11:05,480 Vale, pues voy a quitarle el public, 243 00:11:06,200 --> 00:11:09,639 porque ahora mismo todavía no sabemos lo que significa. 244 00:11:10,360 --> 00:11:12,120 Ahora ya dentro de poco sí podremos saberlo. 245 00:11:12,700 --> 00:11:15,659 Bueno, pues esto es lo primero que se hace para declarar una clase. 246 00:11:15,659 --> 00:11:17,820 ya lo habíamos hecho antes 247 00:11:17,820 --> 00:11:19,820 porque teníamos que hacer una clase sí o sí 248 00:11:19,820 --> 00:11:21,879 para hacer el programa de ejecución, ahora volvemos con eso 249 00:11:21,879 --> 00:11:23,820 pero ahora nos olvidamos de nuestro 250 00:11:23,820 --> 00:11:25,419 main, de lo que hemos hecho hasta ahora nos olvidamos 251 00:11:25,419 --> 00:11:27,100 bueno pues 252 00:11:27,100 --> 00:11:29,659 esta va a ser mi clase alumno 253 00:11:29,659 --> 00:11:31,960 mi plantilla, tiene la palabra 254 00:11:31,960 --> 00:11:33,039 reservada a class 255 00:11:33,039 --> 00:11:35,860 y luego después el nombre 256 00:11:35,860 --> 00:11:37,379 que yo le doy a la clase o entidad 257 00:11:37,379 --> 00:11:39,620 que debería ser un nombre como siempre 258 00:11:39,620 --> 00:11:41,600 lo más explicativo posible 259 00:11:41,600 --> 00:11:43,799 y por convenio 260 00:11:43,799 --> 00:11:45,100 aunque no obligatorio 261 00:11:45,100 --> 00:11:47,399 que la primera 262 00:11:47,399 --> 00:11:48,720 empiece en mayúscula 263 00:11:48,720 --> 00:11:50,620 el nombre de la clase 264 00:11:50,620 --> 00:11:57,149 ¿vale? porque así lo distinguimos 265 00:11:57,149 --> 00:11:58,750 de los nombres de las propiedades 266 00:11:58,750 --> 00:12:00,210 ahora lo decimos que por convenio 267 00:12:00,210 --> 00:12:02,429 idealmente en minúscula y los métodos 268 00:12:02,429 --> 00:12:04,470 bueno, pues esta es mi clase alumno 269 00:12:04,470 --> 00:12:06,230 ahora empiezo a hacer la plantilla 270 00:12:06,230 --> 00:12:08,129 la plantilla va a tener dos partes 271 00:12:08,129 --> 00:12:11,129 las propiedades o atributos 272 00:12:11,129 --> 00:12:12,429 como lo queráis llamar 273 00:12:12,429 --> 00:12:13,629 de esa entidad 274 00:12:13,629 --> 00:12:24,580 ¿vale? pongo las tres palabras 275 00:12:24,580 --> 00:12:26,620 que se suelen usar, sobre todo 276 00:12:26,620 --> 00:12:28,860 atributos, propiedades, campos 277 00:12:28,860 --> 00:12:29,980 ¿vale? 278 00:12:30,679 --> 00:12:32,440 variables, incluso a veces hasta se le llaman 279 00:12:32,440 --> 00:12:34,620 las variables de la clase, voy a ponerlo también 280 00:12:34,620 --> 00:12:36,799 a veces también se les llama variables 281 00:12:36,799 --> 00:12:41,490 vale, pues ahora 282 00:12:41,490 --> 00:12:43,289 me toca poner 283 00:12:43,289 --> 00:12:44,929 que atributos 284 00:12:44,929 --> 00:12:46,549 caracterizan a esta entidad 285 00:12:46,549 --> 00:12:49,769 ¿vale? esto es lo mismo que hacéis en base de datos 286 00:12:49,769 --> 00:12:51,549 bueno 287 00:12:51,549 --> 00:12:53,429 pues a mi alumno, venga, pues mi alumno 288 00:12:53,429 --> 00:12:54,409 se va a caracterizar 289 00:12:54,409 --> 00:12:56,429 por su NIF 290 00:12:56,429 --> 00:12:59,169 y su nombre, hemos dicho 291 00:12:59,169 --> 00:13:00,009 venga 292 00:13:00,009 --> 00:13:04,669 pues entonces tendrá dos propiedades 293 00:13:04,669 --> 00:13:06,490 NIF y nombre, pero claro 294 00:13:06,490 --> 00:13:08,889 ¿cómo las programo? 295 00:13:08,950 --> 00:13:11,490 ¿cómo los declaro? pues cada propiedad 296 00:13:11,490 --> 00:13:13,090 es una variable 297 00:13:13,090 --> 00:13:14,690 de las de toda la vida que ya conocemos 298 00:13:14,690 --> 00:13:16,950 entonces tengo que decidir su tipo de datos 299 00:13:16,950 --> 00:13:18,669 pues NIF 300 00:13:18,669 --> 00:13:20,250 le pega un string, ¿verdad? 301 00:13:20,870 --> 00:13:22,610 pues como a NIF le pega un string 302 00:13:22,610 --> 00:13:26,740 lo declaro 303 00:13:26,740 --> 00:13:27,480 así 304 00:13:27,480 --> 00:13:32,779 se declara como una propiedad 305 00:13:32,779 --> 00:13:34,000 como una variable, perdón 306 00:13:34,000 --> 00:13:34,820 como una variable 307 00:13:34,820 --> 00:13:37,100 eliges su tipo de dato 308 00:13:37,100 --> 00:13:39,519 eliges su tipo de dato 309 00:13:39,519 --> 00:13:41,340 y le eliges un nombre 310 00:13:41,340 --> 00:13:44,559 entonces, nombre también sería 311 00:13:44,559 --> 00:13:45,600 un string 312 00:13:45,600 --> 00:13:47,879 pues la puedo poner aquí después si quiero 313 00:13:47,879 --> 00:13:50,659 o la podría poner abajo 314 00:13:50,659 --> 00:13:52,399 me da igual, aquí estoy declarando 315 00:13:52,399 --> 00:13:53,080 variables 316 00:13:53,080 --> 00:13:55,940 estamos declarando variables 317 00:13:55,940 --> 00:13:57,899 igual que les declaramos, voy a poner una de otro tipo 318 00:13:57,899 --> 00:13:59,120 para que haya más variedad 319 00:13:59,120 --> 00:14:01,879 pues el alumno tiene una edad 320 00:14:01,879 --> 00:14:02,980 por ejemplo 321 00:14:02,980 --> 00:14:05,720 bueno, pues cada 322 00:14:05,720 --> 00:14:07,559 atributo, propiedad o campo 323 00:14:07,559 --> 00:14:09,860 se corresponde con una declaración de variable 324 00:14:09,860 --> 00:14:11,460 como las que hemos declarado siempre 325 00:14:11,460 --> 00:14:12,720 con una declaración de variable 326 00:14:12,720 --> 00:14:15,480 con los tipos de datos que conocemos 327 00:14:15,480 --> 00:14:18,059 y elegimos el nombre que nos dé la gana 328 00:14:18,059 --> 00:14:19,700 lo mismo, nombre 329 00:14:19,700 --> 00:14:22,019 lo más explicativo posible respecto a la 330 00:14:22,019 --> 00:14:24,179 propiedad a la que se refiere 331 00:14:24,179 --> 00:14:26,000 un nombre bien elegido 332 00:14:26,000 --> 00:14:28,559 y también por convenio 333 00:14:28,559 --> 00:14:30,299 pues que empiece en minúscula 334 00:14:30,299 --> 00:14:33,039 porque así ya empiezo a distinguir 335 00:14:33,039 --> 00:14:34,980 cuando me refiero a nombres de clases 336 00:14:34,980 --> 00:14:37,139 a cuando me refiero a nombres de propiedades 337 00:14:37,139 --> 00:14:38,100 ¿vale? 338 00:14:39,159 --> 00:14:40,759 por convenio empieza en minúscula 339 00:14:40,759 --> 00:14:42,120 bueno 340 00:14:42,120 --> 00:14:44,779 quiero que mi alumno se caracterice por más cosas 341 00:14:44,779 --> 00:14:46,639 o a la aplicación solo le hace falta 342 00:14:46,639 --> 00:14:48,539 porque solo trabaja con su NIF nombre y edad 343 00:14:48,539 --> 00:14:50,980 pues solo le hace falta NIF nombre y edad 344 00:14:50,980 --> 00:14:52,279 así se queda 345 00:14:52,279 --> 00:14:54,539 no hay que ponerle más propiedades 346 00:14:54,539 --> 00:14:57,200 vale, ahora podríamos incluir aquí 347 00:14:57,200 --> 00:14:58,779 pero vamos antes a instanciar un objeto 348 00:14:58,779 --> 00:15:01,679 lo que hemos llamado métodos 349 00:15:01,679 --> 00:15:04,940 sería la segunda parte 350 00:15:04,940 --> 00:15:06,279 que va dentro de la clase 351 00:15:06,279 --> 00:15:07,500 ¿y qué son los métodos? 352 00:15:08,120 --> 00:15:09,299 los métodos son 353 00:15:09,299 --> 00:15:11,919 códigos 354 00:15:11,919 --> 00:15:14,399 que los objetos 355 00:15:14,399 --> 00:15:15,700 alumno 356 00:15:15,700 --> 00:15:19,539 creados en tiempo de ejecución 357 00:15:19,539 --> 00:15:22,419 ahora lo veremos 358 00:15:22,419 --> 00:15:26,279 pueden llamar 359 00:15:26,279 --> 00:15:31,590 esos son los métodos 360 00:15:31,590 --> 00:15:34,350 códigos que un objeto 361 00:15:34,350 --> 00:15:36,230 alumno que se haya creado puede llamarlo 362 00:15:36,230 --> 00:15:37,870 para que se ejecute, yo ahí 363 00:15:37,870 --> 00:15:39,250 declaro lo que va a hacer 364 00:15:39,250 --> 00:15:42,110 pero por ahora es un propósito, es una declaración 365 00:15:42,110 --> 00:15:43,509 de intenciones, no se hace nada 366 00:15:43,509 --> 00:15:46,169 esto no se va a ejecutar hasta que no 367 00:15:46,169 --> 00:15:48,110 aparezca un objeto alumno que lo ejecute 368 00:15:48,110 --> 00:15:50,269 ahora mismo vamos a dejar la clase así 369 00:15:50,269 --> 00:15:51,809 el alumno no puede hacer nada todavía 370 00:15:51,809 --> 00:15:54,169 bueno, pues vamos a dejarla ahora así 371 00:15:54,169 --> 00:16:03,929 Vale, pues mi aplicación ahora mismo consta de mi clase alumno, porque solamente trabaja con alumnos, y ahora ya voy a hacer yo una aplicación que haga cosas. 372 00:16:04,789 --> 00:16:14,429 Pues mi aplicación tiene que tener, ahora sí, una clase especial porque tiene dentro el método main, el que ya conocemos. 373 00:16:15,330 --> 00:16:20,309 Y ese método main es el punto de arranque de la aplicación donde empiezan a pasar las cosas. 374 00:16:20,309 --> 00:16:24,029 nosotros hasta ahora era la única que teníamos 375 00:16:24,029 --> 00:16:25,429 una clase con el método main 376 00:16:25,429 --> 00:16:27,049 porque no había entidades, no había nada 377 00:16:27,049 --> 00:16:30,029 ahora tendremos la clase con el método main 378 00:16:30,029 --> 00:16:31,190 que es el punto de arranque 379 00:16:31,190 --> 00:16:33,450 y esa clase con el método main 380 00:16:33,450 --> 00:16:35,730 es la que irá llamando a las otras que hemos hecho 381 00:16:35,730 --> 00:16:37,889 pues vamos a hacer esa clase 382 00:16:37,889 --> 00:16:39,809 esa que ya conocemos, ya hemos hecho siempre 383 00:16:39,809 --> 00:16:43,230 vamos a hacer esa clase 384 00:16:43,230 --> 00:16:45,350 pues la voy a llamar main 385 00:16:45,350 --> 00:16:47,929 porque es la clase que tiene el método main 386 00:16:47,929 --> 00:16:49,029 la puedo llamar como me dé la gana 387 00:16:49,029 --> 00:16:50,690 pero bueno, si la llamo main 388 00:16:50,690 --> 00:16:52,649 dejo muy claro que es 389 00:16:52,649 --> 00:16:54,769 la clase punto de arranque 390 00:16:54,769 --> 00:16:55,649 la que tiene el main 391 00:16:55,649 --> 00:17:00,450 claro, ahora mismo sí 392 00:17:00,450 --> 00:17:02,669 porque como todavía no entendemos de paquetes, ahora mismo 393 00:17:02,669 --> 00:17:03,570 sí la vamos a crear ahí 394 00:17:03,570 --> 00:17:05,390 todas juntas en el mismo 395 00:17:05,390 --> 00:17:08,190 vale, entonces esta clase ya no suena 396 00:17:08,190 --> 00:17:10,730 incluso le voy a 397 00:17:10,730 --> 00:17:11,509 quitar el public 398 00:17:11,509 --> 00:17:14,029 para no meter nada raro 399 00:17:14,029 --> 00:17:16,690 esta como veis es otra clase 400 00:17:16,690 --> 00:17:18,789 más, también empieza por class 401 00:17:18,789 --> 00:17:20,369 tiene el nombre que ahí me dé la gana darle 402 00:17:20,369 --> 00:17:21,589 empezando con mayúscula 403 00:17:21,589 --> 00:17:24,430 y él tiene unas llaves, una que se abre y otra que se cierra 404 00:17:24,430 --> 00:17:25,910 es otra clase más, igual que alumno 405 00:17:25,910 --> 00:17:28,710 lo que pasa es que main le pasa una cosa 406 00:17:28,710 --> 00:17:30,150 y es que tiene esto 407 00:17:30,150 --> 00:17:33,089 que es lo que se llama el método main 408 00:17:33,089 --> 00:17:40,160 y este método main 409 00:17:40,160 --> 00:17:41,640 volvemos a decir ahora 410 00:17:41,640 --> 00:17:42,900 como ya dijimos al principio 411 00:17:42,900 --> 00:17:46,079 que es un método especial 412 00:17:46,079 --> 00:17:47,599 porque a este método 413 00:17:47,599 --> 00:17:49,619 es al que llama 414 00:17:49,619 --> 00:17:52,140 la máquina virtual cuando la aplicación arranca 415 00:17:52,140 --> 00:17:53,839 cuando la aplicación arranca 416 00:17:53,839 --> 00:17:56,180 la aplicación puede que tenga mil clases 417 00:17:56,180 --> 00:17:58,420 o dos mil, pero la máquina virtual 418 00:17:58,420 --> 00:18:02,240 a la que va a ir es a esta 419 00:18:02,240 --> 00:18:04,519 y el método que va a arrancar es este 420 00:18:04,519 --> 00:18:07,299 entonces este método 421 00:18:07,299 --> 00:18:10,500 es el 422 00:18:10,500 --> 00:18:12,359 punto de arranque 423 00:18:12,359 --> 00:18:17,289 de la aplicación 424 00:18:17,289 --> 00:18:19,269 de esta aplicación 425 00:18:19,269 --> 00:18:20,269 que tiene muchas clases 426 00:18:20,269 --> 00:18:23,069 y por eso yo tengo 427 00:18:23,069 --> 00:18:24,309 que respetar la cabecera 428 00:18:24,309 --> 00:18:27,109 no tocarla porque la máquina virtual 429 00:18:27,109 --> 00:18:29,230 va a buscar un método como este 430 00:18:29,230 --> 00:18:30,470 tal cual, con esa cabecera 431 00:18:30,470 --> 00:18:33,250 bueno, pues entonces la aplicación cuando arranque 432 00:18:33,250 --> 00:18:33,910 vendrá aquí 433 00:18:33,910 --> 00:18:37,390 no irá aquí, no, esto no irá 434 00:18:37,390 --> 00:18:38,890 a ningún sitio de aquí, ni irá a nada 435 00:18:38,890 --> 00:18:41,450 la aplicación cuando arranque va a venir aquí 436 00:18:41,450 --> 00:18:43,509 vale, pues la aplicación 437 00:18:43,509 --> 00:18:44,329 ahora que es lo que hace 438 00:18:44,329 --> 00:18:47,269 lo que hemos dicho antes, la aplicación ahora ya se pone a crear 439 00:18:47,269 --> 00:18:48,309 objetos y hacer cosas 440 00:18:48,309 --> 00:18:51,069 pues venga, vamos a crear 441 00:18:51,069 --> 00:18:53,210 o instanciar, como queramos llamarlo 442 00:18:53,210 --> 00:18:57,450 instanciar un objeto alumno. 443 00:19:00,279 --> 00:19:02,000 Vamos a instanciar un alumno. 444 00:19:03,339 --> 00:19:03,900 ¿Vale? 445 00:19:03,960 --> 00:19:07,440 Ahora ya tenemos que crear un ejemplo concreto 446 00:19:07,440 --> 00:19:09,380 de esta plantilla. 447 00:19:10,339 --> 00:19:12,440 Un ejemplo concreto de esta plantilla. 448 00:19:12,740 --> 00:19:13,299 Vamos a crear. 449 00:19:14,579 --> 00:19:14,900 Vale. 450 00:19:15,660 --> 00:19:17,119 Pues esto es importante. 451 00:19:17,559 --> 00:19:19,559 Y esto es lo más, una de las cosas más importantes de entender. 452 00:19:20,660 --> 00:19:22,279 Bueno, pues mi objeto alumno, 453 00:19:23,160 --> 00:19:25,359 que es un caso concreto, 454 00:19:25,480 --> 00:19:27,420 Es un dato, que es mi alumno 455 00:19:27,420 --> 00:19:29,579 con sus datos. Pues mi objeto 456 00:19:29,579 --> 00:19:31,400 alumno es otra variable más, 457 00:19:31,519 --> 00:19:32,519 es otra variable más. 458 00:19:33,539 --> 00:19:35,259 Cuando yo declaraba, por ejemplo, 459 00:19:35,359 --> 00:19:37,140 mi aplicación tiene que trabajar con un número, 460 00:19:37,599 --> 00:19:39,599 pues yo hacía esto, inNúmero. 461 00:19:40,119 --> 00:19:41,359 Y a número, pues a lo mejor 462 00:19:41,359 --> 00:19:43,539 le daba, pues yo que sé, 463 00:19:43,599 --> 00:19:45,299 12, lo que fuera, y hacía cosas 464 00:19:45,299 --> 00:19:47,500 con número. Con esto, ¿qué estaba haciendo? 465 00:19:48,480 --> 00:19:49,400 Hacer aparecer 466 00:19:49,400 --> 00:19:51,579 un número. Hacer aparecer 467 00:19:51,579 --> 00:19:53,039 un número, era lo que estaba haciendo. 468 00:19:53,279 --> 00:19:54,259 Hago aparecer un número. 469 00:19:54,259 --> 00:19:56,400 pues lo que vamos a hacer ahora 470 00:19:56,400 --> 00:19:59,940 cuando instaciamos el objeto es lo mismo 471 00:19:59,940 --> 00:20:01,519 ahora lo que vamos a hacer aparecer es 472 00:20:01,519 --> 00:20:03,819 un dato también, pero lo que vamos a hacer aparecer es 473 00:20:03,819 --> 00:20:06,000 un alumno, aquí hacíamos aparecer 474 00:20:06,000 --> 00:20:07,559 un número declarando 475 00:20:07,559 --> 00:20:09,920 poniendo tipo, nombre de la variable 476 00:20:09,920 --> 00:20:11,460 y luego le daba un valor 477 00:20:11,460 --> 00:20:13,880 si quería, si no se lo daba 478 00:20:13,880 --> 00:20:15,880 después, pues aquí vamos a 479 00:20:15,880 --> 00:20:17,539 hacer lo mismo, vamos a hacer aparecer 480 00:20:17,539 --> 00:20:19,720 un alumno, que es un dato 481 00:20:19,720 --> 00:20:21,319 luego 482 00:20:21,319 --> 00:20:24,160 esto también va a ser una declaración 483 00:20:24,160 --> 00:20:24,700 de variable 484 00:20:24,700 --> 00:20:26,740 lo que pasa es que ahora 485 00:20:26,740 --> 00:20:28,099 el tipo de dato 486 00:20:28,099 --> 00:20:29,599 es este 487 00:20:29,599 --> 00:20:31,140 el de la clase 488 00:20:31,140 --> 00:20:33,779 luego al hacer una clase 489 00:20:33,779 --> 00:20:36,539 es como si yo me hubiera inventado 490 00:20:36,539 --> 00:20:38,299 un tipo de dato nuevo 491 00:20:38,299 --> 00:20:40,920 me he inventado un tipo de dato 492 00:20:40,920 --> 00:20:42,579 alumno, del cual yo quiero 493 00:20:42,579 --> 00:20:44,359 crear, del cual yo quiero crear 494 00:20:44,359 --> 00:20:45,720 yo puedo crear variables 495 00:20:45,720 --> 00:20:48,099 por ejemplo, a1 496 00:20:48,099 --> 00:20:48,960 por ejemplo 497 00:20:48,960 --> 00:20:51,000 pues ya está 498 00:20:51,000 --> 00:20:54,279 esta, he hecho la primera parte 499 00:20:54,279 --> 00:20:56,680 esta es una declaración de variable 500 00:20:56,680 --> 00:20:57,460 más 501 00:20:57,460 --> 00:20:59,819 a1 es una variable 502 00:20:59,819 --> 00:21:01,700 el nombre que ahí me ha dado la gana de dar 503 00:21:01,700 --> 00:21:04,819 voy a poner alumno1 para que quede más claro el nombre 504 00:21:04,819 --> 00:21:08,480 vale 505 00:21:08,480 --> 00:21:11,259 alumno1 es una variable 506 00:21:11,259 --> 00:21:13,660 yo lo he llamado alumno1 507 00:21:13,660 --> 00:21:15,319 igual que número 508 00:21:15,319 --> 00:21:17,059 es un número, un número en concreto 509 00:21:17,059 --> 00:21:17,859 1 510 00:21:17,859 --> 00:21:21,460 pues alumno1 es un objeto alumno 511 00:21:21,460 --> 00:21:23,000 una variable alumno 512 00:21:23,000 --> 00:21:25,619 pero claro, cuando declaro una variable 513 00:21:25,619 --> 00:21:27,660 siempre tengo que poner el tipo de dato al que 514 00:21:27,660 --> 00:21:29,619 pertenece, esta variable 515 00:21:29,619 --> 00:21:31,779 tiene un número entero 516 00:21:31,779 --> 00:21:32,920 pues por eso pongo int 517 00:21:32,920 --> 00:21:35,519 pero es que esta tiene un objeto 518 00:21:35,519 --> 00:21:37,380 alumno, pues por eso pongo 519 00:21:37,380 --> 00:21:39,240 alumno, el nombre de la clase 520 00:21:39,240 --> 00:21:41,619 entonces esta es 521 00:21:41,619 --> 00:21:43,519 una variable primitiva 522 00:21:43,519 --> 00:21:45,460 porque es de un tipo de dato primitivo 523 00:21:45,460 --> 00:21:47,819 y esta es una variable objeto 524 00:21:47,819 --> 00:21:49,579 porque su tipo de dato es 525 00:21:49,579 --> 00:21:50,059 alumno 526 00:21:50,059 --> 00:21:53,720 bueno pues con esto la he declarado 527 00:21:53,720 --> 00:22:27,549 Entonces, con esto he hecho la mitad del trabajo solo, ¿vale? Con esto lo único que he hecho es, he hecho aparecer en memoria un espacio para guardar el objeto alumno, no, para guardar la dirección de memoria que apunte a un espacio para ahora. 528 00:22:27,549 --> 00:22:33,450 Y así guardar los datos de un alumno, que en mi caso tiene tres campos, 529 00:22:34,329 --> 00:22:38,000 NIF, nombre y edad. 530 00:22:39,779 --> 00:22:43,940 Entonces, con esto he declarado una variable que se llama alumno1, 531 00:22:45,160 --> 00:22:51,160 que está pensada para contener la dirección de memoria de un objeto cuando exista, 532 00:22:51,279 --> 00:22:52,440 pero todavía no existe. 533 00:22:52,440 --> 00:23:11,940 Ahora mismo, con esto de aquí, yo estoy creando un objeto alumno que apunta a null, que es null por ahora. 534 00:23:12,059 --> 00:23:15,539 Ahora mismo, esto es lo que he hecho con esta primera sentencia. 535 00:23:16,259 --> 00:23:23,420 He creado una variable pensada para contener la dirección de los datos de un alumno en concreto. 536 00:23:23,420 --> 00:24:01,089 De hecho, si nos planteáramos hacer esto ahora, si nos planteáramos hacer esto, si nos planteáramos hacer esto, alumno 1, ¿vale? Pues me dice, la variable alumno 1, perdona, todavía no tiene nada. 537 00:24:01,089 --> 00:24:03,349 me lo está diciendo ahí en bajito 538 00:24:03,349 --> 00:24:05,009 cuidado que la variable alumno1 539 00:24:05,009 --> 00:24:06,309 no tiene nada 540 00:24:06,309 --> 00:24:09,009 vale, entonces con esto 541 00:24:09,009 --> 00:24:10,509 simplemente he declarado 542 00:24:10,509 --> 00:24:13,230 una variable pensada para apuntar 543 00:24:13,230 --> 00:24:14,569 a un objeto alumno concreto 544 00:24:14,569 --> 00:24:16,750 ahora ya 545 00:24:16,750 --> 00:24:18,150 ¿cómo lo creo? 546 00:24:19,569 --> 00:24:20,910 pues de esta manera 547 00:24:20,910 --> 00:24:21,690 new 548 00:24:21,690 --> 00:24:24,029 el nombre de la clase 549 00:24:24,029 --> 00:24:26,569 y paréntesis vacíos 550 00:24:26,569 --> 00:24:28,650 vale 551 00:24:28,650 --> 00:24:30,589 ahora ya sí 552 00:24:30,589 --> 00:25:13,559 Con esto, ahora ya sí que sí, con esta primera parte, he creado esto, alumno1, la variable alumno1, que apunta por ahora a nada y ahora con new, new te hace aparecer el espacio en memoria para guardar los datos de un objeto alumno. 553 00:25:13,559 --> 00:25:17,359 El objeto alumno, ¿cuántos campos tiene? 554 00:25:17,460 --> 00:25:17,759 Tres. 555 00:25:18,279 --> 00:25:20,259 Pues entonces te abre un espacio para tres. 556 00:25:20,400 --> 00:25:21,039 Dos string, 557 00:25:21,819 --> 00:25:23,359 need, nombre y un int. 558 00:25:24,680 --> 00:25:26,420 El new te abre espacio 559 00:25:26,420 --> 00:25:28,640 para los datos de un alumno en concreto. 560 00:25:30,160 --> 00:25:33,119 Vale, pues ahora ya he creado esto. 561 00:25:34,440 --> 00:25:34,640 Vale. 562 00:25:36,920 --> 00:25:40,519 Ahora ya que la estructura interna en memoria sea esta, 563 00:25:41,140 --> 00:25:43,700 ya empieza, ahora ya me empieza a importar menos. 564 00:25:44,700 --> 00:25:46,299 Es importante que lo entienda, claro, 565 00:25:46,299 --> 00:25:48,420 porque si yo no hago el new, esto se queda 566 00:25:48,420 --> 00:25:50,220 apuntando a null, no puedo usarlo 567 00:25:50,220 --> 00:25:52,220 cuando he hecho el new 568 00:25:52,220 --> 00:25:54,279 ya se queda esto de aquí, y ahora ya 569 00:25:54,279 --> 00:25:56,200 lo que nos importa es el objeto, que es esto 570 00:25:56,200 --> 00:25:58,299 bueno, pues 571 00:25:58,299 --> 00:26:00,460 ahora con este objeto, ahora mismo este objeto 572 00:26:00,460 --> 00:26:02,519 he creado el espacio 573 00:26:02,519 --> 00:26:04,420 pero no tiene nada todavía 574 00:26:04,420 --> 00:26:06,079 dentro, no tiene nada 575 00:26:06,079 --> 00:26:08,480 ahora la pregunta sería, ¿cómo le doy yo 576 00:26:08,480 --> 00:26:09,519 valor a las propiedades? 577 00:26:10,359 --> 00:26:11,220 ¿cómo se las doy? 578 00:26:12,000 --> 00:26:13,819 porque aquí, número 579 00:26:13,819 --> 00:26:16,400 solo tiene espacio para el valor numérico. 580 00:26:16,539 --> 00:26:17,299 Pues ya está, 12. 581 00:26:17,700 --> 00:26:18,500 Aquí está muy claro. 582 00:26:19,039 --> 00:26:20,079 Pero alumno 1, 583 00:26:20,519 --> 00:26:22,519 ¿cómo le doy valores a alumno 1? 584 00:26:22,559 --> 00:26:23,700 Porque alumno 1 tiene tres partes. 585 00:26:24,299 --> 00:26:27,619 Alumno 1 es su NIF, su nombre o su edad. 586 00:26:28,220 --> 00:26:29,599 ¿Cómo accedo a cada apartado? 587 00:26:29,759 --> 00:26:33,059 Porque alumno 1 es un dato complejo. 588 00:26:33,480 --> 00:26:34,599 Alumno 1 tiene tres partes. 589 00:26:35,000 --> 00:26:35,839 Es un dato complejo. 590 00:26:35,839 --> 00:26:37,799 No es como número que solo tiene una, el número. 591 00:26:38,500 --> 00:26:40,859 Alumno 1 tiene su parte NIF, 592 00:26:40,960 --> 00:26:42,480 su parte nombre y su parte edad. 593 00:26:42,480 --> 00:26:44,440 ¿Cómo accedo a cada parte? 594 00:26:44,720 --> 00:26:46,400 Bueno, pues de forma muy sencilla 595 00:26:46,400 --> 00:26:48,000 Con el operador punto y ya está 596 00:26:48,000 --> 00:26:51,559 Ahora lo 597 00:26:51,559 --> 00:26:56,289 Vale, entonces 598 00:26:56,289 --> 00:26:59,369 Esto lo podemos interpretar como que 599 00:26:59,369 --> 00:27:02,250 Alumno1 600 00:27:02,250 --> 00:27:04,509 Es una variable 601 00:27:04,509 --> 00:27:05,990 Compleja 602 00:27:05,990 --> 00:27:07,650 Con tres partes en realidad 603 00:27:07,650 --> 00:27:09,470 Con tres campos, si lo queréis ver 604 00:27:09,470 --> 00:27:17,240 Tiene tres campos 605 00:27:17,240 --> 00:27:18,019 El nombre 606 00:27:18,019 --> 00:27:26,099 El nif, el nombre 607 00:27:26,099 --> 00:27:29,079 y la edad son los tres campos 608 00:27:29,079 --> 00:27:31,220 que yo he puesto aquí, el nif, el nombre 609 00:27:31,220 --> 00:27:32,440 y la edad, son estos tres 610 00:27:32,440 --> 00:27:35,079 pues alumno1 es una variable 611 00:27:35,079 --> 00:27:37,180 objeto compleja con esos tres apartaditos 612 00:27:37,180 --> 00:27:38,839 pues venga, vamos a 613 00:27:38,839 --> 00:27:41,259 alumno1, vamos a darle 614 00:27:41,259 --> 00:27:41,779 un nif 615 00:27:41,779 --> 00:27:45,200 alumno1, ¿cómo accedemos 616 00:27:45,200 --> 00:27:47,279 a su parte nif, a su apartado nif? 617 00:27:47,400 --> 00:27:48,680 pues con .nif 618 00:27:48,680 --> 00:27:51,039 alumno1.nif 619 00:27:51,039 --> 00:27:53,259 es el campo 620 00:27:53,259 --> 00:27:54,480 nif del alumno1 621 00:27:54,480 --> 00:27:57,039 pues alumno1.nif 622 00:27:57,039 --> 00:27:58,420 pues ya está 623 00:27:58,420 --> 00:28:02,099 el nif que a mí me dé la gana 624 00:28:02,099 --> 00:28:02,759 vale 625 00:28:02,759 --> 00:28:05,220 entonces el operador punto 626 00:28:05,220 --> 00:28:07,940 es el que me lleva a cada una 627 00:28:07,940 --> 00:28:09,720 de las propiedades o campos 628 00:28:09,720 --> 00:28:11,660 del objeto alumno1 629 00:28:11,660 --> 00:28:13,980 vale 630 00:28:13,980 --> 00:28:18,160 que ahora quiero 631 00:28:18,160 --> 00:28:19,339 ponerle un nombre 632 00:28:19,339 --> 00:28:21,660 pues alumno1.nombre 633 00:28:21,660 --> 00:28:27,900 vale, este me lleva al apartadito 634 00:28:27,900 --> 00:28:29,880 o campo nombre del objeto alumno1 635 00:28:29,880 --> 00:28:31,519 que es complejo porque tiene tres partes 636 00:28:31,519 --> 00:28:38,819 alumno1.edad 637 00:28:38,819 --> 00:28:40,680 es un int 638 00:28:40,680 --> 00:28:42,839 porque el campo edad era int 639 00:28:42,839 --> 00:28:44,980 pues aquí le tengo que asignar un tipo compatible 640 00:28:44,980 --> 00:28:52,890 bueno, pues así accedo a los tres apartaditos 641 00:28:52,890 --> 00:28:55,430 del objeto alumno1 642 00:28:55,430 --> 00:29:00,890 entonces el nombre de la clase 643 00:29:00,890 --> 00:29:04,170 solo ha aparecido aquí para declararlo 644 00:29:04,170 --> 00:29:06,390 para decir, oye, que es de tipo alumno 645 00:29:06,390 --> 00:29:09,690 y luego ya, ese es el nombre de la variable 646 00:29:09,690 --> 00:29:11,589 que puede haber tantas variables 647 00:29:11,589 --> 00:29:12,690 alumno como uno quiera 648 00:29:12,690 --> 00:29:19,309 que queremos otro alumno 649 00:29:19,309 --> 00:29:21,769 pues me puedo hacer otro alumno 650 00:29:21,769 --> 00:29:28,690 vamos a instanciar 651 00:29:28,690 --> 00:29:36,200 otro alumno más 652 00:29:36,200 --> 00:29:38,740 bueno, pues otra variable más 653 00:29:38,740 --> 00:29:41,420 alumno a dos 654 00:29:41,420 --> 00:29:43,599 igual a new alumno 655 00:29:43,599 --> 00:29:47,980 ala, ya tengo 656 00:29:47,980 --> 00:29:50,119 otro alumno más 657 00:29:50,119 --> 00:29:52,500 tengo dos instancias 658 00:29:52,500 --> 00:29:53,519 dos ejemplos 659 00:29:53,519 --> 00:29:56,200 dos alumnos concretos 660 00:29:56,200 --> 00:29:58,339 que pertenecen a la misma plantilla 661 00:29:58,339 --> 00:30:00,019 a la misma plantilla 662 00:30:00,019 --> 00:30:02,059 alumno2 663 00:30:02,059 --> 00:30:04,619 pues tendrá su propio conjunto de propiedades 664 00:30:04,619 --> 00:30:05,779 el que a mí me dé la gana poner 665 00:30:05,779 --> 00:30:08,660 alumno2.nif 666 00:30:08,660 --> 00:30:10,539 pues tendrá lo que a mí 667 00:30:10,539 --> 00:30:11,799 me dé la gana poner 668 00:30:11,799 --> 00:30:19,279 pues tendrá lo que 669 00:30:19,279 --> 00:30:20,319 a mí me dé la gana 670 00:30:20,319 --> 00:30:31,700 y así puede haber 671 00:30:31,700 --> 00:30:34,119 mil objetos alumno distintos. 672 00:30:35,880 --> 00:30:38,000 Puede haber mil objetos alumnos distintos. 673 00:30:38,839 --> 00:30:39,359 Todos 674 00:30:39,359 --> 00:30:42,140 pertenecen al mismo tipo, que es al tipo 675 00:30:42,140 --> 00:30:44,200 alumno, a la clase que yo he declarado. 676 00:30:46,329 --> 00:30:47,549 Y cada uno tiene 677 00:30:47,549 --> 00:30:49,529 su propio conjunto de propiedades. 678 00:30:50,630 --> 00:30:50,829 ¿Vale? 679 00:30:52,890 --> 00:30:53,730 Ahora, pues 680 00:30:53,730 --> 00:30:54,410 por ejemplo, 681 00:30:56,410 --> 00:30:57,630 pues yo que sé, 682 00:31:00,890 --> 00:31:02,109 vamos a hacer tonterías 683 00:31:02,109 --> 00:31:03,230 para practicar un poco. 684 00:31:03,230 --> 00:31:09,660 Claro, porque el alumno tiene tres cosas 685 00:31:09,660 --> 00:31:10,960 Tendrás que decir, ¿qué muestro? 686 00:31:11,960 --> 00:31:14,200 Tú puedes hacer un siso de alumno2.nif 687 00:31:14,200 --> 00:31:15,319 alumno2.nombre 688 00:31:15,319 --> 00:31:16,380 ¿Vale? 689 00:31:16,880 --> 00:31:19,099 Entonces, por ejemplo 690 00:31:19,099 --> 00:31:20,640 Yo quiero ver 691 00:31:20,640 --> 00:31:23,299 qué alumno de los dos es mayor 692 00:31:23,299 --> 00:31:24,119 Por ejemplo 693 00:31:24,119 --> 00:31:32,210 ¿Qué alumno es mayor? 694 00:31:34,920 --> 00:31:36,500 Pues, ¿qué haría? 695 00:31:36,640 --> 00:31:37,279 Pues haría 696 00:31:37,279 --> 00:31:40,380 Si alumno1.edad 697 00:31:40,380 --> 00:31:45,200 es mayor que alumno2.edad 698 00:31:45,200 --> 00:32:01,569 mayor el primero, si es lo contrario 699 00:32:01,569 --> 00:32:27,960 mayor el segundo, iguales 700 00:32:27,960 --> 00:32:33,430 Bueno, pues mi aplicación está haciendo cosas con alumnos 701 00:32:33,430 --> 00:32:37,799 y los alumnos están recogidos en sus 702 00:32:37,799 --> 00:32:41,980 correspondientes variables, pues por ejemplo 703 00:32:41,980 --> 00:32:46,559 asignar al primer alumno 704 00:32:46,559 --> 00:32:48,500 el nombre del segundo 705 00:32:48,500 --> 00:32:51,119 porque se ha copiado 706 00:32:51,119 --> 00:32:52,319 de nombre y se quiere llamar igual 707 00:32:52,319 --> 00:32:56,480 asignamos 708 00:32:56,480 --> 00:32:58,619 al primer alumno 709 00:32:58,619 --> 00:33:04,440 el nombre del segundo 710 00:33:04,440 --> 00:33:06,859 porque eso es lo que queremos que haga nuestra aplicación 711 00:33:06,859 --> 00:33:07,940 por lo que sea 712 00:33:07,940 --> 00:33:10,519 pues alumno1 713 00:33:10,519 --> 00:33:12,680 punto nombre 714 00:33:12,680 --> 00:33:14,819 igual 715 00:33:14,819 --> 00:33:16,980 alumno2 716 00:33:16,980 --> 00:33:18,500 punto nombre 717 00:33:18,500 --> 00:33:21,500 vale 718 00:33:21,500 --> 00:33:23,599 y así podríamos estar hasta el infinito 719 00:33:23,599 --> 00:33:25,119 Pues haciendo cosas con los alumnos 720 00:33:25,119 --> 00:33:27,380 Con sus datos 721 00:33:27,380 --> 00:33:29,740 Ahora 722 00:33:29,740 --> 00:33:40,460 ¿Un for que recorra las propiedades? 723 00:33:41,960 --> 00:33:42,480 No 724 00:33:42,480 --> 00:33:46,119 Si tienes una RAI de alumnos, sí 725 00:33:46,119 --> 00:33:46,640 Claro 726 00:33:46,640 --> 00:33:48,980 Si tienes una RAI de alumnos, sí 727 00:33:48,980 --> 00:33:51,740 Por ejemplo, seguimos 728 00:33:51,740 --> 00:33:54,660 Ahora, dos alumnos no me valen 729 00:33:54,660 --> 00:33:57,299 ¿Vale? 730 00:33:57,299 --> 00:33:59,000 Entonces, antes de 731 00:33:59,000 --> 00:34:00,480 seguir 732 00:34:00,480 --> 00:34:03,160 esta aplicación por supuesto 733 00:34:03,160 --> 00:34:05,539 se podría haber diseñado de otra manera 734 00:34:05,539 --> 00:34:07,440 esta aplicación que tiene que 735 00:34:07,440 --> 00:34:09,239 hacer esto, pues de hecho, en lugar de diseñarla 736 00:34:09,239 --> 00:34:11,159 con clases, me hago yo 737 00:34:11,159 --> 00:34:12,900 un montón de variables sueltas 738 00:34:12,900 --> 00:34:15,480 nombre alumno 1, nif alumno 1 739 00:34:15,480 --> 00:34:17,739 edad alumno 1, nombre alumno 2 740 00:34:17,739 --> 00:34:19,440 y mi aplicación trabaja con eso 741 00:34:19,440 --> 00:34:21,519 pero me queda un mail con muchas 742 00:34:21,519 --> 00:34:23,480 variables, más largo, más complicado de entender 743 00:34:23,480 --> 00:34:25,400 que me va a funcionar y me va a hacer lo mismo 744 00:34:25,400 --> 00:34:27,400 sí, pero ahora tengo yo que retocar 745 00:34:27,400 --> 00:34:29,559 esa aplicación y tengo un lío con estas variables. 746 00:34:29,719 --> 00:34:31,559 Sin embargo, si la he diseñado así, digo, ojo, 747 00:34:32,400 --> 00:34:33,539 como yo estoy trabajando con 748 00:34:33,539 --> 00:34:35,679 alumnos que todos ellos comparten 749 00:34:35,679 --> 00:34:37,519 que tienen tres campos, me voy 750 00:34:37,519 --> 00:34:39,340 a hacer mi clase alumno. Y ahora 751 00:34:39,340 --> 00:34:40,059 cada alumno 752 00:34:40,059 --> 00:34:43,280 que sea una instancia de eso y tenga 753 00:34:43,280 --> 00:34:45,579 dentro sus tres propiedades. 754 00:34:46,480 --> 00:34:47,500 Esto es mucho más claro, 755 00:34:47,639 --> 00:34:49,360 mucho más bonito que hacer la 756 00:34:49,360 --> 00:34:50,460 aplicación de esta manera. 757 00:34:51,519 --> 00:34:53,380 Hacerla, oye, pues, nombre 758 00:34:53,380 --> 00:34:55,019 alumno1, 759 00:34:57,599 --> 00:34:59,119 nombre alumno2, 760 00:34:59,159 --> 00:35:00,380 sería una locura 761 00:35:00,380 --> 00:35:02,679 que de repente los alumnos 762 00:35:02,679 --> 00:35:04,760 la aplicación escala 763 00:35:04,760 --> 00:35:07,039 y ahora quiero que contabilice 764 00:35:07,039 --> 00:35:08,980 también, pues yo que sé 765 00:35:08,980 --> 00:35:09,739 el 766 00:35:09,739 --> 00:35:12,920 yo que sé, el nombre 767 00:35:12,920 --> 00:35:14,260 de los padres de los alumnos 768 00:35:14,260 --> 00:35:15,780 pues yo me vengo aquí 769 00:35:15,780 --> 00:35:18,460 y lo meto ahí dentro, punto pelota 770 00:35:18,460 --> 00:35:20,920 pero con el 771 00:35:20,920 --> 00:35:22,679 otro diseño me tendría que hacer 772 00:35:22,679 --> 00:35:24,340 un montón de propiedades 773 00:35:24,340 --> 00:35:26,599 tantas como alumnos tengas, una locura 774 00:35:26,599 --> 00:35:27,300 no tiene sentido 775 00:35:27,300 --> 00:35:30,300 entonces el diseño con clases 776 00:35:30,300 --> 00:35:32,920 lógicamente facilita la creación de programas 777 00:35:32,920 --> 00:35:34,800 que manejan instancias y cosas 778 00:35:34,800 --> 00:35:36,260 bueno 779 00:35:36,260 --> 00:35:38,400 vamos a parar aquí antes de seguir 780 00:35:38,400 --> 00:35:39,280 con lo que vamos a seguir