1 00:00:00,430 --> 00:00:02,569 Venga, vamos a probarlo 2 00:00:02,569 --> 00:00:07,839 Venga 3 00:00:07,839 --> 00:00:11,140 Ahora nos estamos autenticando 4 00:00:11,140 --> 00:00:12,220 En el cajero 5 00:00:12,220 --> 00:00:14,580 En lugar de con la tarjeta 6 00:00:14,580 --> 00:00:15,419 Le doy los datos 7 00:00:15,419 --> 00:00:18,399 Ahora ya él me dice 8 00:00:18,399 --> 00:00:20,079 ¿Qué quieres? Pues quiero ingresar 9 00:00:20,079 --> 00:00:22,500 Uy, primer error, era de esperar 10 00:00:22,500 --> 00:00:24,000 ¿Verdad? Este error, ¿por qué me ha salido? 11 00:00:24,859 --> 00:00:26,699 No me ha dejado ni meter cantidad ni nada 12 00:00:26,699 --> 00:00:30,120 Claro, por eso 13 00:00:30,120 --> 00:00:32,719 Entonces, vamos a 14 00:00:32,719 --> 00:00:58,590 Vamos a cambiarlo en su nuevo, aquí después de este next in, vamos a limpiarlo con el next line, no sé si viene por aquí o viene después de este double. 15 00:00:58,590 --> 00:01:02,109 No, no tengo 16 00:01:02,109 --> 00:01:04,209 Scan next 17 00:01:04,209 --> 00:01:05,870 Double y double 18 00:01:05,870 --> 00:01:08,969 Next line 19 00:01:08,969 --> 00:01:10,650 Porque aquí el único 20 00:01:10,650 --> 00:01:12,129 Next line que tengo aquí 21 00:01:12,129 --> 00:01:14,409 He dado el salto de línea 22 00:01:14,409 --> 00:01:15,569 Y luego estoy todo el rato 23 00:01:15,569 --> 00:01:18,030 Bueno, voy a ponerlo a ver si así se arregla 24 00:01:18,030 --> 00:01:19,469 Esto es un poco prueba y error también 25 00:01:19,469 --> 00:01:21,730 Pero sí 26 00:01:21,730 --> 00:01:24,329 No acabo de entender muy bien tampoco 27 00:01:24,329 --> 00:01:24,950 Porque hay 28 00:01:24,950 --> 00:01:26,430 Vale, venga 29 00:01:26,430 --> 00:01:28,530 1 30 00:01:28,530 --> 00:01:33,060 a ver, no, pues aquí 31 00:01:33,060 --> 00:01:34,939 0 32 00:01:34,939 --> 00:01:36,859 0, tengo que darle 33 00:01:36,859 --> 00:01:38,760 dos veces, a ver 34 00:01:38,760 --> 00:01:40,760 vamos a revisarlo 35 00:01:40,760 --> 00:01:41,640 en qué momento 36 00:01:41,640 --> 00:01:47,459 eh, sí 37 00:01:47,459 --> 00:01:49,140 pero bueno, eso es antes de 38 00:01:49,140 --> 00:01:50,480 alcanzar el primer 39 00:01:50,480 --> 00:01:53,480 cantidad, o sea el error 40 00:01:53,480 --> 00:01:54,780 que cantidad 41 00:01:54,780 --> 00:01:57,159 ah, no, no me da ningún error, que tonta 42 00:01:57,159 --> 00:01:59,019 es que he puesto su nuevo saldo es 43 00:01:59,019 --> 00:02:01,180 o sea, es que me pide, se me queda esperando 44 00:02:01,180 --> 00:02:03,840 al meter aquí el método, me dice su nuevo saldo es 45 00:02:03,840 --> 00:02:05,640 y se me queda esperando el dato después 46 00:02:05,640 --> 00:02:07,659 vale, vale, vale 47 00:02:07,659 --> 00:02:09,819 vale, o sea, que es confuso la aplicación 48 00:02:09,819 --> 00:02:11,659 porque se me queda esperando después de haberme 49 00:02:11,659 --> 00:02:12,840 dicho su nuevo saldo es 50 00:02:12,840 --> 00:02:15,620 o sea, es un, pues, queda un poco 51 00:02:15,620 --> 00:02:17,199 raro, pero bueno, vamos a ejecutarla 52 00:02:17,199 --> 00:02:19,180 a ver, compone, si le quitas el n 53 00:02:19,180 --> 00:02:22,639 ¿qué n? 54 00:02:23,060 --> 00:02:23,599 el n 55 00:02:23,599 --> 00:02:28,120 no, no va a quedar claro, igual se me va a quedar esperando 56 00:02:28,120 --> 00:02:29,819 su nuevo saldo es, se me va a quedar ahí esperando 57 00:02:29,819 --> 00:02:37,060 A ver, el problema es que yo ahora lo arranco 58 00:02:37,060 --> 00:02:37,900 Dime tu nombre 59 00:02:37,900 --> 00:02:40,219 Dime tu saldo 60 00:02:40,219 --> 00:02:41,680 Ahora quiero ingresar 61 00:02:41,680 --> 00:02:43,699 Su nuevo saldo es 62 00:02:43,699 --> 00:02:46,979 Pero se están esperando que le meta la cantidad de ingresar 63 00:02:46,979 --> 00:02:48,400 Venga, voy a meter 2.000 euros 64 00:02:48,400 --> 00:02:49,659 3.000 65 00:02:49,659 --> 00:02:52,180 O sea, el problema es que el mensaje de su nuevo saldo 66 00:02:52,180 --> 00:02:54,419 Me lo está diciendo antes de que haga yo el ingreso 67 00:02:54,419 --> 00:02:55,740 ¿Vale? 68 00:02:55,740 --> 00:02:57,900 Pero claro, con la estructura que tengo no lo puedo cambiar 69 00:02:57,900 --> 00:02:59,860 porque es que se lo estoy pasando directamente al sistema 70 00:02:59,860 --> 00:03:07,340 ya, pero es que entonces ya lo he perdido 71 00:03:07,340 --> 00:03:09,479 porque tendría que guardar una variable 72 00:03:09,479 --> 00:03:10,460 y pasárselo 73 00:03:10,460 --> 00:03:11,520 que podría 74 00:03:11,520 --> 00:03:14,919 si lo pongo abajo 75 00:03:14,919 --> 00:03:18,780 lo pongo aquí 76 00:03:18,780 --> 00:03:20,979 lo único es que tengo que usar una variable auxiliar 77 00:03:20,979 --> 00:03:21,520 nada más 78 00:03:21,520 --> 00:03:24,039 lo pongo aquí, su nuevo saldo es 79 00:03:24,039 --> 00:03:26,680 y el problema es que aquí yo ahora 80 00:03:34,939 --> 00:03:36,840 claro, pero lo que yo quiero es que esto 81 00:03:36,840 --> 00:03:39,120 quede oculto 82 00:03:39,120 --> 00:03:41,159 o sea, no quiero usar directamente 83 00:03:41,159 --> 00:03:42,800 el objeto cuenta, ahora explicaremos por qué 84 00:03:42,800 --> 00:03:45,219 vale, el problema, si yo lo dejo 85 00:03:45,219 --> 00:03:47,439 así, cuenta ingresar me ingresa 86 00:03:47,439 --> 00:03:49,159 pero tengo que 87 00:03:49,159 --> 00:03:51,159 el valor de retorno lo voy a tener que 88 00:03:51,159 --> 00:03:53,080 guardar para concatenarlo 89 00:03:53,080 --> 00:03:53,879 aquí, o sea, a ver 90 00:03:53,879 --> 00:03:57,319 pero que tenías ahí un void en el 91 00:03:57,319 --> 00:03:59,259 método, no, no, no, tengo el valor de retorno 92 00:03:59,259 --> 00:04:00,939 por eso se lo he podido pasar al system out 93 00:04:00,939 --> 00:04:03,199 si yo lo único 94 00:04:03,199 --> 00:04:05,020 es evitar, ¿vale? 95 00:04:05,060 --> 00:04:07,280 Guardar una variable auxiliar. El problema es que yo ahora 96 00:04:07,280 --> 00:04:09,439 que no quería yo guardar una variable auxiliar 97 00:04:09,439 --> 00:04:10,259 pero me da igual. 98 00:04:12,599 --> 00:04:14,199 Su nuevo saldo es... 99 00:04:14,199 --> 00:04:16,360 Y aquí le pongo cant y ya está. 100 00:04:16,959 --> 00:04:17,180 ¿Vale? 101 00:04:22,689 --> 00:04:23,529 Ahora, ahora. 102 00:04:24,389 --> 00:04:25,029 Confía en mí 103 00:04:25,029 --> 00:04:25,970 y ten paciencia. 104 00:04:26,750 --> 00:04:28,709 Pero la respuesta rápida es porque es muy feo. 105 00:04:29,430 --> 00:04:30,269 Pero ahora 106 00:04:30,269 --> 00:04:33,029 tú confía, ¿vale? 107 00:04:33,910 --> 00:04:34,949 Yo lo que no quiero 108 00:04:34,949 --> 00:04:36,490 es usar el objeto en sí. 109 00:04:36,490 --> 00:04:38,629 solo los métodos que me ofrece 110 00:04:38,629 --> 00:04:40,649 por ahí van los tiros, no el objeto 111 00:04:40,649 --> 00:04:42,750 en sí, solo lo que él me ofrece como métodos 112 00:04:42,750 --> 00:04:44,449 vale, entonces 113 00:04:44,449 --> 00:04:46,389 aquí está claro, ¿no? está claro, primero 114 00:04:46,389 --> 00:04:47,550 el problema que ocurría 115 00:04:47,550 --> 00:04:50,589 es que si yo meto cuenta de ingresar, no es que funcionara mal 116 00:04:50,589 --> 00:04:52,430 sino que el mensaje me daba 117 00:04:52,430 --> 00:04:54,769 antes de tiempo, no es que funcionara mal el programa 118 00:04:54,769 --> 00:04:56,149 entonces ahora yo 119 00:04:56,149 --> 00:04:57,810 ingreso la cantidad 120 00:04:57,810 --> 00:05:00,490 me da el saldo actualizado y la informo 121 00:05:01,149 --> 00:05:01,610 ya está 122 00:05:01,610 --> 00:05:04,829 si meto directamente el saldo actualizado 123 00:05:08,269 --> 00:05:08,670 Perdonad. 124 00:05:10,170 --> 00:05:11,730 Alguien me lo estabais diciendo, ¿verdad? 125 00:05:13,050 --> 00:05:14,089 Claro, ponerlo aquí. 126 00:05:14,730 --> 00:05:16,029 Perdonad, claro, qué tontería. 127 00:05:16,550 --> 00:05:17,870 ¿Alguien me estaríais diciendo esto? 128 00:05:17,990 --> 00:05:18,310 ¿A que sí? 129 00:05:20,649 --> 00:05:22,490 Claro, ¿alguien me estaba diciendo por ahí? 130 00:05:23,610 --> 00:05:24,589 ¿Y por qué no así? 131 00:05:24,730 --> 00:05:26,670 Pues sí, efectivamente, ya tenemos el problema solucionado. 132 00:05:26,670 --> 00:05:27,709 ¿Y cómo lo tenías antes? 133 00:05:27,889 --> 00:05:30,610 En otro season. 134 00:05:31,370 --> 00:05:32,629 Ah, ¿tú me estabas diciendo esto? 135 00:05:32,829 --> 00:05:33,069 Claro. 136 00:05:33,250 --> 00:05:34,589 ¿Seguro? ¿No te has subido al carro ahora? 137 00:05:34,689 --> 00:05:36,670 No, tienen ya eso, pero yo lo tengo detrás por la mesa. 138 00:05:36,670 --> 00:05:40,589 Claro, tú tienes cuenta, punto, cantidad, que es lo que yo quiero evitar. 139 00:05:41,370 --> 00:05:45,170 Vale, antes es que este mensaje no lo tenía separado en una línea arriba. 140 00:05:45,790 --> 00:05:47,410 Vale, ahora ya esto, vale, más bonito. 141 00:05:47,529 --> 00:05:48,170 Y aquí lo mismo. 142 00:05:50,170 --> 00:05:53,490 Un momentito, vamos a ponerle este aquí también. 143 00:05:58,800 --> 00:06:01,959 Claro, antes de hacer la concatenación, no le queda más remedio. 144 00:06:02,740 --> 00:06:09,259 Claro, ahora, vale, a ver, vamos a volver aquí a esta línea. 145 00:06:09,879 --> 00:06:11,540 Ahora, este system out, ¿qué hace? 146 00:06:12,040 --> 00:06:13,720 La concatenación de dos cosas. 147 00:06:14,339 --> 00:06:16,879 La primera parte la tiene ya, no pasa nada. 148 00:06:17,300 --> 00:06:20,160 Y la segunda se tiene que quedar esperando. 149 00:06:21,160 --> 00:06:26,339 Cuando ya le metemos la cantidad, la procesa y su valor de retorno lo concatena al otro. 150 00:06:27,519 --> 00:06:27,720 ¿Vale? 151 00:06:30,079 --> 00:06:31,899 Luego, interesante. 152 00:06:31,899 --> 00:06:32,339 Vale. 153 00:06:33,379 --> 00:06:38,180 Y todo esto lo hemos podido hacer así porque cuenta ingresar me devuelve la cantidad. 154 00:06:38,819 --> 00:06:40,220 Me devuelve la cantidad, si no, no. 155 00:06:40,699 --> 00:06:50,439 Bueno, pues nada, su nuevo, ahora ya aquí en retirar lo he hecho igual, su nuevo saldo es, lo concateno con la llamada al método, con lo cual aquí se va a quedar esperando. 156 00:06:51,459 --> 00:06:55,879 Cuando ya tenga el valor resultante de esa llamada, lo concatena y lo pasa al system out. 157 00:06:56,480 --> 00:06:57,680 Vamos a volver a ejecutar. 158 00:07:01,000 --> 00:07:03,279 Ala, dime tu nombre, otra vez. 159 00:07:05,699 --> 00:07:06,139 Saldo. 160 00:07:07,139 --> 00:07:07,540 Ingreso. 161 00:07:08,680 --> 00:07:09,120 Cantidad. 162 00:07:09,819 --> 00:07:11,279 Vamos a meter 2.000 euros. 163 00:07:11,439 --> 00:07:12,579 Tu nuevo saldo es 3.000. 164 00:07:12,860 --> 00:07:13,259 Muy bien. 165 00:07:14,300 --> 00:07:14,740 Retirar. 166 00:07:14,860 --> 00:07:18,480 1.500, tu nuevo saldo es 1.500 167 00:07:18,480 --> 00:07:20,139 vale, si yo le doy a salir 168 00:07:20,139 --> 00:07:21,500 saldrá, no hace falta que lo pruebe 169 00:07:21,500 --> 00:07:23,600 voy a quedarme a cero a ver qué hace 170 00:07:23,600 --> 00:07:25,959 vamos a retirar 171 00:07:25,959 --> 00:07:27,100 1.500 172 00:07:27,100 --> 00:07:30,120 su nuevo saldo es cero 173 00:07:30,120 --> 00:07:30,899 y no puede seguir 174 00:07:30,899 --> 00:07:33,100 pues ya está y la aplicación termina 175 00:07:33,100 --> 00:07:35,139 bueno, pues estupendo 176 00:07:35,139 --> 00:07:36,560 pues justo lo que queríamos 177 00:07:36,560 --> 00:07:42,800 ¿qué? 178 00:07:45,800 --> 00:07:46,579 se entere 179 00:07:46,579 --> 00:07:51,579 Que los bancos lo tienen muy claro 180 00:07:51,579 --> 00:07:52,980 Bueno, pues 181 00:07:52,980 --> 00:07:55,680 Esta aplicación del cajero 182 00:07:55,680 --> 00:07:57,399 Que parece una chorrada 183 00:07:57,399 --> 00:07:58,860 Pero es más interesante de lo que parece 184 00:07:58,860 --> 00:08:00,319 ¿Hasta aquí está clara? 185 00:08:04,790 --> 00:08:06,209 ¿Vale? ¿Hasta aquí está clara? 186 00:08:07,050 --> 00:08:07,610 Bueno 187 00:08:07,610 --> 00:08:10,449 Pues tiene algunas cosas bonitas 188 00:08:10,449 --> 00:08:12,850 Y tiene algunas otras feas 189 00:08:12,850 --> 00:08:14,730 ¿Vale? 190 00:08:16,470 --> 00:08:17,930 ¿Cuáles son las bonitas? 191 00:08:18,149 --> 00:08:23,110 que a la hora de operar, hacer los ingresos y las retiradas, 192 00:08:23,930 --> 00:08:26,949 él directamente llama a los métodos para que lo hagan, 193 00:08:26,990 --> 00:08:27,870 lo que hemos dicho antes. 194 00:08:28,610 --> 00:08:30,529 Entonces, así es como tiene que ser. 195 00:08:30,970 --> 00:08:36,029 La aplicación, el interior del objeto no le tiene que importar. 196 00:08:36,950 --> 00:08:37,830 No le tiene que importar. 197 00:08:37,889 --> 00:08:41,610 Lo único que tiene que hacer la aplicación es llamar a los métodos. 198 00:08:42,149 --> 00:08:43,690 Hasta ahí, eso lo hemos hecho bien. 199 00:08:43,690 --> 00:08:46,169 pero es que esta parte de aquí arriba 200 00:08:46,169 --> 00:08:48,950 esta es la que está fea 201 00:08:48,950 --> 00:08:52,070 la de dar los datos 202 00:08:52,070 --> 00:08:54,169 porque está bien hecho 203 00:08:54,169 --> 00:08:55,710 a nivel de código 204 00:08:55,710 --> 00:08:57,929 de compilación está bien hecho 205 00:08:57,929 --> 00:09:00,230 pero yo aquí me estoy metiendo 206 00:09:00,230 --> 00:09:02,450 dentro directamente 207 00:09:02,450 --> 00:09:04,389 de los detalles del objeto 208 00:09:04,389 --> 00:09:05,809 de los detalles 209 00:09:05,809 --> 00:09:09,580 eso es precisamente 210 00:09:09,580 --> 00:09:10,799 el principio básico 211 00:09:10,799 --> 00:09:13,379 no quiero meterme en los detalles del objeto 212 00:09:13,379 --> 00:09:14,480 ni siquiera 213 00:09:14,480 --> 00:09:16,960 ni siquiera para inicializarlos 214 00:09:16,960 --> 00:09:19,539 ni siquiera para eso quiero meterme en los detalles 215 00:09:19,539 --> 00:09:21,740 no me he metido para retirar 216 00:09:21,740 --> 00:09:23,659 ni para ingresar, magnífico 217 00:09:23,659 --> 00:09:25,539 pero aquí me estoy metiendo 218 00:09:25,539 --> 00:09:27,559 para inicializar, es que no querría 219 00:09:27,559 --> 00:09:29,279 meterme, no debería meterme ni para 220 00:09:29,279 --> 00:09:30,580 inicializar en los detalles 221 00:09:30,580 --> 00:09:33,120 ¿y cuáles son los detalles? esto, lo que tiene dentro 222 00:09:33,120 --> 00:09:35,139 claro, pues precisamente 223 00:09:35,139 --> 00:09:37,740 para evitar, para evitarnos a nosotros 224 00:09:37,740 --> 00:09:39,720 como main, como aplicación principal 225 00:09:39,720 --> 00:09:41,440 meternos en los detalles 226 00:09:41,440 --> 00:09:43,279 es para lo que existen 227 00:09:43,279 --> 00:09:45,120 unos métodos especiales 228 00:09:45,120 --> 00:09:48,379 que son los métodos constructores. 229 00:09:49,659 --> 00:09:49,759 ¿Vale? 230 00:09:50,879 --> 00:09:51,559 Entonces, 231 00:09:52,080 --> 00:09:54,059 el método constructor 232 00:09:54,059 --> 00:09:56,000 es un método especial 233 00:09:56,000 --> 00:09:58,100 que es diferente 234 00:09:58,100 --> 00:09:59,779 y se programa de forma distinta 235 00:09:59,779 --> 00:10:01,500 a los métodos genéricos 236 00:10:01,500 --> 00:10:03,379 que se programan, como hemos visto, 237 00:10:03,519 --> 00:10:04,480 con esas pautas, 238 00:10:05,059 --> 00:10:06,679 parámetros separados por comas 239 00:10:06,679 --> 00:10:07,759 si es que hay más de uno, 240 00:10:08,240 --> 00:10:09,100 nombre del método, 241 00:10:09,259 --> 00:10:10,240 valor que me devuelve, 242 00:10:10,740 --> 00:10:13,139 código, retún si es que me devuelve algo, 243 00:10:13,279 --> 00:10:29,740 Esas son las pautas generales para cualquier otro método y no hay más. Pues los constructores son una excepción. Vale, pues lo contamos así un poco y dejamos el rollo aquí. ¿Qué es un método constructor? Vamos a hacer aquí un método constructor. 244 00:10:33,730 --> 00:10:41,110 Un método constructor es un método al que yo no llamo por código aquí cuando me da la gana, en realidad. 245 00:10:42,070 --> 00:10:43,230 No como lo he llamado a este. 246 00:10:43,850 --> 00:10:47,690 Yo a ingresar lo he llamado aquí, lo podría llamar una y mil veces. 247 00:10:48,330 --> 00:10:51,029 A retirar lo he llamado aquí, lo podría llamar una y mil veces. 248 00:10:51,529 --> 00:10:53,990 Pues al método constructor yo no le llamo cuando quiero. 249 00:10:53,990 --> 00:11:00,009 El método constructor se ejecuta una única vez y es en el momento de crear el objeto. 250 00:11:00,009 --> 00:11:14,059 Es un método, se ejecuta cuando se instancia el objeto. 251 00:11:17,320 --> 00:11:19,179 No se puede ejecutar en otro momento. 252 00:11:19,379 --> 00:11:21,580 Cuando se instancia, se ejecuta automáticamente. 253 00:11:22,440 --> 00:11:24,539 No lo llamo yo, no lo tengo que llamar yo. 254 00:11:24,639 --> 00:11:29,120 Es que se ejecuta ya él automáticamente, cuando se instancia el objeto. 255 00:11:30,759 --> 00:11:31,000 Vale. 256 00:11:32,500 --> 00:11:35,919 Primera restricción que tiene ese método que lo distingue de los demás. 257 00:11:35,919 --> 00:11:37,159 Su nombre 258 00:11:37,159 --> 00:11:40,419 Es obligatorio que se llame 259 00:11:40,419 --> 00:11:42,220 Igual que la clase 260 00:11:42,220 --> 00:11:43,519 Obligatorio 261 00:11:43,519 --> 00:11:48,279 Si no se llama así, entonces no es el constructor 262 00:11:48,279 --> 00:11:48,779 Es otro 263 00:11:48,779 --> 00:11:55,950 Entonces, el constructor de mi clase cuenta 264 00:11:55,950 --> 00:11:57,250 Se llamaría cuenta 265 00:11:57,250 --> 00:11:59,750 Tal cual, con la mayúscula 266 00:11:59,750 --> 00:12:00,690 Con todo, tal cual 267 00:12:00,690 --> 00:12:03,700 Vale 268 00:12:03,700 --> 00:12:06,820 El método constructor 269 00:12:06,820 --> 00:12:08,980 No devuelve nada 270 00:12:08,980 --> 00:12:10,419 No puede devolver nada 271 00:12:10,419 --> 00:12:13,279 Ahora entenderemos por qué 272 00:12:13,279 --> 00:12:15,600 y es tan obligatorio que no devuelva nada 273 00:12:15,600 --> 00:12:17,500 que es que no se pone ni el void. 274 00:12:17,940 --> 00:12:19,779 No se pone ni el void, prohibido. 275 00:12:21,360 --> 00:12:23,600 Si yo pusiera el void, entonces estaría 276 00:12:23,600 --> 00:12:25,539 haciendo otro método distinto 277 00:12:25,539 --> 00:12:27,039 que se llama cuenta, 278 00:12:27,340 --> 00:12:29,340 que no estaría haciendo el constructor. 279 00:12:30,019 --> 00:12:31,200 Este sí es el constructor. 280 00:12:32,100 --> 00:12:33,379 El constructor se llama 281 00:12:33,379 --> 00:12:34,220 como la clase 282 00:12:34,220 --> 00:12:37,559 y delante no se le pone void ni nada. 283 00:12:39,379 --> 00:12:41,799 Vale, pues ¿cuándo se llama este método? 284 00:12:41,799 --> 00:12:43,220 ¿A este método cómo lo llamo yo? 285 00:12:43,279 --> 00:12:48,639 Pues a este método se le llama aquí, cuando se instancia el objeto. 286 00:12:49,320 --> 00:12:59,360 En este momento, cuando yo hago new cuenta, automáticamente la máquina virtual se mete aquí y hace lo que haya ahí. 287 00:13:00,720 --> 00:13:03,139 Lo que sea que haya ahí, lo que a mí me dé la gana. 288 00:13:06,559 --> 00:13:09,000 ¿Qué es lo que normalmente se hace ahí? 289 00:13:10,139 --> 00:13:11,100 Inicializar los datos. 290 00:13:11,100 --> 00:13:13,799 entonces todo este rollo que yo he puesto aquí 291 00:13:13,799 --> 00:13:15,980 pues este rollo 292 00:13:15,980 --> 00:13:18,279 lo podría haber hecho 293 00:13:18,279 --> 00:13:19,240 todo esto 294 00:13:19,240 --> 00:13:21,820 incluso 295 00:13:21,820 --> 00:13:23,559 a ver, porque 296 00:13:23,559 --> 00:13:26,539 ahora mismo tendremos que hacerlo con el siso 297 00:13:26,539 --> 00:13:27,480 luego ya 298 00:13:27,480 --> 00:13:30,139 al constructor le puedes pasar parámetros 299 00:13:30,139 --> 00:13:31,580 con lo cual el siso lo harías fuera 300 00:13:31,580 --> 00:13:34,379 pero ahora mismo vamos a hacer que no has preguntado nada 301 00:13:34,379 --> 00:13:36,279 vale 302 00:13:36,279 --> 00:13:38,320 no has preguntado nada, con lo cual yo no he dicho nada 303 00:13:38,320 --> 00:13:38,860 de esto último 304 00:13:38,860 --> 00:13:41,620 entonces vamos a meter esto aquí dentro 305 00:13:41,620 --> 00:13:47,159 con lo cual necesito el escáner 306 00:13:47,159 --> 00:13:47,779 aquí dentro 307 00:13:47,779 --> 00:13:50,840 este escáner aquí 308 00:13:50,840 --> 00:13:52,700 control c 309 00:13:52,700 --> 00:13:54,100 aquí 310 00:13:54,100 --> 00:13:59,190 no 311 00:13:59,190 --> 00:14:01,289 vale 312 00:14:01,289 --> 00:14:03,250 pues entonces este método 313 00:14:03,250 --> 00:14:05,980 cuenta 314 00:14:05,980 --> 00:14:08,100 se llama 315 00:14:08,100 --> 00:14:10,779 automáticamente cuando se invoca 316 00:14:10,779 --> 00:14:12,600 la instanciación, cuando se hace 317 00:14:12,600 --> 00:14:14,720 el new, este en particular 318 00:14:14,720 --> 00:14:15,980 ¿qué está haciendo? 319 00:14:16,980 --> 00:14:18,019 dime tu nombre 320 00:14:18,019 --> 00:14:20,539 y lo pone en la propiedad titular 321 00:14:20,539 --> 00:14:22,580 pero ojo, aquí ya este me sobra 322 00:14:22,580 --> 00:14:24,179 este cuenta, aquí ya no pinta nada 323 00:14:24,179 --> 00:14:26,879 este cuenta era el objeto del otro sitio 324 00:14:26,879 --> 00:14:28,100 este aquí ya no pinta nada 325 00:14:28,100 --> 00:14:29,639 ya lo quito 326 00:14:29,639 --> 00:14:32,279 ¿qué está haciendo este método? 327 00:14:32,899 --> 00:14:34,759 me pide un valor, lo mete 328 00:14:34,759 --> 00:14:36,899 en la propiedad titular de arriba, lo mete ahí 329 00:14:36,899 --> 00:14:38,279 ya no tengo que poner 330 00:14:38,279 --> 00:14:40,820 titular, la propiedad directamente, su nombre 331 00:14:40,820 --> 00:14:42,620 hombre, si quiero poner this 332 00:14:42,620 --> 00:14:45,259 pues pongo dis porque es lo mismo 333 00:14:45,259 --> 00:14:47,000 pero en este caso 334 00:14:47,000 --> 00:14:49,620 no hay confusión porque no hay parámetros 335 00:14:49,620 --> 00:14:50,259 ni hay nada 336 00:14:50,259 --> 00:14:52,539 si quiero poner dis lo pongo, si no, no 337 00:14:52,539 --> 00:14:56,980 claro, lo que tú quieras, en el constructor 338 00:14:56,980 --> 00:14:57,919 tú haces lo que quieras 339 00:14:57,919 --> 00:14:59,100 ¿vale? 340 00:15:01,039 --> 00:15:03,519 entonces, el uso de este método 341 00:15:03,519 --> 00:15:04,980 es precisamente 342 00:15:04,980 --> 00:15:07,480 normalmente, puede hacer uno lo que quiera 343 00:15:07,480 --> 00:15:09,220 pero normalmente es 344 00:15:09,220 --> 00:15:11,340 inicializar el objeto 345 00:15:11,340 --> 00:15:12,600 con los valores que tú quieres. 346 00:15:13,360 --> 00:15:16,139 Y así no tiene que inicializarle este. 347 00:15:16,960 --> 00:15:20,399 Y esta aplicación, como veis, se queda mucho más bonita. 348 00:15:21,100 --> 00:15:23,580 Crea el objeto y llama a los métodos. 349 00:15:25,200 --> 00:15:29,500 Y en esta aplicación, los detalles de cuenta, 350 00:15:30,059 --> 00:15:33,500 como son titular y cantidad, aquí no aparecen. 351 00:15:33,899 --> 00:15:37,639 Aquí en el main, en ningún momento veo yo titular, 352 00:15:37,860 --> 00:15:39,419 cantidad, no veo nada. 353 00:15:39,419 --> 00:15:41,620 bueno, aquí porque lo he puesto 354 00:15:41,620 --> 00:15:43,360 para la condición, que también debería 355 00:15:43,360 --> 00:15:44,700 quitarlo con otro método, pero bueno 356 00:15:44,700 --> 00:15:46,960 aquí he quitado todos los detalles 357 00:15:46,960 --> 00:15:49,240 a esta aplicación lo que hay dentro de cuenta 358 00:15:49,240 --> 00:15:51,419 le da igual, le da igual que sea un titular 359 00:15:51,419 --> 00:15:53,120 y una cantidad, le da lo mismo 360 00:15:53,120 --> 00:15:55,659 porque ya a través del constructor 361 00:15:55,659 --> 00:15:56,740 inicializa los datos 362 00:15:56,740 --> 00:15:58,960 y a través de estos métodos 363 00:15:58,960 --> 00:16:00,440 hace lo que haya que hacer 364 00:16:00,440 --> 00:16:03,259 ¿vale? y este 365 00:16:03,259 --> 00:16:04,659 constructor ya lo inicializa 366 00:16:04,659 --> 00:16:07,399 vamos a ejecutarlo a ver si 367 00:16:07,399 --> 00:16:09,360 hemos escrito todo bien 368 00:16:09,360 --> 00:16:14,539 no, puede haber varios 369 00:16:14,539 --> 00:16:16,299 pero tienen que tener diferentes parámetros 370 00:16:16,299 --> 00:16:18,159 el próximo día lo vemos 371 00:16:18,159 --> 00:16:20,659 a menos que queráis que lo veamos ahora 372 00:16:20,659 --> 00:16:21,100 y 373 00:16:21,100 --> 00:16:24,759 tiempo da 374 00:16:24,759 --> 00:16:26,480 pero es que tus compañeros te van a odiar 375 00:16:26,480 --> 00:16:28,279 entonces 376 00:16:28,279 --> 00:16:29,279 yo es que no sé 377 00:16:29,279 --> 00:16:32,519 cuánto quieres hacer tus amigos o enemigos 378 00:16:32,519 --> 00:16:36,259 yo precisamente no tengo prisa 379 00:16:36,259 --> 00:16:38,200 otros días os digo, me tengo que ir antes 380 00:16:38,200 --> 00:16:43,720 Dime tu saldo 381 00:16:43,720 --> 00:16:45,460 ¿Veis? Si funciona todo perfectamente 382 00:16:45,460 --> 00:16:47,419 Retirada 383 00:16:47,419 --> 00:16:49,500 300, hala, ya está 384 00:16:49,500 --> 00:16:50,740 Fuera, ¿vale? 385 00:16:52,480 --> 00:16:53,440 Bueno, pues 386 00:16:53,440 --> 00:16:55,200 Muy útil 387 00:16:55,200 --> 00:16:56,519 El constructor, muy útil 388 00:16:56,519 --> 00:16:59,100 Aquí lo único 389 00:16:59,100 --> 00:17:00,620 Se queda un detallito 390 00:17:00,620 --> 00:17:03,039 Y es que yo vengo diciendo 391 00:17:03,039 --> 00:17:04,180 Ahí dando la matraca 392 00:17:04,180 --> 00:17:06,019 Con que 393 00:17:06,019 --> 00:17:07,839 con separar 394 00:17:07,839 --> 00:17:09,720 separar la parte de 395 00:17:09,720 --> 00:17:11,740 meter los datos de la vista 396 00:17:11,740 --> 00:17:13,720 si lo hago por consola 397 00:17:13,720 --> 00:17:15,599 lo hago por interfaz, separarlo de la clase 398 00:17:15,599 --> 00:17:17,779 y aquí le estoy forzando 399 00:17:17,779 --> 00:17:18,799 a que lo meta así 400 00:17:18,799 --> 00:17:21,759 claro, pero es que yo me puedo hacer 401 00:17:21,759 --> 00:17:22,680 un constructor 402 00:17:22,680 --> 00:17:25,559 al que le das tú los valores 403 00:17:25,559 --> 00:17:27,019 y él 404 00:17:27,019 --> 00:17:29,299 lo usa para inicializar 405 00:17:29,299 --> 00:17:31,519 y los valores se leen desde fuera 406 00:17:31,519 --> 00:17:33,759 sería lo ideal, esa sería una 407 00:17:33,759 --> 00:17:35,059 segunda versión de constructor 408 00:17:35,059 --> 00:17:38,500 Vale, constructor puede haber muchos 409 00:17:38,500 --> 00:17:40,339 Un segundo, hay 15 y nos vamos 410 00:17:40,339 --> 00:17:41,059 Pero ahora paz 411 00:17:41,059 --> 00:17:43,720 Constructores puede haber muchos 412 00:17:43,720 --> 00:17:45,240 Otra variante 413 00:17:45,240 --> 00:17:48,759 Cuenta a la que le voy a pasar 414 00:17:48,759 --> 00:17:50,019 Dos valores, por ejemplo 415 00:17:50,019 --> 00:17:51,460 Un string 416 00:17:51,460 --> 00:17:53,319 Que es el titular 417 00:17:53,319 --> 00:17:56,539 Y un double cantidad 418 00:17:56,539 --> 00:17:59,220 ¿Qué va a hacer el constructor 419 00:17:59,220 --> 00:18:01,019 Con estos parámetros? 420 00:18:01,480 --> 00:18:02,519 Pues los va a usar 421 00:18:02,519 --> 00:18:04,039 Para inicializarlos del objeto 422 00:18:04,039 --> 00:18:15,480 Entonces haría distitular igual a titular y dispunto cantidad igual a cantidad. 423 00:18:16,920 --> 00:18:20,940 Claro, entonces este es otro variante de constructor que puede convivir con este 424 00:18:20,940 --> 00:18:25,960 porque se distinguen este parámetros vacíos, este parámetros con cosas. 425 00:18:26,839 --> 00:18:31,019 Este constructor recibe los valores que ya se habrán leído como le dé la gana 426 00:18:31,019 --> 00:18:33,240 a la aplicación, y esos valores 427 00:18:33,240 --> 00:18:34,880 los 428 00:18:34,880 --> 00:18:37,000 utiliza para inicializar 429 00:18:37,000 --> 00:18:37,480 el objeto. 430 00:18:40,859 --> 00:18:42,640 Pregunta perfecta, que cabe aquí. 431 00:18:42,759 --> 00:18:45,059 ¿Cómo distingue? Por lo que yo le meto 432 00:18:45,059 --> 00:18:47,119 aquí. Si yo no le meto nada, 433 00:18:47,380 --> 00:18:48,700 él entiende que vas al primero. 434 00:18:49,400 --> 00:18:51,079 Pero imagínate que yo he leído unos valores 435 00:18:51,079 --> 00:18:52,880 antes, y yo he 436 00:18:52,880 --> 00:18:54,920 dicho, dime tu nombre, y yo he guardado 437 00:18:54,920 --> 00:18:56,799 aquí el nombre, en una variable 438 00:18:56,799 --> 00:18:57,339 cualquiera. 439 00:18:59,019 --> 00:18:59,920 String nombre. 440 00:19:01,019 --> 00:19:03,619 lo que sea, dime tu saldo 441 00:19:03,619 --> 00:19:05,880 y yo he guardado aquí el saldo 442 00:19:05,880 --> 00:19:07,400 en una variable cualquiera 443 00:19:07,400 --> 00:19:09,660 pues ahora podría creármelo 444 00:19:09,660 --> 00:19:11,819 objeto, en lugar de creármelo así 445 00:19:11,819 --> 00:19:14,990 me lo creo así 446 00:19:14,990 --> 00:19:20,049 le paso 447 00:19:20,049 --> 00:19:21,490 este valor 448 00:19:21,490 --> 00:19:23,930 y le paso este otro 449 00:19:23,930 --> 00:19:25,970 y ahora ya 450 00:19:25,970 --> 00:19:28,190 este constructor coge estos valores 451 00:19:28,190 --> 00:19:30,130 que yo he leído por aquí, como podría haber leído 452 00:19:30,130 --> 00:19:31,730 de una base de datos, de donde fuera 453 00:19:31,730 --> 00:19:33,410 coge estos dos valores 454 00:19:33,410 --> 00:19:35,910 y los usa para inicializar 455 00:19:35,910 --> 00:19:36,589 los suyos. 456 00:19:38,170 --> 00:19:38,329 ¿Vale? 457 00:19:40,990 --> 00:19:42,829 Entonces, normalmente, uno 458 00:19:42,829 --> 00:19:45,109 da los valores al objeto 459 00:19:45,109 --> 00:19:47,029 cuando lo crea a través 460 00:19:47,029 --> 00:19:49,069 de los métodos constructores internos. 461 00:19:49,630 --> 00:19:51,150 No directamente aquí accediendo 462 00:19:51,150 --> 00:19:56,549 a la propiedad. ¿Vale? 463 00:19:58,930 --> 00:19:59,289 Bueno, 464 00:20:00,009 --> 00:20:01,390 dudas o preguntas. 465 00:20:02,569 --> 00:20:04,269 De hecho, esto es tan 466 00:20:04,269 --> 00:20:05,329 truco mágico. 467 00:20:06,410 --> 00:20:07,890 Lo de los constructores es tan 468 00:20:07,890 --> 00:20:09,529 prescriptivo, es tan de hacer, 469 00:20:09,970 --> 00:20:12,029 que el Eclipse, el entorno 470 00:20:12,029 --> 00:20:13,930 de desarrollo Eclipse, como el Intel IE, 471 00:20:14,029 --> 00:20:16,089 como cualquiera, te da una 472 00:20:16,089 --> 00:20:17,769 forma de, pum, hacerlo 473 00:20:17,769 --> 00:20:20,309 tú solito. Es decir, imaginaos 474 00:20:20,309 --> 00:20:21,650 que yo no he hecho constructores. 475 00:20:22,829 --> 00:20:23,430 Este no está. 476 00:20:24,529 --> 00:20:25,609 Y quiero un constructor. 477 00:20:26,170 --> 00:20:27,950 Pues en lugar de escribirlo, hago el vago, 478 00:20:28,089 --> 00:20:30,289 que eso nos encanta 479 00:20:30,289 --> 00:20:31,849 a todos. Botón derecho, 480 00:20:32,009 --> 00:20:33,750 source. En source me voy a 481 00:20:33,750 --> 00:20:35,309 generar constructor. 482 00:20:36,970 --> 00:20:38,009 Generar constructor. 483 00:20:38,009 --> 00:20:40,650 con qué campos, titular, cantidad 484 00:20:40,650 --> 00:20:42,130 generar, pun 485 00:20:42,130 --> 00:20:43,789 y ala, me lo hace aparecer 486 00:20:43,789 --> 00:20:46,650 ¿vale? porque es que es lo habitual 487 00:20:46,650 --> 00:20:48,230 que uno use estos constructores 488 00:20:48,230 --> 00:20:50,869 y veis, me lo ha generado 489 00:20:50,869 --> 00:20:52,650 el eclipse no puede ser tan 490 00:20:52,650 --> 00:20:54,529 tonto como para usar 491 00:20:54,529 --> 00:20:55,849 el mismo nombre de variable 492 00:20:55,849 --> 00:20:58,609 y ponerse el tropizo y poner el 493 00:20:58,609 --> 00:20:59,809 dis, es que es lo habitual 494 00:20:59,809 --> 00:21:00,930 ¿vale? 495 00:21:02,190 --> 00:21:04,549 ¿que cómo lo he generado? source 496 00:21:04,549 --> 00:21:06,710 botón derecho en la 497 00:21:06,710 --> 00:21:08,730 clase en la que quieres generar el constructor, en cuenta 498 00:21:08,730 --> 00:21:10,789 en este caso, source 499 00:21:10,789 --> 00:21:12,690 generar constructor 500 00:21:12,690 --> 00:21:14,970 usando campos, propiedades 501 00:21:14,970 --> 00:21:16,970 aquí marcas que campos 502 00:21:16,970 --> 00:21:18,269 quieres que se inicialicen 503 00:21:18,269 --> 00:21:20,789 generar y ya está, lo que pasa es que me ha 504 00:21:20,789 --> 00:21:22,750 generado otro, claro, dos 505 00:21:22,750 --> 00:21:24,690 con el mismo número de parámetros, dos no puede ser 506 00:21:24,690 --> 00:21:26,789 porque entonces habría confusión, por eso me ha dado 507 00:21:26,789 --> 00:21:30,029 vale, y ya está 508 00:21:30,029 --> 00:21:32,369 venga, ahora sí 509 00:21:32,369 --> 00:21:32,890 que nos vamos