1 00:00:00,000 --> 00:00:07,000 Vale, de que conviene no desconectar nunca y perder nunca de vista lo que está pasando debajo, 2 00:00:07,000 --> 00:00:08,000 claro, lo que ocurre debajo. 3 00:00:08,000 --> 00:00:12,000 Porque en muchas situaciones, pues no es que tengamos que tenerlo siempre presente, 4 00:00:12,000 --> 00:00:15,000 pues ya si hacemos otra OJ y las cosas tiran y ya está. 5 00:00:15,000 --> 00:00:19,000 Pero hay situaciones en las cuales las cosas no van como creemos que van 6 00:00:19,000 --> 00:00:25,000 y lo vamos a acotar, vamos a encontrar la solución si entendemos lo que hay debajo, si no, no. 7 00:00:25,000 --> 00:00:31,000 Entonces, todo esto venía a cuento de que esta línea, no penséis que está duplicando el objeto, 8 00:00:31,000 --> 00:00:33,000 que no pasaría nada. 9 00:00:33,000 --> 00:00:36,000 Pero hombre, sería una pérdida de memoria tonta, no está duplicando el objeto. 10 00:00:36,000 --> 00:00:37,000 ¿Aquí qué está pasando? 11 00:00:37,000 --> 00:00:41,000 Nosotros tenemos, nos vamos al pain este estupendo. 12 00:00:41,000 --> 00:00:45,000 Nosotros tenemos nuestro array de pedidos, 13 00:00:46,000 --> 00:00:49,000 Joder, vaya mierda, a ver. 14 00:00:49,000 --> 00:00:51,000 Este. 15 00:00:51,000 --> 00:00:54,000 Tenemos nuestro array de pedidos, 16 00:00:54,000 --> 00:00:56,000 pues los pedidos que sean. 17 00:00:56,000 --> 00:01:03,000 Este es el array y cada uno de estos es un pedido, ¿vale? 18 00:01:03,000 --> 00:01:05,000 Y ahora, ¿cada uno de estos qué es? 19 00:01:05,000 --> 00:01:08,000 Del array, es un objeto pedido. 20 00:01:08,000 --> 00:01:12,000 Luego, cada uno de estos, en realidad, ya sabemos que lo que realmente es, 21 00:01:12,000 --> 00:01:17,000 es una dirección de memoria hacia el verdadero objeto pedido, 22 00:01:17,000 --> 00:01:20,000 que tiene a su vez sus propiedades, las que sean. 23 00:01:20,000 --> 00:01:23,000 Eso es lo que sabemos que hay, ¿verdad? 24 00:01:23,000 --> 00:01:27,000 En cada posición del array, pedidos de i, pedidos de i, 25 00:01:27,000 --> 00:01:32,000 en realidad es una dirección de memoria del verdadero objeto pedido con sus datos. 26 00:01:32,000 --> 00:01:35,000 Ese es cada pedidos de i, ¿verdad? 27 00:01:35,000 --> 00:01:37,000 Eso lo tenemos claro. 28 00:01:43,000 --> 00:01:45,000 Cada pedidos de i es eso. 29 00:01:45,000 --> 00:01:52,000 Cada pedidos de i es una dirección de memoria a donde sea. 30 00:01:52,000 --> 00:01:54,000 Vale. 31 00:01:54,000 --> 00:01:56,000 Bueno. 32 00:01:56,000 --> 00:01:58,000 Esto es nuestra aplicación que ya se está ejecutando. 33 00:01:58,000 --> 00:02:02,000 Cuando hay una aplicación en ejecución, cuando hay un main, ya hay cosas en memoria, ya hay cosas. 34 00:02:02,000 --> 00:02:04,000 Pues es una de las que hay. 35 00:02:04,000 --> 00:02:07,000 ¿Qué más cosas hay en memoria de esta aplicación que estamos ejecutando? 36 00:02:07,000 --> 00:02:09,000 Pues un array de clientes. 37 00:02:09,000 --> 00:02:10,000 ¿Vale? 38 00:02:10,000 --> 00:02:14,000 Pues claro, tenemos nuestro array de clientes, que es este de aquí. 39 00:02:16,000 --> 00:02:19,000 Nuestro array de clientes, pues con un montón de clientes. 40 00:02:22,000 --> 00:02:26,000 En realidad, cada posición del array, cada clientes de i, 41 00:02:26,000 --> 00:02:32,000 ya sabemos que es una dirección de memoria a donde ahora ya sí que está el cliente. 42 00:02:33,000 --> 00:02:35,000 ¿Vale? 43 00:02:36,000 --> 00:02:41,000 Y el cliente, a su vez, tiene dentro su nombre, su nif. 44 00:02:46,000 --> 00:02:49,000 Su nif, su nombre, su dirección. 45 00:02:49,000 --> 00:02:52,000 Y el cliente, a su vez, tiene dentro un array. 46 00:02:52,000 --> 00:02:54,000 Un array ya sabemos lo que es. 47 00:02:54,000 --> 00:02:56,000 Es otro objeto. 48 00:02:56,000 --> 00:03:01,000 Luego el cliente, a su vez, tiene una dirección donde está el array. 49 00:03:02,000 --> 00:03:05,000 Y aquí están los pedidos del cliente. 50 00:03:10,000 --> 00:03:11,000 ¿Vale? 51 00:03:11,000 --> 00:03:14,000 O sea, los pedidos del cliente son estos. 52 00:03:15,000 --> 00:03:19,000 Estos son los pedidos del cliente, en realidad. 53 00:03:19,000 --> 00:03:20,000 ¿Vale? 54 00:03:20,000 --> 00:03:22,000 Esta es la estructura que tenemos, ¿verdad? 55 00:03:22,000 --> 00:03:24,000 El array de clientes. 56 00:03:24,000 --> 00:03:28,000 Cada cliente, cada posición del array es una dirección de memoria a un cliente. 57 00:03:28,000 --> 00:03:32,000 Cada cliente que tiene nombre, nif, dirección y a su vez un array. 58 00:03:32,000 --> 00:03:34,000 Un array ya sabemos lo que es. 59 00:03:34,000 --> 00:03:36,000 Un array en realidad es un objeto. 60 00:03:36,000 --> 00:03:39,000 Luego un array es la dirección de memoria hacia el array. 61 00:03:39,000 --> 00:03:42,000 Y ya el array tiene dentro los pedidos. 62 00:03:42,000 --> 00:03:47,000 Que a su vez, como es un array de pedidos, pues cada uno de estos es la dirección de memoria, 63 00:03:47,000 --> 00:03:50,000 ahora ya sí, de un pedido. 64 00:03:50,000 --> 00:03:51,000 Cada uno de estos. 65 00:03:51,000 --> 00:03:52,000 ¿Vale? 66 00:03:52,000 --> 00:03:54,000 Este ya es el pedido. 67 00:03:55,000 --> 00:03:57,000 Este ya es el pedido. 68 00:03:57,000 --> 00:04:01,000 Y claro, si quisiéramos seguir dibujando, que no vamos a hacerlo más, 69 00:04:01,000 --> 00:04:04,000 a su vez una propiedad del pedido es un array de ítems. 70 00:04:04,000 --> 00:04:08,000 Luego a su vez uno de estos es la dirección de memoria al array de ítems, 71 00:04:08,000 --> 00:04:10,000 que son las direcciones de los ítems, y ahí ya se acaba el árbol. 72 00:04:10,000 --> 00:04:11,000 Ahí ya no hay más. 73 00:04:11,000 --> 00:04:13,000 Porque los ítems ya no tienen dentro objetos. 74 00:04:13,000 --> 00:04:15,000 Tienen ya propiedades sencillas. 75 00:04:15,000 --> 00:04:16,000 Esto es lo que hay. 76 00:04:16,000 --> 00:04:17,000 ¿Vale? 77 00:04:17,000 --> 00:04:21,000 Entonces, ¿nosotros qué hacemos cuando le asignamos un pedido a un cliente? 78 00:04:21,000 --> 00:04:29,000 Pues lo que hacemos es, a la dirección donde tiene, perdón, a la dirección esta, 79 00:04:31,000 --> 00:04:36,000 al array este, al array este le incorporamos una dirección más, 80 00:04:36,000 --> 00:04:39,000 que sea la dirección de uno de estos pedidos. 81 00:04:39,000 --> 00:04:44,000 No es que estemos haciendo aparecer un pedido copia de este, 82 00:04:45,000 --> 00:04:48,000 y ese pedido lo metamos en este array. 83 00:04:48,000 --> 00:04:50,000 No, lo que estamos haciendo es, 84 00:04:50,000 --> 00:04:52,000 hemos localizado el pedido, 85 00:04:52,000 --> 00:04:54,000 imaginaos que es este, lo hemos localizado. 86 00:04:54,000 --> 00:04:58,000 Vale, lo hemos localizado y a una variable auxiliar que está por aquí, 87 00:04:58,000 --> 00:05:01,000 que es la que se llama pedidosincorporar, 88 00:05:01,000 --> 00:05:06,000 a esta variable auxiliar, que es la que hemos llamado pedidoincorporar, 89 00:05:08,000 --> 00:05:12,000 mediante esta sentencia, pedidoincorporar, igual pedidos de i, 90 00:05:12,000 --> 00:05:14,000 que esta es la sentencia clave, 91 00:05:14,000 --> 00:05:19,000 me di esta sentencia, en esta no estamos haciendo ninguna copia de este pedido, 92 00:05:19,000 --> 00:05:21,000 no estamos haciendo ninguna copia, 93 00:05:21,000 --> 00:05:25,000 lo que estamos es, a este dándole esta dirección de memoria, 94 00:05:25,000 --> 00:05:30,000 luego a este le estamos haciendo que apunte también a ese pedido, 95 00:05:30,000 --> 00:05:32,000 pero el pedido que existe es solo uno, 96 00:05:33,000 --> 00:05:35,000 a este también va a apuntar ahí. 97 00:05:37,000 --> 00:05:40,000 Vale, esto es lo que estamos haciendo con esta sentencia, 98 00:05:40,000 --> 00:05:41,000 con esta, 99 00:05:41,000 --> 00:05:46,000 con esta sentencia estamos haciendo que esto apunte también aquí, 100 00:05:46,000 --> 00:05:51,000 vale, no estamos creando otro, un pedido copia idéntico a este, 101 00:05:51,000 --> 00:05:54,000 no estamos creando un pedido copia idéntico a este, no, 102 00:05:54,000 --> 00:05:57,000 estamos creándole otra referencia que la estamos guardando aquí 103 00:05:58,000 --> 00:06:00,000 y ahora ya cuando localicemos el cliente, 104 00:06:01,000 --> 00:06:03,000 pues en su array de pedidos, 105 00:06:03,000 --> 00:06:04,000 ¿qué hacemos? 106 00:06:04,000 --> 00:06:07,000 Pues en su array de pedidos estaremos añadiendo, que es este, 107 00:06:08,000 --> 00:06:12,000 en su array de pedidos estaremos añadiendo una posición más, 108 00:06:12,000 --> 00:06:17,000 una posición más a la que le damos la dirección de pedido a incorporar, 109 00:06:17,000 --> 00:06:20,000 luego se queda apuntando ahí. 110 00:06:28,000 --> 00:06:30,000 Este pedido nuevo se va aquí. 111 00:06:34,000 --> 00:06:36,000 Estos son los dos enlaces que estamos haciendo, 112 00:06:36,000 --> 00:06:38,000 vale, intentad seguirme, 113 00:06:38,000 --> 00:06:40,000 ya sé que es un rollo pero es importante, 114 00:06:41,000 --> 00:06:44,000 vale, o sea con esta sentencia que es la clave, 115 00:06:45,000 --> 00:06:46,000 esta de aquí, 116 00:06:48,000 --> 00:06:49,000 hacemos esto, 117 00:06:49,000 --> 00:06:53,000 a esta variable le damos como dirección esta misma, 118 00:06:53,000 --> 00:06:56,000 luego se queda apuntando al pedido, al pedido que hay 119 00:06:56,000 --> 00:06:58,000 y ahora localizamos cliente, 120 00:06:58,000 --> 00:07:02,000 cuando lo hemos encontrado nos vamos a su array de pedidos 121 00:07:02,000 --> 00:07:05,000 y a su array de pedidos le añadimos esto, 122 00:07:06,000 --> 00:07:08,000 luego al añadirle esto que es una dirección de memoria, 123 00:07:08,000 --> 00:07:12,000 lo que le estamos añadiendo es que apunte aquí, 124 00:07:12,000 --> 00:07:14,000 eso es lo que estamos haciendo, 125 00:07:14,000 --> 00:07:16,000 no es que estemos creando un objeto pedido, 126 00:07:16,000 --> 00:07:17,000 copia de este para él, 127 00:07:17,000 --> 00:07:20,000 no, simplemente al array de pedidos de este cliente 128 00:07:20,000 --> 00:07:24,000 le metemos una posición más que empieza a apuntar a ese pedido, 129 00:07:24,000 --> 00:07:26,000 no estamos creando nada nuevo, 130 00:07:26,000 --> 00:07:28,000 simplemente hacemos esto. 131 00:07:28,000 --> 00:07:30,000 Cuando hacemos esta sentencia de aquí, 132 00:07:30,000 --> 00:07:32,000 cuando hacemos esta, 133 00:07:32,000 --> 00:07:35,000 la de incorporar pedido cuando la hagamos ahí abajo, 134 00:07:35,000 --> 00:07:37,000 dentro del método que ahora está vacía, 135 00:07:37,000 --> 00:07:40,000 pues lo que estamos haciendo simplemente es 136 00:07:40,000 --> 00:07:42,000 a este array de pedidos del cliente de ahí 137 00:07:42,000 --> 00:07:43,000 que acabamos de encontrar, 138 00:07:43,000 --> 00:07:46,000 a este array le añadiremos una posición 139 00:07:46,000 --> 00:07:48,000 y le meteremos este 140 00:07:48,000 --> 00:07:51,000 y al meterle este a la posición añadida, 141 00:07:51,000 --> 00:07:52,000 ¿qué estamos haciendo? 142 00:07:52,000 --> 00:07:54,000 Pues ponerle esta dirección 143 00:07:54,000 --> 00:07:56,000 y al ponerle esta dirección le hacemos que apunte aquí, 144 00:07:56,000 --> 00:07:57,000 ¿vale? 145 00:07:57,000 --> 00:07:59,000 Eso es lo que está pasando por dentro. 146 00:07:59,000 --> 00:08:00,000 Entonces conviene entenderlo bien, 147 00:08:00,000 --> 00:08:03,000 porque hay veces que en función de las cosas que uno haga 148 00:08:03,000 --> 00:08:05,000 en realidad no está haciendo esto, 149 00:08:05,000 --> 00:08:07,000 sino que está haciendo una copia, 150 00:08:07,000 --> 00:08:08,000 luego modifica esto 151 00:08:08,000 --> 00:08:10,000 y no se modifica la copia, claro, 152 00:08:10,000 --> 00:08:11,000 y la aplicación no funcione, 153 00:08:11,000 --> 00:08:13,000 pero si yo he guardado 154 00:08:13,000 --> 00:08:15,000 y no se me guardan los datos, 155 00:08:15,000 --> 00:08:16,000 ¿qué está ocurriendo? 156 00:08:16,000 --> 00:08:17,000 No está ocurriendo nada, 157 00:08:17,000 --> 00:08:19,000 simplemente que a lo mejor no estás entendiendo 158 00:08:19,000 --> 00:08:20,000 esto que estás haciendo de fondo, 159 00:08:20,000 --> 00:08:22,000 estás trabajando con una copia, 160 00:08:22,000 --> 00:08:24,000 estás modificando esto 161 00:08:24,000 --> 00:08:25,000 y entonces la copia no. 162 00:08:25,000 --> 00:08:28,000 Bueno, por este tipo de cosas que ocurren en las aplicaciones 163 00:08:28,000 --> 00:08:31,000 conviene entender bien exactamente 164 00:08:31,000 --> 00:08:34,000 qué se hace cuando se hacen asignaciones de objetos, 165 00:08:34,000 --> 00:08:35,000 porque no olvidéis, 166 00:08:35,000 --> 00:08:39,000 un objeto es una dirección de memoria. 167 00:08:39,000 --> 00:08:41,000 Bueno, más o menos, 168 00:08:41,000 --> 00:08:43,000 el dibujito este más o menos 169 00:08:43,000 --> 00:08:48,000 lo que trae por debajo. 170 00:08:48,000 --> 00:08:50,000 Bueno, pues entonces, 171 00:08:50,000 --> 00:08:53,000 nuestra funcionalidad de incorporar pedido a cliente 172 00:08:53,000 --> 00:08:55,000 es esta, 173 00:08:55,000 --> 00:08:56,000 localizamos el pedido, 174 00:08:56,000 --> 00:08:58,000 lo dejamos apuntado por este 175 00:08:58,000 --> 00:08:59,000 y una vez que lo hemos localizado, 176 00:08:59,000 --> 00:09:01,000 llamamos a este método. 177 00:09:01,000 --> 00:09:02,000 Este método está sin hacer, 178 00:09:02,000 --> 00:09:04,000 pero al que está haciendo esta parte del software 179 00:09:04,000 --> 00:09:05,000 le da exactamente igual, 180 00:09:05,000 --> 00:09:07,000 él hace su trabajo estupendamente 181 00:09:07,000 --> 00:09:10,000 y sigue y ya el otro cuando vuelve de su baja, 182 00:09:10,000 --> 00:09:11,000 pues ya está, 183 00:09:11,000 --> 00:09:15,000 ya completará esto. 184 00:09:15,000 --> 00:09:20,000 Meter el pedido en el array de pedidos del cliente. 185 00:09:20,000 --> 00:09:21,000 ¿Vale? 186 00:09:21,000 --> 00:09:22,000 Entonces, 187 00:09:22,000 --> 00:09:24,000 el tío que estaba de baja, 188 00:09:24,000 --> 00:09:27,000 este método, 189 00:09:27,000 --> 00:09:29,000 este método no lo ha hecho, 190 00:09:29,000 --> 00:09:30,000 bueno, ya lo hará, 191 00:09:30,000 --> 00:09:34,000 pero nosotros podemos hacer nuestro software perfectamente 192 00:09:34,000 --> 00:09:35,000 y cuando él lo rellene, 193 00:09:35,000 --> 00:09:36,000 pues ya está, 194 00:09:36,000 --> 00:09:38,000 nosotros no tendremos que tocar nada. 195 00:09:38,000 --> 00:09:41,000 Lo que pasa es que si entonces ahora queremos ya ejecutarlo, 196 00:09:41,000 --> 00:09:42,000 pues hombre, 197 00:09:42,000 --> 00:09:43,000 conviene que ya tengamos esa parte hecha, 198 00:09:43,000 --> 00:09:45,000 porque si no incorporar pedido no va a hacer nada, 199 00:09:45,000 --> 00:09:47,000 todo está vacío. 200 00:09:47,000 --> 00:09:48,000 ¿Vale? 201 00:09:48,000 --> 00:09:49,000 Pues para probarlo vamos a, 202 00:09:49,000 --> 00:09:50,000 ala, ya nos incorporamos de la baja 203 00:09:50,000 --> 00:09:53,000 y vamos a hacer este método. 204 00:09:53,000 --> 00:09:55,000 Bueno, pues incorporar pedidos 205 00:09:55,000 --> 00:09:57,000 es como el de incorporar ítem, 206 00:09:57,000 --> 00:09:58,000 mal ítem del pedido, 207 00:09:58,000 --> 00:09:59,000 es lo mismo, 208 00:09:59,000 --> 00:10:01,000 es la misma historia de siempre. 209 00:10:01,000 --> 00:10:03,000 Cogemos este array, 210 00:10:03,000 --> 00:10:04,000 si es nul, 211 00:10:04,000 --> 00:10:05,000 creo una primera posición y la pongo 212 00:10:05,000 --> 00:10:06,000 y si no es nul, 213 00:10:06,000 --> 00:10:07,000 creo una adicional con una más, 214 00:10:07,000 --> 00:10:08,000 copio y pego. 215 00:10:08,000 --> 00:10:10,000 Lo de siempre. 216 00:10:10,000 --> 00:10:14,000 Esto ya es que se puede escribir rapidísimamente 217 00:10:14,000 --> 00:10:17,000 porque es la historia de toda la vida. 218 00:10:17,000 --> 00:10:18,000 ¿Vale? 219 00:10:18,000 --> 00:10:19,000 Entonces, 220 00:10:19,000 --> 00:10:20,000 esto sería, 221 00:10:20,000 --> 00:10:22,000 si es el primer pedido 222 00:10:22,000 --> 00:10:23,000 o lo que es lo mismo, 223 00:10:23,000 --> 00:10:24,000 si pedido es igual a nul, 224 00:10:24,000 --> 00:10:25,000 porque es el primero, 225 00:10:25,000 --> 00:10:29,000 pues entonces me creo mi primer array de pedidos 226 00:10:29,000 --> 00:10:32,000 con una posición una, 227 00:10:32,000 --> 00:10:35,000 única, 228 00:10:35,000 --> 00:10:38,000 y pongo en esa única posición 229 00:10:38,000 --> 00:10:40,000 que es pedidos de cero, 230 00:10:40,000 --> 00:10:42,000 pongo el pedido P. 231 00:10:42,000 --> 00:10:43,000 ¿Vale? 232 00:10:43,000 --> 00:10:44,000 Y ya he terminado, 233 00:10:44,000 --> 00:10:45,000 no tengo más que hacer, 234 00:10:45,000 --> 00:10:46,000 con lo cual me voy del método, 235 00:10:46,000 --> 00:10:47,000 retún, punto, pelota, 236 00:10:47,000 --> 00:10:48,000 se acabó. 237 00:10:48,000 --> 00:10:50,000 ¿Vale? 238 00:10:50,000 --> 00:10:52,000 Que pedidos no es igual a nul, 239 00:10:52,000 --> 00:10:53,000 ya tiene pedidos. 240 00:10:53,000 --> 00:10:54,000 Entonces, 241 00:10:54,000 --> 00:10:55,000 el if no se ejecuta, 242 00:10:55,000 --> 00:10:56,000 luego vengo por aquí, 243 00:10:56,000 --> 00:10:57,000 no hay un retún, 244 00:10:57,000 --> 00:10:58,000 vengo por aquí, 245 00:10:58,000 --> 00:10:59,000 y en ese caso lo de siempre, 246 00:10:59,000 --> 00:11:02,000 pues habrá que hacer una raya auxiliar 247 00:11:02,000 --> 00:11:04,000 de pedidos 248 00:11:04,000 --> 00:11:06,000 con una posición más 249 00:11:06,000 --> 00:11:09,000 que la que tiene el viejo, 250 00:11:09,000 --> 00:11:13,000 una posición más que la que tiene el viejo, 251 00:11:13,000 --> 00:11:17,000 y la que tiene el viejo es pedidos.length 252 00:11:17,000 --> 00:11:20,000 más uno, 253 00:11:24,000 --> 00:11:28,000 y ahora ya copiamos el viejo en el nuevo, 254 00:11:32,000 --> 00:11:36,000 así sea menor que pedidos.length 255 00:11:36,000 --> 00:11:39,000 incrementando i, 256 00:11:39,000 --> 00:11:41,000 copiamos el viejo en el nuevo, 257 00:11:41,000 --> 00:11:43,000 que es aux de i 258 00:11:44,000 --> 00:11:48,000 igual a pedidos de i, 259 00:11:48,000 --> 00:11:50,000 y una vez que hemos copiado el viejo en el nuevo, 260 00:11:50,000 --> 00:11:52,000 en la posición que nos falta, 261 00:11:52,000 --> 00:11:56,000 que es aux de aux.length menos uno, 262 00:11:56,000 --> 00:11:57,000 que es la última de aux, 263 00:11:57,000 --> 00:12:00,000 pues en esta ponemos el nuevo, 264 00:12:00,000 --> 00:12:02,000 y ahora ya no se nos olvide terminar 265 00:12:02,000 --> 00:12:06,000 sustituyendo el viejo por el nuevo. 266 00:12:06,000 --> 00:12:07,000 Pues ya está, 267 00:12:07,000 --> 00:12:08,000 el rollo de siempre, 268 00:12:08,000 --> 00:12:10,000 ahí plantamos. 269 00:12:10,000 --> 00:12:12,000 ¿Vale? 270 00:12:14,000 --> 00:12:17,000 Venga, pues ya está. 271 00:12:17,000 --> 00:12:19,000 Lo que importa aquí es que ya tenemos 272 00:12:19,000 --> 00:12:20,000 este método resuelto, 273 00:12:20,000 --> 00:12:22,000 que nos mete un nuevo pedido en el array. 274 00:12:22,000 --> 00:12:25,000 Ya lo tenemos, ¿vale? 275 00:12:28,000 --> 00:12:30,000 Bueno, pues ahora a ver si tenemos ya 276 00:12:30,000 --> 00:12:32,000 todo lo que necesitamos para poder probar 277 00:12:32,000 --> 00:12:35,000 al menos las funciones básicas de este main. 278 00:12:35,000 --> 00:12:36,000 Este main nos permite, 279 00:12:36,000 --> 00:12:38,000 como yo tengo la versión más antigua, 280 00:12:38,000 --> 00:12:39,000 nos permite crear un pedido, ¿verdad? 281 00:12:39,000 --> 00:12:41,000 Porque yo la tenía ya hecha aquí, 282 00:12:41,000 --> 00:12:45,000 ¿sí? Permite crear un pedido. 283 00:12:45,000 --> 00:12:48,000 Permite añadir un ítem a pedido, 284 00:12:48,000 --> 00:12:51,000 porque lo tenía ya aquí hecho en el caso dos, 285 00:12:51,000 --> 00:12:55,000 a través del método addItem, 286 00:12:55,000 --> 00:12:59,000 que lo tengo aquí hecho. 287 00:12:59,000 --> 00:13:01,000 ¿Vale? 288 00:13:05,000 --> 00:13:06,000 Y el resto de las funciones, 289 00:13:06,000 --> 00:13:07,000 ya yo no las tengo hechas, 290 00:13:07,000 --> 00:13:10,000 vosotros sí. 291 00:13:10,000 --> 00:13:11,000 Vamos a crear un cliente, 292 00:13:11,000 --> 00:13:14,000 que lo tenemos en la 10. 293 00:13:14,000 --> 00:13:17,000 Incorporar pedido a cliente. 294 00:13:17,000 --> 00:13:18,000 Con eso, hombre, ya veremos 295 00:13:18,000 --> 00:13:19,000 si da errores de ejecución o no. 296 00:13:19,000 --> 00:13:21,000 Si da null point exception o no los da. 297 00:13:21,000 --> 00:13:22,000 Si hemos hecho cosas raras, 298 00:13:22,000 --> 00:13:23,000 dará null point exception. 299 00:13:23,000 --> 00:13:26,000 Pero no vamos a poder ver si lo ha hecho bien, 300 00:13:26,000 --> 00:13:32,000 porque no tenemos mostrar los datos de un cliente. 301 00:13:32,000 --> 00:13:35,000 Sería interesante hacer esa funcionalidad rápidamente, 302 00:13:35,000 --> 00:13:37,000 que nos muestre datos de un cliente, 303 00:13:37,000 --> 00:13:40,000 para ver si le incorpora el pedido correctamente. 304 00:13:40,000 --> 00:13:43,000 Vamos a ponerla en la 11. 305 00:13:43,000 --> 00:13:48,000 La 9, mostrar datos del cliente que ha hecho un pedido. 306 00:13:48,000 --> 00:13:50,000 Tienes razón, vale, vale. 307 00:13:50,000 --> 00:13:54,000 Vamos a... 308 00:13:54,000 --> 00:13:55,000 Sí, pero yo quería una funcionalidad 309 00:13:55,000 --> 00:13:58,000 que les daba un cliente mostrar todos los pedidos que ha hecho. 310 00:13:58,000 --> 00:13:59,000 A ver si es verdad que ha incorporado 311 00:13:59,000 --> 00:14:02,000 los pedidos que le estamos diciendo. 312 00:14:02,000 --> 00:14:03,000 Mostrar pedidos de un cliente. 313 00:14:03,000 --> 00:14:05,000 Vamos a hacer la 11. 314 00:14:05,000 --> 00:14:08,000 Mostrar pedidos de un cliente. 315 00:14:08,000 --> 00:14:12,000 Vamos a mostrar pedidos de un cliente cualquiera. 316 00:14:12,000 --> 00:14:14,000 Dado su NIF, claro. 317 00:14:14,000 --> 00:14:21,000 Pues este será el caso 11. 318 00:14:21,000 --> 00:14:28,000 Vale, pues habrá que pedir primero el NIF del cliente. 319 00:14:28,000 --> 00:14:29,000 Introduzca NIF. 320 00:14:29,000 --> 00:14:30,000 Introduzca NIF, vale. 321 00:14:30,000 --> 00:14:35,000 Lo localizamos en el array. 322 00:14:35,000 --> 00:14:38,000 Y sea menor que clientes... 323 00:14:38,000 --> 00:14:39,000 No, clientes len... 324 00:14:39,000 --> 00:14:42,000 No, posclientes, claro. 325 00:14:42,000 --> 00:14:49,000 Y sea menor... 326 00:14:49,000 --> 00:14:50,000 Incrementando. 327 00:14:50,000 --> 00:14:52,000 Y lo localizamos al cliente, como siempre. 328 00:14:52,000 --> 00:14:56,000 Y aquí algo he escrito mal, esto. 329 00:14:56,000 --> 00:15:00,000 Y ahora sí, clientes de I. 330 00:15:00,000 --> 00:15:09,000 Su NIF es igual al NIF de búsqueda. 331 00:15:09,000 --> 00:15:11,000 Ahora ya es clientes de I, 332 00:15:11,000 --> 00:15:13,000 aquel del que le quiero mostrar los datos. 333 00:15:13,000 --> 00:15:14,000 Entonces yo podría ahora ponerme aquí 334 00:15:14,000 --> 00:15:17,000 y hacer un montón de System Outprint LN, 335 00:15:17,000 --> 00:15:20,000 un FOR para recoger sus pedidos y mostrarlos. 336 00:15:20,000 --> 00:15:22,000 Un código muy largo, 337 00:15:22,000 --> 00:15:24,000 solo para mostrar los datos de un cliente. 338 00:15:24,000 --> 00:15:27,000 Entonces aquí sí que me pide el cuerpo, 339 00:15:27,000 --> 00:15:29,000 mira, haz un método. 340 00:15:29,000 --> 00:15:30,000 Mostrar datos cliente, 341 00:15:30,000 --> 00:15:32,000 que pongas en la clase cliente, 342 00:15:32,000 --> 00:15:33,000 y que cuando un cliente lo llame, 343 00:15:33,000 --> 00:15:36,000 te haga todo el chorizo de mostrar para ti y para tal. 344 00:15:36,000 --> 00:15:38,000 Vale. 345 00:15:38,000 --> 00:15:39,000 Entonces si somos vagos, 346 00:15:39,000 --> 00:15:41,000 y yo creo que nos estamos haciendo demasiado vagos 347 00:15:41,000 --> 00:15:44,000 con esto de lo que la Eclipse ayuda, 348 00:15:44,000 --> 00:15:46,000 pues uno hace, venga. 349 00:15:46,000 --> 00:15:50,000 Ojalá yo tuviera un método que se llama 350 00:15:51,000 --> 00:15:54,000 mostrar datos cliente. 351 00:15:54,000 --> 00:15:56,000 Ojalá lo tuviera, 352 00:15:56,000 --> 00:15:59,000 un método que se llamara así. 353 00:15:59,000 --> 00:16:01,000 Y cuando yo lo llamara, 354 00:16:01,000 --> 00:16:02,000 mostrar datos, 355 00:16:02,000 --> 00:16:05,000 me mostrara todos los datos del cliente este, 356 00:16:05,000 --> 00:16:06,000 que lo llama. 357 00:16:06,000 --> 00:16:08,000 Ojalá lo tuviera. 358 00:16:08,000 --> 00:16:10,000 Y entonces pues pongo ahí el punto de la llamada, 359 00:16:10,000 --> 00:16:12,000 pues aspirando que alguien me lo haga, 360 00:16:12,000 --> 00:16:14,000 porque estaría muy bien. 361 00:16:14,000 --> 00:16:15,000 Ahora mismo no lo tengo, 362 00:16:15,000 --> 00:16:16,000 y por eso me lo pone en rojo. 363 00:16:16,000 --> 00:16:17,000 Me dice, 364 00:16:17,000 --> 00:16:20,000 no tienes ningún método para mostrar los clientes. 365 00:16:20,000 --> 00:16:22,000 Vale. 366 00:16:22,000 --> 00:16:24,000 Pero el Eclipse, 367 00:16:24,000 --> 00:16:26,000 que es estúpido e imbécil, 368 00:16:26,000 --> 00:16:31,000 pero a veces es capaz de hacer algo del trabajo sucio, 369 00:16:31,000 --> 00:16:33,000 pues en la línea roja me dice, 370 00:16:33,000 --> 00:16:35,000 venga, 371 00:16:35,000 --> 00:16:37,000 que tú quieres un método mostrar datos, 372 00:16:37,000 --> 00:16:38,000 venga, 373 00:16:38,000 --> 00:16:41,000 créalo. 374 00:16:41,000 --> 00:16:42,000 Pinchamos ahí, 375 00:16:42,000 --> 00:16:43,000 crear. 376 00:16:43,000 --> 00:16:45,000 Repito lo mismo que le he dicho a ellos, 377 00:16:45,000 --> 00:16:50,000 cuidado con las sugerencias que da el compilador aquí, 378 00:16:50,000 --> 00:16:54,000 porque el 99% no nos interesa porque están fatal. 379 00:16:54,000 --> 00:16:56,000 Nosotros cuando pinchamos ahí, 380 00:16:56,000 --> 00:16:58,000 es porque ya sabemos qué queremos hacer. 381 00:16:58,000 --> 00:17:00,000 Ya sabemos qué queremos hacer. 382 00:17:00,000 --> 00:17:02,000 Y buscamos saber si nos lo ofrece. 383 00:17:02,000 --> 00:17:04,000 Pero no a ver qué nos ofrece y yo elijo. 384 00:17:04,000 --> 00:17:06,000 Porque lo que nos ofrece a mayoría de los casos 385 00:17:06,000 --> 00:17:08,000 no tiene ningún sentido. 386 00:17:08,000 --> 00:17:10,000 Pero yo aquí sé lo que quiero hacer. 387 00:17:10,000 --> 00:17:12,000 Es crear un método como este. 388 00:17:12,000 --> 00:17:14,000 Venga, voy a ver si me lo ofrece. 389 00:17:14,000 --> 00:17:16,000 Anda, venga. 390 00:17:16,000 --> 00:17:17,000 Pues entonces yo le digo, 391 00:17:17,000 --> 00:17:18,000 ah, pues sí, quiero. 392 00:17:18,000 --> 00:17:19,000 Le dais doble click 393 00:17:19,000 --> 00:17:22,000 y ya él se va a la clase cliente 394 00:17:22,000 --> 00:17:25,000 y te hace el método con los parámetros de entrada 395 00:17:25,000 --> 00:17:27,000 que en este caso son cero. 396 00:17:27,000 --> 00:17:28,000 Voy y te dice, 397 00:17:28,000 --> 00:17:30,000 pues ya está, ya te lo he hecho. 398 00:17:30,000 --> 00:17:31,000 Claro, lo hacía lógicamente, 399 00:17:31,000 --> 00:17:32,000 le metes todo el código normal. 400 00:17:32,000 --> 00:17:35,000 Vale, pero ya sabemos qué es. 401 00:17:35,000 --> 00:17:36,000 En la clase cliente, 402 00:17:36,000 --> 00:17:37,000 que es donde estamos, 403 00:17:37,000 --> 00:17:38,000 donde lo ha hecho, 404 00:17:38,000 --> 00:17:39,000 mostrar esto, 405 00:17:39,000 --> 00:17:41,000 ya está, mostrarlo. 406 00:17:41,000 --> 00:17:42,000 Pues venga, 407 00:17:42,000 --> 00:17:46,000 vamos a mostrar ahí. 408 00:17:46,000 --> 00:17:49,000 Aquí ya nos hacemos nuestro system out así 409 00:17:49,000 --> 00:17:52,000 muy rápidos y muy feos 410 00:17:52,000 --> 00:17:55,000 para no perder mucho tiempo. 411 00:17:55,000 --> 00:17:58,000 Vamos a poner solamente el nombre del cliente, 412 00:17:58,000 --> 00:17:59,000 no nif ni nada, 413 00:17:59,000 --> 00:18:03,000 solo por ser rápidos. 414 00:18:03,000 --> 00:18:04,000 Si lo hiciéramos bien, 415 00:18:04,000 --> 00:18:08,000 venga, nombre del cliente es este. 416 00:18:08,000 --> 00:18:11,000 Y ahora vamos a mostrar los pedidos que ha hecho 417 00:18:11,000 --> 00:18:12,000 para comprobar que efectivamente 418 00:18:12,000 --> 00:18:15,000 los pedidos se han incorporado, etc. 419 00:18:15,000 --> 00:18:16,000 Para mostrar los pedidos, 420 00:18:16,000 --> 00:18:18,000 pues tendremos que hacer un for. 421 00:18:18,000 --> 00:18:19,000 De nuevo vamos a ser vagos, 422 00:18:19,000 --> 00:18:21,000 como vamos a consultar. 423 00:18:21,000 --> 00:18:24,000 Vamos a hacer un for each. 424 00:18:24,000 --> 00:18:25,000 Voy a recorrer el array de pedidos 425 00:18:25,000 --> 00:18:27,000 que tengo aquí arriba. 426 00:18:27,000 --> 00:18:29,000 Este array. 427 00:18:29,000 --> 00:18:31,000 Me voy a hacer aquí un for each 428 00:18:31,000 --> 00:18:39,000 y ahora ya voy a mostrar. 429 00:18:39,000 --> 00:18:43,000 Vale, le voy a poner un tabulador 430 00:18:43,000 --> 00:18:44,000 para que me quede tabulado 431 00:18:44,000 --> 00:18:46,000 los pedidos del nombre del cliente. 432 00:18:46,000 --> 00:18:48,000 Vale, esto es un tabulador 433 00:18:48,000 --> 00:18:50,000 porque es carácter de escape. 434 00:18:50,000 --> 00:18:51,000 Es un tabulador, 435 00:18:51,000 --> 00:18:53,000 un carácter especial del teclado. 436 00:18:53,000 --> 00:18:55,000 Y venga, después del tabulador 437 00:18:55,000 --> 00:18:57,000 pues vamos a poner 438 00:18:57,000 --> 00:19:01,000 descripción pedido. 439 00:19:01,000 --> 00:19:07,000 Descripción del pedido. 440 00:19:07,000 --> 00:19:09,000 Y ahora esto lo tendremos que concatenar 441 00:19:09,000 --> 00:19:16,000 con p.getDescripción. 442 00:19:16,000 --> 00:19:18,000 Vale. 443 00:19:18,000 --> 00:19:20,000 Y así podríamos mostrar 444 00:19:20,000 --> 00:19:21,000 el resto de propiedades 445 00:19:21,000 --> 00:19:24,000 de cada pedido p del array. 446 00:19:24,000 --> 00:19:26,000 Descripción y podríamos meternos 447 00:19:26,000 --> 00:19:28,000 a mostrar los ítems. 448 00:19:28,000 --> 00:19:31,000 Pero bueno, vale, no nos alargamos. 449 00:19:31,000 --> 00:19:32,000 Lo ideal es que uno haga aquí un método 450 00:19:32,000 --> 00:19:34,000 que te muestre todo, claro. 451 00:19:34,000 --> 00:19:36,000 Descripción del pedido, código. 452 00:19:36,000 --> 00:19:39,000 Se ponga a recorrer los ítems de p. 453 00:19:39,000 --> 00:19:41,000 Que p recordad que tiene 454 00:19:41,000 --> 00:19:43,000 un array de ítems 455 00:19:43,000 --> 00:19:47,000 que está aquí. 456 00:19:47,000 --> 00:19:49,000 Aquí, perdón. 457 00:19:49,000 --> 00:19:51,000 Está ahí. 458 00:19:51,000 --> 00:19:53,000 Entonces para que este método 459 00:19:53,000 --> 00:19:55,000 de mostrar datos del cliente 460 00:19:55,000 --> 00:19:56,000 sea completo, 461 00:19:56,000 --> 00:19:58,000 podríamos mostrar ahí de todo. 462 00:19:58,000 --> 00:20:00,000 Como yo solamente voy a verificar 463 00:20:00,000 --> 00:20:01,000 que funciona, 464 00:20:01,000 --> 00:20:02,000 voy a mostrar solamente 465 00:20:02,000 --> 00:20:04,000 para cada cliente su nombre 466 00:20:05,000 --> 00:20:06,000 y las descripciones 467 00:20:06,000 --> 00:20:08,000 de todos los pedidos que ha hecho. 468 00:20:08,000 --> 00:20:11,000 Pero incorporad vosotros más cosas 469 00:20:11,000 --> 00:20:13,000 para cada pedido también, 470 00:20:13,000 --> 00:20:14,000 un for que recorra los ítems 471 00:20:14,000 --> 00:20:17,000 para ver que está todo bien. 472 00:20:17,000 --> 00:20:19,000 Vale, ya tengo a mostrar datos. 473 00:20:19,000 --> 00:20:21,000 Bueno, pues ahora mi main 474 00:20:21,000 --> 00:20:22,000 ya vamos a probarlo. 475 00:20:22,000 --> 00:20:23,000 Vamos a probarlo a ver si puedo 476 00:20:23,000 --> 00:20:25,000 insertar pedido, insertar cliente, 477 00:20:25,000 --> 00:20:27,000 asociar pedido a cliente 478 00:20:27,000 --> 00:20:28,000 y luego cuando muestre 479 00:20:28,000 --> 00:20:29,000 datos del cliente 480 00:20:29,000 --> 00:20:30,000 a ver si es verdad que lo tiene, 481 00:20:30,000 --> 00:20:32,000 lo tiene todo. 482 00:20:32,000 --> 00:20:35,000 Vamos a ver. 483 00:20:35,000 --> 00:20:36,000 Porque estamos probando 484 00:20:36,000 --> 00:20:37,000 muchas cosas de golpe 485 00:20:37,000 --> 00:20:41,000 y alguna pues habremos escrito mal. 486 00:20:41,000 --> 00:20:45,000 Pues venga. 487 00:20:45,000 --> 00:20:46,000 Venga, vamos a crear un pedido 488 00:20:46,000 --> 00:20:50,000 lo primero de todo. 489 00:20:50,000 --> 00:20:51,000 Venga, me acaban de... 490 00:20:51,000 --> 00:20:53,000 Bueno, yo ya empiezo con los 491 00:20:53,000 --> 00:20:55,000 scan necklines in 492 00:20:55,000 --> 00:20:57,000 porque no tengo la clase teclado 493 00:20:57,000 --> 00:20:59,000 que es muy bonita. 494 00:20:59,000 --> 00:21:00,000 Entonces me falta a mí 495 00:21:00,000 --> 00:21:06,000 un neckline después de algún sitio. 496 00:21:06,000 --> 00:21:10,000 Me falta aquí. 497 00:21:10,000 --> 00:21:11,000 Esto ya lo tenía arreglado 498 00:21:11,000 --> 00:21:13,000 en la versión del portátil 499 00:21:13,000 --> 00:21:15,000 pero en esta no. 500 00:21:15,000 --> 00:21:17,000 Me falta aquí un neckline. 501 00:21:17,000 --> 00:21:20,000 ¿Dónde más me falta? 502 00:21:20,000 --> 00:21:22,000 Me va a faltar aquí. 503 00:21:22,000 --> 00:21:24,000 Después de haber leído esto. 504 00:21:24,000 --> 00:21:27,000 scan.neckline 505 00:21:27,000 --> 00:21:28,000 también me va a faltar. 506 00:21:28,000 --> 00:21:29,000 ¿Ves? Por esto es bueno 507 00:21:29,000 --> 00:21:31,000 que os acostumbréis a usar la clase 508 00:21:31,000 --> 00:21:32,000 importándola como hard, 509 00:21:32,000 --> 00:21:35,000 la clase que hicimos ayer 510 00:21:35,000 --> 00:21:39,000 porque va a ser todo mucho más fácil. 511 00:21:39,000 --> 00:21:40,000 Vale, y ya no me van a faltar más 512 00:21:40,000 --> 00:21:42,000 porque no tengo más cosas hechas. 513 00:21:42,000 --> 00:21:43,000 Creo. 514 00:21:43,000 --> 00:21:45,000 Venga, pues volvemos. 515 00:21:45,000 --> 00:21:47,000 Siguiente prueba. 516 00:21:47,000 --> 00:21:50,000 Que la primera prueba no la hemos pasado. 517 00:21:50,000 --> 00:21:51,000 A ver la siguiente. 518 00:21:51,000 --> 00:21:53,000 Creamos pedido. 519 00:21:53,000 --> 00:21:54,000 Vale, ya se para en código. 520 00:21:54,000 --> 00:21:55,000 Menos mal. 521 00:21:55,000 --> 00:21:58,000 Venga, pedido de código 1. 522 00:21:58,000 --> 00:22:00,000 Descripción del pedido. 523 00:22:00,000 --> 00:22:02,000 Como siempre, casi no se nos olvida. 524 00:22:02,000 --> 00:22:03,000 Bolis. 525 00:22:03,000 --> 00:22:05,000 Pedido 1. 526 00:22:05,000 --> 00:22:07,000 Que tiene bolis. 527 00:22:10,000 --> 00:22:11,000 El otro día ya probamos 528 00:22:11,000 --> 00:22:13,000 lo de añadir ítems a un pedido. 529 00:22:13,000 --> 00:22:14,000 Vimos que funcionaba. 530 00:22:14,000 --> 00:22:15,000 No le voy a añadir ningún ítem. 531 00:22:15,000 --> 00:22:17,000 Un pedido de bolis sin ítem. 532 00:22:17,000 --> 00:22:19,000 Ya está. 533 00:22:19,000 --> 00:22:20,000 Pero vamos, ya sabemos que funciona 534 00:22:20,000 --> 00:22:21,000 añadir ítems. 535 00:22:21,000 --> 00:22:22,000 Vale, venga. 536 00:22:22,000 --> 00:22:23,000 Vamos a meter un cliente. 537 00:22:23,000 --> 00:22:24,000 Ya tenemos un pedido. 538 00:22:24,000 --> 00:22:25,000 Vamos a meter un cliente. 539 00:22:25,000 --> 00:22:28,000 Cliente era la opción 10. 540 00:22:30,000 --> 00:22:32,000 Introduzca NIF del cliente. 541 00:22:32,000 --> 00:22:34,000 Pues 1, 2, 3, 4. 542 00:22:34,000 --> 00:22:37,000 Introduzca nombre del cliente. 543 00:22:37,000 --> 00:22:38,000 Repito. 544 00:22:38,000 --> 00:22:40,000 Introduzca dirección. 545 00:22:40,000 --> 00:22:42,000 Vive en Madrid. 546 00:22:42,000 --> 00:22:44,000 Bueno, en principio ya se ha creado el cliente. 547 00:22:44,000 --> 00:22:47,000 De NIF 1, 2, 3, 4. 548 00:22:48,000 --> 00:22:51,000 Vale, vamos a mostrar ahora mismo sus datos. 549 00:22:51,000 --> 00:22:52,000 Ahora mismo no va a tener pedidos. 550 00:22:52,000 --> 00:22:54,000 Vamos a ver qué nos muestra. 551 00:22:54,000 --> 00:22:58,000 Mostrar pedidos de un cliente. 552 00:22:58,000 --> 00:22:59,000 11. 553 00:22:59,000 --> 00:23:01,000 La opción 11. 554 00:23:01,000 --> 00:23:04,000 Introduzca NIF de qué cliente quieres mostrar datos. 555 00:23:04,000 --> 00:23:06,000 Queremos mostrar datos del cliente 1, 2, 3, 4. 556 00:23:06,000 --> 00:23:07,000 Único que tenemos. 557 00:23:07,000 --> 00:23:08,000 Único que tenemos. 558 00:23:08,000 --> 00:23:10,000 1, 2, 3, 4. 559 00:23:10,000 --> 00:23:12,000 Vale, pues nos muestra el nombre. 560 00:23:12,000 --> 00:23:15,000 Y aquí nos dice. 561 00:23:15,000 --> 00:23:16,000 Esto casi lo podemos ver. 562 00:23:16,000 --> 00:23:18,000 Null pointer exception. 563 00:23:18,000 --> 00:23:21,000 Cuando muestras los pedidos de un cliente 564 00:23:21,000 --> 00:23:26,000 que todavía no tiene ninguno. 565 00:23:26,000 --> 00:23:27,000 Era de espera. 566 00:23:27,000 --> 00:23:28,000 Pero es típico. 567 00:23:28,000 --> 00:23:29,000 Uno va a hacer la primera prueba. 568 00:23:29,000 --> 00:23:30,000 Le sale esto. 569 00:23:30,000 --> 00:23:31,000 Primero. 570 00:23:31,000 --> 00:23:34,000 Con estas cosas recordad que esto no se trata de. 571 00:23:34,000 --> 00:23:35,000 ¿Cuál es el pedido? 572 00:23:35,000 --> 00:23:36,000 ¿Me ha fallado? 573 00:23:36,000 --> 00:23:37,000 No. 574 00:23:37,000 --> 00:23:42,000 Esto es obviamente la clave de todo. 575 00:23:42,000 --> 00:23:45,000 Y esto hay que saber entenderlo y destriparlo. 576 00:23:45,000 --> 00:23:46,000 Vale. 577 00:23:46,000 --> 00:23:47,000 Primero. 578 00:23:47,000 --> 00:23:48,000 Esta es la clave. 579 00:23:48,000 --> 00:23:49,000 Null pointer exception. 580 00:23:49,000 --> 00:23:50,000 Ya sabemos lo que significa. 581 00:23:50,000 --> 00:23:52,000 Un objeto que es nulo. 582 00:23:52,000 --> 00:23:53,000 En algún sitio. 583 00:23:53,000 --> 00:23:55,000 Ese objeto que es nulo. 584 00:23:55,000 --> 00:23:57,000 Está intentando llamar a métodos, a propiedades. 585 00:23:57,000 --> 00:23:58,000 Y es nulo. 586 00:23:58,000 --> 00:23:59,000 Si es nulo es imposible. 587 00:23:59,000 --> 00:24:01,000 Null pointer exception. 588 00:24:01,000 --> 00:24:03,000 Ya sabemos que esa es la causa. 589 00:24:03,000 --> 00:24:04,000 Ahora lo siguiente. 590 00:24:04,000 --> 00:24:05,000 ¿Y dónde? 591 00:24:05,000 --> 00:24:06,000 ¿En qué momento ha pasado eso? 592 00:24:06,000 --> 00:24:08,000 ¿En qué momento ha pasado que yo haya hecho eso? 593 00:24:08,000 --> 00:24:09,000 Pues vamos bajando. 594 00:24:09,000 --> 00:24:12,000 Hasta que llegamos a la primera línea. 595 00:24:12,000 --> 00:24:15,000 Que nos aparece un código que hemos hecho nosotros. 596 00:24:15,000 --> 00:24:19,000 Porque aquí arriba podría haber clases internas de la máquina virtual. 597 00:24:19,000 --> 00:24:20,000 Y aquí. 598 00:24:20,000 --> 00:24:21,000 Ah, cliente. 599 00:24:21,000 --> 00:24:22,000 Esta la he hecho yo. 600 00:24:22,000 --> 00:24:23,000 Esta es mía. 601 00:24:23,000 --> 00:24:24,000 Cliente. 602 00:24:24,000 --> 00:24:25,000 Ha sido cuando llamábamos a datos. 603 00:24:25,000 --> 00:24:26,000 Voy a pinchar ahí. 604 00:24:26,000 --> 00:24:27,000 Voy a pinchar ahí y a ver dónde ha estado el problema. 605 00:24:27,000 --> 00:24:29,000 Pinchamos ahí. 606 00:24:29,000 --> 00:24:31,000 Anda. 607 00:24:31,000 --> 00:24:33,000 Claro. 608 00:24:33,000 --> 00:24:35,000 ¿Qué pasa? 609 00:24:35,000 --> 00:24:36,000 For each. 610 00:24:36,000 --> 00:24:38,000 ¿Por qué os digo a veces? 611 00:24:38,000 --> 00:24:39,000 Uy, el for each cuidadín. 612 00:24:39,000 --> 00:24:41,000 Que a veces es problemático. 613 00:24:41,000 --> 00:24:43,000 Cuidado con él. 614 00:24:43,000 --> 00:24:44,000 Vale. 615 00:24:44,000 --> 00:24:45,000 Con un for de índice. 616 00:24:45,000 --> 00:24:47,000 Aquí no habría sido null pointer exception. 617 00:24:47,000 --> 00:24:48,000 ¿Por qué? 618 00:24:48,000 --> 00:24:50,000 Porque el for de índice sería. 619 00:24:50,000 --> 00:24:51,000 Ah, bueno. 620 00:24:51,000 --> 00:24:52,000 Perdón. 621 00:24:52,000 --> 00:24:53,000 Sí que habría salido. 622 00:24:53,000 --> 00:24:54,000 Vale. 623 00:24:54,000 --> 00:24:55,000 A ver. 624 00:24:55,000 --> 00:24:56,000 El for each. 625 00:24:56,000 --> 00:24:57,000 ¿Qué está haciendo? 626 00:24:57,000 --> 00:24:58,000 Pedidos. 627 00:24:58,000 --> 00:24:59,000 Pedidos es null. 628 00:24:59,000 --> 00:25:00,000 Uno podría pensar. 629 00:25:00,000 --> 00:25:02,000 Como es null, no entra. 630 00:25:02,000 --> 00:25:03,000 No entra. 631 00:25:03,000 --> 00:25:04,000 No, no es verdad. 632 00:25:04,000 --> 00:25:06,000 Es que el for each, antes de eso, 633 00:25:06,000 --> 00:25:07,000 trata de sacar propiedades de pedidos. 634 00:25:07,000 --> 00:25:08,000 ¿Cómo? 635 00:25:08,000 --> 00:25:09,000 ¿Cuál es tu longitud? 636 00:25:09,000 --> 00:25:11,000 ¿Cuál es tu longitud para empezar a recorrerlo? 637 00:25:11,000 --> 00:25:13,000 Pues cuando se haga el pedidos.len, 638 00:25:13,000 --> 00:25:16,000 ahí es donde le viene el null pointer exception. 639 00:25:16,000 --> 00:25:18,000 Entonces, aquí nosotros, físicamente, 640 00:25:18,000 --> 00:25:21,000 no nos parece estar viendo que estemos llamando 641 00:25:21,000 --> 00:25:23,000 a ninguna propiedad de pedidos. 642 00:25:23,000 --> 00:25:24,000 No la estamos viendo. 643 00:25:24,000 --> 00:25:26,000 Pero el for each por dentro lo hace. 644 00:25:26,000 --> 00:25:27,000 El for each hace. 645 00:25:27,000 --> 00:25:28,000 A ver, pedidos. 646 00:25:28,000 --> 00:25:29,000 Hay que recorrer pedidos. 647 00:25:29,000 --> 00:25:30,000 Muy bien. 648 00:25:30,000 --> 00:25:32,000 Voy a hacer yo por dentro un pedidos.len. 649 00:25:32,000 --> 00:25:33,000 A ver cuál es la dirección. 650 00:25:33,000 --> 00:25:34,000 La longitud. 651 00:25:34,000 --> 00:25:36,000 Pues cuando haga el pedidos.len, 652 00:25:36,000 --> 00:25:38,000 le sale el null pointer exception. 653 00:25:38,000 --> 00:25:40,000 Ese es el problema. 654 00:25:40,000 --> 00:25:42,000 Que lo hubiéramos hecho con un for int. 655 00:25:42,000 --> 00:25:44,000 Con un for de índice. 656 00:25:45,000 --> 00:25:47,000 En realidad nos habría salido también un problema. 657 00:25:47,000 --> 00:25:48,000 En este caso. 658 00:25:48,000 --> 00:25:50,000 Porque habríamos hecho esto. 659 00:25:50,000 --> 00:25:52,000 Desde int igual a cero. 660 00:25:52,000 --> 00:25:56,000 Mientras i sea menor que pedidos.len. 661 00:25:58,000 --> 00:26:01,000 Y más más habríamos hecho esto. 662 00:26:01,000 --> 00:26:03,000 Descripción esto. 663 00:26:11,000 --> 00:26:12,000 Aquí también nos habría salido 664 00:26:12,000 --> 00:26:13,000 un null pointer exception. 665 00:26:13,000 --> 00:26:14,000 Porque pedidos es null. 666 00:26:14,000 --> 00:26:16,000 Porque no ha hecho ningún pedido. 667 00:26:16,000 --> 00:26:18,000 Al hacer punto de cualquier cosa que sea null. 668 00:26:18,000 --> 00:26:20,000 Null pointer exception. 669 00:26:20,000 --> 00:26:21,000 Pero al menos aquí. 670 00:26:21,000 --> 00:26:23,000 Cuando le damos para arreglarlo. 671 00:26:23,000 --> 00:26:24,000 Es que lo vemos rápido. 672 00:26:24,000 --> 00:26:25,000 Decimos. 673 00:26:25,000 --> 00:26:26,000 Justo. 674 00:26:26,000 --> 00:26:27,000 Aquí está. 675 00:26:27,000 --> 00:26:28,000 Aquí. 676 00:26:28,000 --> 00:26:29,000 Parece misterioso. 677 00:26:29,000 --> 00:26:30,000 Decimos. 678 00:26:30,000 --> 00:26:31,000 ¿En qué momento estamos llamando 679 00:26:31,000 --> 00:26:32,000 a propiedades de pedidos? 680 00:26:32,000 --> 00:26:33,000 En ningún momento. 681 00:26:33,000 --> 00:26:34,000 Pero claro. 682 00:26:34,000 --> 00:26:35,000 Está haciendo el for each por dentro. 683 00:26:35,000 --> 00:26:36,000 Es más misterioso. 684 00:26:36,000 --> 00:26:37,000 O sea. 685 00:26:37,000 --> 00:26:38,000 El for each por dentro hace un montón de cosas. 686 00:26:38,000 --> 00:26:39,000 Hace copias de la raya. 687 00:26:39,000 --> 00:26:40,000 Hace de todo. 688 00:26:40,000 --> 00:26:41,000 Entonces por eso tiene peligro. 689 00:26:41,000 --> 00:26:42,000 ¿Vale? 690 00:26:42,000 --> 00:26:43,000 Hay que entender bien. 691 00:26:43,000 --> 00:26:45,000 Cómo funciona. 692 00:26:46,000 --> 00:26:47,000 Bueno. 693 00:26:47,000 --> 00:26:48,000 Pues entonces. 694 00:26:48,000 --> 00:26:49,000 Bien por esta opción. 695 00:26:49,000 --> 00:26:50,000 Bien por esta. 696 00:26:50,000 --> 00:26:51,000 Nos dan un pointer exception. 697 00:26:51,000 --> 00:26:52,000 Que entendemos por qué. 698 00:26:52,000 --> 00:26:53,000 Tiene todo el sentido del mundo. 699 00:26:53,000 --> 00:26:54,000 ¿Vale? 700 00:26:54,000 --> 00:26:55,000 ¿Cuál es el problema? 701 00:26:55,000 --> 00:26:56,000 Que cuando el cliente no tiene todavía 702 00:26:56,000 --> 00:26:57,000 ningún pedido. 703 00:26:57,000 --> 00:26:58,000 No tiene todavía ninguno. 704 00:26:58,000 --> 00:26:59,000 En ese caso. 705 00:26:59,000 --> 00:27:01,000 No queremos recorrerlo. 706 00:27:01,000 --> 00:27:02,000 Bueno. 707 00:27:02,000 --> 00:27:03,000 Pues es tan fácil como meter esto en un. 708 00:27:03,000 --> 00:27:05,000 Y el pedido es distinto de null. 709 00:27:05,000 --> 00:27:06,000 Y solucionado. 710 00:27:06,000 --> 00:27:07,000 Y ya está. 711 00:27:07,000 --> 00:27:08,000 ¿No? 712 00:27:08,000 --> 00:27:09,000 Y tan fácil. 713 00:27:10,000 --> 00:27:11,000 Bueno. 714 00:27:11,000 --> 00:27:12,000 Entonces. 715 00:27:12,000 --> 00:27:13,000 Voy a. 716 00:27:13,000 --> 00:27:14,000 Dejar esto aquí. 717 00:27:14,000 --> 00:27:15,000 Y entonces. 718 00:27:15,000 --> 00:27:16,000 Si pedidos. 719 00:27:16,000 --> 00:27:17,000 Es distinto de null. 720 00:27:17,000 --> 00:27:18,000 Y solo en ese caso. 721 00:27:18,000 --> 00:27:19,000 Entonces. 722 00:27:19,000 --> 00:27:20,000 Ahora ya sí recorre. 723 00:27:20,000 --> 00:27:21,000 Y si no. 724 00:27:21,000 --> 00:27:22,000 Es que el cliente no tiene ningún pedido. 725 00:27:22,000 --> 00:27:23,000 No tiene ninguno. 726 00:27:23,000 --> 00:27:24,000 Todavía no hay nada que recorrer. 727 00:27:24,000 --> 00:27:25,000 Vale. 728 00:27:25,000 --> 00:27:26,000 Pues entonces. 729 00:27:26,000 --> 00:27:27,000 Aquí me debe faltar. 730 00:27:27,000 --> 00:27:28,000 O sobrar una llave. 731 00:27:28,000 --> 00:27:29,000 O me debe. 732 00:27:29,000 --> 00:27:30,000 Aparar. 733 00:27:30,000 --> 00:27:31,000 ¿Vale? 734 00:27:31,000 --> 00:27:32,000 Aparar. 735 00:27:32,000 --> 00:27:33,000 Aparar. 736 00:27:33,000 --> 00:27:34,000 Aparar. 737 00:27:34,000 --> 00:27:35,000 Aparar. 738 00:27:35,000 --> 00:27:36,000 Aparar. 739 00:27:36,000 --> 00:27:37,000 Aparar. 740 00:27:37,000 --> 00:27:38,000 Aparar. 741 00:27:38,000 --> 00:27:39,000 Aparar. 742 00:27:39,000 --> 00:27:40,000 Aparar. 743 00:27:40,000 --> 00:27:41,000 A pedidos de i. 744 00:27:41,000 --> 00:27:42,000 Porque lo he cambiado al. 745 00:27:42,000 --> 00:27:43,000 Pedidos. 746 00:27:43,000 --> 00:27:44,000 Pedidos de i. 747 00:27:44,000 --> 00:27:45,000 Vale. 748 00:27:45,000 --> 00:27:46,000 Ala. 749 00:27:46,000 --> 00:27:47,000 Vale. 750 00:27:47,000 --> 00:27:48,000 Pues volvemos a pasar la prueba. 751 00:27:48,000 --> 00:27:49,000 Vámonos al main otra vez. 752 00:27:49,000 --> 00:27:50,000 Venga. 753 00:27:50,000 --> 00:27:51,000 Siguiente. 754 00:27:51,000 --> 00:27:52,000 Primero. 755 00:27:52,000 --> 00:27:53,000 Creamos un pedido. 756 00:27:53,000 --> 00:27:54,000 ¿Vale? 757 00:27:54,000 --> 00:27:55,000 ¿Vale? 758 00:27:55,000 --> 00:27:56,000 ¿Vale? 759 00:27:56,000 --> 00:27:57,000 ¿Vale? 760 00:27:57,000 --> 00:27:58,000 ¿Vale? 761 00:27:58,000 --> 00:27:59,000 ¿Vale? 762 00:27:59,000 --> 00:28:00,000 ¿Vale? 763 00:28:00,000 --> 00:28:01,000 ¿Vale? 764 00:28:01,000 --> 00:28:02,000 ¿Vale? 765 00:28:02,000 --> 00:28:03,000 ¿Vale? 766 00:28:03,000 --> 00:28:04,000 ¿Vale? 767 00:28:04,000 --> 00:28:05,000 ¿Vale? 768 00:28:05,000 --> 00:28:06,000 ¿Vale? 769 00:28:06,000 --> 00:28:07,000 ¿Vale? 770 00:28:07,000 --> 00:28:08,000 ¿Vale? 771 00:28:08,000 --> 00:28:09,000 ¿Vale? 772 00:28:09,820 --> 00:28:10,820 Segundo. 773 00:28:10,820 --> 00:28:12,740 Bueno, ¿qué tal puedo hacer? 774 00:28:12,740 --> 00:28:14,800 Código 1 de descripción. 775 00:28:14,800 --> 00:28:16,320 Pedido de boli sin ítem y sin nada. 776 00:28:16,320 --> 00:28:19,360 Eso ya probamos, que podríamos añadir. 777 00:28:19,360 --> 00:28:20,360 Vamos a insertar un cliente. 778 00:28:20,360 --> 00:28:25,740 Venga, un If, un 2, 3, 4. 779 00:28:25,740 --> 00:28:27,080 Nombre. 780 00:28:27,080 --> 00:28:28,780 Pepito. 781 00:28:28,780 --> 00:28:29,760 Dirección. 782 00:28:29,800 --> 00:28:31,100 Pues vive en Madrid. 783 00:28:31,100 --> 00:28:32,180 Ahí está, el cliente registrado. 784 00:28:32,180 --> 00:28:34,660 Todavía no tiene ningún pedido hecho. 785 00:28:34,660 --> 00:28:37,060 Ahora resulta, oye este pedido que hemos hecho. 786 00:28:37,060 --> 00:28:38,060 Vamos a poner solo este cliente. 787 00:28:39,040 --> 00:28:41,600 Pues venga, para eso tenemos el método. 788 00:28:41,600 --> 00:28:44,440 Incorporar pedido a cliente. 789 00:28:44,440 --> 00:28:44,940 Venga. 790 00:28:44,940 --> 00:28:48,480 Ah, bueno, primero íbamos a mostrar los datos del cliente, 791 00:28:48,480 --> 00:28:49,680 para ver que no tiene pedidos. 792 00:28:49,680 --> 00:28:51,800 Vamos a mostrar primero los datos del cliente. 793 00:28:51,800 --> 00:28:55,280 Opción 11, a ver si esta vez no falla. 794 00:28:55,280 --> 00:28:57,320 ¿De qué cliente quieres mostrar pedidos? 795 00:28:57,320 --> 00:29:00,000 De un 2, 3, 4. 796 00:29:00,000 --> 00:29:03,600 Pues me dice, nombre del cliente, Pepito. 797 00:29:03,600 --> 00:29:05,400 Efectivamente. 798 00:29:05,400 --> 00:29:05,880 ¿Vale? 799 00:29:05,900 --> 00:29:08,060 Esto de opción incorrecta, es porque me falta un next line, 800 00:29:08,060 --> 00:29:11,260 se queda con el salto de línea, se cree que ese es la opción, 801 00:29:11,260 --> 00:29:11,760 etcétera. 802 00:29:11,760 --> 00:29:13,140 Entonces, me falta un next line. 803 00:29:13,140 --> 00:29:15,660 Pero no me ha mostrado pedidos, efectivamente. 804 00:29:15,660 --> 00:29:17,820 Pero a mí me falta un next line por algún lado. 805 00:29:20,460 --> 00:29:22,820 Porque esto, cuando ya la aplicación se hace muy gorda, 806 00:29:22,820 --> 00:29:25,620 con entrada y salida, es hacerlo con escáner y next line es 807 00:29:25,620 --> 00:29:26,140 una locura. 808 00:29:35,880 --> 00:29:36,380 A ver. 809 00:29:39,780 --> 00:29:44,780 En algún sitio tengo ya aquí un next line de más, 810 00:29:44,780 --> 00:29:46,340 que luego cuando lo leen. 811 00:29:51,340 --> 00:29:53,300 Vale, bueno. 812 00:29:53,300 --> 00:29:56,180 Vale, tengo que encontrar el next line que tengo, 813 00:29:56,180 --> 00:30:01,260 modificarlo para que no se quede en el buffer y no lo coja la 814 00:30:01,260 --> 00:30:02,580 opción del menú. 815 00:30:02,580 --> 00:30:03,700 Pero bueno, eso. 816 00:30:03,720 --> 00:30:07,240 Vale, vamos ahora a la opción y ya nos vamos a ver si nos sale 817 00:30:07,240 --> 00:30:08,120 error o no. 818 00:30:08,120 --> 00:30:10,800 Ahora vamos a ponerle un pedido a ese cliente. 819 00:30:10,800 --> 00:30:12,600 8. 820 00:30:12,600 --> 00:30:14,880 Venga, código del pedido a ponerle al cliente. 821 00:30:14,880 --> 00:30:16,040 Código del pedido. 822 00:30:16,040 --> 00:30:19,280 Pues el 1, el único pedido que tenemos. 823 00:30:19,280 --> 00:30:21,640 El pedido 1. 824 00:30:21,640 --> 00:30:25,120 Pedido 1, venga. 825 00:30:25,120 --> 00:30:26,720 1, vale. 826 00:30:26,720 --> 00:30:29,480 Nib del cliente al que le vamos a poner ese pedido. 827 00:30:29,480 --> 00:30:33,400 El único nib que tenemos, 1, 2, 3 y 4. 828 00:30:34,220 --> 00:30:36,340 No sabemos si se lo ha metido o no. 829 00:30:36,340 --> 00:30:37,380 No sabemos. 830 00:30:37,380 --> 00:30:39,420 Vamos a mostrar datos de ese cliente. 831 00:30:39,420 --> 00:30:41,460 Pedidos, a ver si ahora me aparece. 832 00:30:41,460 --> 00:30:42,820 Los muestro, introduzcan nib. 833 00:30:42,820 --> 00:30:45,020 1, 2, 3, 4. 834 00:30:45,020 --> 00:30:46,540 Vale. 835 00:30:46,540 --> 00:30:49,340 Nombre cliente pedido y aquí está. 836 00:30:49,340 --> 00:30:52,300 Nombre cliente Pepito y aquí está su único pedido. 837 00:30:52,300 --> 00:30:53,740 Pues sí, lo ha incorporado. 838 00:30:53,740 --> 00:30:56,420 Y esto es lo del next line que se ha quedado ahí, pero bueno. 839 00:30:56,420 --> 00:30:58,420 Vale, pues lo que hemos hecho parece que funciona. 840 00:30:58,420 --> 00:31:02,900 Bueno, pocas pruebas, pero bueno. 841 00:31:02,900 --> 00:31:04,160 Venga, vamos a parar aquí.