1 00:00:00,000 --> 00:00:07,560 Vale, bueno, pues aquí ya sabemos que por cada una de estas subcadenas, 2 00:00:07,560 --> 00:00:12,760 por cada una de ellas, habrá que instanciar un nuevo objeto app, 3 00:00:12,760 --> 00:00:17,040 un nuevo objeto app, para meterlo en ese array store. 4 00:00:17,040 --> 00:00:20,560 Entonces ahora ese for, ese for que recorre esas subcadenas, 5 00:00:20,560 --> 00:00:27,760 es el que tendrá que en cada, que en cada iteración sacar los 6 00:00:27,760 --> 00:00:32,320 valores de la app, instanciar con ellos un objeto app y meterlo 7 00:00:32,320 --> 00:00:34,320 en el array, ¿verdad? 8 00:00:34,320 --> 00:00:39,040 Entonces, ahora aquí ya viene un for, aquí, 9 00:00:39,040 --> 00:00:45,920 viene un for para sacar cada una de las app a través de cada una 10 00:00:45,920 --> 00:00:47,200 de las subcadenas estas. 11 00:00:47,200 --> 00:01:00,920 Bueno, este es el for que recorre cada una de las subcadenas 12 00:01:00,920 --> 00:01:01,760 que va a recorrer. 13 00:01:01,760 --> 00:01:06,360 Para la primera iteración va a tener esto, 14 00:01:06,360 --> 00:01:09,320 para la segunda iteración va a tener esto, 15 00:01:09,320 --> 00:01:13,360 para la tercera iteración va a tener esto, ¿vale? 16 00:01:13,360 --> 00:01:18,280 Entonces, en cada iteración tenemos que sacar los valores, 17 00:01:18,280 --> 00:01:21,160 que de nuevo habrá que hacer otro split, 18 00:01:21,160 --> 00:01:25,160 de nuevo habrá que hacer otro splitting para sacar los valores 19 00:01:25,160 --> 00:01:29,480 que están alrededor del patrón de separación coma, 20 00:01:29,480 --> 00:01:31,200 de nuevo habrá que hacer otro split. 21 00:01:31,200 --> 00:01:38,720 Bueno, pues nada, es lo que hacemos aquí. 22 00:01:38,760 --> 00:01:46,080 Para cada apps.y, pues vamos a coger los datos de la app. 23 00:01:46,080 --> 00:01:51,920 Los datos de la app se guardarán aquí en su array de datos app y 24 00:01:51,920 --> 00:01:57,840 los datos de la app vendrán como consecuencia de hacer un split 25 00:01:57,840 --> 00:02:05,480 alrededor de esto, ¿vale? 26 00:02:05,480 --> 00:02:13,440 Apps.y, ¿vale? 27 00:02:13,440 --> 00:02:16,040 O sea, los datos de la app, de cada app, 28 00:02:16,040 --> 00:02:23,240 vendrán de hacer un split para cada subcadena, ¿no? 29 00:02:23,240 --> 00:02:25,080 Apps de cero, por ejemplo, será este. 30 00:02:25,080 --> 00:02:26,720 Este es apps de cero. 31 00:02:26,720 --> 00:02:29,480 Como consecuencia de hacer un split alrededor de la coma, 32 00:02:29,480 --> 00:02:35,960 pues sacar estos 3, el nombre, la versión y el tamaño. 33 00:02:35,960 --> 00:02:38,680 Bueno, pues ya está, ya lo tengo los 3. 34 00:02:38,680 --> 00:02:44,440 El nombre será datos app de cero. 35 00:02:44,440 --> 00:02:47,920 La versión será datos app de 1. 36 00:02:47,920 --> 00:02:51,560 Y el tamaño será datos app de 2. 37 00:02:51,560 --> 00:02:53,800 Esos serán los 3 parámetros que necesito para instanciar el 38 00:02:53,800 --> 00:02:55,480 objeto app. 39 00:02:55,480 --> 00:03:01,360 Entonces, estoy utilizando tantas veces los mismos nombres, 40 00:03:01,360 --> 00:03:07,640 pero, vale, pues ahora ya lo puedo instanciar y tendrá los 41 00:03:07,640 --> 00:03:09,000 3 valores. 42 00:03:09,000 --> 00:03:11,760 Porque el constructor de app que está aquí, 43 00:03:11,760 --> 00:03:18,960 el constructor de app necesita nombre, versión y tamaño. 44 00:03:18,960 --> 00:03:22,760 Pues los tengo aquí, datos app de cero, nombre, 45 00:03:22,760 --> 00:03:26,640 datos app de 1, versión y datos app de 2, tamaño. 46 00:03:26,640 --> 00:03:28,880 Tendría que cambiar el tipo de dato, ¿vale? 47 00:03:28,880 --> 00:03:37,440 Entonces, el nombre, está claro, será datos app de cero. 48 00:03:37,440 --> 00:03:41,040 Ese será el nombre de la aplicación, está claro. 49 00:03:41,040 --> 00:03:47,920 La versión, la versión será datos app de 1. 50 00:03:47,920 --> 00:03:49,880 Esa será la versión. 51 00:03:49,880 --> 00:03:54,480 Pero, vale, ahora corregimos el, vamos a ponerlo todo y ahora 52 00:03:54,480 --> 00:03:55,880 ya cambio, me lo voy a cambiar. 53 00:03:55,880 --> 00:04:07,400 Y el tamaño será datos app de 2, ¿vale? 54 00:04:07,400 --> 00:04:10,240 Lógicamente me sale en rojo porque, claro, 55 00:04:10,240 --> 00:04:13,720 yo aquí tengo la versión guardada en string. 56 00:04:13,720 --> 00:04:16,920 Y el tamaño guardado en string, aunque sea 1. 57 00:04:16,920 --> 00:04:18,880 Tengo el 1 guardado en string. 58 00:04:18,880 --> 00:04:21,720 Y esto aunque sea 7, tengo el 7 guardado en string. 59 00:04:21,720 --> 00:04:25,000 Y el constructor no lo quiere en string, lógicamente, 60 00:04:25,000 --> 00:04:30,280 porque el constructor lo necesita en entero y en double para 61 00:04:30,280 --> 00:04:33,720 pasárselo la variable entera y double, ¿vale? 62 00:04:33,720 --> 00:04:37,960 Pero entonces aquí es cuando recordamos que cuando teníamos 63 00:04:37,960 --> 00:04:43,040 un número entero o double o float en string y queríamos 64 00:04:43,040 --> 00:04:47,520 pasarlo a su almacenamiento en tipo int, 65 00:04:47,520 --> 00:04:49,960 teníamos el integer parse int o el double parse double, 66 00:04:49,960 --> 00:04:50,440 etcétera. 67 00:04:50,440 --> 00:04:53,600 Bueno, pues, es el momento de usarlo. 68 00:04:53,600 --> 00:04:56,480 Lo pongo aquí, aunque en parte el constructor por la mitad, 69 00:04:56,480 --> 00:04:58,240 lo pongo aquí abajo para que se vea mejor. 70 00:04:58,240 --> 00:05:16,000 Ai, control, z, tam, ai, parse, dat, integer, parse int, 71 00:05:16,000 --> 00:05:19,160 datos app de 1, vale. 72 00:05:19,160 --> 00:05:22,120 El primer parámetro ya está pasado en entero. 73 00:05:22,120 --> 00:05:30,680 Y me falta el siguiente, que será el double punto parse 74 00:05:30,680 --> 00:05:36,080 double, ahí, insert, pam, pam. 75 00:05:39,200 --> 00:05:42,680 Ala, ya está, perfecto. 76 00:05:42,680 --> 00:05:46,080 Corto aquí abajo también, ahí. 77 00:05:46,080 --> 00:05:48,920 Ala, ya tengo la aplicación con los 3 parámetros, ¿vale? 78 00:05:48,920 --> 00:05:52,720 Recordad que siempre tenéis que tenerlo todo ahí en mente. 79 00:05:52,720 --> 00:05:55,720 Uno no se tiene que olvidar de esto que hemos usado a veces, 80 00:05:55,720 --> 00:05:58,480 al principio, sobre todo, cuando hacíamos programas con números 81 00:05:58,480 --> 00:06:02,320 string, ¿vale? 82 00:06:02,320 --> 00:06:10,520 Bueno, pues, ya tenemos una aplicación creada a partir de 83 00:06:10,520 --> 00:06:14,040 la subcadena apps de i, ¿vale? 84 00:06:14,040 --> 00:06:15,320 Tenemos una aplicación creada. 85 00:06:15,320 --> 00:06:17,580 Y eso nos falta el último paso, que es esa aplicación, 86 00:06:17,580 --> 00:06:20,700 cerrar la raya store, incorporar la raya. 87 00:06:20,700 --> 00:06:21,780 Es lo único que nos falta. 88 00:06:25,180 --> 00:06:26,900 Tengo ahí algo rojo porque, ah, claro, 89 00:06:26,900 --> 00:06:30,420 porque datos app falta ahí, lo he borrado en tanto escribir. 90 00:06:34,620 --> 00:06:35,660 Datos app. 91 00:06:35,660 --> 00:06:38,900 Y ya está, ¿no? 92 00:06:38,900 --> 00:06:41,060 Ahora, vale, estaba mal escrito, ¿vale? 93 00:06:41,060 --> 00:06:53,340 Entonces, recopilando, primero, hemos hecho primero el split 94 00:06:53,340 --> 00:06:55,420 alrededor del punto y coma. 95 00:06:55,420 --> 00:07:00,340 Y nos ha salido todo esto, todo esto, todo esto. 96 00:07:00,340 --> 00:07:02,220 Luego hemos ido uno por uno. 97 00:07:02,220 --> 00:07:07,300 Y para cada uno hemos hecho el split alrededor de la coma. 98 00:07:07,300 --> 00:07:10,660 Y hemos llegado aquí, a datos app. 99 00:07:10,660 --> 00:07:13,780 Y ahora ya, datos app de 0 será el nombre. 100 00:07:13,780 --> 00:07:17,220 Datos app de 1 será la versión, pero la tengo que convertir al 101 00:07:17,220 --> 00:07:19,660 almacenamiento entero porque estaba en string. 102 00:07:19,660 --> 00:07:22,380 Y datos app de 2 será el tamaño, que lo tengo que convertir al 103 00:07:22,380 --> 00:07:24,340 almacenamiento de Abel porque estaba en string. 104 00:07:24,340 --> 00:07:25,220 Ya está. 105 00:07:25,220 --> 00:07:30,660 Y ahora ya tengo que meter app en el array, 106 00:07:30,660 --> 00:07:32,060 que es lo que me faltaría aquí. 107 00:07:34,980 --> 00:07:35,460 ¿Vale? 108 00:07:35,460 --> 00:07:37,940 Entonces, como es un array, de nuevo, 109 00:07:37,940 --> 00:07:39,980 es un rollo incorporar un array, 110 00:07:39,980 --> 00:07:41,860 pero le tengo que hacerlo de aumentar tamaño. 111 00:07:41,860 --> 00:07:44,620 Entonces, ponerlo aquí dentro del constructor, ese código. 112 00:07:44,620 --> 00:07:47,100 Y aquí ya me queda un constructor tan feo. 113 00:07:47,100 --> 00:07:49,380 Y aquí es cuando decimos, Jolín, 114 00:07:49,380 --> 00:07:57,740 si yo tuviera un método en algún sitio que me lo hiciera. 115 00:07:57,740 --> 00:08:01,860 Y hasta me atrevo a soñar y le pongo nombre y digo, venga, 116 00:08:01,860 --> 00:08:06,060 Jolín, si lo pudiera yo tener un método así, 117 00:08:06,100 --> 00:08:11,020 que yo le paso la aplicación esta que acabo de hacer y este 118 00:08:11,020 --> 00:08:14,100 método maravilloso que se llama incorporar app store, 119 00:08:14,100 --> 00:08:18,220 cogiera esta app que yo le paso, que acabo de instanciar y la 120 00:08:18,220 --> 00:08:21,500 pasar aquí, pues, qué bien. 121 00:08:21,500 --> 00:08:23,060 Madre mía, qué maravilla. 122 00:08:23,060 --> 00:08:25,620 Pues, mi constructor habría terminado. 123 00:08:25,620 --> 00:08:27,380 Solo tendría que llamar a este método. 124 00:08:30,460 --> 00:08:32,220 Vale, entonces, primero diría, Jolín, 125 00:08:32,220 --> 00:08:34,700 pero ¿cómo estás poniendo un método suelto? 126 00:08:34,700 --> 00:08:37,220 Un método que lo llame algún objeto, ¿no? 127 00:08:37,220 --> 00:08:40,260 Venga, que lo llame este mismo en el que estoy. 128 00:08:40,260 --> 00:08:43,380 Que lo llame este mismo. 129 00:08:43,380 --> 00:08:47,980 Ojalá tuviéramos un método en esta misma clase con lo cual que 130 00:08:47,980 --> 00:08:51,220 lo llamara este mismo objeto que fuera capaz de hacerme esto. 131 00:08:51,220 --> 00:08:52,700 Ojalá. 132 00:08:52,700 --> 00:08:54,460 Vale, pues, vamos a hacerlo. 133 00:08:54,460 --> 00:08:55,180 Vamos a hacerlo. 134 00:08:57,820 --> 00:09:03,020 Pinchamos aquí en el rojito y te dice, venga, te lo creo. 135 00:09:03,020 --> 00:09:04,660 Aquí lo tienes. 136 00:09:04,660 --> 00:09:06,740 Pero, claro, el código ya lo haces tú. 137 00:09:06,740 --> 00:09:09,100 El código ya lo haces tú, ¿vale? 138 00:09:09,100 --> 00:09:11,300 Entonces, es un método más de la clase. 139 00:09:11,300 --> 00:09:13,820 ¿Qué he puesto yo como método auxiliar? 140 00:09:13,820 --> 00:09:18,020 Solamente como método auxiliar para ahorrarme escribir todo 141 00:09:18,020 --> 00:09:20,380 eso de meter el array aquí porque queda muy feo y muy 142 00:09:20,380 --> 00:09:21,260 largo. 143 00:09:21,260 --> 00:09:22,140 Solamente. 144 00:09:22,140 --> 00:09:24,580 Entonces, como me he hecho yo aquí un método auxiliar para 145 00:09:24,580 --> 00:09:28,620 ser llamado solo desde aquí, lo pongo en privado. 146 00:09:28,620 --> 00:09:31,260 Y eso ya se lo ha imaginado el eclipse porque algunas cosas, 147 00:09:31,260 --> 00:09:35,300 solo algunas, muy pocas, pues, sí que acierta. 148 00:09:35,300 --> 00:09:38,900 Y es este método no está para llamarse desde fuera. 149 00:09:38,900 --> 00:09:42,180 Este método está solo para ser llamado aquí desde este 150 00:09:42,180 --> 00:09:43,820 constructor en plan método auxiliar. 151 00:09:43,820 --> 00:09:45,980 Oye, voy a sacar esto aquí fuera para que no me quede tan 152 00:09:45,980 --> 00:09:46,460 largo. 153 00:09:46,460 --> 00:09:47,860 Lo saco aquí fuera. 154 00:09:47,860 --> 00:09:51,500 Entonces, yo a ese método le pongo un privado ahí enorme 155 00:09:51,500 --> 00:09:55,540 porque este método solo va a ser llamado desde esta clase. 156 00:09:55,540 --> 00:09:57,780 Y eso es lo que significa al constructor privado, ¿no? 157 00:09:57,780 --> 00:09:59,820 Que solo puede ser llamado desde la misma clase. 158 00:09:59,940 --> 00:10:02,380 Pues, le pongo un privado porque solo puede ser llamado desde 159 00:10:02,380 --> 00:10:04,460 esta clase. 160 00:10:04,460 --> 00:10:05,580 En concreto, ¿desde dónde? 161 00:10:05,580 --> 00:10:07,500 Desde aquí mismo. 162 00:10:07,500 --> 00:10:10,180 Y es llamado desde this, claro, es llamado desde this porque el 163 00:10:10,180 --> 00:10:12,980 método está en la misma clase. 164 00:10:12,980 --> 00:10:14,060 ¿Vale? 165 00:10:14,060 --> 00:10:17,340 Recordad que el this es opcional, 166 00:10:17,340 --> 00:10:22,340 es opcional cuando no hay confusión. 167 00:10:22,340 --> 00:10:25,060 Aquí solo hay un método que se llame así. 168 00:10:25,060 --> 00:10:27,460 No hay otra clase que tenga un método que se llame así. 169 00:10:27,460 --> 00:10:28,980 Entonces, el this no pasa nada. 170 00:10:29,020 --> 00:10:32,820 Si lo dejáis, es una buena costumbre ir arrastrando los 171 00:10:32,820 --> 00:10:35,420 this, dejan las cosas más claras. 172 00:10:35,420 --> 00:10:39,140 Pero si uno lo quitara, la máquina virtual, 173 00:10:39,140 --> 00:10:43,460 él diría, ah, que no, que ningún objeto está llamando a este. 174 00:10:43,460 --> 00:10:46,180 Entonces, yo asumo que lo llama el this. 175 00:10:46,180 --> 00:10:47,540 Yo asumo que lo llama el this. 176 00:10:47,540 --> 00:10:48,020 ¿Vale? 177 00:10:48,020 --> 00:10:50,900 Entonces, lo podéis quitar o no quitar porque si no hay, 178 00:10:50,900 --> 00:10:55,060 por defecto es el this quien llama este método, por defecto. 179 00:10:55,060 --> 00:10:55,560 ¿Vale? 180 00:10:55,560 --> 00:11:01,680 Entonces, ahora ya este método de aquí tiene que añadir el 181 00:11:01,680 --> 00:11:09,320 objeto app al array store de arriba. 182 00:11:09,320 --> 00:11:10,120 Ya está. 183 00:11:10,120 --> 00:11:13,320 Y esto ya sé que lo escribimos todo seguidito porque es hacerlo 184 00:11:13,320 --> 00:11:16,160 de siempre y dentro de poco, cuando ya usamos colecciones, 185 00:11:16,160 --> 00:11:18,600 pues no habrá ni que escribirlo. 186 00:11:18,600 --> 00:11:21,480 Porque tendremos una llamada que hará esto mismo que estamos 187 00:11:21,480 --> 00:11:23,720 escribiendo nosotros, esto mismo. 188 00:11:23,720 --> 00:11:25,560 Y esto era lo de siempre. 189 00:11:25,560 --> 00:11:29,240 Si store es igual a nul, que esto me lo ahorraría si lo 190 00:11:29,240 --> 00:11:33,480 inicializara antes con un tamaño cero, pero, bueno, no. 191 00:11:33,480 --> 00:11:36,080 Y no me gusta mucho eso, por si acaso. 192 00:11:36,080 --> 00:11:39,040 Si store es igual a nul, ¿qué es la primera aplicación que 193 00:11:39,040 --> 00:11:39,520 metes? 194 00:11:39,520 --> 00:11:42,240 Como es la primera aplicación que metes, pues, entonces, 195 00:11:42,240 --> 00:11:51,000 créate un array de una única posición y pon en esa única 196 00:11:51,880 --> 00:11:56,920 posición la que me has pasado. 197 00:11:56,920 --> 00:11:59,840 Y ya está, sal del método, fuera. 198 00:11:59,840 --> 00:12:01,640 A la porra, no hagas nada más. 199 00:12:01,640 --> 00:12:02,680 Vale, lo de siempre. 200 00:12:02,680 --> 00:12:05,080 Y ahora, ¿qué store no es nul, que ya tiene cosas? 201 00:12:05,080 --> 00:12:07,200 Pues, hacemos un auxiliar con un tamaño más, 202 00:12:07,200 --> 00:12:09,960 copiamos y en la última posición llevamos el nuevo. 203 00:12:09,960 --> 00:12:11,840 Lo de siempre. 204 00:12:11,880 --> 00:12:15,120 Y esto era. 205 00:12:15,120 --> 00:12:22,600 Hacemos un nuevo array auxiliar de aplicaciones que tenga el 206 00:12:22,600 --> 00:12:24,840 mismo tamaño que el store más 1. 207 00:12:29,960 --> 00:12:35,720 Copiamos y pegamos el store en el auxiliar. 208 00:12:42,120 --> 00:12:50,000 Menor que store.length, incrementando i. 209 00:12:50,000 --> 00:13:02,120 Pues, hacemos esto de aux de i igual a store de i. 210 00:13:05,760 --> 00:13:11,400 Luego, ya en la última de las posiciones, que es aux de, 211 00:13:11,760 --> 00:13:14,720 aux.length menos 1. 212 00:13:14,720 --> 00:13:19,920 En la última, copiamos la nueva y sobreescribimos. 213 00:13:24,800 --> 00:13:27,520 Ah, pues, ya tenemos el método mágico. 214 00:13:27,520 --> 00:13:30,520 Ya tenemos el método mágico que recibe una aplicación y la 215 00:13:30,520 --> 00:13:33,440 incorpora al array store. 216 00:13:33,440 --> 00:13:36,440 Verifico si es nul, pues, crea uno nuevo y lo mete. 217 00:13:36,440 --> 00:13:37,760 ¿Que no es nul? 218 00:13:37,760 --> 00:13:41,880 Pues, crea uno de una posición más, copia, pega, 219 00:13:41,880 --> 00:13:44,160 añade el último y sobreescribe. 220 00:13:44,160 --> 00:13:45,800 La historia de siempre. 221 00:13:45,800 --> 00:13:50,200 Ahí está metidita en ese método y ya está. 222 00:13:50,200 --> 00:13:51,960 Y ya tengo mi constructor terminado. 223 00:13:57,480 --> 00:13:59,440 ¿Qué hace la aplicación? 224 00:13:59,440 --> 00:14:03,040 Después de romper el string en los cachos correspondientes y 225 00:14:03,040 --> 00:14:07,320 luego mete la aplicación al store. 226 00:14:07,360 --> 00:14:08,920 Y hemos usado un método auxiliar. 227 00:14:08,920 --> 00:14:11,520 Repito, porque si no, todo este código habría que haberlo 228 00:14:11,520 --> 00:14:13,080 metido aquí dentro. 229 00:14:13,080 --> 00:14:15,520 Y, hombre, queda un poco feo meter todo ese código dentro. 230 00:14:15,520 --> 00:14:19,000 Me hago el método auxiliar, lo llamo y ya está. 231 00:14:24,000 --> 00:14:24,760 ¿Cuál de ellos? 232 00:14:28,080 --> 00:14:31,960 Este es el mismo que lleváis haciendo meses. 233 00:14:31,960 --> 00:14:33,000 Vale. 234 00:14:33,000 --> 00:14:35,840 Bueno, he dicho que paramos aquí unos minutos.