1 00:00:00,000 --> 00:00:10,119 Bueno, pues esto sería lo primero parecido a una aplicación ya un poquito más grande, 2 00:00:10,119 --> 00:00:15,119 no solo un programa que hace una cosa ya, sino una aplicación para desarrollar 3 00:00:15,640 --> 00:00:20,679 toda una serie de funcionalidades sobre un modelo de datos, que en nuestro caso 4 00:00:20,679 --> 00:00:26,420 es para gestionar el qué, los clientes y pedidos, que es la solución, el ejemplo más sencillo. 5 00:00:26,420 --> 00:00:29,079 vale, pues entonces una aplicación 6 00:00:29,079 --> 00:00:30,980 yo tengo clientes 7 00:00:30,980 --> 00:00:32,719 que me piden cosas de mi almacén 8 00:00:32,719 --> 00:00:34,500 y vamos a gestionar 9 00:00:34,500 --> 00:00:36,859 esos pedidos y esos clientes que tengo 10 00:00:36,859 --> 00:00:38,640 para facilitarme tareas 11 00:00:38,640 --> 00:00:40,020 como emitir facturas 12 00:00:40,020 --> 00:00:42,740 comprobar de un cliente si ha pagado 13 00:00:42,740 --> 00:00:43,920 o no ha pagado, lo que fuera 14 00:00:43,920 --> 00:00:47,119 a partir de ahí puedo añadir ya un montón de funcionalidades 15 00:00:47,119 --> 00:00:48,539 venga, vamos a hacer 16 00:00:48,539 --> 00:00:50,299 esto que plantea aquí 17 00:00:50,299 --> 00:00:53,929 a ver que sacamos de aquí 18 00:00:53,929 --> 00:00:56,450 se supone que 19 00:00:56,450 --> 00:00:58,490 nos habríamos entrevistado con el cliente 20 00:00:58,490 --> 00:00:59,869 y él nos habría explicado 21 00:00:59,869 --> 00:01:02,390 lo que quiere conseguir 22 00:01:02,390 --> 00:01:04,209 con esa aplicación, pues yo quiero 23 00:01:04,209 --> 00:01:06,069 como tengo un montón de clientes así, pues quiero 24 00:01:06,069 --> 00:01:08,430 en los clientes poder ver su ficha cuando quiera 25 00:01:08,430 --> 00:01:10,650 quiero no sé cuánto, entonces después de esa entrevista 26 00:01:10,650 --> 00:01:12,150 de tomar notas de muchas cosas 27 00:01:12,150 --> 00:01:14,209 nosotros ya decidimos 28 00:01:14,209 --> 00:01:16,829 cuáles son las entidades necesarias 29 00:01:16,829 --> 00:01:18,329 ¿vale? 30 00:01:18,370 --> 00:01:20,269 en este caso ya han decidido 31 00:01:20,269 --> 00:01:22,569 por nosotros un cliente 32 00:01:22,569 --> 00:01:24,269 un pedido, una entidad 33 00:01:24,269 --> 00:01:26,689 pedido, porque hay que gestionar cosas con pedidos 34 00:01:26,689 --> 00:01:28,329 y una entidad 35 00:01:28,329 --> 00:01:29,549 cliente 36 00:01:29,549 --> 00:01:30,469 ¿vale? 37 00:01:31,650 --> 00:01:34,310 entonces, las entidades tienen datos 38 00:01:34,310 --> 00:01:36,510 dentro, son cosas complejas 39 00:01:36,510 --> 00:01:38,250 claro, porque si 40 00:01:38,250 --> 00:01:40,590 el tío me dice, yo tengo que gestionar 41 00:01:40,590 --> 00:01:41,650 mensajes 42 00:01:41,650 --> 00:01:44,329 vale, el mensaje es un string, eso no es una 43 00:01:44,329 --> 00:01:46,430 entidad que yo tenga que hacer, cuando necesito 44 00:01:46,430 --> 00:01:48,349 un mensaje, instancia un string y ya está 45 00:01:48,349 --> 00:01:50,430 pero el pedido, si es algo complejo 46 00:01:50,430 --> 00:01:52,530 pues tiene un montón de cosas dentro, y el cliente 47 00:01:52,530 --> 00:01:54,510 también tiene un montón de cosas dentro, entonces cada una 48 00:01:54,510 --> 00:01:56,409 de ellas es una entidad, como si fuera 49 00:01:56,409 --> 00:01:58,629 una tabla de la base de datos 50 00:01:58,629 --> 00:02:00,390 como si fuera una entidad de un modelo 51 00:02:00,390 --> 00:02:02,549 entidad relación, exactamente igual 52 00:02:02,549 --> 00:02:04,469 bueno 53 00:02:04,469 --> 00:02:06,329 pues después de haber hecho 54 00:02:06,329 --> 00:02:08,250 reuniones con el cliente y todo eso 55 00:02:08,250 --> 00:02:10,370 hemos llegado a la conclusión de que lo que 56 00:02:10,370 --> 00:02:12,590 nos interesa en los pedidos 57 00:02:12,590 --> 00:02:13,430 es solamente 58 00:02:13,430 --> 00:02:15,849 lo que se ha gastado 59 00:02:15,849 --> 00:02:18,569 de que va el pedido y el código 60 00:02:18,569 --> 00:02:19,210 único 61 00:02:19,210 --> 00:02:22,389 y en la clase cliente lo que nos 62 00:02:22,389 --> 00:02:24,030 interesa es el nombre y el NIF 63 00:02:24,030 --> 00:02:26,349 y todos los pedidos que tenga ese 64 00:02:26,349 --> 00:02:28,270 cliente, todos los que tenga, ¿vale? 65 00:02:28,289 --> 00:02:29,590 Solamente nos interesa eso. 66 00:02:31,050 --> 00:02:32,430 Pues entonces vamos a hacer esas dos 67 00:02:32,430 --> 00:02:32,889 clases. 68 00:02:34,689 --> 00:02:36,270 Entonces, aquí 69 00:02:36,270 --> 00:02:38,689 en un caso real, se haría 70 00:02:38,689 --> 00:02:40,330 un paquete modelo 71 00:02:40,330 --> 00:02:42,330 con el modelo de datos. 72 00:02:42,330 --> 00:02:44,169 Otro paquete, pues con la 73 00:02:44,169 --> 00:02:46,530 lógica o con 74 00:02:46,530 --> 00:02:48,449 funcionalidades lógicas o lo que sea. 75 00:02:48,669 --> 00:02:50,409 Ahora lo vamos a ir engordando. Otro con el 76 00:02:50,409 --> 00:02:51,870 main, ¿vale? Entonces, como 77 00:02:51,870 --> 00:02:55,090 yo lo tengo todo en un proyecto 78 00:02:55,090 --> 00:02:57,449 todo en un proyecto para luego subirlo más fácilmente 79 00:02:57,449 --> 00:02:58,250 a la aula virtual 80 00:02:58,250 --> 00:03:00,569 pues lo que voy a hacer va a ser 81 00:03:00,569 --> 00:03:03,189 paquete ejer22.model 82 00:03:03,189 --> 00:03:04,689 ejer22.no se que 83 00:03:04,689 --> 00:03:05,729 pero en un caso real 84 00:03:05,729 --> 00:03:09,189 esta aplicación sería un proyecto 85 00:03:09,189 --> 00:03:11,110 esa aplicación sería un proyecto 86 00:03:11,110 --> 00:03:12,370 y 87 00:03:12,370 --> 00:03:14,770 dentro de ese proyecto tendría 88 00:03:14,770 --> 00:03:17,030 un paquete por cada conjunto 89 00:03:17,030 --> 00:03:18,909 de clases que tienen una especie 90 00:03:18,909 --> 00:03:20,270 de significado común 91 00:03:20,270 --> 00:03:23,129 por ejemplo las entidades tienen como significado 92 00:03:23,129 --> 00:03:25,030 pues ser entidades que representan 93 00:03:25,030 --> 00:03:26,930 mi realidad, habrá otras 94 00:03:26,930 --> 00:03:28,830 clases que sean utilidades matemáticas 95 00:03:28,830 --> 00:03:30,909 pues en el paquete utilidades, lo que sea 96 00:03:30,909 --> 00:03:32,990 entonces como yo no tengo 97 00:03:32,990 --> 00:03:34,810 un único proyecto para mi clase 98 00:03:34,810 --> 00:03:36,090 pues lo voy a hacer en 99 00:03:36,090 --> 00:03:38,750 para que se vea que va en diferentes paquetes 100 00:03:38,750 --> 00:03:41,090 pues voy a hacer un paquete ger22.modelo 101 00:03:41,090 --> 00:03:43,090 ger22.no se que 102 00:03:43,090 --> 00:03:44,949 entonces 103 00:03:44,949 --> 00:03:46,370 me voy a crear 104 00:03:46,370 --> 00:03:48,930 un paquete para el modelo de esta 105 00:03:48,930 --> 00:03:49,550 aplicación 106 00:03:49,550 --> 00:03:53,370 y lo voy a llamar 107 00:03:53,370 --> 00:03:56,030 ejer22.model 108 00:03:56,030 --> 00:04:02,939 en el paquete ejer22.model 109 00:04:02,939 --> 00:04:04,699 este de aquí, ahora ya si hacemos 110 00:04:04,699 --> 00:04:06,180 las entidades 111 00:04:06,180 --> 00:04:08,400 que son cliente y pedido 112 00:04:08,400 --> 00:04:10,939 pues venga, empezamos por pedido 113 00:04:10,939 --> 00:04:16,120 las entidades 114 00:04:16,120 --> 00:04:17,579 es el modelo de datos 115 00:04:17,579 --> 00:04:19,500 ¿eh? 116 00:04:21,160 --> 00:04:21,480 ¿dónde? 117 00:04:22,980 --> 00:04:24,199 ya veremos 118 00:04:24,220 --> 00:04:28,000 en función del diseño 119 00:04:28,000 --> 00:04:29,639 de paquetes que hagamos de nuestra aplicación 120 00:04:29,639 --> 00:04:31,720 por ahora lo que sí que sabemos es que un paquete 121 00:04:31,720 --> 00:04:33,560 modelo con las entidades 122 00:04:33,560 --> 00:04:35,339 necesitamos, pues ahí va 123 00:04:35,339 --> 00:04:36,019 vale 124 00:04:36,019 --> 00:04:39,339 pues bueno 125 00:04:39,339 --> 00:04:41,759 lógicamente le dejamos 126 00:04:41,759 --> 00:04:42,240 el public 127 00:04:42,240 --> 00:04:45,920 porque esas entidades están en un paquete 128 00:04:45,920 --> 00:04:47,740 para ellas solitas, el paquete modelo 129 00:04:47,740 --> 00:04:49,740 entonces desde otros paquetes 130 00:04:49,740 --> 00:04:51,600 habrá que poder acceder, entonces ahora 131 00:04:51,600 --> 00:04:53,779 ya el public hay que dejarlo, ya no lo podemos quitar 132 00:04:53,779 --> 00:04:55,639 lógicamente, porque estas clases 133 00:04:55,639 --> 00:04:57,759 van a ser accesibles desde otro paquete 134 00:04:57,759 --> 00:04:58,620 desde el que sea 135 00:04:58,620 --> 00:05:03,449 ¿qué nos han dicho que necesita 136 00:05:03,449 --> 00:05:05,089 el pedido? pues el código 137 00:05:05,089 --> 00:05:07,269 un entero 138 00:05:07,269 --> 00:05:08,110 por ejemplo 139 00:05:08,110 --> 00:05:13,290 la descripción 140 00:05:13,290 --> 00:05:14,589 un string 141 00:05:14,589 --> 00:05:20,959 y la cantidad 142 00:05:20,959 --> 00:05:22,600 el precio del pedido 143 00:05:22,600 --> 00:05:27,879 lo que sea, solo interesa 144 00:05:27,879 --> 00:05:29,660 eso, es lo único que quiere gestionar este 145 00:05:29,660 --> 00:05:31,379 luego ya esto se podría ampliar 146 00:05:31,379 --> 00:05:31,860 claro 147 00:05:31,860 --> 00:05:35,699 y la programación orientada a objetos 148 00:05:35,699 --> 00:05:38,019 precisamente nos hace que la aplicación 149 00:05:38,019 --> 00:05:39,500 se pueda ampliar fácilmente 150 00:05:39,500 --> 00:05:41,800 si esto lo hiciéramos 151 00:05:41,800 --> 00:05:43,639 con un programa antiguo 152 00:05:43,639 --> 00:05:45,459 de los estructurados, de los antiguos 153 00:05:45,459 --> 00:05:46,920 de operación estructurada punto pelota 154 00:05:46,920 --> 00:05:49,259 esto sería un programa muy grande 155 00:05:49,259 --> 00:05:51,300 en el cual tendríamos un montón de variables 156 00:05:51,300 --> 00:05:54,079 precio del pedido, no se que del pedido 157 00:05:54,079 --> 00:05:55,519 nombre del cliente 158 00:05:55,519 --> 00:05:57,879 un montón de variables, hay luego un montón 159 00:05:57,879 --> 00:05:59,420 de if, while 160 00:05:59,420 --> 00:06:00,399 para hacer las cosas 161 00:06:00,399 --> 00:06:03,860 entonces cualquier modificación que quisiéramos hacer 162 00:06:03,860 --> 00:06:06,959 sería un lío meterse en ese programa con tantas líneas 163 00:06:06,959 --> 00:06:09,379 hasta encontrar que es lo que tenemos que añadir 164 00:06:09,379 --> 00:06:13,160 sin embargo aquí, oye mi aplicación ya está hecha 165 00:06:13,160 --> 00:06:15,939 pero la quiero ampliar porque ahora además del precio 166 00:06:15,939 --> 00:06:18,920 del pedido, quiero gestionar si está 167 00:06:18,920 --> 00:06:21,939 pagado o no, que es algo que no tenía en la versión 1 168 00:06:21,939 --> 00:06:24,899 de mi aplicación, ah vale pues rápidamente 169 00:06:24,899 --> 00:06:27,220 eso implica que tú abres la entidad pedido 170 00:06:27,220 --> 00:06:29,199 y pones aquí un boolean 171 00:06:29,199 --> 00:06:30,420 pagado, por ejemplo 172 00:06:30,420 --> 00:06:32,899 entonces la ampliación de la aplicación 173 00:06:32,899 --> 00:06:35,000 es muchísimo más sencilla si está 174 00:06:35,000 --> 00:06:37,360 organizada como una aplicación orientada a objetos 175 00:06:37,360 --> 00:06:39,160 con diferentes clases 176 00:06:39,160 --> 00:06:40,920 que si fuera un programa estructurado 177 00:06:40,920 --> 00:06:42,839 con todos los datos en variables ahí puestas 178 00:06:42,839 --> 00:06:44,319 un montón de variables 179 00:06:44,319 --> 00:06:45,800 y luego las operaciones 180 00:06:45,800 --> 00:06:48,860 bueno, en nuestro caso, por ahora dejamos 181 00:06:48,860 --> 00:06:50,879 la versión básica con estas tres propiedades 182 00:06:50,879 --> 00:06:51,399 y ya está 183 00:06:51,399 --> 00:06:53,000 ahora 184 00:06:53,000 --> 00:06:56,300 le ponemos un constructor 185 00:06:56,300 --> 00:07:00,019 con parámetros que siempre va a ser útil 186 00:07:00,019 --> 00:07:01,079 y es lo habitual 187 00:07:01,079 --> 00:07:10,569 le ponemos los get y los set 188 00:07:10,569 --> 00:07:14,069 para permitir desde fuera acceder a las propiedades 189 00:07:14,069 --> 00:07:15,189 porque si no se lo ponemos 190 00:07:15,189 --> 00:07:19,149 imposible desde fuera acceder al contenido del pedido 191 00:07:19,149 --> 00:07:20,750 imposible 192 00:07:20,750 --> 00:07:25,879 pues ponemos los get y set 193 00:07:25,879 --> 00:07:29,899 y ya que lo conocemos 194 00:07:29,899 --> 00:07:31,980 del otro día 195 00:07:31,980 --> 00:07:34,660 vamos a aprovechar para poner el método 196 00:07:34,660 --> 00:07:35,740 toString 197 00:07:35,740 --> 00:07:38,240 que ya explicamos el otro día 198 00:07:38,240 --> 00:07:40,920 que es un método que los que nos usen 199 00:07:40,920 --> 00:07:42,339 de otras aplicaciones 200 00:07:42,339 --> 00:07:43,399 de otros paquetes 201 00:07:43,399 --> 00:07:47,040 los que nos usen van a asumir 202 00:07:47,040 --> 00:07:48,660 que yo voy a tener implementado 203 00:07:48,660 --> 00:07:50,459 un toString, porque cuando ellos 204 00:07:50,459 --> 00:07:51,920 necesiten ver mi descripción 205 00:07:51,920 --> 00:07:54,079 ellos van a llamar a ese toString 206 00:07:54,079 --> 00:07:55,439 lo van a llamar 207 00:07:55,439 --> 00:07:58,459 entonces está bien que yo 208 00:07:58,459 --> 00:07:59,079 lo ofrezca 209 00:07:59,079 --> 00:08:01,800 para si los demás 210 00:08:01,800 --> 00:08:03,839 llaman a ese método porque 211 00:08:03,839 --> 00:08:05,860 asumen que yo lo he hecho 212 00:08:05,860 --> 00:08:07,439 pues que tengan respuesta 213 00:08:07,439 --> 00:08:12,560 ¿vale? entonces siempre nos tenemos que adaptar 214 00:08:12,560 --> 00:08:13,240 de alguna manera 215 00:08:13,240 --> 00:08:15,879 a estándares 216 00:08:15,879 --> 00:08:18,519 pues venga 217 00:08:18,519 --> 00:08:19,819 generamos tu string 218 00:08:19,819 --> 00:08:22,399 ¿qué descripción quieres poner 219 00:08:22,399 --> 00:08:24,000 en el string? pues las tres propiedades 220 00:08:24,000 --> 00:08:25,500 código, descripción y precio 221 00:08:25,500 --> 00:08:28,680 venga, me gusta el overwrite 222 00:08:28,680 --> 00:08:30,500 lo podéis quitar si queréis porque no sabemos 223 00:08:30,500 --> 00:08:31,819 lo que significa todavía 224 00:08:31,819 --> 00:08:34,500 medio lo apuntamos el otro día para lo que 225 00:08:34,500 --> 00:08:36,440 sirve para hacer una validación en 226 00:08:36,440 --> 00:08:38,539 tiempo de compilación, pero 227 00:08:38,539 --> 00:08:40,620 ahora mismo nos olvidamos de 228 00:08:40,620 --> 00:08:42,500 anotaciones y de 229 00:08:42,500 --> 00:08:44,440 todo eso, nos olvidamos 230 00:08:44,440 --> 00:08:46,440 vale, pues este método toString 231 00:08:46,440 --> 00:08:48,500 cuando alguien lo llame, desde donde 232 00:08:48,500 --> 00:08:50,700 sea, que podrá hacerlo porque es público 233 00:08:50,700 --> 00:08:52,559 claro, cuando alguien lo llame 234 00:08:52,559 --> 00:08:53,480 desde donde sea 235 00:08:53,480 --> 00:08:55,899 me va a devolver este string 236 00:08:55,899 --> 00:08:58,440 entonces es 237 00:08:58,440 --> 00:09:00,860 útil si alguien quiere visualizar 238 00:09:00,860 --> 00:09:02,259 el contenido en una cadena 239 00:09:02,259 --> 00:09:03,759 para ponerlo en un emergente 240 00:09:03,759 --> 00:09:05,039 Para lo que sea 241 00:09:05,039 --> 00:09:10,960 Vale, entonces ahora mismo 242 00:09:10,960 --> 00:09:12,259 Así se quedan 243 00:09:12,259 --> 00:09:13,240 Estos 244 00:09:13,240 --> 00:09:15,759 Estos 245 00:09:15,759 --> 00:09:18,620 Esta clase, pedido, vale 246 00:09:18,620 --> 00:09:21,159 Cliente 247 00:09:21,159 --> 00:09:22,279 La otra entidad 248 00:09:22,279 --> 00:09:34,820 De cliente hemos quedado 249 00:09:34,820 --> 00:09:36,379 Con el que nos pidió el software 250 00:09:36,379 --> 00:09:38,039 Que lo que le interesa es 251 00:09:38,039 --> 00:09:40,740 El NIF, el nombre 252 00:09:40,740 --> 00:09:44,639 Y los pedidos que me ha hecho 253 00:09:44,639 --> 00:09:46,240 Es lo único que me interesa 254 00:09:46,240 --> 00:09:47,399 Los pedidos que me ha hecho 255 00:09:47,399 --> 00:09:50,419 Los pedidos que me ha hecho 256 00:09:50,419 --> 00:09:52,559 Como son muchos pedidos 257 00:09:52,559 --> 00:09:54,059 Los tendré que guardar 258 00:09:54,059 --> 00:09:55,559 En un array, no hay otra 259 00:09:55,559 --> 00:09:58,659 Los tendré que guardar en un array 260 00:09:58,659 --> 00:10:01,500 Pues aquí están 261 00:10:01,500 --> 00:10:04,269 ¿Vale? 262 00:10:07,049 --> 00:10:09,730 Entonces, esto ya sabemos lo que significa 263 00:10:09,730 --> 00:10:11,830 Significa que cuando exista un cliente 264 00:10:12,429 --> 00:10:14,230 Que ahora mismo no existe ninguno 265 00:10:14,230 --> 00:10:16,129 Porque no hay ningún programa ejecutándose 266 00:10:16,129 --> 00:10:16,809 Y no hay un main 267 00:10:17,309 --> 00:10:19,009 Cuando exista un cliente 268 00:10:19,009 --> 00:10:20,309 ese cliente tendrá 269 00:10:20,309 --> 00:10:22,070 un nif concreto 270 00:10:22,070 --> 00:10:24,210 un nombre concreto 271 00:10:24,210 --> 00:10:26,549 y un array de pedidos concreto 272 00:10:26,549 --> 00:10:28,230 ya está 273 00:10:28,230 --> 00:10:30,350 aquí no instanciamos nada 274 00:10:30,350 --> 00:10:32,549 no tenemos que instanciar nada 275 00:10:32,549 --> 00:10:34,850 aquí lo único que estamos diciendo es que cuando un cliente 276 00:10:34,850 --> 00:10:36,889 exista, ese cliente 277 00:10:36,889 --> 00:10:38,490 va a tener dentro un array de pedidos 278 00:10:38,490 --> 00:10:40,769 ¿de cuántos pedidos? ¿qué tamaño tendrá 279 00:10:40,769 --> 00:10:42,750 ese array? es que nos da igual, solamente estamos 280 00:10:42,750 --> 00:10:44,850 diciendo el tipo de dato que va a 281 00:10:44,850 --> 00:10:45,590 tener esa variable 282 00:10:45,590 --> 00:10:48,769 pues esa variable va a tener este tipo 283 00:10:48,769 --> 00:10:49,230 de dato 284 00:10:49,230 --> 00:10:52,669 en concreto que array va a ser, que pedidos 285 00:10:52,669 --> 00:10:54,629 va a tener, cuantos, pues hombre cuando exista 286 00:10:54,629 --> 00:10:56,570 un cliente ya veremos, ahora mismo 287 00:10:56,570 --> 00:10:58,610 solamente decimos que cuando exista 288 00:10:58,610 --> 00:11:00,669 va a tener un need 289 00:11:00,669 --> 00:11:02,269 string, un nombre string 290 00:11:02,269 --> 00:11:04,529 y unos pedidos que son array de pedido 291 00:11:04,529 --> 00:11:05,909 ya está, es lo único que decimos ahí 292 00:11:05,909 --> 00:11:08,690 y lo mismo 293 00:11:08,690 --> 00:11:10,769 vamos a hacer el constructor get set 294 00:11:10,769 --> 00:11:28,740 vale, constructor get set 295 00:11:28,740 --> 00:11:30,320 y vamos a hacer un to string también 296 00:11:30,320 --> 00:11:32,019 por si alguien 297 00:11:32,019 --> 00:11:34,320 quiere tener un mensaje 298 00:11:34,320 --> 00:11:36,000 con la descripción de como somos 299 00:11:36,000 --> 00:11:37,980 pues venga 300 00:11:37,980 --> 00:11:39,159 generamos toString 301 00:11:39,159 --> 00:11:45,840 aquí 302 00:11:45,840 --> 00:11:49,460 el toString si incluimos las 303 00:11:49,460 --> 00:11:50,440 tres propiedades 304 00:11:50,440 --> 00:11:55,090 pues luego ya veremos que lo va a 305 00:11:55,090 --> 00:11:56,970 mostrar raro, porque el nif lo va a 306 00:11:56,970 --> 00:11:57,830 mostrar sin problema 307 00:11:57,830 --> 00:12:00,629 el nombre lo va a mostrar sin problema 308 00:12:00,629 --> 00:12:02,929 vale, y aquí lo que 309 00:12:02,929 --> 00:12:04,870 él me ha hecho es, y pedidos como es un 310 00:12:04,870 --> 00:12:06,970 array, me va a 311 00:12:06,970 --> 00:12:08,669 llamar al método 312 00:12:08,669 --> 00:12:10,809 toString de esta clase, que no sabemos 313 00:12:10,809 --> 00:12:12,789 muy bien lo que significa el método toString 314 00:12:12,789 --> 00:12:16,259 de esta clase, al que le 315 00:12:16,259 --> 00:12:18,159 pasa esto, y este método 316 00:12:18,159 --> 00:12:20,159 debe ser, si él no lo ha metido aquí 317 00:12:20,159 --> 00:12:22,059 debe ser que este 318 00:12:22,059 --> 00:12:24,100 método me muestra una 319 00:12:24,100 --> 00:12:25,679 descripción de lo que tiene ese array 320 00:12:25,679 --> 00:12:30,070 pero yo puedo cambiar y ponerme 321 00:12:30,070 --> 00:12:32,049 aquí en el toString lo que quiera, él me ofrece esto 322 00:12:32,049 --> 00:12:33,450 por defecto 323 00:12:33,450 --> 00:12:40,429 lo que suponemos 324 00:12:40,429 --> 00:12:41,809 que hará, será eso 325 00:12:41,809 --> 00:12:43,230 es lo que suponemos que hará, vale 326 00:12:43,230 --> 00:12:45,190 pero nos viene bien como ejemplo 327 00:12:45,190 --> 00:12:47,330 para que veáis lo estándar 328 00:12:47,330 --> 00:12:48,169 que es este método 329 00:12:48,169 --> 00:12:51,250 esta clase de aquí que no hemos 330 00:12:51,250 --> 00:12:52,090 hecho nosotros 331 00:12:52,090 --> 00:12:54,870 tiene un método toString 332 00:12:54,870 --> 00:12:57,649 tiene un método toString cuya utilidad 333 00:12:57,649 --> 00:12:58,549 va a ser 334 00:12:58,549 --> 00:13:01,210 darme un string con la descripción de lo que hay 335 00:13:01,210 --> 00:13:03,070 dentro, en este caso va a ser 336 00:13:03,070 --> 00:13:05,190 pedidos, ¿vale? para que veáis lo estándar que puede 337 00:13:05,190 --> 00:13:07,149 ser este nombre, ahora mismo 338 00:13:07,149 --> 00:13:08,690 esto no sabemos ni lo que hace 339 00:13:08,690 --> 00:13:11,009 intuimos que efectivamente 340 00:13:11,009 --> 00:13:13,350 coge el array que hay aquí 341 00:13:13,350 --> 00:13:15,750 y concatena 342 00:13:15,750 --> 00:13:18,090 el contenido del pedido 343 00:13:18,090 --> 00:13:18,850 lo asumimos 344 00:13:18,850 --> 00:13:22,070 pero bueno, podemos cambiar nuestro otro string 345 00:13:22,070 --> 00:13:23,629 y aquí que nos muestre otra cosa 346 00:13:23,629 --> 00:13:24,309 o lo que sea 347 00:13:24,309 --> 00:13:31,570 vale, pues ya tenemos 348 00:13:31,570 --> 00:13:34,490 este override de nuevo 349 00:13:34,490 --> 00:13:36,730 como no sabemos lo que significa 350 00:13:36,730 --> 00:13:38,250 y no lo necesitamos tampoco 351 00:13:38,250 --> 00:13:39,509 que exista, que esté ahí 352 00:13:39,509 --> 00:13:41,169 Lo quitamos 353 00:13:41,169 --> 00:13:43,230 Pues ya tenemos las dos entidades 354 00:13:43,230 --> 00:13:45,929 Por ahora no tenemos que añadir nada más 355 00:13:45,929 --> 00:13:47,889 Luego otra cosa es que 356 00:13:47,889 --> 00:13:49,470 Vayamos necesitando añadir cosas 357 00:13:49,470 --> 00:13:51,649 Vamos a ver 358 00:13:51,649 --> 00:13:51,970 Sí 359 00:13:51,970 --> 00:13:59,850 Sí, yo lo he hecho mediante source todo el rato 360 00:13:59,850 --> 00:14:01,789 Source, generate constructor 361 00:14:01,789 --> 00:14:02,610 Using fields 362 00:14:02,610 --> 00:14:07,080 ¿Eh? 363 00:14:09,379 --> 00:14:10,299 No, no, no 364 00:14:10,299 --> 00:14:13,159 No, no los he dejado tal y como me los ha generado él. 365 00:14:13,480 --> 00:14:14,279 No los he tocado. 366 00:14:16,220 --> 00:14:16,620 Vale. 367 00:14:17,360 --> 00:14:19,200 Bueno, pues ya tenemos estas dos entidades. 368 00:14:21,159 --> 00:14:21,360 ¿Vale? 369 00:14:21,639 --> 00:14:22,039 Entonces. 370 00:14:29,480 --> 00:14:34,220 Ahora, cuando exista un main, ya con clientes y pedidos, 371 00:14:34,820 --> 00:14:36,460 entonces vamos a ir haciendo en paralelo el main, 372 00:14:36,460 --> 00:14:39,360 un main, para irlo entendiendo mejor. 373 00:14:39,360 --> 00:14:44,220 El main nuestro va a ser 374 00:14:44,220 --> 00:14:47,419 Un menú 375 00:14:47,419 --> 00:14:55,019 Primero solicita datos para crear objetos pedido 376 00:14:55,019 --> 00:14:59,480 Almacenar estos pedidos en un array con espacio máximo para 100 pedidos 377 00:14:59,480 --> 00:15:03,039 Y luego crea un array con espacio para 100 clientes 378 00:15:03,039 --> 00:15:06,799 Esta primera parte sería como crear 379 00:15:06,799 --> 00:15:09,120 Donde van a ir los datos 380 00:15:09,120 --> 00:15:10,840 ¿Vale? 381 00:15:11,320 --> 00:15:13,720 Entonces vamos a hacer ahora nosotros en paralelo el main 382 00:15:13,720 --> 00:15:15,559 El main es esto 383 00:15:15,559 --> 00:15:16,759 Lo que viene a ser la aplicación 384 00:15:16,759 --> 00:15:19,139 Pues venga, vamos a hacer el main 385 00:15:19,139 --> 00:15:25,820 Vale, lo ha generado 386 00:15:25,820 --> 00:15:26,379 Solo él 387 00:15:26,379 --> 00:15:28,120 Claro 388 00:15:28,120 --> 00:15:34,789 Lo ha generado 389 00:15:34,789 --> 00:15:36,750 El eclipse lo ha generado solo 390 00:15:36,750 --> 00:15:39,070 Pero podríamos quitarlo 391 00:15:39,070 --> 00:15:40,370 Porque no queremos mostrar esto 392 00:15:40,370 --> 00:15:42,970 Por ejemplo, yo no quiero mostrar todos los pedidos 393 00:15:42,970 --> 00:15:44,429 En este toString 394 00:15:44,429 --> 00:15:46,330 Quiero mostrar solo el tamaño 395 00:15:46,330 --> 00:15:48,210 Pues podría quitarlo 396 00:15:48,210 --> 00:15:49,470 Y poner aquí 397 00:15:49,470 --> 00:15:52,250 Pedidos.length 398 00:15:52,250 --> 00:15:56,179 Y poner aquí numPedidos 399 00:15:56,179 --> 00:15:58,320 Por ejemplo, entonces este toString 400 00:15:58,320 --> 00:16:00,120 Me saca el nif 401 00:16:00,120 --> 00:16:02,419 El nombre y el número de pedidos 402 00:16:02,419 --> 00:16:04,759 Sería otra variante de toString 403 00:16:04,759 --> 00:16:07,860 Lo que pasa es que él me ha ofrecido esa 404 00:16:07,860 --> 00:16:10,000 Porque esa sentencia rara 405 00:16:10,000 --> 00:16:11,919 Raíz.toString, que era mismo 406 00:16:11,919 --> 00:16:13,519 Podemos intuir lo que hace 407 00:16:13,519 --> 00:16:14,919 Aunque no la entendemos 408 00:16:14,919 --> 00:16:17,259 Pues esa sentencia rara 409 00:16:17,259 --> 00:16:19,559 Coge el array de pedidos 410 00:16:19,559 --> 00:16:21,879 Y me va haciendo un string 411 00:16:21,879 --> 00:16:23,279 Donde va concatenando 412 00:16:23,279 --> 00:16:25,559 Todos los tuestrins a su vez 413 00:16:25,559 --> 00:16:26,320 De cada pedido 414 00:16:26,320 --> 00:16:29,100 Pero lo podemos quitar 415 00:16:29,100 --> 00:16:30,840 Y dejarlo así 416 00:16:30,840 --> 00:16:33,200 Si total este tuestrin es solo para una descripción 417 00:16:33,200 --> 00:16:36,440 Un mensajito 418 00:16:36,440 --> 00:16:37,399 Nada para nada más 419 00:16:37,399 --> 00:16:42,100 Poned este y así no nos liamos con cosas 420 00:16:42,100 --> 00:16:57,100 que no, número 421 00:16:57,100 --> 00:16:57,860 pedidos 422 00:16:57,860 --> 00:17:00,759 vale, no, no, no, no 423 00:17:00,759 --> 00:17:11,250 no, no he hecho, vale 424 00:17:11,250 --> 00:17:13,769 voy a hacer el main, voy a empezar a hacer el main 425 00:17:13,769 --> 00:17:15,809 y luego ya vamos haciendo los métodos, pero vamos a 426 00:17:15,809 --> 00:17:17,210 ir haciendo el main en paralelo 427 00:17:17,210 --> 00:17:19,589 para ir entendiendo quizá un poquito más la 428 00:17:19,589 --> 00:17:21,849 estructura de la aplicación, vale, pues nuestro 429 00:17:21,849 --> 00:17:23,789 main, nuestro main 430 00:17:23,789 --> 00:17:25,809 lo vamos a meter en este 431 00:17:25,809 --> 00:17:27,630 paquete que se ha quedado ahí solo abandonado 432 00:17:27,630 --> 00:17:29,269 en ejer 22 433 00:17:29,269 --> 00:17:30,109 ahí 434 00:17:30,109 --> 00:17:33,369 vamos a meter nuestra clase 435 00:17:33,369 --> 00:17:37,539 main, esta tiene 436 00:17:37,539 --> 00:17:39,740 el método main que se va a ejecutar 437 00:17:39,740 --> 00:17:43,059 este es el punto de arranque 438 00:17:43,059 --> 00:17:44,279 de la aplicación, este 439 00:17:44,279 --> 00:17:57,839 bueno pues lo que 440 00:17:57,839 --> 00:17:59,839 ocurre a partir de aquí ya es 441 00:17:59,839 --> 00:18:02,319 lo real, el funcionamiento 442 00:18:02,319 --> 00:18:03,799 lo que se está ejecutando, lo real 443 00:18:03,799 --> 00:18:05,940 vale, pues a partir de 444 00:18:05,940 --> 00:18:07,400 aquí que es donde arranca la aplicación 445 00:18:07,400 --> 00:18:09,279 aquí ya tiene que haber pedidos 446 00:18:09,279 --> 00:18:11,779 los pedidos 447 00:18:11,779 --> 00:18:13,880 ya tienen que existir, se supone 448 00:18:13,880 --> 00:18:15,619 que mi aplicación es para 449 00:18:15,619 --> 00:18:17,220 una tienda mía donde 450 00:18:17,220 --> 00:18:20,420 pues yo tengo 451 00:18:20,420 --> 00:18:21,319 mis 452 00:18:21,319 --> 00:18:24,599 lo que pasa es que bueno, aquí no están 453 00:18:24,599 --> 00:18:26,460 los ítems de pedido, vale, aquí es donde 454 00:18:26,460 --> 00:18:28,539 realmente ya empiezan a aparecer los pedidos 455 00:18:28,539 --> 00:18:31,019 y los clientes, aquí tiene que haber pedidos y clientes 456 00:18:31,019 --> 00:18:32,539 vale, pues lo que me dice 457 00:18:32,539 --> 00:18:34,640 la aplicación es que antes de hacer 458 00:18:34,640 --> 00:18:36,259 nada los haga aparecer, venga 459 00:18:36,259 --> 00:18:38,720 pues dice 460 00:18:38,720 --> 00:18:47,720 vamos a hacer una cosa 461 00:18:47,720 --> 00:18:49,900 yo creo que lo vamos a cambiar un pelinín 462 00:18:49,900 --> 00:18:58,250 vamos a hacer una cosa 463 00:18:58,250 --> 00:19:00,390 para que la aplicación sea más clara, 464 00:19:00,549 --> 00:19:01,269 tenga más sentido. 465 00:19:02,730 --> 00:19:05,529 Esta aplicación lo que va a manejar son clientes 466 00:19:05,529 --> 00:19:08,190 y los clientes tienen dentro sus pedidos, ¿verdad? 467 00:19:08,289 --> 00:19:09,369 Va a manejar clientes 468 00:19:09,369 --> 00:19:11,289 y los clientes son los que tienen dentro sus pedidos. 469 00:19:12,230 --> 00:19:13,190 Pues entonces, 470 00:19:13,490 --> 00:19:15,630 los clientes van a tener que estar en algún sitio. 471 00:19:16,529 --> 00:19:17,710 En condiciones normales, 472 00:19:17,750 --> 00:19:20,069 será en la tabla de una base de datos. 473 00:19:20,710 --> 00:19:23,690 Yo tendré una tabla en mi base de datos cliente, 474 00:19:23,789 --> 00:19:25,910 en principio con líneas vacías, 475 00:19:25,910 --> 00:19:27,170 porque no hay ningún cliente. 476 00:19:27,170 --> 00:19:29,690 luego ya la aplicación 477 00:19:29,690 --> 00:19:32,029 me ofrecerá un menú para insertar cliente 478 00:19:32,029 --> 00:19:33,390 eliminar cliente, lo que sea 479 00:19:33,390 --> 00:19:34,670 y ahí ya irán apareciendo 480 00:19:34,670 --> 00:19:38,230 pero esa tabla tendría que estar 481 00:19:38,230 --> 00:19:40,089 con el espacio físico 482 00:19:40,089 --> 00:19:41,769 para ir metiendo los clientes 483 00:19:41,769 --> 00:19:44,009 o irlos eliminando según los voy dando 484 00:19:44,009 --> 00:19:45,369 de baja de mi base de datos 485 00:19:45,369 --> 00:19:47,869 nosotros no podemos trabajar 486 00:19:47,869 --> 00:19:50,349 con los clientes en la tabla 487 00:19:50,349 --> 00:19:52,009 en la base de datos porque no sabemos 488 00:19:52,009 --> 00:19:54,029 todavía recoger de la base de datos 489 00:19:54,029 --> 00:19:56,170 ni volcar a la base de datos 490 00:19:56,170 --> 00:19:58,490 entonces nuestros clientes donde van a estar 491 00:19:58,490 --> 00:20:00,569 pues en la única estructura 492 00:20:00,569 --> 00:20:02,650 en la que sabemos meter un montón de cosas 493 00:20:02,650 --> 00:20:03,390 que es en el array 494 00:20:03,390 --> 00:20:05,750 pues entonces nuestros clientes 495 00:20:05,750 --> 00:20:08,250 según vayan apareciendo 496 00:20:08,250 --> 00:20:10,450 desapareciendo van a estar 497 00:20:10,450 --> 00:20:12,150 en mi array de clientes 498 00:20:12,150 --> 00:20:14,009 que sería el equivalente 499 00:20:14,009 --> 00:20:15,990 a mi tabla de clientes 500 00:20:15,990 --> 00:20:18,569 la que en un caso real existiría realmente 501 00:20:18,569 --> 00:20:20,529 mi tabla con los clientes y mi aplicación 502 00:20:20,529 --> 00:20:22,150 pues recoge uno 503 00:20:22,150 --> 00:20:23,329 lo quita, lo que sea 504 00:20:23,329 --> 00:20:26,269 ¿Vale? Como yo no creo la tabla 505 00:20:26,269 --> 00:20:27,210 Porque no sé hacerlo 506 00:20:27,210 --> 00:20:30,069 Pues mis clientes van a estar aquí 507 00:20:30,069 --> 00:20:32,490 Aquí van a estar 508 00:20:32,490 --> 00:20:33,450 Mis clientes 509 00:20:33,450 --> 00:20:37,240 ¿Vale? Entonces yo aquí 510 00:20:37,240 --> 00:20:39,180 O hago el import 511 00:20:39,180 --> 00:20:41,220 O le pongo su nombre completo 512 00:20:41,220 --> 00:20:42,720 ¿Verdad? 513 00:20:44,579 --> 00:20:47,480 ¿Cuál es el nombre completo de la clase cliente? 514 00:20:48,180 --> 00:20:49,480 El nombre completo 515 00:20:49,480 --> 00:20:51,140 De la clase cliente es 516 00:20:51,140 --> 00:20:53,519 Ejer22.model.cliente 517 00:20:53,519 --> 00:20:54,799 Ese es el nombre completo 518 00:20:54,799 --> 00:20:59,019 entonces si yo quiero hacer un array de clientes 519 00:20:59,019 --> 00:21:01,920 pues tengo que poner aquí el nombre de la clase 520 00:21:01,920 --> 00:21:05,839 pero como ya sabemos 521 00:21:05,839 --> 00:21:08,619 como esto deja el código muy feo 522 00:21:08,619 --> 00:21:11,180 y pierdo yo un poco porque imaginaos que el paquete 523 00:21:11,180 --> 00:21:14,579 es larguísimo el nombre, pues me quedan ahí unas líneas 524 00:21:14,579 --> 00:21:16,140 como esto es un poco feo 525 00:21:16,140 --> 00:21:19,960 pues ponemos el import y ya está 526 00:21:19,960 --> 00:21:24,230 entonces al poner el import decimos 527 00:21:24,230 --> 00:21:26,309 oye, usa cliente 528 00:21:26,309 --> 00:21:28,170 por su nombre corto, no por el largo 529 00:21:28,170 --> 00:21:29,769 vale, pues ya está, más bonito 530 00:21:29,769 --> 00:21:32,609 aquí van a estar mis clientes 531 00:21:32,609 --> 00:21:34,190 esta es mi caja 532 00:21:34,190 --> 00:21:36,049 de clientes, pero bueno 533 00:21:36,049 --> 00:21:37,990 la caja ahora mismo no tiene 534 00:21:37,990 --> 00:21:40,450 ni los cartones de los lados, con lo cual no la puedo usar 535 00:21:40,450 --> 00:21:41,690 es imposible 536 00:21:41,690 --> 00:21:44,190 recordad que lo primero que tenemos que hacer es instanciar 537 00:21:44,190 --> 00:21:44,609 el array 538 00:21:44,609 --> 00:21:48,690 instanciar el array, que es ya poner los cartoncitos 539 00:21:48,690 --> 00:21:49,769 vale 540 00:21:49,769 --> 00:21:51,809 pues venga, vamos a instanciar el array 541 00:21:51,809 --> 00:21:57,380 aquí nos viene 542 00:21:57,380 --> 00:21:59,339 el primer problema 543 00:21:59,339 --> 00:22:00,700 y único 544 00:22:00,700 --> 00:22:03,240 de los arrays 545 00:22:03,240 --> 00:22:04,839 porque además son todos maravillosos 546 00:22:04,839 --> 00:22:07,119 pero este problema da mucha guerra 547 00:22:07,119 --> 00:22:09,220 por eso es por lo que luego se usan colecciones de datos 548 00:22:09,220 --> 00:22:10,180 como veremos más adelante 549 00:22:10,180 --> 00:22:12,900 pues aquí nos damos de golpe de nuevo con el 550 00:22:12,900 --> 00:22:14,799 único problema de los arrays 551 00:22:14,799 --> 00:22:17,200 que es, desde el momento en que tú 552 00:22:17,200 --> 00:22:19,279 instancias una caja array para meter 553 00:22:19,279 --> 00:22:21,039 cosas, me tienes que dar el tamaño 554 00:22:21,039 --> 00:22:22,980 y ese tamaño va a ser fijo 555 00:22:22,980 --> 00:22:25,099 que me dices crear una caja 556 00:22:25,099 --> 00:22:27,240 de un metro cuadrado y luego solamente 557 00:22:27,240 --> 00:22:29,640 vas a usar un imperdible 558 00:22:29,640 --> 00:22:30,980 pues lo siento 559 00:22:30,980 --> 00:22:33,460 no vas a poder cambiar de caja nunca 560 00:22:33,460 --> 00:22:35,640 una caja de un metro cuadrado con un imperdible 561 00:22:35,640 --> 00:22:36,880 ese es el problema de los arrays 562 00:22:36,880 --> 00:22:39,400 vale, pues aquí tenemos que tomar una decisión 563 00:22:39,400 --> 00:22:41,619 que es, voy a hacerla 564 00:22:41,619 --> 00:22:43,180 lo suficientemente grande 565 00:22:43,180 --> 00:22:45,319 para que quepa el número máximo 566 00:22:45,319 --> 00:22:47,299 de clientes que yo aspiro a tener 567 00:22:47,299 --> 00:22:48,700 que yo aspiro a tener 568 00:22:48,700 --> 00:22:51,319 el anunciado me dice que asuma que como 569 00:22:51,319 --> 00:22:52,299 mucho voy a tener 100 570 00:22:52,299 --> 00:23:00,160 que luego resulta que 571 00:23:00,160 --> 00:23:01,700 tengo más de 100 clientes 572 00:23:01,700 --> 00:23:04,839 pues esta aplicación no me va a funcionar 573 00:23:04,839 --> 00:23:06,559 y voy a tener que irme al código 574 00:23:06,559 --> 00:23:07,640 a cambiarla 575 00:23:07,640 --> 00:23:10,140 lo cual querríamos evitar 576 00:23:10,140 --> 00:23:11,200 siempre 577 00:23:11,200 --> 00:23:14,319 una aplicación no tiene sentido que cuando 578 00:23:14,319 --> 00:23:15,980 pasen cosas en la vida real 579 00:23:15,980 --> 00:23:18,319 yo tenga que ir al código a cambiarla 580 00:23:18,319 --> 00:23:20,400 recompilarla, volverla a desplegar en los 581 00:23:20,400 --> 00:23:21,599 servidores, pues no 582 00:23:21,599 --> 00:23:24,359 tendría que poder adaptarse sin necesidad 583 00:23:24,359 --> 00:23:25,660 de escribirla de nuevo 584 00:23:25,660 --> 00:23:28,359 pues esta, como yo pase de 100 clientes 585 00:23:28,359 --> 00:23:30,259 no se va a poder adaptar 586 00:23:30,259 --> 00:23:33,769 a menos que hagamos alguna cosa extraña 587 00:23:33,769 --> 00:23:35,430 aquí dentro para intentar apañarlo 588 00:23:35,430 --> 00:23:36,329 que la haremos también 589 00:23:36,329 --> 00:23:39,990 claro, tendríamos que 590 00:23:39,990 --> 00:23:41,390 cada vez que 591 00:23:41,390 --> 00:23:43,829 se inserta el cliente 592 00:23:43,829 --> 00:23:44,509 decir 593 00:23:44,509 --> 00:23:48,130 si tengo 594 00:23:48,130 --> 00:23:49,450 más de 100 clientes 595 00:23:49,450 --> 00:23:51,329 pues en ese momento hacer un array nuevo 596 00:23:51,329 --> 00:23:52,250 ¿vale? 597 00:23:53,250 --> 00:23:54,609 venga, pues la caja está 598 00:23:54,609 --> 00:23:57,430 y ahora ya viene mi aplicación 599 00:23:57,430 --> 00:23:59,109 con las funcionalidades que quiero hacer 600 00:23:59,109 --> 00:24:00,809 esta aplicación va 601 00:24:00,809 --> 00:24:04,569 va a ser pues mostrar un menú con las cosas que yo quiero hacer 602 00:24:04,569 --> 00:24:15,390 entonces, pues mientras 603 00:24:15,390 --> 00:24:19,569 la opción sea distinta de la de salir 604 00:24:19,569 --> 00:24:23,099 y la opción de salir 605 00:24:23,099 --> 00:24:30,799 pues es esta, entonces ya hacemos lo que haya que hacer 606 00:24:30,799 --> 00:24:34,799 aquí tendré yo el resto de opciones del menú 607 00:24:34,799 --> 00:24:38,799 que ahora las decidimos, las acordamos, pero ya sabemos que la estructura del menú 608 00:24:38,799 --> 00:24:40,359 Será esta, leo la opción 609 00:24:40,359 --> 00:24:47,990 Con lo cual me falta el escáner 610 00:24:47,990 --> 00:25:04,769 Por aquí, vale 611 00:25:04,769 --> 00:25:08,569 Y ahora ya en función de la opción 612 00:25:08,569 --> 00:25:13,880 Pues ya hago una cosa 613 00:25:13,880 --> 00:25:14,880 O hago otra 614 00:25:14,880 --> 00:25:23,269 Aquí, ¿que os gustan los break? 615 00:25:23,890 --> 00:25:25,109 Pues dos puntos 616 00:25:25,109 --> 00:25:28,690 ¿Que no os gustan? 617 00:25:31,720 --> 00:25:32,319 Flechita 618 00:25:32,319 --> 00:25:44,450 Vale 619 00:25:44,450 --> 00:25:49,349 En el caso cero, será en el que 620 00:25:49,349 --> 00:25:50,809 Decimos adiós y ya está 621 00:25:50,809 --> 00:25:54,089 O volcamos en la 622 00:25:54,089 --> 00:25:56,109 Aquí en el caso 0 salir 623 00:25:56,109 --> 00:25:58,849 Volcaríamos los datos en la base de datos 624 00:25:58,849 --> 00:26:00,250 Para no perderlos 625 00:26:00,250 --> 00:26:01,670 Pero claro, eso no lo sabemos hacer 626 00:26:01,670 --> 00:26:06,339 Así que volcaríamos en base de datos 627 00:26:06,339 --> 00:26:10,369 Los datos de la aplicación 628 00:26:10,369 --> 00:26:16,319 Pero esta parte 629 00:26:16,319 --> 00:26:17,039 Pues no la podemos hacer 630 00:26:17,039 --> 00:26:18,359 Con lo cual los datos se van a perder 631 00:26:18,359 --> 00:26:20,240 En cuanto le demos a salir los datos se van a perder 632 00:26:20,240 --> 00:26:22,660 Al menos pues nada 633 00:26:22,660 --> 00:26:27,720 Ya está 634 00:26:27,720 --> 00:26:29,039 Caso 0 635 00:26:29,039 --> 00:26:32,519 vale, pues vamos a ver 636 00:26:32,519 --> 00:26:34,900 una opción 637 00:26:34,900 --> 00:26:36,859 imprescindible, lógicamente 638 00:26:36,859 --> 00:26:38,579 es insertar cliente 639 00:26:38,579 --> 00:26:43,890 porque la aplicación 640 00:26:43,890 --> 00:26:46,309 cuando arranque, va a arrancar 641 00:26:46,309 --> 00:26:47,269 sin clientes 642 00:26:47,269 --> 00:26:48,950 va a arrancar sin clientes 643 00:26:48,950 --> 00:26:52,170 claro, si nosotros ya supiéramos 644 00:26:52,170 --> 00:26:54,450 volcar de una base de datos, al arrancar 645 00:26:54,450 --> 00:26:56,529 la aplicación, podríamos leer de la base de datos 646 00:26:56,529 --> 00:26:57,789 llevarlo a la RAI, pero no sabemos 647 00:26:57,789 --> 00:27:00,869 con lo cual la aplicación va a arrancar sin clientes 648 00:27:00,869 --> 00:27:02,809 Luego lo primero que vamos a hacer 649 00:27:02,809 --> 00:27:04,849 Va a ser insertar un cliente 650 00:27:04,849 --> 00:27:06,369 Vale, insertar un cliente 651 00:27:06,369 --> 00:27:07,430 Que sería el caso 1 652 00:27:07,430 --> 00:27:12,730 Aunque no sé exactamente lo que dice aquí 653 00:27:12,730 --> 00:27:14,549 La vamos a ir orientando 654 00:27:14,549 --> 00:27:15,950 Para que sea un poquito más 655 00:27:15,950 --> 00:27:18,670 Más didáctica 656 00:27:18,670 --> 00:27:20,910 Vale, pues en el caso 1 657 00:27:20,910 --> 00:27:22,269 Insertar cliente 658 00:27:22,269 --> 00:27:23,970 Habrá que pedir los datos 659 00:27:23,970 --> 00:27:27,150 Y meterlo en el array 660 00:27:27,150 --> 00:27:31,849 Venga, nif 661 00:27:31,849 --> 00:27:35,670 Aquí 662 00:27:35,670 --> 00:27:41,019 guardaremos el nif del cliente 663 00:27:41,019 --> 00:27:51,859 y lo mismo con el nombre 664 00:27:51,859 --> 00:28:06,849 vale, el cliente 665 00:28:06,849 --> 00:28:08,630 la primera vez cuando lo metemos 666 00:28:08,630 --> 00:28:10,029 en la base de datos 667 00:28:10,029 --> 00:28:12,609 cuando digo base de datos me estoy refiriendo 668 00:28:12,609 --> 00:28:14,289 a nuestro array, claro, pero no hay base de datos 669 00:28:14,289 --> 00:28:16,549 cuando lo metemos es un cliente que estamos 670 00:28:16,549 --> 00:28:18,410 dando de alta, por ahora 671 00:28:18,410 --> 00:28:19,849 ni tiene pedidos ni tiene nada 672 00:28:19,849 --> 00:28:22,289 luego ya haremos una 673 00:28:22,289 --> 00:28:23,470 funcionalidad que sea 674 00:28:23,470 --> 00:28:26,349 hacer un pedido para un cliente 675 00:28:26,349 --> 00:28:28,569 que ya existe, pero con esta 676 00:28:28,569 --> 00:28:30,569 es insertar un cliente, dar de alta un cliente 677 00:28:30,569 --> 00:28:32,349 nuevo, sin pedidos y sin nada 678 00:28:32,349 --> 00:28:34,490 ¿vale? sin pedidos y sin nada 679 00:28:34,490 --> 00:28:36,450 entonces no hago 680 00:28:36,450 --> 00:28:38,390 pedidos, ¿vale? repito 681 00:28:38,390 --> 00:28:40,390 ya haremos opciones del menú más 682 00:28:40,390 --> 00:28:42,549 adelante para insertar 683 00:28:42,549 --> 00:28:44,430 un pedido para un cliente que ya 684 00:28:44,430 --> 00:28:46,549 existe, entonces de hecho 685 00:28:46,549 --> 00:28:48,410 lo podemos llamar a esto más que 686 00:28:48,410 --> 00:28:50,250 insertar, pues registrar cliente 687 00:28:50,250 --> 00:28:51,670 por si así lo entendemos mejor 688 00:28:51,670 --> 00:28:53,970 registrar cliente 689 00:28:53,970 --> 00:28:56,109 vale, pues entonces 690 00:28:56,109 --> 00:28:57,930 nuestro cliente nuevo 691 00:28:57,930 --> 00:29:02,589 Tiene el constructor que hemos hecho 692 00:29:02,589 --> 00:29:04,869 Que es el único que yo puedo usar 693 00:29:04,869 --> 00:29:06,170 Porque es el único que he hecho 694 00:29:06,170 --> 00:29:08,190 Le pasamos el nif 695 00:29:08,190 --> 00:29:10,210 Le pasamos el nombre 696 00:29:10,210 --> 00:29:13,210 Y me pide también el array de pedidos 697 00:29:13,210 --> 00:29:13,569 ¿Verdad? 698 00:29:13,670 --> 00:29:14,690 Porque el constructor 699 00:29:14,690 --> 00:29:18,829 El constructor de cliente 700 00:29:18,829 --> 00:29:20,069 Yo lo tengo hecho 701 00:29:20,069 --> 00:29:22,670 Para pedirle las tres cosas 702 00:29:22,670 --> 00:29:25,609 ¿Vale? 703 00:29:25,670 --> 00:29:27,470 Entonces puedo usar este mismo constructor 704 00:29:27,470 --> 00:29:30,009 Y aquí pasarle null 705 00:29:30,009 --> 00:29:31,930 por ejemplo, y ya está ahora mismo 706 00:29:31,930 --> 00:29:33,990 cliente sin pedidos 707 00:29:33,990 --> 00:29:35,190 su array null 708 00:29:35,190 --> 00:29:37,029 ¿vale? por ejemplo 709 00:29:37,029 --> 00:29:46,289 que este null queda muy feo 710 00:29:46,289 --> 00:29:48,650 me puedo 711 00:29:48,650 --> 00:29:50,390 hacer otro constructor, recordad que 712 00:29:50,390 --> 00:29:51,269 constructores 713 00:29:51,269 --> 00:29:54,430 ya vimos que podíamos tener muchos 714 00:29:54,430 --> 00:29:56,089 pero tenían que distinguirse 715 00:29:56,089 --> 00:29:58,369 por los argumentos 716 00:29:58,369 --> 00:30:02,079 que había aquí, entonces podemos 717 00:30:02,079 --> 00:30:03,380 hacernos otro constructor 718 00:30:03,380 --> 00:30:08,900 otro constructor que me 719 00:30:08,900 --> 00:30:10,779 pida solamente el nif y el nombre 720 00:30:10,779 --> 00:30:24,029 Valor a mi clase cliente tiene dos 721 00:30:24,029 --> 00:30:26,329 Yo cada vez que creo un cliente 722 00:30:26,329 --> 00:30:28,190 Elijo cual de los dos uso 723 00:30:28,190 --> 00:30:30,430 Ahora en este uso 724 00:30:30,430 --> 00:30:31,950 Que estoy haciendo me interesa este 725 00:30:31,950 --> 00:30:34,210 Porque yo solo tengo los datos 726 00:30:34,210 --> 00:30:36,450 Nif y nombre, array no lo inicializo 727 00:30:36,450 --> 00:30:38,609 No lo inicializo, el array de pedidos 728 00:30:38,609 --> 00:30:40,609 Ni lo inicializo porque no lo tengo 729 00:30:40,609 --> 00:30:44,210 Con lo cual se quedará 730 00:30:44,210 --> 00:30:46,009 Con el valor por defecto de un array 731 00:30:46,009 --> 00:30:47,269 Que es null porque es un objeto 732 00:30:47,269 --> 00:30:48,789 Null, su valor por defecto 733 00:30:48,789 --> 00:30:52,049 Entonces este constructor se distingue de este 734 00:30:52,049 --> 00:30:54,529 porque a este solo se le pasan 735 00:30:54,529 --> 00:30:56,269 dos cosas, sin embargo 736 00:30:56,269 --> 00:30:57,410 a este se le pasan tres 737 00:30:57,410 --> 00:31:00,190 son perfectamente distinguibles 738 00:31:00,190 --> 00:31:04,369 entonces, si uso el de abajo 739 00:31:04,369 --> 00:31:06,809 pues entonces 740 00:31:06,809 --> 00:31:08,589 este null ya no hace 741 00:31:08,589 --> 00:31:09,630 falta que se lo pase 742 00:31:09,630 --> 00:31:12,109 y queda como más bonito el código 743 00:31:12,109 --> 00:31:14,430 solo porque quede bonito, da igual 744 00:31:14,430 --> 00:31:16,430 da igual que lo haga de una manera o de otra, estoy haciendo lo mismo 745 00:31:16,430 --> 00:31:18,529 pero así como que queda más bonito 746 00:31:18,529 --> 00:31:19,730 porque poner un null ahí 747 00:31:19,730 --> 00:31:21,990 es un logo como metido así a calzador 748 00:31:21,990 --> 00:31:34,720 Bueno, es que hay que meterlo en el array 749 00:31:34,720 --> 00:31:35,480 Hemos terminado 750 00:31:35,480 --> 00:31:37,559 Claro, esto es como un objeto temporal 751 00:31:37,559 --> 00:31:39,119 Lo que importa es que ahora va al array 752 00:31:39,119 --> 00:31:40,160 ¿Vale? 753 00:31:42,200 --> 00:31:44,880 Vale, por ahora hemos creado este objeto cliente 754 00:31:44,880 --> 00:31:46,259 Pero no hemos terminado todavía 755 00:31:46,259 --> 00:31:47,400 De hacer esta opción 756 00:31:47,400 --> 00:31:49,380 Vale, entonces repito 757 00:31:49,380 --> 00:31:58,619 Vale, repito 758 00:31:58,619 --> 00:32:01,519 Usando el otro constructor y poniendo null 759 00:32:01,519 --> 00:32:02,920 Estaría haciendo lo mismo 760 00:32:02,920 --> 00:32:04,019 pero así mejor 761 00:32:04,019 --> 00:32:08,640 ahora, este cliente que hemos creado 762 00:32:08,640 --> 00:32:10,079 yo no lo puedo dejar ahí suelto 763 00:32:10,079 --> 00:32:12,299 primero, porque 764 00:32:12,299 --> 00:32:14,279 sería una variable local 765 00:32:14,279 --> 00:32:15,160 a este bloque 766 00:32:15,160 --> 00:32:18,420 con lo cual en cuanto este bloque ha terminado de ejecutarse 767 00:32:18,420 --> 00:32:19,720 ese cliente ha desaparecido 768 00:32:19,720 --> 00:32:21,059 ¿para qué lo creo ahí? 769 00:32:21,920 --> 00:32:24,740 y segundo, porque mis clientes no van a estar como variables 770 00:32:24,740 --> 00:32:26,759 sueltas, si estuvieran como variables 771 00:32:26,759 --> 00:32:28,119 sueltas serían inmanejables 772 00:32:28,119 --> 00:32:30,519 mis clientes tienen que estar metidos 773 00:32:30,519 --> 00:32:32,420 en esta caja, que para eso la he creado 774 00:32:32,420 --> 00:32:33,619 tienen que estar metidos ahí 775 00:32:33,619 --> 00:32:37,779 inicialmente esta caja tiene sus 100 posiciones 776 00:32:37,779 --> 00:32:39,680 pero hay nul en cada una de ellas 777 00:32:39,680 --> 00:32:43,220 pues entonces cada cliente tendrá que ir 778 00:32:43,220 --> 00:32:45,200 a la primera que quede libre 779 00:32:45,200 --> 00:32:49,339 entonces, ¿cuál es la primera que queda libre? 780 00:32:49,940 --> 00:32:52,519 pues no lo sé, vamos a necesitar una variable adicional 781 00:32:52,519 --> 00:32:53,799 que me vaya informando de eso 782 00:32:53,799 --> 00:32:58,819 es decir, voy a necesitar una variable 783 00:32:58,819 --> 00:33:02,720 por ejemplo, siguiente posición libre 784 00:33:02,720 --> 00:33:04,880 inicialmente es cero, verdad 785 00:33:04,880 --> 00:33:07,180 cuando mi aplicación 786 00:33:07,180 --> 00:33:09,059 arranca, este array 787 00:33:09,059 --> 00:33:10,339 tiene sus huecos 788 00:33:10,339 --> 00:33:13,099 pero no tiene ningún objeto en ninguna de ellas 789 00:33:13,099 --> 00:33:14,980 luego la siguiente posición 790 00:33:14,980 --> 00:33:16,259 libre inicialmente es cero 791 00:33:16,259 --> 00:33:18,380 inicialmente es cero 792 00:33:18,380 --> 00:33:19,720 y ahora 793 00:33:19,720 --> 00:33:22,579 este cliente de aquí 794 00:33:22,579 --> 00:33:24,480 este cliente de aquí 795 00:33:24,480 --> 00:33:26,740 ¿dónde se tiene que colocar? 796 00:33:27,220 --> 00:33:29,460 pues se tiene que colocar en la siguiente 797 00:33:29,460 --> 00:33:30,819 posición libre 798 00:33:30,819 --> 00:33:33,019 Ahí se tiene que colocar 799 00:33:33,019 --> 00:33:34,559 Ese cliente 800 00:33:34,559 --> 00:33:35,960 ¿Vale? 801 00:33:37,440 --> 00:33:39,220 Claro, ¿y qué me faltaría por hacer? 802 00:33:40,500 --> 00:33:41,019 Incrementarla 803 00:33:41,019 --> 00:33:43,220 Que la puede incrementar 804 00:33:43,220 --> 00:33:44,119 Aquí aparte 805 00:33:44,119 --> 00:33:51,000 O si quiero ahorrar una línea de código 806 00:33:51,000 --> 00:33:52,799 Pues la incremento aquí 807 00:33:52,799 --> 00:33:56,200 Que ya sabemos lo que significa esto 808 00:33:56,200 --> 00:33:58,680 Que es primero usa la variable para lo que sea 809 00:33:58,680 --> 00:34:00,380 En este caso para darme la posición 810 00:34:00,380 --> 00:34:01,819 Y luego después 811 00:34:01,819 --> 00:34:03,759 Y luego después déjala incrementada 812 00:34:03,759 --> 00:34:10,619 No, porque primero coloco en la que toque 813 00:34:10,619 --> 00:34:12,519 Y luego lo dejo incrementada para la siguiente 814 00:34:12,519 --> 00:34:15,079 Es que 815 00:34:15,079 --> 00:34:18,380 Si lo pusieras antes 816 00:34:18,380 --> 00:34:20,619 Te daría primero 817 00:34:20,619 --> 00:34:22,699 Menos uno y trataría de colocarlo en la menos uno 818 00:34:22,699 --> 00:34:25,860 Claro, porque está en cero 819 00:34:25,860 --> 00:34:29,320 No, menos uno no, perdón 820 00:34:29,320 --> 00:34:31,059 Primero te incrementaría, te colocaría en la uno 821 00:34:31,059 --> 00:34:32,519 Con lo cual la cero se la saltaría 822 00:34:32,519 --> 00:34:37,280 vale, te coloca en la que toca 823 00:34:37,280 --> 00:34:39,139 y te lo deja incrementado para la siguiente 824 00:34:39,139 --> 00:34:43,039 vale, pues insertar cliente 825 00:34:43,039 --> 00:34:43,500 ya está 826 00:34:43,500 --> 00:34:46,780 entonces hombre, siempre si uno hace una aplicación 827 00:34:46,780 --> 00:34:48,980 mínimamente decente, debería dar el 828 00:34:48,980 --> 00:34:52,460 ok, cliente 829 00:34:52,460 --> 00:34:53,780 registrado 830 00:34:53,780 --> 00:34:56,219 ala, ya está 831 00:34:56,219 --> 00:35:00,570 cliente registrado 832 00:35:00,570 --> 00:35:03,030 este objeto 833 00:35:03,030 --> 00:35:05,769 o sea, esta referencia 834 00:35:05,769 --> 00:35:08,110 desaparece porque es una variable local 835 00:35:08,110 --> 00:35:10,230 Pero no pasa nada porque el cliente 836 00:35:10,230 --> 00:35:12,030 Se ha quedado apuntado por el array 837 00:35:12,030 --> 00:35:13,690 Se ha quedado apuntado 838 00:35:13,690 --> 00:35:14,610 Entonces no pasa nada 839 00:35:14,610 --> 00:35:16,429 ¿Vale? 840 00:35:26,289 --> 00:35:26,849 ¿Vale? 841 00:35:32,090 --> 00:35:32,929 Entender lo que 842 00:35:32,929 --> 00:35:34,469 Hacemos en cada momento 843 00:35:34,469 --> 00:35:44,059 Vale, con esto 844 00:35:44,059 --> 00:35:46,800 Con esta sentencia de aquí 845 00:35:46,800 --> 00:35:50,440 Hemos creado el objeto cliente 846 00:35:50,440 --> 00:35:52,239 Con sus dos datos, nif, nombre 847 00:35:52,239 --> 00:35:54,239 Y el array de pedidos, null 848 00:35:54,239 --> 00:35:56,340 no tiene nada, hemos creado nif, nombre 849 00:35:56,340 --> 00:35:58,300 y array de pedidos, esto hemos 850 00:35:58,300 --> 00:36:00,340 creado, array de pedidos a null, aquí hay un 851 00:36:00,340 --> 00:36:01,900 null, porque no hay ningún array 852 00:36:01,900 --> 00:36:04,420 hemos creado esto, esto 853 00:36:04,420 --> 00:36:05,219 apuntado 854 00:36:05,219 --> 00:36:07,400 por c 855 00:36:07,400 --> 00:36:10,219 por c, vale, ahora 856 00:36:10,219 --> 00:36:12,239 ¿qué tenemos? tenemos 857 00:36:12,239 --> 00:36:14,539 este array con posiciones 858 00:36:14,539 --> 00:36:16,460 con 100 posiciones 859 00:36:16,460 --> 00:36:18,179 en particular, aunque 860 00:36:18,179 --> 00:36:20,420 por ahora, todas apuntando a null 861 00:36:20,420 --> 00:36:22,500 todas apuntando a null inicialmente 862 00:36:22,500 --> 00:36:25,380 vale, pues con esta sentencia de aquí 863 00:36:25,380 --> 00:36:28,159 con esta sentencia 864 00:36:28,159 --> 00:36:30,360 lo que hemos hecho es 865 00:36:30,360 --> 00:36:32,699 oye tú, posición 0 866 00:36:32,699 --> 00:36:34,599 que es la que tocaba en este caso 867 00:36:34,599 --> 00:36:37,019 si hemos hecho registrar clientes 868 00:36:37,019 --> 00:36:39,000 7 veces después, pues estaremos en esta 869 00:36:39,000 --> 00:36:40,900 pero bueno, la primera vez que hemos entrado 870 00:36:40,900 --> 00:36:42,980 oye tú, posición 0 871 00:36:42,980 --> 00:36:44,860 de clientes, posición 0 872 00:36:44,860 --> 00:36:47,900 deja de apuntar a null 873 00:36:47,900 --> 00:36:50,420 y empieza a apuntar a este 874 00:36:50,420 --> 00:36:53,960 eso es lo que hemos hecho con esta sentencia 875 00:36:53,960 --> 00:36:55,360 ¿verdad? hemos dicho 876 00:36:55,360 --> 00:36:57,340 oye tú, posición 0 de clientes 877 00:36:57,340 --> 00:36:59,599 deja de apuntar al null que estabas apuntando 878 00:36:59,599 --> 00:37:01,480 y empieza a apuntar 879 00:37:01,480 --> 00:37:02,539 a lo que apunta C 880 00:37:02,539 --> 00:37:05,539 es lo que estamos diciendo, empieza a apuntar a lo que apunta 881 00:37:05,539 --> 00:37:07,360 C, a magnífico 882 00:37:07,360 --> 00:37:08,980 ahora ya el objeto 883 00:37:08,980 --> 00:37:11,300 cliente, el objeto que hay que conservar 884 00:37:11,300 --> 00:37:12,980 el objeto verdadero y real 885 00:37:12,980 --> 00:37:15,400 se ha quedado apuntado por 2, por C 886 00:37:15,400 --> 00:37:17,579 y por el array, que es el que importa 887 00:37:17,579 --> 00:37:19,219 pero también se ha quedado por C 888 00:37:19,219 --> 00:37:23,079 ahora ya cuando este bloque termina de ejecutarse 889 00:37:23,079 --> 00:37:24,940 cuando ya sacamos el system out 890 00:37:24,940 --> 00:37:26,320 y el bloque termina de ejecutarse 891 00:37:26,320 --> 00:37:28,920 esta c como es variable local 892 00:37:28,920 --> 00:37:30,820 desaparece, pero es que no pasa nada 893 00:37:30,820 --> 00:37:32,280 esta desaparece 894 00:37:32,280 --> 00:37:34,840 pero nos da igual, el cliente no ha desaparecido 895 00:37:34,840 --> 00:37:36,960 el cliente se queda 896 00:37:36,960 --> 00:37:37,940 apuntado por esta 897 00:37:37,940 --> 00:37:40,780 lo único que ha desaparecido es la variable c 898 00:37:40,780 --> 00:37:42,880 pero es que esta no nos importa que desaparezca 899 00:37:42,880 --> 00:37:44,800 la siguiente vez que 900 00:37:44,800 --> 00:37:45,760 demos a registrar 901 00:37:45,760 --> 00:37:49,079 volverá a aparecer otro c para otro 902 00:37:49,079 --> 00:37:57,550 bueno, está claro lo que hemos hecho con esta 903 00:37:57,550 --> 00:38:00,909 con registrar cliente, ¿verdad? 904 00:38:02,909 --> 00:38:05,309 fundamental esta variable 905 00:38:05,309 --> 00:38:09,789 fundamental que esta variable exista, porque es la que me va a decir 906 00:38:09,789 --> 00:38:13,590 en qué posición de la RAI coloco cada vez, venga, vamos a parar unos minutos 907 00:38:13,590 --> 00:38:17,170 ...