1 00:00:01,840 --> 00:00:14,560 Vale, pues la aplicación esta de países que hicisteis el otro día nos permitió incorporar, pues un elemento nuevo, nos permitió incorporar este desplegable de aquí, ¿vale? 2 00:00:14,560 --> 00:00:17,820 Entonces este desplegable de aquí 3 00:00:17,820 --> 00:00:20,140 Como tiene la notación 4 00:00:20,140 --> 00:00:21,179 FXML 5 00:00:21,179 --> 00:00:24,239 Se instancia automáticamente 6 00:00:24,239 --> 00:00:24,980 Por eso aquí 7 00:00:24,980 --> 00:00:28,160 Ni lo inicializamos a New Combo Box 8 00:00:28,160 --> 00:00:28,579 Ni nada 9 00:00:28,579 --> 00:00:31,780 Este se instancia automáticamente 10 00:00:31,780 --> 00:00:33,780 En cuanto se carga la vista 11 00:00:33,780 --> 00:00:36,020 En cuanto se carga 12 00:00:36,020 --> 00:00:36,880 La vista aquí 13 00:00:36,880 --> 00:00:39,100 Con esto 14 00:00:39,100 --> 00:00:41,399 Pues lo que haya en esa vista 15 00:00:41,399 --> 00:00:43,140 Que es el Combo Box, todo lo que haya 16 00:00:43,140 --> 00:00:48,100 automáticamente se instancia este combo box 17 00:00:48,100 --> 00:00:51,479 y esta etiqueta en ese caso con los elementos de la vista 18 00:00:51,479 --> 00:00:54,299 y ya están permanentemente conectados 19 00:00:54,299 --> 00:00:57,280 y ahora ya nuestro controlador pues que hacía 20 00:00:57,280 --> 00:01:03,280 pues primero a través de este método opcional 21 00:01:03,280 --> 00:01:06,000 inicializaba cosas en la vista 22 00:01:06,000 --> 00:01:08,239 en particular lo que hacía en este caso era 23 00:01:08,239 --> 00:01:11,420 cargar los datos de la aplicación 24 00:01:11,420 --> 00:01:14,219 y ponérselos 25 00:01:14,219 --> 00:01:15,859 a el combo box 26 00:01:15,859 --> 00:01:18,219 ¿vale? se los ponía al combo box 27 00:01:18,219 --> 00:01:20,140 mediante el método setItems 28 00:01:20,140 --> 00:01:21,799 el combo box tiene muchos más métodos 29 00:01:21,799 --> 00:01:23,620 si uno quiere ya jugar con él, hacer lo que sea 30 00:01:23,620 --> 00:01:24,239 ¿vale? 31 00:01:25,780 --> 00:01:26,299 entonces 32 00:01:26,299 --> 00:01:30,219 para añadirle ítems al combo box 33 00:01:30,219 --> 00:01:31,459 creábamos una lista 34 00:01:31,459 --> 00:01:33,859 un ArrayList normal y corriente 35 00:01:33,859 --> 00:01:35,719 un ArrayList a partir 36 00:01:35,719 --> 00:01:37,560 de los países de nuestro fichero 37 00:01:37,560 --> 00:01:39,900 pero ese ArrayList en lugar de ser 38 00:01:39,900 --> 00:01:42,079 un ArrayList normal y corriente 39 00:01:42,079 --> 00:01:43,719 lo hacíamos 40 00:01:43,719 --> 00:01:46,019 fuera de la clase ObservableList 41 00:01:46,019 --> 00:01:47,659 que se especifica de JavaX 42 00:01:47,659 --> 00:01:49,819 y 43 00:01:49,819 --> 00:01:51,579 la clase ObservableList 44 00:01:51,579 --> 00:01:53,620 permite que 45 00:01:53,620 --> 00:01:56,180 esta lista esté automáticamente conectada 46 00:01:56,180 --> 00:01:57,480 a la vista. 47 00:01:58,439 --> 00:01:59,819 Entonces, si hay cambios 48 00:01:59,819 --> 00:02:01,900 en esta lista, algún 49 00:02:01,900 --> 00:02:03,879 otro evento hace cambios en esta lista, 50 00:02:04,760 --> 00:02:05,739 el ComboBox 51 00:02:05,739 --> 00:02:07,780 que lo tiene asociado, cambia 52 00:02:07,780 --> 00:02:08,520 automáticamente. 53 00:02:08,520 --> 00:02:12,379 esa es la ventaja de usar una observable list 54 00:02:12,379 --> 00:02:13,479 en lugar de una array list 55 00:02:13,479 --> 00:02:15,900 directamente para el combo box 56 00:02:15,900 --> 00:02:17,060 bueno pues 57 00:02:17,060 --> 00:02:19,500 esta aplicación nos permitió por tanto 58 00:02:19,500 --> 00:02:20,719 incorporar este elemento 59 00:02:20,719 --> 00:02:22,259 incorporar esta lista 60 00:02:22,259 --> 00:02:25,960 que se asocia a muchos otros controles 61 00:02:25,960 --> 00:02:27,280 que son para mostrar datos 62 00:02:27,280 --> 00:02:30,000 el combo box es un control para mostrar datos 63 00:02:30,000 --> 00:02:31,099 muy bueno el desplegable 64 00:02:31,099 --> 00:02:32,800 pero también hay el list view 65 00:02:32,800 --> 00:02:34,900 que es una lista, la típica lista que uno puede 66 00:02:34,900 --> 00:02:37,080 seleccionar elementos, también hay un table view 67 00:02:37,080 --> 00:02:39,900 que es una tabla para seleccionar 68 00:02:39,900 --> 00:02:41,740 elementos, pues todos ellos pueden 69 00:02:41,740 --> 00:02:43,979 tener asociadas listas observables 70 00:02:43,979 --> 00:02:44,500 de estas 71 00:02:44,500 --> 00:02:47,479 vale, además nuestra aplicación que hacía 72 00:02:47,479 --> 00:02:49,659 pues ya cuando pulsábamos en el combo box 73 00:02:49,659 --> 00:02:50,319 hacía algo 74 00:02:50,319 --> 00:02:53,620 entonces pulsaba en el combo box, dijimos 75 00:02:53,620 --> 00:02:55,780 uy, será el onAction, que es el método por defecto 76 00:02:55,780 --> 00:02:56,879 lo probamos, pues sí 77 00:02:56,879 --> 00:02:59,560 era el onAction, el onAction nos llevaba aquí 78 00:02:59,560 --> 00:03:01,560 y de aquí sacábamos los 79 00:03:01,560 --> 00:03:03,520 habitantes asociados 80 00:03:03,520 --> 00:03:05,620 a ese nombre de país que estaba 81 00:03:05,620 --> 00:03:07,680 en el combo box seleccionado 82 00:03:07,680 --> 00:03:08,939 y listo, vale 83 00:03:08,939 --> 00:03:11,780 bueno, pues esta aplicación 84 00:03:11,780 --> 00:03:13,539 ya nos permitió incorporar alguna otra cosa 85 00:03:13,539 --> 00:03:14,479 vale 86 00:03:14,479 --> 00:03:17,780 pues venga, vamos a hacer otra 87 00:03:17,780 --> 00:03:18,960 para incorporar alguna cosa 88 00:03:18,960 --> 00:03:21,099 básica también 89 00:03:21,099 --> 00:03:23,020 vale 90 00:03:23,020 --> 00:03:25,759 nosotros, con lo que hemos 91 00:03:25,759 --> 00:03:26,419 hecho hasta ahora 92 00:03:26,419 --> 00:03:29,680 cada control tiene un método 93 00:03:29,680 --> 00:03:30,340 asociado 94 00:03:30,340 --> 00:03:33,560 luego si mi aplicación tiene mil 95 00:03:33,560 --> 00:03:34,300 controles 96 00:03:34,300 --> 00:03:37,539 mil métodos en el controller 97 00:03:37,539 --> 00:03:39,740 vale, pues no pasa nada 98 00:03:39,740 --> 00:03:41,379 pues se puede sobrevivir así 99 00:03:41,379 --> 00:03:43,479 pero bueno, a lo mejor 100 00:03:43,479 --> 00:03:45,860 podríamos optimizar el código si ocurre lo siguiente 101 00:03:45,860 --> 00:03:47,699 uy, tengo 102 00:03:47,699 --> 00:03:49,599 cuatro controles que 103 00:03:49,599 --> 00:03:51,819 responden prácticamente con el mismo 104 00:03:51,819 --> 00:03:53,560 código, solo cambia 105 00:03:53,560 --> 00:03:54,699 una cosita mínima 106 00:03:54,699 --> 00:03:57,639 entonces, voy a poner cuatro 107 00:03:57,639 --> 00:03:59,620 métodos prácticamente iguales 108 00:03:59,620 --> 00:04:01,500 en los que solo cambia una cosita mínima 109 00:04:01,500 --> 00:04:04,080 asociados a los cuatro controles 110 00:04:04,080 --> 00:04:07,240 no podría yo hacer un único método 111 00:04:07,240 --> 00:04:09,219 y que ese método decida 112 00:04:09,219 --> 00:04:11,280 que control lo llamó 113 00:04:11,280 --> 00:04:13,439 y en función del control 114 00:04:13,439 --> 00:04:15,180 que lo llamara a hacer una cosa u otra 115 00:04:15,180 --> 00:04:16,899 sería lo ideal ¿no? 116 00:04:17,180 --> 00:04:18,899 y así no tengo que copiar el mismo código 117 00:04:18,899 --> 00:04:21,060 en cuatro sitios distintos 118 00:04:21,060 --> 00:04:23,439 ¿entendéis a lo que me refiero? 119 00:04:26,259 --> 00:04:27,199 por ejemplo 120 00:04:27,199 --> 00:04:29,600 lo vamos a ver 121 00:04:29,600 --> 00:04:31,139 en el caso básico y luego ya lo hacemos 122 00:04:31,139 --> 00:04:32,620 en una aplicación un poco más esta 123 00:04:32,620 --> 00:04:36,649 Bueno, esta calculadora como era de texto 124 00:04:36,649 --> 00:04:38,509 La dejamos, vamos a hacer la calculadora 2 125 00:04:38,509 --> 00:04:40,110 Así rápidamente 126 00:04:40,110 --> 00:04:42,670 Pues venga, nuestro maven project 127 00:04:42,670 --> 00:04:44,430 Si hoy nos da tiempo 128 00:04:44,430 --> 00:04:46,550 Y si no el viernes, ponemos el plugin de Eclipse 129 00:04:46,550 --> 00:04:49,269 Para que no lo tengáis que hacer como proyecto maven 130 00:04:49,269 --> 00:04:50,750 Si os es más rápido 131 00:04:50,750 --> 00:04:54,290 Vale, pues venga 132 00:04:54,290 --> 00:04:55,949 Hacemos un proyecto maven normal 133 00:04:55,949 --> 00:04:58,550 Esto ya lo hacéis todo de carrerilla sin equivocaros 134 00:04:58,550 --> 00:05:05,230 Un proyecto nuevo 135 00:05:05,230 --> 00:05:07,670 calculadora 2, para ver esto que os digo 136 00:05:07,670 --> 00:05:10,029 muy cortito 137 00:05:10,029 --> 00:05:11,370 para ver esto, vale 138 00:05:11,370 --> 00:05:14,269 pues yo que sé, calculadora 139 00:05:14,269 --> 00:05:15,449 teclas, le voy a poner 140 00:05:15,449 --> 00:05:17,730 porque la otra, tú ponías los numeritos 141 00:05:17,730 --> 00:05:19,550 en el área de texto, en esta los numeritos 142 00:05:19,550 --> 00:05:20,689 los vas a pulsar por teclas 143 00:05:20,689 --> 00:05:21,829 o las operas 144 00:05:21,829 --> 00:05:25,350 ah, no, no, no, perdón, perdón 145 00:05:25,350 --> 00:05:27,689 lo vamos a hacer, vamos a reutilizar 146 00:05:27,689 --> 00:05:28,889 la anterior, porque 147 00:05:28,889 --> 00:05:31,170 así no metemos más basurilla 148 00:05:31,170 --> 00:05:33,569 vamos a reutilizar la anterior, vamos a ver como era 149 00:05:33,569 --> 00:05:37,449 la anterior. ¿Vale? Abortar 150 00:05:37,449 --> 00:05:39,430 el proceso de hacer proyecto nuevo y así ahorramos 151 00:05:39,430 --> 00:05:41,509 tiempo. La anterior, vamos a 152 00:05:41,509 --> 00:05:42,730 recordar cómo funcionaba. 153 00:05:50,040 --> 00:05:51,879 Vale, esta funcionaba. Tú ponías 154 00:05:51,879 --> 00:05:54,240 45 más 155 00:05:54,240 --> 00:05:56,259 12 156 00:05:56,259 --> 00:05:58,000 igual a lo que fuera. 157 00:05:59,579 --> 00:05:59,939 Habíamos 158 00:05:59,939 --> 00:06:01,680 habilitado solo el botón más, ¿verdad? 159 00:06:01,740 --> 00:06:03,860 El menos no hacía nada. Vamos a 160 00:06:03,860 --> 00:06:04,839 habilitar el botón menos. 161 00:06:05,800 --> 00:06:07,319 Vamos a ampliar la calculadora 162 00:06:07,319 --> 00:06:09,160 habilitándole el botón menos. 163 00:06:09,959 --> 00:06:11,319 Pues entonces, ¿qué haríamos? 164 00:06:11,819 --> 00:06:14,040 con lo que sabemos hasta ahora 165 00:06:14,040 --> 00:06:18,519 pues entonces nos iríamos a nuestro controlador 166 00:06:18,519 --> 00:06:22,420 con lo que sabemos hasta ahora nos iríamos a nuestro controlador y diríamos 167 00:06:22,420 --> 00:06:23,439 venga 168 00:06:23,439 --> 00:06:25,019 pues un nuevo evento 169 00:06:25,019 --> 00:06:29,920 en otro control distinto pues un nuevo método botón igual botón suma pues 170 00:06:29,920 --> 00:06:33,100 botón menos 171 00:06:33,100 --> 00:06:37,160 entonces voy a copiar y pegar porque son casi iguales 172 00:06:37,160 --> 00:06:39,240 botón suma 173 00:06:39,240 --> 00:06:46,259 botón resta 174 00:06:46,259 --> 00:06:48,660 eeeh 175 00:06:48,660 --> 00:06:58,220 vale 176 00:06:58,220 --> 00:07:21,579 vale, sí, es que este en particular da igual porque es que es el mismo código clavado, ni siquiera cambia nada, con lo cual es que ni siquiera puede ser el mismo botón para ambos, porque solo, vale, el botón igual, vale, vale, vale, no, es que, vale, nada, no, a ver, tal y como está hecha la calculadora, botón igual, tienes que haber cual dado la operación, 177 00:07:21,579 --> 00:07:23,100 Claro, es que el botón igual 178 00:07:23,100 --> 00:07:25,000 Hacia la suma 179 00:07:25,000 --> 00:07:26,439 Entonces tú le dabas a la resta 180 00:07:26,439 --> 00:07:28,040 Vale, vale, entonces 181 00:07:28,040 --> 00:07:37,160 Claro, sí 182 00:07:37,160 --> 00:07:39,360 Sí, es que por eso no sé si este es un 183 00:07:39,360 --> 00:07:40,959 Buen ejemplo 184 00:07:40,959 --> 00:07:43,699 Si tú le das a 185 00:07:43,699 --> 00:07:45,040 Más 186 00:07:45,040 --> 00:07:46,279 Vale, entonces 187 00:07:46,279 --> 00:07:49,120 Vamos a cambiar un poquito esta calculadora 188 00:07:49,120 --> 00:07:50,899 Para que aplique un poco más esto que vamos a hacer 189 00:07:50,899 --> 00:07:51,379 Entonces 190 00:07:51,379 --> 00:07:52,680 ¿Eh? 191 00:07:56,480 --> 00:07:57,220 Venga, vale 192 00:07:57,220 --> 00:08:01,100 ¿Sabes qué pasa? Que es que esta está mal 193 00:08:01,100 --> 00:08:02,660 Porque es que el botón igual 194 00:08:02,660 --> 00:08:03,720 Lo único que hace es sumar 195 00:08:03,720 --> 00:08:05,459 Entonces ya está mal 196 00:08:05,459 --> 00:08:08,240 La calculadora tiene que guardar 197 00:08:08,240 --> 00:08:10,740 O sea, el botón igual 198 00:08:10,740 --> 00:08:12,000 Hace una cosa o hace otra 199 00:08:12,000 --> 00:08:14,339 En función de la operación previa 200 00:08:14,339 --> 00:08:16,699 Entonces esta calculadora está mal 201 00:08:16,699 --> 00:08:17,959 ¿Vale? 202 00:08:19,100 --> 00:08:20,980 Entonces, ¿vosotros la tenéis 203 00:08:20,980 --> 00:08:21,600 Igual que yo? 204 00:08:22,500 --> 00:08:25,000 Es que claro, si me pongo ya a modificar 205 00:08:25,000 --> 00:08:26,319 Cosas, vosotros tenéis otra cosa 206 00:08:26,319 --> 00:08:28,899 Entonces por eso es casi, para que os enteréis 207 00:08:28,899 --> 00:08:30,779 Como, para que os enteréis 208 00:08:30,779 --> 00:08:32,519 de lo que vamos a meter ahora, es casi mejor 209 00:08:32,519 --> 00:08:34,559 hacer un proyecto nuevo, porque si no, como cada uno 210 00:08:34,559 --> 00:08:36,320 tú tienes ya el tuyo completo bien 211 00:08:36,320 --> 00:08:37,799 entonces 212 00:08:37,799 --> 00:08:40,419 si yo me puedo cambiar esto 213 00:08:40,419 --> 00:08:41,539 pues voy a ir un poco por libre 214 00:08:41,539 --> 00:08:44,259 y no es plan, vale, pero ahora 215 00:08:44,259 --> 00:08:46,379 entendéis el problema de esta calculadora 216 00:08:46,379 --> 00:08:48,080 los que la tengáis copiada tal cual 217 00:08:48,080 --> 00:08:50,480 pues vosotros ya podéis hacer la modificación por vuestra 218 00:08:50,480 --> 00:08:52,279 cuenta como ha hecho él, para que tenga sentido 219 00:08:52,279 --> 00:08:54,200 o sea, esta calculadora le dabas igual y te sumaba 220 00:08:54,200 --> 00:08:56,299 era absurdo, o sea, el menos 221 00:08:56,299 --> 00:08:57,779 tenías que haberlo guardado en algún sitio 222 00:08:57,779 --> 00:08:59,740 idealmente el objeto 223 00:08:59,740 --> 00:09:02,100 En algún sitio lo tienes que haber guardado 224 00:09:02,100 --> 00:09:03,539 Vale, entonces 225 00:09:03,539 --> 00:09:05,379 Esto lo voy a poner 226 00:09:05,379 --> 00:09:07,080 Aquí 227 00:09:07,080 --> 00:09:13,129 La calculadora 228 00:09:13,129 --> 00:09:18,870 Suma siempre 229 00:09:18,870 --> 00:09:24,090 Entonces habría que cambiar esto 230 00:09:24,090 --> 00:09:28,570 La aplicación 231 00:09:28,570 --> 00:09:30,149 Para que distinga 232 00:09:30,149 --> 00:09:31,289 En función de la operación 233 00:09:31,289 --> 00:09:34,779 De la operación previa 234 00:09:34,779 --> 00:09:39,950 Vale, pero este cambio no implica 235 00:09:39,950 --> 00:09:41,509 Esto nuevo que quiero contar yo ahora 236 00:09:41,509 --> 00:09:43,149 Con lo cual eso se queda aquí planteado 237 00:09:43,149 --> 00:09:45,529 Cada uno que lo cambie como haya querido 238 00:09:45,529 --> 00:09:47,970 Y ahora ya sí que vamos a hacer 239 00:09:47,970 --> 00:09:49,110 Venga, pues a ver 240 00:09:49,110 --> 00:10:01,860 Venga, entonces vamos a 241 00:10:01,860 --> 00:10:12,149 Vale, a ver 242 00:10:12,149 --> 00:10:14,870 Estoy pensando algo más bonito que 243 00:10:14,870 --> 00:10:28,889 Venga, una calculadora 2 244 00:10:28,889 --> 00:10:29,970 Aunque sea una chorrada 245 00:10:29,970 --> 00:10:35,470 Vale, calculadora 246 00:10:35,470 --> 00:10:40,899 Calculadora teclado 247 00:10:40,899 --> 00:10:42,019 Le vamos a llamar 248 00:10:42,019 --> 00:10:44,399 Para que... 249 00:10:44,399 --> 00:10:44,840 No, no. 250 00:10:45,639 --> 00:10:46,480 Calculadora 2. 251 00:11:00,279 --> 00:11:01,980 Bueno, pues os acordáis 252 00:11:01,980 --> 00:11:03,799 de cambiar la máquina virtual. 253 00:11:07,700 --> 00:11:09,440 Sí, al final he hecho otra calculadora. 254 00:11:09,559 --> 00:11:10,779 Después de muchas idas y venidas 255 00:11:10,779 --> 00:11:12,639 me he decidido. 256 00:11:14,500 --> 00:11:15,220 Venga, pues a ver. 257 00:11:15,679 --> 00:11:17,500 Cambiamos el nivel de compilación. 258 00:11:26,330 --> 00:11:26,730 Ahora. 259 00:11:29,149 --> 00:11:29,669 Cuidado. 260 00:11:30,789 --> 00:11:32,570 Ahora el POM 261 00:11:32,570 --> 00:11:35,289 lo copiamos de un archivo 262 00:11:35,289 --> 00:11:36,190 que nos funcione. 263 00:11:38,100 --> 00:11:40,360 desde descripción hacia abajo 264 00:11:40,360 --> 00:11:45,539 dígame 265 00:11:45,539 --> 00:11:51,950 si, no, no, no te preocupes por eso 266 00:11:51,950 --> 00:11:58,779 a ver, no necesariamente 267 00:11:58,779 --> 00:12:01,019 esa línea en particular 268 00:12:01,019 --> 00:12:01,919 no necesariamente 269 00:12:01,919 --> 00:12:04,639 vale, entonces, ahora 270 00:12:04,639 --> 00:12:06,980 me abro el POM de mi 271 00:12:06,980 --> 00:12:08,139 calculadora 2 272 00:12:08,139 --> 00:12:11,759 copio eso 273 00:12:11,759 --> 00:12:15,039 cambio los rojitos y nos da 274 00:12:15,039 --> 00:12:18,789 talk y 275 00:12:18,789 --> 00:12:20,309 revisamos 276 00:12:20,309 --> 00:12:23,409 que el plugin tiene la clase 277 00:12:23,409 --> 00:12:25,250 main correctamente puesta 278 00:12:25,250 --> 00:12:27,509 venga, la vamos a llamar así 279 00:12:27,509 --> 00:12:29,529 yo la voy a llamar así, así no tengo ni que 280 00:12:29,529 --> 00:12:29,889 cambiar 281 00:12:29,889 --> 00:12:33,409 vale, entonces guardando esto 282 00:12:33,409 --> 00:12:35,129 pues efectivamente ahora ya 283 00:12:35,129 --> 00:12:45,289 venga, vale 284 00:12:45,289 --> 00:12:47,529 pues entonces mi calculadora 2 285 00:12:47,529 --> 00:12:49,549 verificamos que 286 00:12:49,549 --> 00:12:51,549 las maven dependencias se han 287 00:12:51,549 --> 00:12:52,870 cargado, bien 288 00:12:52,870 --> 00:12:55,929 y ahora ya, venga, nos vamos a hacer 289 00:12:55,929 --> 00:12:58,110 un modelo con un objeto calculadora 290 00:12:58,110 --> 00:13:00,029 igual que el otro, entonces vamos a hacer nuestra primera 291 00:13:00,029 --> 00:13:01,710 aplicación, nuestro primer paquete 292 00:13:01,710 --> 00:13:03,970 nuestro primer 293 00:13:03,970 --> 00:13:05,049 paquete 294 00:13:05,049 --> 00:13:08,289 es .dump1 295 00:13:08,289 --> 00:13:09,389 .model 296 00:13:09,389 --> 00:13:14,700 y en este paquete de modelo va a ir 297 00:13:14,700 --> 00:13:16,759 la entidad 298 00:13:16,759 --> 00:13:18,620 con la que va a trabajar 299 00:13:18,620 --> 00:13:20,580 mi aplicación, que yo he decidido que sea una 300 00:13:20,580 --> 00:13:22,679 calculadora, mi aplicación va a trabajar con una 301 00:13:22,679 --> 00:13:24,480 calculadora, pues la meto aquí 302 00:13:24,480 --> 00:13:26,320 voy a copiar y pegarla del otro sitio 303 00:13:26,320 --> 00:13:30,200 y le voy a añadir la operación resta que no tenía 304 00:13:30,200 --> 00:13:37,480 copiar, copiar 305 00:13:37,480 --> 00:13:44,710 venga, la pego ahí 306 00:13:44,710 --> 00:13:48,740 esta es mi calculadora 307 00:13:48,740 --> 00:13:50,320 se caracteriza 308 00:13:50,320 --> 00:13:52,120 por los operandos 309 00:13:52,120 --> 00:13:54,620 y por las operaciones que puede hacer 310 00:13:54,620 --> 00:13:56,860 sumar y restar 311 00:13:56,860 --> 00:13:58,200 ¿vale? 312 00:13:58,360 --> 00:14:00,820 se podría poner en un método que es 313 00:14:00,820 --> 00:14:02,919 un único método 314 00:14:02,919 --> 00:14:03,519 operar 315 00:14:03,519 --> 00:14:06,379 y que reciba por parámetro la operación 316 00:14:06,379 --> 00:14:08,340 Reciba el más, el menos 317 00:14:08,340 --> 00:14:11,220 Se podría hacer de diferentes formas 318 00:14:11,220 --> 00:14:14,220 Y ya está 319 00:14:14,220 --> 00:14:16,299 Mi calculadora con dos operaciones 320 00:14:16,299 --> 00:14:18,000 Y dos operandos 321 00:14:18,000 --> 00:14:20,100 Este es el modelo que decido yo 322 00:14:20,100 --> 00:14:21,779 Por los requisitos de mi aplicación 323 00:14:21,779 --> 00:14:22,539 De lo que voy a hacer 324 00:14:22,539 --> 00:14:25,159 De lo que me he hablado con el cliente, etc. 325 00:14:26,820 --> 00:14:28,080 Sí, están por ahí abajo 326 00:14:28,080 --> 00:14:31,980 Constructor no le he puesto 327 00:14:31,980 --> 00:14:35,960 Vale, pues entonces ahora ya vamos a hacernos 328 00:14:35,960 --> 00:14:37,080 La aplicación 329 00:14:37,080 --> 00:14:41,500 el paquete 330 00:14:41,500 --> 00:14:53,210 si 331 00:14:53,210 --> 00:14:55,750 es que me pasa por ir rápido 332 00:14:55,750 --> 00:14:56,549 y hablar 333 00:14:56,549 --> 00:14:59,710 y hacerlo todo a la vez 334 00:14:59,710 --> 00:15:00,850 que no me sale 335 00:15:00,850 --> 00:15:03,509 entonces no pasa nada 336 00:15:03,509 --> 00:15:04,590 le cambio el nombre ahora 337 00:15:04,590 --> 00:15:07,669 y ahora ya si que me hago la clase 338 00:15:07,669 --> 00:15:12,399 pero está bien que estéis atentos 339 00:15:12,399 --> 00:15:16,190 app con el main 340 00:15:16,190 --> 00:15:17,049 aquí debajo 341 00:15:17,049 --> 00:15:19,970 el main tiene 342 00:15:19,970 --> 00:15:20,990 el land 343 00:15:20,990 --> 00:15:25,450 arts 344 00:15:25,450 --> 00:15:28,710 y esta hereda 345 00:15:28,710 --> 00:15:29,809 de application 346 00:15:29,809 --> 00:15:39,169 extends application 347 00:15:39,169 --> 00:15:47,200 vale, y ahora 348 00:15:47,200 --> 00:15:49,360 me tengo que hacer yo mi método start 349 00:15:49,360 --> 00:15:50,799 para que este se calle 350 00:15:50,799 --> 00:15:53,279 y porque lo tengo que hacer lógicamente 351 00:15:53,279 --> 00:15:56,240 primero importo 352 00:15:56,240 --> 00:15:59,159 y ahora añado el start 353 00:15:59,159 --> 00:16:01,259 y ahora en el start 354 00:16:01,259 --> 00:16:03,399 cargo la vista 355 00:16:03,399 --> 00:16:04,879 que todavía la tengo por hacer 356 00:16:04,879 --> 00:16:09,559 y me hago mi primera escena con esa vista 357 00:16:09,559 --> 00:16:11,720 entonces esto de nuevo copio y pego 358 00:16:11,720 --> 00:16:13,139 del otro 359 00:16:13,139 --> 00:16:17,860 copio y pego de la otra que tenía 360 00:16:17,860 --> 00:16:34,179 vale, pues lo primero 361 00:16:34,179 --> 00:16:35,740 que vamos a hacernos, pues esta vista 362 00:16:35,740 --> 00:16:38,059 y luego ya nos hacemos el controller, porque en función de los 363 00:16:38,059 --> 00:16:40,100 controles que tengamos, pues ya habrá unos métodos 364 00:16:40,100 --> 00:16:41,220 o habrá otros 365 00:16:41,220 --> 00:16:43,960 venga, pues hala 366 00:16:43,960 --> 00:16:50,179 voy a abrir el 367 00:16:50,179 --> 00:16:52,200 este de aquí 368 00:16:52,200 --> 00:17:09,259 pues hala 369 00:17:09,259 --> 00:17:10,259 Me hago 370 00:17:10,259 --> 00:17:12,759 Mi área de texto 371 00:17:12,759 --> 00:17:17,500 Podría haber copiado la otra 372 00:17:17,500 --> 00:17:18,400 Sin más 373 00:17:18,400 --> 00:17:24,519 Voy a copiar la misma otra vista 374 00:17:24,519 --> 00:17:25,700 Como lo que cambia es el control 375 00:17:25,700 --> 00:17:26,839 En lugar de hacer una de nuevas 376 00:17:26,839 --> 00:17:30,740 La otra vista que tenía 377 00:17:30,740 --> 00:17:32,839 En la otra calculadora 378 00:17:32,839 --> 00:17:34,740 La voy a reutilizar aquí 379 00:17:34,740 --> 00:17:37,319 La otra vista que tenía que estaba en resources 380 00:17:37,319 --> 00:17:39,980 Esta vista la copio 381 00:17:39,980 --> 00:17:43,319 Y la pego aquí también 382 00:17:43,319 --> 00:17:44,839 En los resources de este 383 00:17:44,839 --> 00:17:49,279 Vale pues 384 00:17:49,279 --> 00:17:52,420 Y ahora esta vista 385 00:17:52,420 --> 00:17:54,740 Que es una copia 386 00:17:54,740 --> 00:17:56,319 Idéntica de la de la otra calculadora 387 00:17:56,319 --> 00:17:57,299 La voy a editar 388 00:17:57,299 --> 00:17:59,500 Ahora ya si con el steam builder 389 00:17:59,500 --> 00:18:01,140 Vale 390 00:18:01,140 --> 00:18:03,880 Si hacéis open with 391 00:18:03,880 --> 00:18:06,039 Pues buscáis la aplicación 392 00:18:06,039 --> 00:18:07,799 Si pero 393 00:18:07,799 --> 00:18:10,140 No es que yo no quiero esto 394 00:18:10,140 --> 00:18:11,960 Donde pone steam builder 395 00:18:11,960 --> 00:18:12,720 Yo no lo veo ahí 396 00:18:12,720 --> 00:18:22,180 Ah, vale, vale 397 00:18:22,180 --> 00:18:22,900 Ya, ya, ya 398 00:18:22,900 --> 00:18:27,910 El eclipse no... 399 00:18:27,910 --> 00:18:28,170 Venga 400 00:18:28,170 --> 00:18:51,000 Vale, a ver 401 00:18:51,000 --> 00:18:52,500 Aquí 402 00:18:52,500 --> 00:18:54,880 a ver donde lo tengo 403 00:18:54,880 --> 00:18:55,960 archivo encendido 404 00:18:55,960 --> 00:19:09,660 pues espérate 405 00:19:09,660 --> 00:19:11,740 a ver que averigüe yo donde estaba este 406 00:19:11,740 --> 00:19:21,579 vale 407 00:19:21,579 --> 00:19:22,279 appdata 408 00:19:22,279 --> 00:19:26,730 pues venga 409 00:19:26,730 --> 00:19:27,430 si lo tengo 410 00:19:27,430 --> 00:19:30,470 si no ya lo ha visto donde 411 00:19:30,470 --> 00:19:31,390 en appdata 412 00:19:31,390 --> 00:19:33,329 no no lo tengo ahí 413 00:19:33,329 --> 00:19:33,869 vale 414 00:19:33,869 --> 00:19:41,180 aquí 415 00:19:41,180 --> 00:20:37,910 Vale, estaba un poco escondida, venga, pues a ver, calculadora 2, vale, entonces, ahora, 416 00:20:37,910 --> 00:20:47,769 Vamos a poner el controller, el controller está aquí ya puesto como es Danbuno controller, 417 00:20:48,950 --> 00:20:57,380 este ya tiene un nombrecito puesto aquí en code, este ya tiene su nombre que se llamaba dato, 418 00:20:58,839 --> 00:21:05,559 este tiene un onAction y este no lo tiene, entonces vamos a suponer que digo, bueno, yo quiero restar también, 419 00:21:05,559 --> 00:21:07,519 yo también quiero restar 420 00:21:07,519 --> 00:21:09,680 pues entonces vamos a ponerle aquí un onAction 421 00:21:09,680 --> 00:21:11,920 que sea botón resta 422 00:21:11,920 --> 00:21:16,089 botón resta 423 00:21:16,089 --> 00:21:17,829 y el igual tiene botón igual 424 00:21:17,829 --> 00:21:20,349 entonces estos son los tres que van a recibir evento 425 00:21:20,349 --> 00:21:22,390 este, este y este 426 00:21:22,390 --> 00:21:24,109 este no va a recibirlo 427 00:21:24,109 --> 00:21:25,950 pero si necesitamos saber su nombre 428 00:21:25,950 --> 00:21:28,349 y ya está, tiene el controlador, lo tiene todo 429 00:21:28,349 --> 00:21:30,390 en la vista ya en principio no tengo nada más 430 00:21:30,390 --> 00:21:31,549 que tocar 431 00:21:31,549 --> 00:21:34,349 vale, pues ya está, ahí se queda cerrado 432 00:21:34,349 --> 00:21:35,589 ahora 433 00:21:35,589 --> 00:21:37,430 ahora nos toca hacer el controller 434 00:21:37,430 --> 00:21:39,809 entonces voy a copiar y pegar 435 00:21:39,809 --> 00:21:41,789 el otro controller para ahorrarme tiempo 436 00:21:41,789 --> 00:21:43,849 el otro controller, el paquete entero 437 00:21:43,849 --> 00:21:44,349 de hecho 438 00:21:44,349 --> 00:21:46,849 copiar 439 00:21:46,849 --> 00:21:56,319 vale, pues nada 440 00:21:56,319 --> 00:21:59,420 el controller 441 00:21:59,420 --> 00:22:01,619 el controller necesita el objeto calculadora 442 00:22:01,619 --> 00:22:03,440 necesita el dato y a los 443 00:22:03,440 --> 00:22:05,019 eventos, vale, entonces 444 00:22:05,019 --> 00:22:06,680 esto lo quitamos 445 00:22:06,680 --> 00:22:11,109 tiene un inicialice arrancando calculadora 446 00:22:11,109 --> 00:22:12,950 ya está y ahora vamos a 447 00:22:12,950 --> 00:22:14,730 añadirle, ahora mismo solamente tengo 448 00:22:14,730 --> 00:22:16,849 el evento de botón 449 00:22:16,849 --> 00:22:17,730 suma 450 00:22:17,730 --> 00:22:19,309 entonces 451 00:22:19,309 --> 00:22:22,750 vale, si yo le he dado 452 00:22:22,750 --> 00:22:24,490 al botón suma, que es lo que estoy haciendo 453 00:22:24,490 --> 00:22:26,130 cargar en la calculadora 454 00:22:26,130 --> 00:22:30,410 el operando 1 455 00:22:30,410 --> 00:22:34,369 y tengo que cargar también 456 00:22:34,369 --> 00:22:36,569 en algún sitio la operación para que se quede 457 00:22:36,569 --> 00:22:38,509 en memoria, para luego cuando le dé 458 00:22:38,509 --> 00:22:39,210 al botón igual 459 00:22:39,210 --> 00:22:42,009 para que se quede en memoria 460 00:22:42,009 --> 00:22:42,829 entonces 461 00:22:42,829 --> 00:22:45,750 que opción 462 00:22:45,750 --> 00:22:47,210 podríamos optar aquí, muchas 463 00:22:47,210 --> 00:22:48,730 podríamos poner aquí por ejemplo 464 00:22:48,730 --> 00:22:50,069 pues 465 00:22:50,069 --> 00:22:52,569 en el propio controller 466 00:22:52,569 --> 00:22:54,869 podríamos poner la operación 467 00:22:54,869 --> 00:22:56,990 o en la calculadora 468 00:22:56,990 --> 00:22:58,470 vale 469 00:22:58,470 --> 00:23:01,089 vamos a ponerla en el controller 470 00:23:01,089 --> 00:23:26,529 he quitado el botón igual 471 00:23:26,529 --> 00:23:29,569 vale, he quitado el botón igual 472 00:23:29,569 --> 00:23:31,410 porque ese método 473 00:23:31,410 --> 00:23:32,950 estaba mal, porque sumaba siempre 474 00:23:32,950 --> 00:23:35,009 He dejado solo botón suma que tenemos que tocar 475 00:23:35,009 --> 00:23:37,150 Vale, entonces string operación 476 00:23:37,150 --> 00:23:38,710 Vale, entonces 477 00:23:38,710 --> 00:23:40,690 Cuando yo le doy al botón suma 478 00:23:40,690 --> 00:23:42,049 Operación 479 00:23:42,049 --> 00:23:44,549 Se guarda así 480 00:23:44,549 --> 00:23:45,970 Por ejemplo 481 00:23:45,970 --> 00:23:48,390 Botón resta 482 00:23:48,390 --> 00:23:52,920 Va a hacer lo mismo 483 00:23:52,920 --> 00:23:55,279 Lo mismo 484 00:23:55,279 --> 00:23:59,099 Salvo esta cosita pequeña de aquí 485 00:23:59,099 --> 00:24:00,460 Salvo esta 486 00:24:00,460 --> 00:24:02,640 Poner la operación a menos 487 00:24:02,640 --> 00:24:03,519 Va a hacer lo mismo 488 00:24:03,519 --> 00:24:04,720 Que este de aquí 489 00:24:04,720 --> 00:24:08,450 ¿Vale? 490 00:24:10,029 --> 00:24:10,630 Aquí 491 00:24:10,630 --> 00:24:15,109 Y ahora 492 00:24:15,109 --> 00:24:18,369 Ahora ya me hago el botón igual 493 00:24:18,369 --> 00:24:35,680 Igual 494 00:24:35,680 --> 00:24:37,640 Y el evento del botón igual 495 00:24:37,640 --> 00:24:39,000 Pues ahora ya sí que será 496 00:24:39,000 --> 00:24:41,359 Coger el segundo operador 497 00:24:41,359 --> 00:24:52,400 Coge el segundo operador 498 00:24:52,400 --> 00:24:53,420 Del área de texto 499 00:24:53,420 --> 00:24:57,140 Y ahora ya en función de la operación 500 00:24:57,140 --> 00:24:58,180 Hace una cosa u otra 501 00:24:58,180 --> 00:25:19,019 ¿Vale? En el caso de que sea más 502 00:25:19,019 --> 00:25:23,740 Pues entonces hace poner el área de texto 503 00:25:23,740 --> 00:25:26,579 Voy a abrir otro controller para copiarlo 504 00:25:26,579 --> 00:25:36,109 Dato se llama 505 00:25:36,109 --> 00:25:42,700 Pues dato.setText 506 00:25:42,700 --> 00:25:48,039 Y ahora calc.sumar 507 00:25:48,039 --> 00:25:50,000 Más esto 508 00:25:50,000 --> 00:25:54,680 Y ahora 509 00:25:54,680 --> 00:25:59,539 En el caso de que sea menos 510 00:25:59,539 --> 00:26:07,549 pues llama a restar 511 00:26:07,549 --> 00:26:17,210 y lo pone en dato 512 00:26:17,210 --> 00:26:20,950 y ya está 513 00:26:20,950 --> 00:26:23,950 y si le damos al botón igual 514 00:26:23,950 --> 00:26:25,289 sin que la operación 515 00:26:25,289 --> 00:26:28,630 se haya cargado antes con nada 516 00:26:28,630 --> 00:26:30,730 pues vamos a hacer 517 00:26:30,730 --> 00:26:32,170 que no haga nada 518 00:26:32,170 --> 00:26:36,349 ya está, no hace nada 519 00:26:36,349 --> 00:26:38,869 nada más que 520 00:26:38,869 --> 00:26:40,190 poner a cero la 521 00:26:40,190 --> 00:26:42,529 poner a cero la 522 00:26:42,529 --> 00:26:43,890 ventanita y ya está 523 00:26:43,890 --> 00:26:45,529 default 524 00:26:45,529 --> 00:27:03,420 Vale, pues tenemos los tres eventos 525 00:27:03,420 --> 00:27:04,059 Los tres eventos asociados 526 00:27:04,059 --> 00:27:05,680 Vamos a ver si esto funciona 527 00:27:05,680 --> 00:27:08,039 Sí 528 00:27:08,039 --> 00:27:19,869 Solamente cambia esto 529 00:27:19,869 --> 00:27:21,910 Solo cambia eso 530 00:27:21,910 --> 00:27:23,269 Cada uno de los dos eventos 531 00:27:23,269 --> 00:27:24,089 De suma y resta 532 00:27:24,089 --> 00:27:25,130 Solo cambia eso 533 00:27:25,130 --> 00:27:30,029 Y luego 534 00:27:30,029 --> 00:27:33,809 Llamas a calculadora 535 00:27:33,809 --> 00:27:35,910 en función del operando, haces una cosa u otra 536 00:27:35,910 --> 00:27:38,049 o si hubiéramos 537 00:27:38,049 --> 00:27:39,609 tenido un único método operación 538 00:27:39,609 --> 00:27:41,529 pasándole el operando, pues operación 539 00:27:41,529 --> 00:27:42,750 pasándole el operando 540 00:27:42,750 --> 00:27:48,240 o podríamos haber puesto en la calculadora 541 00:27:48,240 --> 00:27:50,440 operando activo, bueno, muchos diseños posibles 542 00:27:50,440 --> 00:27:52,059 pero bueno, ahora no nos importa mucho 543 00:27:52,059 --> 00:27:53,500 vale 544 00:27:53,500 --> 00:27:55,720 vamos a ver si esto funcionara 545 00:27:55,720 --> 00:28:01,859 mabil 546 00:28:01,859 --> 00:28:07,400 fx 547 00:28:07,400 --> 00:28:08,220 run 548 00:28:08,220 --> 00:28:18,410 vale, 23 549 00:28:18,410 --> 00:28:19,650 más 2 550 00:28:19,650 --> 00:28:21,250 uy, más 12 551 00:28:21,250 --> 00:28:22,809 igual a 35 552 00:28:22,809 --> 00:28:26,950 vale, y ahora 553 00:28:26,950 --> 00:28:28,630 56 554 00:28:28,630 --> 00:28:30,549 más 555 00:28:30,549 --> 00:28:32,849 uy, quería yo menos, bueno, da igual 556 00:28:32,849 --> 00:28:35,210 1 igual 557 00:28:35,210 --> 00:28:36,210 a 57 558 00:28:36,210 --> 00:28:38,869 y ahora 559 00:28:38,869 --> 00:28:41,089 se le podría añadir un botón de clear 560 00:28:41,089 --> 00:28:42,990 pero bueno, y ahora 561 00:28:42,990 --> 00:28:44,930 34 menos 562 00:28:44,930 --> 00:28:47,190 1 igual 563 00:28:47,190 --> 00:28:48,930 a 33, vale 564 00:28:48,930 --> 00:28:50,670 bueno, la calculadora funciona 565 00:28:50,670 --> 00:28:52,450 con cositas que se le podrían añadir 566 00:28:52,450 --> 00:28:53,789 que borrar automáticamente 567 00:28:53,789 --> 00:28:56,210 pero ahora 568 00:28:56,210 --> 00:28:59,920 lo que nos importa a nosotros 569 00:28:59,920 --> 00:29:01,019 bueno, hasta aquí bien 570 00:29:01,019 --> 00:29:03,099 no, no tengo que entender 571 00:29:03,099 --> 00:29:06,160 cuando llamas 572 00:29:06,160 --> 00:29:10,339 cuando tú pillas 573 00:29:10,339 --> 00:29:13,539 ese text te fija en esta etiqueta lo que tú le pongas 574 00:29:13,539 --> 00:29:15,019 sí, pero digo 575 00:29:15,019 --> 00:29:17,180 cuando tú sacas el segundo operador 576 00:29:17,180 --> 00:29:19,339 yo saco el segundo operador 577 00:29:19,339 --> 00:29:20,500 y se lo meto a la calculadora 578 00:29:20,500 --> 00:29:23,019 y ahora le digo a la calculadora que sume 579 00:29:23,019 --> 00:29:25,299 y suma 580 00:29:25,299 --> 00:29:35,880 La calculadora la hemos puesto en el paquete modelo y se limita a sumar los dos operadores que le hemos fijado previamente, claro. 581 00:29:35,880 --> 00:29:50,759 Vale, pues entonces, ¿qué ocurre? Ahora ya nos ponemos a revisar esta aplicación y decimos, a ver, controller, ¿dónde estás? Aquí. 582 00:29:50,759 --> 00:30:14,299 Vamos a ver, tenemos dos métodos que son prácticamente idénticos, prácticamente idénticos, solo cambian en esta línea y en esta línea, al menos son cortos pero son idénticos y si pusiéramos más operaciones, multiplicación, división, empezarían a aparecer aquí un montón de métodos, todos prácticamente iguales salvo una línea. 583 00:30:14,299 --> 00:30:17,599 bueno, esta situación se puede dar 584 00:30:17,599 --> 00:30:19,220 en mil situaciones equivalentes 585 00:30:19,220 --> 00:30:21,759 este es el ejemplo más sencillo que se me ha ocurrido 586 00:30:21,759 --> 00:30:23,059 los botones de una calculadora 587 00:30:23,059 --> 00:30:25,019 pero una situación así se puede dar en mil situaciones 588 00:30:25,019 --> 00:30:27,460 en mil aplicaciones distintas 589 00:30:27,460 --> 00:30:29,099 entonces 590 00:30:29,099 --> 00:30:30,420 nosotros pensamos, jolines 591 00:30:30,420 --> 00:30:33,160 y si yo hago un único evento 592 00:30:33,160 --> 00:30:35,539 y que el evento dentro 593 00:30:35,539 --> 00:30:36,920 distinga a quien le llamó 594 00:30:36,920 --> 00:30:38,900 y en función de quien le llamara 595 00:30:38,900 --> 00:30:40,960 ponga el más o ponga el menos 596 00:30:40,960 --> 00:30:43,519 sería ideal 597 00:30:43,519 --> 00:30:45,559 que yo desde un método 598 00:30:45,559 --> 00:30:47,099 de evento, de respuesta a evento 599 00:30:47,099 --> 00:30:49,440 tenga yo acceso a la información 600 00:30:49,440 --> 00:30:50,539 de quien me ha llamado 601 00:30:50,539 --> 00:30:53,180 porque ahora mismo con lo que tenemos aquí 602 00:30:53,180 --> 00:30:55,619 yo llego a este punto y yo aquí por código 603 00:30:55,619 --> 00:30:57,819 no tengo información de quien me ha llamado 604 00:30:57,819 --> 00:30:59,019 no la tengo 605 00:30:59,019 --> 00:31:01,160 no, vale 606 00:31:01,160 --> 00:31:03,539 entonces, que podemos 607 00:31:03,539 --> 00:31:05,319 hacer, pues bueno 608 00:31:05,319 --> 00:31:07,480 a estos métodos de 609 00:31:07,480 --> 00:31:09,700 evento, los que están anotados 610 00:31:09,700 --> 00:31:10,660 con fxml 611 00:31:10,660 --> 00:31:12,680 y que luego está en el onAction 612 00:31:12,680 --> 00:31:14,200 en el onDrag, en no sé qué 613 00:31:14,200 --> 00:31:16,880 se les puede pasar opcionalmente 614 00:31:16,880 --> 00:31:18,420 si uno quiere, opcionalmente 615 00:31:18,420 --> 00:31:20,859 un objeto que se llama 616 00:31:20,859 --> 00:31:22,599 de muchas formas posibles 617 00:31:22,599 --> 00:31:24,880 ActionEvent, MouseEvent, KeyEvent 618 00:31:24,880 --> 00:31:25,900 ahora vemos, pero 619 00:31:25,900 --> 00:31:28,200 el por defecto es ActionEvent, me explico 620 00:31:28,200 --> 00:31:30,019 vamos a comentar estos 621 00:31:30,019 --> 00:31:32,700 estos que son mucha duplicidad 622 00:31:32,700 --> 00:31:35,180 de código, estos no me gustan 623 00:31:35,180 --> 00:31:36,839 están duplicando 624 00:31:36,839 --> 00:31:38,359 código, voy a hacer uno solo 625 00:31:38,359 --> 00:31:39,660 voy a hacer uno solo 626 00:31:39,660 --> 00:31:42,200 pues venga, vamos a hacer uno solo 627 00:31:42,200 --> 00:31:45,799 venga, pues ese solo 628 00:31:45,799 --> 00:31:49,420 fxml 629 00:31:49,420 --> 00:31:51,579 que se llame por ejemplo 630 00:31:51,579 --> 00:31:53,420 public void 631 00:31:53,420 --> 00:31:55,940 botón 632 00:31:55,940 --> 00:31:56,559 operación 633 00:31:56,559 --> 00:31:59,380 es decir, este va a ser 634 00:31:59,380 --> 00:32:01,480 el evento que va a responder 635 00:32:01,480 --> 00:32:03,960 a pulsar cualquier botón 636 00:32:03,960 --> 00:32:05,819 operación, me da igual cual sea 637 00:32:05,819 --> 00:32:07,740 vale, entonces vamos a abrir 638 00:32:07,740 --> 00:32:09,160 otra vez el modelo 639 00:32:09,160 --> 00:32:15,990 vale, pues entonces ese evento que yo estoy 640 00:32:15,990 --> 00:32:18,230 haciendo que responda 641 00:32:18,230 --> 00:32:20,069 tanto al más como al menos 642 00:32:20,069 --> 00:32:22,230 porque total el código es casi igual 643 00:32:22,230 --> 00:32:24,029 entonces si el código es 644 00:32:24,029 --> 00:32:26,109 casi igual que me responda tanto al más 645 00:32:26,109 --> 00:32:27,329 como al menos 646 00:32:27,329 --> 00:32:29,089 pues venga voy a cambiar 647 00:32:29,089 --> 00:32:31,230 en el onAction del más 648 00:32:31,230 --> 00:32:33,630 ahora ya no quiero que sea botón suma 649 00:32:33,630 --> 00:32:34,990 sino botón 650 00:32:34,990 --> 00:32:37,009 operación 651 00:32:37,009 --> 00:32:38,730 botón operación 652 00:32:38,730 --> 00:32:41,470 y en el menos igual 653 00:32:41,470 --> 00:32:44,190 botón operación 654 00:32:44,190 --> 00:32:45,890 los dos el mismo 655 00:32:45,890 --> 00:32:50,009 total, son prácticamente iguales 656 00:32:50,009 --> 00:32:52,309 vale, pues si lo he escrito bien 657 00:32:52,309 --> 00:32:53,609 ahora ya 658 00:32:53,609 --> 00:32:55,529 sea cual sea el botón que yo dé 659 00:32:55,529 --> 00:32:56,890 sea más o sea menos 660 00:32:56,890 --> 00:32:59,470 las librerías de JavaFX 661 00:32:59,470 --> 00:33:00,849 me enchufan aquí 662 00:33:00,849 --> 00:33:03,930 vale, pues ahora vamos 663 00:33:03,930 --> 00:33:04,529 ¿qué hay que hacer? 664 00:33:05,170 --> 00:33:07,630 pues que hay que hacer, fijar el primero operando 665 00:33:07,630 --> 00:33:12,279 eso me da igual el botón 666 00:33:12,279 --> 00:33:13,980 que haya pulsado, me da exactamente igual 667 00:33:13,980 --> 00:33:15,640 haya pulsado el más, el menos 668 00:33:15,640 --> 00:33:17,819 esto hay que hacerlo, fijar el primero operando 669 00:33:17,819 --> 00:33:20,099 ahora ya que me pongo 670 00:33:20,099 --> 00:33:22,039 limpiar la ventana 671 00:33:22,039 --> 00:33:23,720 perdón, el área de texto 672 00:33:23,720 --> 00:33:26,599 limpiarla, eso los dos, da igual el que lo haga 673 00:33:26,599 --> 00:33:28,500 y ahora es cuando me viene el problema 674 00:33:28,500 --> 00:33:30,599 y ahora la sentencia 675 00:33:30,599 --> 00:33:32,680 que me falta es op igual 676 00:33:32,680 --> 00:33:34,720 a qué 677 00:33:34,720 --> 00:33:36,660 pues es que no lo sé 678 00:33:36,660 --> 00:33:38,380 depende como haya llegado yo hasta aquí 679 00:33:38,380 --> 00:33:40,799 si yo he llegado hasta aquí habiendo pulsado 680 00:33:40,799 --> 00:33:42,700 el más, esto sería 681 00:33:42,700 --> 00:33:44,880 un más, pero si yo he llegado 682 00:33:44,880 --> 00:33:46,519 hasta aquí habiendo pulsado el menos 683 00:33:46,519 --> 00:33:49,059 que es otro control distinto, esto sería un menos 684 00:33:49,059 --> 00:33:52,259 con lo cual no sé qué poner aquí, aquí hay un if 685 00:33:52,259 --> 00:33:55,640 si te pulso más pon más, si te pulso menos 686 00:33:55,640 --> 00:33:58,559 pon menos, claro, ¿cómo puedo saber yo 687 00:33:58,559 --> 00:34:00,519 quién me ha pulsado para ponerlo en el if? 688 00:34:01,099 --> 00:34:03,900 no tengo ni idea, bueno pues puedo saberlo 689 00:34:03,900 --> 00:34:07,900 porque los métodos de controlador pueden recibir 690 00:34:07,900 --> 00:34:09,400 si yo quiero y si me da la gana 691 00:34:09,400 --> 00:34:12,260 un objeto de tipo action event 692 00:34:12,260 --> 00:34:21,070 de JavaFX, cuidado, recordad que os ofrece siempre las dos 693 00:34:21,070 --> 00:34:23,170 no importéis la que no es 694 00:34:23,170 --> 00:34:26,449 y este objeto diréis vosotros 695 00:34:26,449 --> 00:34:28,610 y este objeto quien lo genera, quien lo aparece 696 00:34:28,610 --> 00:34:31,949 recordad que a este método no lo llamáis vosotros por código 697 00:34:31,949 --> 00:34:34,610 a este método lo llama automáticamente 698 00:34:34,610 --> 00:34:37,989 la librería de JavaFX cuando un humano 699 00:34:37,989 --> 00:34:40,090 o una máquina hace pum 700 00:34:40,090 --> 00:34:43,309 entonces las librerías de JavaFX 701 00:34:43,309 --> 00:34:46,090 cuando detectan que se ha pulsado el botón 702 00:34:46,090 --> 00:34:49,250 construyen ellas un objeto Action Event 703 00:34:49,250 --> 00:34:53,409 con toda la información del control que ha sido accionado 704 00:34:53,409 --> 00:34:55,090 lo construyen ellas 705 00:34:55,090 --> 00:34:57,489 ellas van al método de evento 706 00:34:57,489 --> 00:34:59,070 que es este 707 00:34:59,070 --> 00:35:00,849 y le pasan ese objeto 708 00:35:00,849 --> 00:35:02,929 luego ese objeto 709 00:35:02,929 --> 00:35:05,550 lo construye automáticamente JavaFX 710 00:35:05,550 --> 00:35:07,670 cuando detecta que se ha accionado un control 711 00:35:07,670 --> 00:35:11,110 lo construye empaquetando dentro mucha información 712 00:35:11,110 --> 00:35:14,510 relacionada con el control que ha recibido la acción 713 00:35:14,510 --> 00:35:17,389 y se lo pasa a este método 714 00:35:17,389 --> 00:35:19,409 botón operación para que se ejecute 715 00:35:19,409 --> 00:35:23,550 bueno, pues entonces yo puedo, si yo habilito 716 00:35:23,550 --> 00:35:26,269 la recepción de ese objeto, que no es obligatorio 717 00:35:26,269 --> 00:35:29,329 puedo no habilitarla, aquí por ejemplo no he habilitado 718 00:35:29,329 --> 00:35:32,130 la recepción de ese objeto, lo va a crear igual 719 00:35:32,130 --> 00:35:35,349 la interfaz, pero cuando llame al método 720 00:35:35,349 --> 00:35:37,949 no se lo va a pasar, pero aquí si lo he habilitado 721 00:35:37,949 --> 00:35:40,670 entonces cuando java.fx cree ese objeto 722 00:35:40,670 --> 00:35:42,309 como resultado de haber hecho el click 723 00:35:42,309 --> 00:35:44,750 va a llamar al método y además le va a pasar 724 00:35:44,750 --> 00:35:46,949 el objeto, bueno pues de este objeto 725 00:35:46,949 --> 00:35:48,349 nosotros podemos sacar mucha información 726 00:35:48,349 --> 00:35:50,989 si uno hace . aquí tiene para aburrir 727 00:35:50,989 --> 00:35:52,769 entre otras 728 00:35:52,769 --> 00:35:54,210 cosas tiene 729 00:35:54,210 --> 00:35:56,869 getSource y getSource 730 00:35:56,869 --> 00:35:58,849 te dice quien generó 731 00:35:58,849 --> 00:35:59,289 el evento 732 00:35:59,289 --> 00:36:02,230 entonces yo aquí puedo hacer 733 00:36:02,230 --> 00:36:06,360 oye, si 734 00:36:06,360 --> 00:36:10,780 e.getSource 735 00:36:10,780 --> 00:36:12,239 podría poner 736 00:36:12,239 --> 00:36:14,559 es igual 737 00:36:14,559 --> 00:36:17,159 al botón suma 738 00:36:17,159 --> 00:36:18,780 tengo un pequeño problema 739 00:36:18,780 --> 00:36:21,219 que no le he dado referencia al botón suma 740 00:36:21,219 --> 00:36:22,659 porque hasta ahora no lo necesitaba 741 00:36:22,659 --> 00:36:25,780 bueno, podría solucionarlo 742 00:36:25,780 --> 00:36:27,039 y poner aquí 743 00:36:27,039 --> 00:36:29,380 el botón suma fxml 744 00:36:29,380 --> 00:36:31,539 con un nombrecito y habilitarlo aquí 745 00:36:31,539 --> 00:36:33,260 el botón suma en fxid 746 00:36:33,260 --> 00:36:35,239 darle un nombrecito 747 00:36:35,239 --> 00:36:37,039 aquí en encode 748 00:36:37,039 --> 00:36:38,960 vale 749 00:36:38,960 --> 00:36:40,340 podría hacer eso 750 00:36:40,340 --> 00:36:43,300 pero ni siquiera necesito meter tanta 751 00:36:43,300 --> 00:36:44,780 morraya, porque 752 00:36:44,780 --> 00:36:47,559 puedo decir, oye, si el botón que me llamó 753 00:36:47,559 --> 00:36:49,599 voy a sacar de él, por ejemplo 754 00:36:49,599 --> 00:36:50,699 el texto que tiene puesto 755 00:36:50,699 --> 00:36:53,260 por ejemplo, e.getSource 756 00:36:53,260 --> 00:36:55,440 que estoy aquí, es el 757 00:36:55,440 --> 00:36:57,099 objeto que me ha llamado, es este 758 00:36:57,099 --> 00:36:59,139 de este objeto a su vez 759 00:36:59,139 --> 00:37:01,019 yo puedo sacar un montón de cosas 760 00:37:01,019 --> 00:37:02,559 yo sé que es un botón 761 00:37:02,559 --> 00:37:05,380 porque solamente puedo llegar a operación 762 00:37:05,380 --> 00:37:07,400 con un botón, venga, pues le voy a 763 00:37:07,400 --> 00:37:08,539 hacer un casting a button 764 00:37:08,539 --> 00:37:14,480 Lo voy a guardar aparte fuera del if 765 00:37:14,480 --> 00:37:15,440 Para que se vea más claro 766 00:37:15,440 --> 00:37:18,119 Voy a sacar el botón que me llamó 767 00:37:18,119 --> 00:37:21,019 Botón, botón pulsado 768 00:37:21,019 --> 00:37:22,880 El botón pulsado 769 00:37:22,880 --> 00:37:23,579 Es este 770 00:37:23,579 --> 00:37:27,780 E.get source 771 00:37:27,780 --> 00:37:30,099 Este es el botón pulsado 772 00:37:30,099 --> 00:37:32,360 Tengo que hacer el casting 773 00:37:32,360 --> 00:37:34,460 A, bueno primero importarlo 774 00:37:34,460 --> 00:37:35,820 Y luego hacer el casting 775 00:37:35,820 --> 00:37:41,590 Este es un casting controlado, no hay que temerle 776 00:37:41,590 --> 00:37:43,909 Porque yo sé que a botón operación 777 00:37:43,909 --> 00:37:45,250 solo voy a llegar 778 00:37:45,250 --> 00:37:47,530 si he pulsado este o este, solo 779 00:37:47,530 --> 00:37:49,710 porque son los únicos controles que tienen puesto aquí 780 00:37:49,710 --> 00:37:50,929 botón operación, los únicos 781 00:37:50,929 --> 00:37:54,030 entonces este es un casting necesario, imprescindible 782 00:37:54,030 --> 00:37:55,849 pero controlado 783 00:37:55,849 --> 00:37:57,610 vale, es el botón pulsado 784 00:37:57,610 --> 00:38:00,070 y ahora, yo ahora ya podría 785 00:38:00,070 --> 00:38:02,369 hacer, if botón pulsado 786 00:38:02,369 --> 00:38:07,960 equals 787 00:38:07,960 --> 00:38:11,800 el botón suma 788 00:38:11,800 --> 00:38:13,440 repito, pero 789 00:38:13,440 --> 00:38:15,420 claro, tendría que tener yo botón 790 00:38:15,420 --> 00:38:17,320 suma, habilitado 791 00:38:17,320 --> 00:38:18,860 como referencia aquí arriba 792 00:38:18,860 --> 00:38:21,199 tendría que tenerlo habilitado como referencia 793 00:38:21,199 --> 00:38:23,340 aquí arriba, no pasa nada, lo puedo habilitar 794 00:38:23,340 --> 00:38:25,199 como referencia aquí arriba, igual que habilite 795 00:38:25,199 --> 00:38:27,179 el text fill, igual, lo puedo 796 00:38:27,179 --> 00:38:29,260 habilitar y entonces no se 797 00:38:29,260 --> 00:38:31,420 me olvida aquí ponerle 798 00:38:31,420 --> 00:38:33,219 su fxid 799 00:38:33,219 --> 00:38:33,599 aquí 800 00:38:33,599 --> 00:38:36,840 pero ni siquiera me hace falta 801 00:38:36,840 --> 00:38:38,820 ni siquiera me hace falta pringarme tanto 802 00:38:38,820 --> 00:38:40,159 digo, oye 803 00:38:40,159 --> 00:38:43,179 si el botón que has pulsado 804 00:38:43,179 --> 00:38:45,219 el texto que 805 00:38:45,219 --> 00:38:47,099 tiene encima, porque el botón tiene aquí 806 00:38:47,099 --> 00:38:49,159 un montón de métodos para sacar cosas sobre él 807 00:38:49,159 --> 00:38:50,860 pues por ejemplo 808 00:38:50,860 --> 00:38:52,039 tiene un gettest 809 00:38:52,039 --> 00:38:54,900 tiene un gettest que te saca el texto que tiene 810 00:38:54,900 --> 00:38:57,019 pues si el texto que tiene encima 811 00:38:57,019 --> 00:38:59,079 resulta que es 812 00:38:59,079 --> 00:39:00,679 igual a más 813 00:39:00,679 --> 00:39:03,019 ala 814 00:39:03,019 --> 00:39:04,260 pues ya tienes lo que queríamos 815 00:39:04,260 --> 00:39:09,420 que es igual a más, pues ya está 816 00:39:09,420 --> 00:39:11,039 operación entonces 817 00:39:11,039 --> 00:39:12,260 igual a más 818 00:39:12,260 --> 00:39:18,059 y si no, operación 819 00:39:18,059 --> 00:39:19,599 igual a menos, tiene que ser el otro 820 00:39:19,599 --> 00:39:21,340 porque solo hay dos que respondan con eso 821 00:39:21,340 --> 00:39:31,489 el, a ver, botón 822 00:39:31,489 --> 00:39:33,510 hasta aquí 823 00:39:33,510 --> 00:39:35,070 a ver, entiendes 824 00:39:35,070 --> 00:39:37,389 que este objeto, esta referencia 825 00:39:37,389 --> 00:39:39,369 es una referencia directamente 826 00:39:39,369 --> 00:39:40,710 al botón que ha sido pulsado 827 00:39:40,710 --> 00:39:42,570 o sea, esta línea sí, ¿no? 828 00:39:43,289 --> 00:39:45,329 vale, pues ese objeto botón es un objeto 829 00:39:45,329 --> 00:39:47,650 que tiene propiedades, muchas cosas 830 00:39:47,650 --> 00:39:49,630 entre ellas, una de las 831 00:39:49,630 --> 00:39:51,429 propiedades que caracterizan a botón 832 00:39:51,429 --> 00:39:53,289 es el texto que tiene encima 833 00:39:53,289 --> 00:39:55,590 que lo puedes sacar con el método 834 00:39:55,590 --> 00:39:56,150 getTest 835 00:39:56,150 --> 00:39:58,230 entonces tú si del objeto 836 00:39:58,230 --> 00:40:00,210 button, claro, esa clase button tú no la has 837 00:40:00,210 --> 00:40:02,250 hecho, entonces tú no sabes que tiene dentro 838 00:40:02,250 --> 00:40:04,170 pero si tú buceas dentro del objeto 839 00:40:04,170 --> 00:40:05,849 button, ves que tiene un montón de cosas 840 00:40:05,849 --> 00:40:08,429 entre ellas un gettest que es justo 841 00:40:08,429 --> 00:40:09,769 el texto que tiene encima post 842 00:40:09,769 --> 00:40:11,610 claro 843 00:40:11,610 --> 00:40:14,190 entonces si el botón pulsado tiene un más 844 00:40:14,190 --> 00:40:16,329 encima, el texto 845 00:40:16,329 --> 00:40:17,469 que tiene encima es este 846 00:40:17,469 --> 00:40:19,630 de hecho 847 00:40:19,630 --> 00:40:21,429 es que no nos hace falta 848 00:40:21,429 --> 00:40:24,309 ni el if, podemos hacer 849 00:40:24,309 --> 00:40:26,570 op igual a botón pulsado 850 00:40:26,570 --> 00:40:28,429 punto get test, y ya está 851 00:40:28,429 --> 00:40:30,289 tal y como lo hemos hecho, incluso 852 00:40:30,289 --> 00:40:32,190 nos armaríamos, vale 853 00:40:32,190 --> 00:40:34,429 pero en cualquier caso lo que me importa a mi 854 00:40:34,429 --> 00:40:36,429 de todo esto es este objeto 855 00:40:36,429 --> 00:40:38,170 y es que 856 00:40:38,170 --> 00:40:40,429 el método que responde 857 00:40:40,969 --> 00:40:42,269 al evento 858 00:40:42,269 --> 00:40:43,969 a la acción sobre la interfaz 859 00:40:43,969 --> 00:40:46,309 ese método puede opcionalmente 860 00:40:46,309 --> 00:40:48,449 si yo lo habilito, recibir 861 00:40:48,449 --> 00:40:50,670 un objeto con mucha información 862 00:40:50,670 --> 00:40:52,690 de quien ha recibido 863 00:40:52,690 --> 00:40:53,309 esa acción 864 00:40:53,309 --> 00:40:56,070 ¿vale? y ese objeto 865 00:40:56,070 --> 00:40:58,170 con toda esa información de quien ha recibido 866 00:40:58,170 --> 00:40:59,349 esa acción es este objeto E 867 00:40:59,349 --> 00:41:02,150 y ese objeto E seguramente en muchas 868 00:41:02,150 --> 00:41:04,210 situaciones me va a ser necesario 869 00:41:04,210 --> 00:41:05,030 a mí usarlo aquí 870 00:41:05,030 --> 00:41:07,750 en este caso me ha sido necesario 871 00:41:07,750 --> 00:41:10,130 para juntar en un único 872 00:41:10,130 --> 00:41:12,409 método las respuestas 873 00:41:12,409 --> 00:41:14,190 a los dos botones y así no he tenido que 874 00:41:14,190 --> 00:41:15,429 hacer un método por separado 875 00:41:15,429 --> 00:41:21,230 ¿vale? entonces el ActionEvent 876 00:41:21,230 --> 00:41:23,530 es el objeto que se genera 877 00:41:23,530 --> 00:41:25,309 en los métodos 878 00:41:25,309 --> 00:41:27,210 que onAction, que son los que 879 00:41:27,210 --> 00:41:28,329 estamos usando hasta ahora 880 00:41:28,329 --> 00:41:31,070 los métodos onAction son los que 881 00:41:31,070 --> 00:41:33,170 se ejecutan cuando se da 882 00:41:33,170 --> 00:41:34,489 la acción por defecto 883 00:41:34,489 --> 00:41:37,070 la de por defecto de un botón es 884 00:41:37,070 --> 00:41:39,269 pulsar, la de por defecto de un 885 00:41:39,269 --> 00:41:41,090 combo box es 886 00:41:41,090 --> 00:41:43,210 pulsar, ya lo hemos comprobado, la de por defecto 887 00:41:43,210 --> 00:41:45,070 de un text field sería 888 00:41:45,070 --> 00:41:46,889 darle al enter, sería el onAction 889 00:41:46,889 --> 00:41:47,809 también puede saltar algo 890 00:41:47,809 --> 00:41:50,829 pero hay controles que no tienen onAction 891 00:41:50,829 --> 00:41:52,170 no tienen acción por defecto 892 00:41:52,170 --> 00:41:55,050 o podemos querer capturar en un control 893 00:41:55,050 --> 00:41:57,489 otros eventos relacionados 894 00:41:57,489 --> 00:41:59,690 con ratón, con teclado 895 00:41:59,690 --> 00:42:01,090 entonces no sería el onAction 896 00:42:01,090 --> 00:42:03,309 sería el onKeyPrest 897 00:42:03,309 --> 00:42:05,409 onMouseDrag 898 00:42:05,409 --> 00:42:07,170 un montón de métodos que hay 899 00:42:07,170 --> 00:42:09,210 que el Steam Builder me ayuda porque me los muestra a todos 900 00:42:09,210 --> 00:42:11,289 si yo capturo un evento 901 00:42:11,289 --> 00:42:13,690 del tipo onKeyPrest, onKey no sé qué 902 00:42:13,690 --> 00:42:15,550 este sería key event 903 00:42:15,550 --> 00:42:16,590 no sería acción event 904 00:42:16,590 --> 00:42:19,349 y si yo capturo 905 00:42:19,349 --> 00:42:20,389 un evento del tipo 906 00:42:20,389 --> 00:42:23,409 onMouseDrag, onMouseDroped 907 00:42:23,409 --> 00:42:25,530 onMouse no sé qué, este sería mouse 908 00:42:25,530 --> 00:42:25,909 event 909 00:42:25,909 --> 00:42:29,110 y si yo capturo un evento del tipo 910 00:42:29,110 --> 00:42:31,409 onDrag no sé qué, onDrag no sé cuánto 911 00:42:31,409 --> 00:42:33,409 que también los hay, esto sería drag event 912 00:42:33,409 --> 00:42:34,630 ¿vale? 913 00:42:35,989 --> 00:42:37,449 pero como estamos capturando 914 00:42:37,449 --> 00:42:39,269 el onAction que es el por defecto 915 00:42:39,269 --> 00:42:41,409 pues es action event el que se genera 916 00:42:42,190 --> 00:42:42,449 ¿vale? 917 00:42:45,809 --> 00:42:47,230 entonces eso me permite 918 00:42:47,230 --> 00:42:48,730 en este caso 919 00:42:48,730 --> 00:42:51,130 agrupar varios métodos en uno 920 00:42:51,130 --> 00:42:53,309 o me permite cosas mucho 921 00:42:53,309 --> 00:42:55,170 más interesante. Es como si tengo 922 00:42:55,170 --> 00:42:56,789 varias ventanas, 923 00:42:57,489 --> 00:42:58,230 varios stages, 924 00:42:59,110 --> 00:43:01,150 porque quiero 925 00:43:01,150 --> 00:43:03,210 cerrar uno y abrir otro, quiero cerrar 926 00:43:03,210 --> 00:43:04,869 una escena y abrir otra, pues 927 00:43:04,869 --> 00:43:07,130 ese me permite navegando hacia 928 00:43:07,130 --> 00:43:09,250 arriba, luego lo vemos, acceder a la ventana en la que 929 00:43:09,250 --> 00:43:11,210 estoy, en la que ese control está. 930 00:43:12,250 --> 00:43:12,969 Muchas cosas. 931 00:43:14,309 --> 00:43:14,510 ¿Vale? 932 00:43:14,929 --> 00:43:17,469 Vamos a probar si funciona antes de 933 00:43:17,469 --> 00:43:17,929 parar. 934 00:43:28,659 --> 00:43:29,800 Vale, pues 935 00:43:29,800 --> 00:43:31,300 12 más 936 00:43:31,300 --> 00:43:34,519 12 igual a 24 937 00:43:34,519 --> 00:43:36,679 la suma va 938 00:43:36,679 --> 00:43:38,440 y 23 menos 939 00:43:38,440 --> 00:43:41,139 2 igual a 21 940 00:43:41,139 --> 00:43:42,260 vale 941 00:43:42,260 --> 00:43:50,210 venga, vamos a parar aquí unos minutejos