1 00:00:00,000 --> 00:00:02,080 ¿Vale? 2 00:00:02,080 --> 00:00:05,160 Esto es un método que hicimos ayer, genérico, 3 00:00:05,160 --> 00:00:08,480 para hacer la suma acumulativa de los precios de los pedidos. 4 00:00:08,480 --> 00:00:08,960 ¿Vale? 5 00:00:08,960 --> 00:00:11,360 Entonces, ahora nos podemos aprovechar de él. 6 00:00:11,360 --> 00:00:14,440 Ahora ya podemos aprovecharnos de él para llamarlo ya en la 7 00:00:14,440 --> 00:00:15,120 aplicación. 8 00:00:15,120 --> 00:00:19,400 Porque la aplicación resulta que para pedidos de i tiene que 9 00:00:19,400 --> 00:00:20,920 llamar a ese método. 10 00:00:20,920 --> 00:00:22,520 Pues, ala, estupendo. 11 00:00:22,520 --> 00:00:28,800 Entonces, pedidos de i puede llamar a su método devolver 12 00:00:28,800 --> 00:00:30,960 precio total. 13 00:00:30,960 --> 00:00:34,160 Lo que pasa es que este método no te lo muestra por consola. 14 00:00:34,160 --> 00:00:37,400 Lo hicimos de tal forma que te lo devolviera en un retunco 15 00:00:37,400 --> 00:00:38,960 valor de retorno. 16 00:00:38,960 --> 00:00:42,240 Entonces, al devolverlo en un retunco valor de retorno, 17 00:00:42,240 --> 00:00:45,160 tenemos que asignárselo a algún sitio para luego mostrarlo por 18 00:00:45,160 --> 00:00:46,920 consola o lo que queramos. 19 00:00:46,920 --> 00:00:49,600 Entonces, bueno, de nuevo, ¿para qué guardarle una variable 20 00:00:49,600 --> 00:00:52,560 intermedia y luego hacer el system out de la variable? 21 00:00:52,560 --> 00:00:56,440 Vamos a pasárselo directamente al system out y ya está. 22 00:00:56,480 --> 00:00:59,520 Pero podríamos guardar la variable intermedia y luego 23 00:00:59,520 --> 00:01:01,520 llamar al system out dándole la variable intermedia. 24 00:01:01,520 --> 00:01:03,560 Hombre, pues, venga, no merece la pena. 25 00:01:03,560 --> 00:01:04,520 Directamente. 26 00:01:12,080 --> 00:01:14,240 Pues, nada, le voy a tener que escribir entero. 27 00:01:14,240 --> 00:01:19,080 No, espérate, voy aquí abajo y ahora sí. 28 00:01:19,080 --> 00:01:20,200 Vale, pues, lo escribo. 29 00:01:20,200 --> 00:01:33,920 Lo escribo todo esto aquí, ¿vale? 30 00:01:33,920 --> 00:01:36,720 Entonces, devolver precio total me devuelve el precio. 31 00:01:36,720 --> 00:01:38,480 Ya está, me lo devuelve él, ya se la suma, 32 00:01:38,480 --> 00:01:39,800 hace todo lo que tenga que hacer. 33 00:01:39,800 --> 00:01:42,680 Y el valor de retorno, con ese valor de vuelta, 34 00:01:42,680 --> 00:01:43,720 hago lo que quiera. 35 00:01:43,720 --> 00:01:45,520 Se lo asigna una variable. 36 00:01:45,520 --> 00:01:48,200 En este caso, en lugar de asignárselo a una variable, 37 00:01:48,200 --> 00:01:51,080 se lo paso a su vez, como parámetro, 38 00:01:51,080 --> 00:01:53,360 al system out println. 39 00:01:53,360 --> 00:01:55,600 Fijaos que println es un método también. 40 00:01:55,600 --> 00:01:58,000 No lo hemos hecho nosotros, es un método de la clase system 41 00:01:58,000 --> 00:02:01,560 out, pero es un método también al que le pasamos un valor y lo 42 00:02:01,560 --> 00:02:03,000 que hace es mostrarlo por consola. 43 00:02:07,800 --> 00:02:09,640 Vale, pues, ya está, esa putería ya estaría. 44 00:02:14,280 --> 00:02:16,040 ¿Que queremos mostrar el precio con IVA? 45 00:02:16,080 --> 00:02:19,440 Pues, es que teníamos un método que lo mostraba con IVA en la 46 00:02:19,440 --> 00:02:23,720 clase pedido, que era este de aquí, 47 00:02:23,720 --> 00:02:28,960 que era como el anterior, pero sumando el porcentaje este del 48 00:02:28,960 --> 00:02:30,640 IVA. 49 00:02:30,640 --> 00:02:36,480 Pues, entonces, la funcionalidad 5, 50 00:02:36,480 --> 00:02:38,400 que es la de mostrar precio con IVA, 51 00:02:38,400 --> 00:02:42,680 es igualita que la 4, igualita, pero en lugar de llamar al 52 00:02:42,680 --> 00:02:46,200 método devolver precio total, devolver precio total con IVA. 53 00:02:46,200 --> 00:02:48,640 Entonces, la funcionalidad 5, en realidad, 54 00:02:48,640 --> 00:02:53,960 es un copia y pega de esta, cambiando el nombre del método. 55 00:02:53,960 --> 00:02:59,960 La funcionalidad 5 es esto, pero en lugar de devolver precio 56 00:02:59,960 --> 00:03:06,920 total, pues, aquí será devolver precio total con IVA. 57 00:03:06,920 --> 00:03:09,400 Es la única diferencia entre los 2. 58 00:03:13,680 --> 00:03:18,040 Claro, porque, efectivamente, porque en todas ellas, 59 00:03:18,040 --> 00:03:20,440 si el pedido no existe, se queda callado. 60 00:03:20,440 --> 00:03:22,800 Y como es un poco feo que se quede callado, pues, 61 00:03:22,800 --> 00:03:24,800 en todas ellas convendría, efectivamente, 62 00:03:24,800 --> 00:03:28,400 poner esa comprobación a través de un Boolean. 63 00:03:28,400 --> 00:03:33,600 Lo mismo, claro, claro, lo mismo, es lo mismo. 64 00:03:33,600 --> 00:03:36,320 Cambiando el método al que llamas, claro, 65 00:03:36,320 --> 00:03:38,720 el único que cambia, el método al que llamas, ¿vale? 66 00:03:43,680 --> 00:03:45,600 Bueno, pues, de esto va el rollo. 67 00:03:45,600 --> 00:03:48,560 Vamos a ejecutarlo por si hemos escrito algo mal. 68 00:03:52,720 --> 00:03:53,760 Creamos un pedido. 69 00:03:53,760 --> 00:03:56,680 Introduzca código 1, descripción, descripción 1. 70 00:03:56,680 --> 00:03:59,760 Voy a crear otro pedido más. 71 00:03:59,760 --> 00:04:01,960 Introduzca código 2, descripción 2. 72 00:04:01,960 --> 00:04:04,000 Tengo 2 pedidos. 73 00:04:04,000 --> 00:04:07,080 Venga, voy a añadir un ítem al pedido 2. 74 00:04:07,080 --> 00:04:11,760 Venga, al pedido 2 voy a añadirle el ítem, 75 00:04:11,760 --> 00:04:14,000 descripción del ítem. 76 00:04:14,000 --> 00:04:20,960 Pues, bolis que quiero 3 y precio unitario 5. 77 00:04:20,960 --> 00:04:22,880 3 por 5, 15, va a costar. 78 00:04:22,880 --> 00:04:28,560 Vale, voy a añadir otro ítem más a este, al 2. 79 00:04:28,560 --> 00:04:31,200 Ítem, pues, ala. 80 00:04:31,200 --> 00:04:34,960 Le voy a poner 4 gomas por 6. 81 00:04:34,960 --> 00:04:37,520 6 por 4, 24 más el 15 de antes. 82 00:04:37,520 --> 00:04:39,240 Bueno, lo que sé. 83 00:04:39,280 --> 00:04:42,200 Ala, el pedido 2 ya tiene 2 ítems. 84 00:04:42,200 --> 00:04:44,080 Vamos a mostrarlo, a ver si es verdad. 85 00:04:44,080 --> 00:04:49,320 Vamos a hacer la funcionalidad 6 y vamos a mostrar lo que tiene 86 00:04:49,320 --> 00:04:51,800 el pedido 2. 87 00:04:51,800 --> 00:04:55,760 El pedido 2, efectivamente, tiene los que acabo de meter. 88 00:04:55,760 --> 00:04:56,560 Vale, funciona. 89 00:04:56,560 --> 00:04:58,800 Tiene los que acabo de meter, los bolis y las gomas. 90 00:04:58,800 --> 00:05:00,800 Entonces, cuando haga el precio total, sin IVA, 91 00:05:00,800 --> 00:05:07,560 tendrá que salir 15 más 24, que son 39, ¿verdad? 92 00:05:07,560 --> 00:05:08,400 Pues, vamos a ver. 93 00:05:08,400 --> 00:05:15,160 Vamos a mostrar el precio de un pedido 2. 94 00:05:15,160 --> 00:05:17,080 Pues, efectivamente, 39. 95 00:05:17,080 --> 00:05:19,480 Y si yo muestro el precio del pedido con IVA, 96 00:05:19,480 --> 00:05:21,480 me va a salir igual porque no he fijado el IVA. 97 00:05:21,480 --> 00:05:23,720 Con lo cual, el valor por defecto del número es 0. 98 00:05:23,720 --> 00:05:28,480 O sea, si yo muestro ahora el precio del pedido con IVA, 99 00:05:28,480 --> 00:05:33,240 del pedido 2, pues, me vuelve a salir 39 porque el IVA es 0. 100 00:05:33,240 --> 00:05:34,640 Vamos a fijarle un IVA. 101 00:05:34,640 --> 00:05:37,520 Venga, vamos a fijarle como IVA un 10%. 102 00:05:37,560 --> 00:05:39,760 Ala, el IVA ya está al 10%. 103 00:05:39,760 --> 00:05:46,320 Pues, vamos a volver a mostrar el precio de este pedido 2. 104 00:05:46,320 --> 00:05:49,440 Pues, ahora ha subido, 42,9, justo. 105 00:05:49,440 --> 00:05:54,400 Ha aumentado el 10% de IVA, que son los 3,9. 106 00:05:54,400 --> 00:05:57,920 Vale, pues, la aplicación ya estaría completa a falta de la 107 00:05:57,920 --> 00:06:00,880 funcionalidad 3, eliminar ítem, con el método eliminar ítem, 108 00:06:00,880 --> 00:06:05,640 que es lo que dejo ahí para que se os quede algún hueco de 109 00:06:05,640 --> 00:06:07,560 trabajo. 110 00:06:07,560 --> 00:06:09,160 Ala, 8 salimos y ya está. 111 00:06:12,560 --> 00:06:16,280 Bueno, pues, esta es la base de la aprobación de entrada de 112 00:06:16,280 --> 00:06:18,400 objetos, la base. 113 00:06:18,400 --> 00:06:21,520 A partir de aquí, de nuevo, hay que ir poniendo capas y capas y 114 00:06:21,520 --> 00:06:26,760 capas y capas de herencia, interfaces, implementaciones, 115 00:06:26,760 --> 00:06:28,560 colecciones, un montón de capas. 116 00:06:28,560 --> 00:06:30,840 Nos quedan por añadir, muchas. 117 00:06:30,840 --> 00:06:36,200 Pero, para que esas capas no monten ahí un berenjenal enorme, 118 00:06:36,200 --> 00:06:39,120 que esta base quede muy clara, por favor. 119 00:06:39,120 --> 00:06:39,620 ¿Vale? 120 00:06:43,120 --> 00:06:44,920 ¿Tú ya has conseguido que te funcione? 121 00:06:44,920 --> 00:06:45,720 No lo puedo creer. 122 00:06:45,720 --> 00:06:50,200 Bueno, se añade el precio de 42,9. 123 00:06:50,200 --> 00:06:53,800 Bueno, luego yo voy a ver. 124 00:06:53,800 --> 00:06:55,760 O sea, me muestra el nombre del pedido, 125 00:06:55,760 --> 00:06:59,600 pero no me muestra lo existente ahí. 126 00:06:59,960 --> 00:07:02,800 Habría que mirarlo, ¿vale? 127 00:07:02,800 --> 00:07:06,720 Luego, al final, intento sacar tiempo para mirarlo. 128 00:07:06,720 --> 00:07:07,220 Vale. 129 00:07:10,200 --> 00:07:15,440 Pero vamos, a ver. 130 00:07:15,440 --> 00:07:17,240 Pues, venga, vámonos de nuevo a pedido. 131 00:07:28,400 --> 00:07:28,880 Vale. 132 00:07:28,880 --> 00:07:34,120 Vamos a seguir ampliando un poquito con esas pequeñas capas 133 00:07:34,120 --> 00:07:36,080 que os digo un poquito, solo. 134 00:07:36,080 --> 00:07:38,760 Venga, vamos a volver a pedido, que es la única clase que 135 00:07:38,760 --> 00:07:42,360 tenemos junto con ítem, ¿vale? 136 00:07:42,360 --> 00:07:44,060 Pues, venga, volvemos a la clase pedido, 137 00:07:44,060 --> 00:07:50,280 que tiene 3 propiedades normales y una estática, ¿vale? 138 00:07:53,600 --> 00:07:56,680 Para que os suene la terminología, 139 00:07:56,720 --> 00:07:59,520 porque la ayuda que puede tener el entorno de desarrollo 140 00:07:59,520 --> 00:08:02,400 Eclipse o cualquier otro, cuando leáis cosas, 141 00:08:02,400 --> 00:08:05,720 pues, las propiedades que son propias del objeto, 142 00:08:05,720 --> 00:08:10,200 las normales, se suelen llamar variables de objeto. 143 00:08:10,200 --> 00:08:14,400 Y las estáticas se suelen llamar variables de clase, ¿vale? 144 00:08:14,400 --> 00:08:16,800 Las propiedades estáticas se las llama a veces variables de 145 00:08:16,800 --> 00:08:20,480 clase porque pertenecen a todos los objetos de la clase. 146 00:08:20,480 --> 00:08:22,640 Y las propiedades normales se las llaman propiedades de 147 00:08:22,640 --> 00:08:26,440 objeto, porque son de un objeto en particular. 148 00:08:26,440 --> 00:08:29,960 Pero, bueno, con eso os iréis familiarizando según vayáis 149 00:08:29,960 --> 00:08:31,000 viendo cosas. 150 00:08:31,000 --> 00:08:33,560 Vale, pues, esta clase pedido tiene 4 propiedades, 151 00:08:33,560 --> 00:08:36,880 3 de ellas son propias de cada objeto. 152 00:08:36,880 --> 00:08:39,800 Y una de ellas es común para todos los objetos. 153 00:08:39,800 --> 00:08:42,880 Es una propiedad estática, ¿vale? 154 00:08:42,880 --> 00:08:46,920 Bueno, pues, ahora vámonos al método de abajo de fijar IVA. 155 00:08:47,560 --> 00:08:58,440 Vamos al método este que yo llamé set IVA para fijar un 156 00:08:58,440 --> 00:09:02,120 valor concreto a esta propiedad. 157 00:09:02,120 --> 00:09:04,840 Entonces, yo este método lo dejé así y no pasa nada. 158 00:09:04,840 --> 00:09:05,680 Como veis, funciona. 159 00:09:05,680 --> 00:09:07,240 Está todo bien. 160 00:09:07,240 --> 00:09:10,200 Pero ahí ya alguno vería que sea una cosa amarilla, 161 00:09:10,200 --> 00:09:12,280 que eso siempre queda feo. 162 00:09:12,280 --> 00:09:14,520 No significa que las cosas no funcionen. 163 00:09:14,520 --> 00:09:16,760 Pero, bueno, ya como que despierta una bombilla, ¿no? 164 00:09:16,760 --> 00:09:19,320 Y yo dejé ese amarillo ahí, ¿eh? 165 00:09:19,320 --> 00:09:21,240 ¿Qué dato? 166 00:09:21,240 --> 00:09:23,440 Tiene una advertencia interna. 167 00:09:23,440 --> 00:09:27,600 Claro, como que te advierte y dice, uf, bueno. 168 00:09:27,600 --> 00:09:29,760 Vale, pues, ¿de qué nos está advirtiendo? 169 00:09:29,760 --> 00:09:31,720 Vamos a ver. 170 00:09:31,720 --> 00:09:34,200 Vamos a ver. 171 00:09:34,200 --> 00:09:39,040 Este método tiene una peculiaridad que lo hace muy 172 00:09:39,040 --> 00:09:41,480 distinto de este, por ejemplo. 173 00:09:41,480 --> 00:09:43,880 Vale, esto es importante de nuevo entender. 174 00:09:43,880 --> 00:09:49,640 Este método trabaja con la propiedad ítems y pedido del 175 00:09:49,640 --> 00:09:52,680 objeto, con lo cual este método de volver precio total, 176 00:09:52,680 --> 00:09:56,440 todos tenemos claro, que funciona de forma distinta si 177 00:09:56,440 --> 00:09:59,160 lo llama el objeto P1 o si lo llama el objeto P2 o si lo 178 00:09:59,160 --> 00:10:00,520 llama el objeto P3, por supuesto, 179 00:10:00,520 --> 00:10:05,880 porque P1 tiene un valor aquí, P2 tiene otro y P3 tiene otro. 180 00:10:05,880 --> 00:10:09,680 Entonces, si lo llama P1, va a hacer una cosa, 181 00:10:09,680 --> 00:10:11,920 porque esta variable tiene su propio valor. 182 00:10:11,920 --> 00:10:14,120 Pero si lo llama P2, va a hacer otra, 183 00:10:14,120 --> 00:10:16,600 porque esta variable tiene un valor distinto, la de P2. 184 00:10:16,600 --> 00:10:19,000 Y si lo llama P3, va a hacer otra, 185 00:10:19,000 --> 00:10:22,600 porque esta variable tiene otro valor, el de P3. 186 00:10:22,600 --> 00:10:24,280 Eso es como funcionan los métodos, ¿verdad? 187 00:10:24,280 --> 00:10:27,320 Los métodos trabajan con las propiedades del objeto, 188 00:10:27,320 --> 00:10:31,720 con lo cual este método va a hacer cosas distintas en 189 00:10:31,720 --> 00:10:33,560 función del objeto que lo llame. 190 00:10:33,560 --> 00:10:35,240 Está claro. 191 00:10:35,240 --> 00:10:37,920 Pero este método de arriba no le pasa eso, 192 00:10:37,920 --> 00:10:42,440 porque este método de arriba no usa ninguna propiedad propia 193 00:10:42,440 --> 00:10:44,240 del objeto. 194 00:10:44,240 --> 00:10:47,440 No usa ni código ni descripción de ítems. 195 00:10:47,440 --> 00:10:51,800 Este método solamente está usando el getIva, 196 00:10:51,800 --> 00:10:52,560 que lo he perdido. 197 00:10:52,560 --> 00:10:53,640 ¿Dónde está el setIva? 198 00:10:59,720 --> 00:11:01,600 Aquí está. 199 00:11:01,600 --> 00:11:05,360 Ese método solo está usando la propiedad IVA, solo. 200 00:11:05,360 --> 00:11:08,400 Más el parámetro, por supuesto, que le llega por aquí. 201 00:11:08,400 --> 00:11:12,000 Con lo cual, ese método, me da igual que lo llame P1, 202 00:11:12,000 --> 00:11:14,600 que lo llame P2, que lo llame P3, me da igual, 203 00:11:14,600 --> 00:11:17,080 porque no está usando propiedades propias del objeto. 204 00:11:17,080 --> 00:11:19,360 Está usando la propiedad que es igual para todos, 205 00:11:19,360 --> 00:11:22,480 la compartida por todos solamente, ¿no? 206 00:11:22,480 --> 00:11:26,080 Luego, este método va a hacer exactamente lo mismo, 207 00:11:26,080 --> 00:11:29,480 lo llame P1, lo llame P2, lo llame P3, va a hacer lo mismo, 208 00:11:29,480 --> 00:11:31,800 porque no trabaja con las propiedades propias de cada 209 00:11:31,800 --> 00:11:33,880 objeto, solo con las comunes. 210 00:11:33,880 --> 00:11:35,760 Luego, da igual el objeto que lo llame, 211 00:11:35,760 --> 00:11:37,280 da igual, porque va a hacer lo mismo. 212 00:11:37,280 --> 00:11:39,400 Hasta ahí está claro. 213 00:11:39,400 --> 00:11:42,880 Bueno, pues un método que hace lo mismo, 214 00:11:42,880 --> 00:11:47,800 lo llame el objeto que lo llame, se convierte en lo que se llama, 215 00:11:47,800 --> 00:11:50,880 por definición, en un método estático. 216 00:11:50,880 --> 00:11:52,600 Es decir, me da igual el objeto que me llame, 217 00:11:52,600 --> 00:11:54,800 yo voy a hacer lo mismo, porque como no uso variables de 218 00:11:54,800 --> 00:11:58,720 objeto, solo uso variables estáticas, me da igual. 219 00:11:58,720 --> 00:12:01,760 Entonces, cuando uno identifica, cuando está programando, 220 00:12:01,760 --> 00:12:04,120 cuando uno identifica que ha hecho un método así, 221 00:12:04,120 --> 00:12:06,000 que solo usa variables estáticas, 222 00:12:06,000 --> 00:12:07,680 no usa variables de objeto, dice, ah, 223 00:12:07,680 --> 00:12:09,160 este método es estático. 224 00:12:09,160 --> 00:12:14,240 Entonces, hace una cosa muy buena que facilita gran parte del 225 00:12:14,240 --> 00:12:18,240 desarrollo de código, que es avisar y ponerlo como estático. 226 00:12:18,240 --> 00:12:19,520 ¿Y cómo lo pone? 227 00:12:19,520 --> 00:12:22,880 Pues, delante del valor de retorno y después del public, 228 00:12:22,880 --> 00:12:26,400 pone esto, estático. 229 00:12:26,400 --> 00:12:27,240 ¿Vale? 230 00:12:27,240 --> 00:12:29,640 Primera parte, pone eso. 231 00:12:29,720 --> 00:12:32,600 Pero el rojo de abajo ya lo quitamos. 232 00:12:32,600 --> 00:12:34,240 Pone eso, estático. 233 00:12:34,240 --> 00:12:36,960 Y eso significa que este método se convierte en estático, 234 00:12:36,960 --> 00:12:41,320 o lo que es lo mismo, que solo usa variables estáticas. 235 00:12:41,320 --> 00:12:43,280 Hombre, o variables locales que se cree él, 236 00:12:43,280 --> 00:12:46,000 pero en cualquier caso, no variables del objeto, 237 00:12:46,000 --> 00:12:48,720 nunca variables del objeto. 238 00:12:48,720 --> 00:12:49,600 ¿Vale? 239 00:12:49,600 --> 00:12:51,000 Y la implicación que tienes es esa, 240 00:12:51,000 --> 00:12:52,880 que da igual el objeto que me llame, da igual, 241 00:12:52,880 --> 00:12:55,200 yo voy a hacer lo mismo siempre, porque no uso variables propias 242 00:12:55,200 --> 00:12:56,040 del objeto. 243 00:12:56,040 --> 00:12:57,840 Entonces, se convierte en estático. 244 00:12:57,840 --> 00:13:00,280 Entonces, al convertirse en estático, 245 00:13:00,280 --> 00:13:01,680 esto ya tiene varias implicaciones a la de 246 00:13:01,680 --> 00:13:03,080 programarlo. 247 00:13:03,080 --> 00:13:06,160 Primero, que ahora ya este disk de aquí, 248 00:13:06,160 --> 00:13:08,320 este disk no me deja ponerlo. 249 00:13:08,320 --> 00:13:10,240 Esto es un tema de sintaxis. 250 00:13:10,240 --> 00:13:13,600 No me deja ponerlo porque dice, oye, eres un método estático. 251 00:13:13,600 --> 00:13:17,240 Da igual el objeto para que lo llames. 252 00:13:17,240 --> 00:13:20,360 Dime IVA directamente y ya está. 253 00:13:20,360 --> 00:13:21,000 ¿Vale? 254 00:13:21,000 --> 00:13:24,480 Dime IVA directamente y ya está. 255 00:13:24,480 --> 00:13:28,400 Pero aquí llega la otra famosa confusión, 256 00:13:28,400 --> 00:13:31,920 que yo a esta variable, a este parámetro, 257 00:13:31,920 --> 00:13:34,960 lo he llamado igual que la variable estática de arriba. 258 00:13:34,960 --> 00:13:37,760 Pero en este caso no me deja distinguirlo con el disk. 259 00:13:37,760 --> 00:13:41,800 ¿Cómo creéis, cómo se os ocurre que podría yo decir que esta es 260 00:13:41,800 --> 00:13:46,680 la variable estática IVA de la clase pedido? 261 00:13:46,680 --> 00:13:48,320 Poniendo pedido, efectivamente. 262 00:13:48,320 --> 00:13:49,560 Bueno, cambiando el nombre, claro. 263 00:13:49,560 --> 00:13:51,200 Pero si no le quiero cambiar el nombre, 264 00:13:51,400 --> 00:13:54,600 tienen su significado, significan cosas. 265 00:13:54,600 --> 00:13:55,800 Así. 266 00:13:55,800 --> 00:13:58,600 Porque así es como, ¿verdad? 267 00:13:58,600 --> 00:14:01,280 Es que si cambias el nombre de algo, le cambias su esencia. 268 00:14:06,480 --> 00:14:07,800 Vale. 269 00:14:07,800 --> 00:14:10,040 Bueno, pues revisamos entonces lo que hemos hecho sobre métodos 270 00:14:10,040 --> 00:14:10,880 estáticos, ¿vale? 271 00:14:10,880 --> 00:14:13,480 Incorporamos ahora ese concepto. 272 00:14:13,480 --> 00:14:16,280 El concepto de método estático. 273 00:14:16,280 --> 00:14:19,680 Un método estático es un método que me da igual el objeto que lo 274 00:14:19,680 --> 00:14:20,520 llame. 275 00:14:20,520 --> 00:14:23,000 Me da igual que lo llame p1, que lo llame p2, que lo llame p3, 276 00:14:23,000 --> 00:14:25,320 me da igual, porque va a hacer lo mismo. 277 00:14:25,320 --> 00:14:28,480 Entonces, para que un método estático haga lo mismo, 278 00:14:28,480 --> 00:14:31,680 entonces es imposible que use variables de clase. 279 00:14:31,680 --> 00:14:34,520 Perdón, variables propias del objeto es imposible. 280 00:14:34,520 --> 00:14:36,920 Porque si usa variables propias del objeto, 281 00:14:36,920 --> 00:14:38,560 va a actuar de forma distinta. 282 00:14:38,560 --> 00:14:40,760 Si lo llama un objeto, lo llama otro. 283 00:14:40,760 --> 00:14:43,240 De hecho, si a mí me da la gana y decir, oye, 284 00:14:43,240 --> 00:14:45,240 devolver precio total con IVA. 285 00:14:45,240 --> 00:14:47,480 Le voy a poner estático porque se me antoja, 286 00:14:47,480 --> 00:14:49,600 me da la gana ponerle estático. 287 00:14:49,600 --> 00:14:52,920 A este me va a decir, ¿pero qué me estás contando? 288 00:14:52,920 --> 00:14:56,640 Me dice, si tú quieres que yo sea en método estático, 289 00:14:56,640 --> 00:14:59,200 perdona, entonces no uses una propiedad del objeto. 290 00:14:59,200 --> 00:15:01,360 Pero esta idiota dice, no puede ser. 291 00:15:01,360 --> 00:15:04,560 ¿Cómo voy a ser yo un método estático y luego usar una 292 00:15:04,560 --> 00:15:05,480 propiedad del objeto? 293 00:15:05,480 --> 00:15:07,720 Entonces, ¿no sería estático por definición? 294 00:15:07,720 --> 00:15:09,520 Porque esta propiedad depende del objeto. 295 00:15:09,520 --> 00:15:12,560 Es diferente para p1 o para p2 o para p3, 296 00:15:12,560 --> 00:15:14,880 con lo cual yo voy a funcionar de forma distinta. 297 00:15:14,880 --> 00:15:19,120 Si trabajas con p1, con p2, con p3, entonces dice, oye, no. 298 00:15:19,120 --> 00:15:22,800 Si quieres que sea estático, no uses propiedades del objeto. 299 00:15:22,800 --> 00:15:25,200 Claro, es que yo a ese método nunca le pondría el estático 300 00:15:25,200 --> 00:15:26,040 porque no lo es. 301 00:15:30,360 --> 00:15:32,800 Pero al de arriba sí que se lo puedo poner porque el de arriba 302 00:15:32,800 --> 00:15:34,340 no usa ninguna propiedad del objeto. 303 00:15:34,340 --> 00:15:37,840 Al de arriba se lo puedo poner y se lo debo poner. 304 00:15:37,840 --> 00:15:41,320 Cuando ya se lo he puesto y he identificado que es estático, 305 00:15:41,320 --> 00:15:45,560 ahora ya el this ya no me deja usarlo, no tiene sentido. 306 00:15:45,560 --> 00:15:48,440 Porque el this significa el objeto que está llamando al 307 00:15:48,440 --> 00:15:50,800 método. 308 00:15:50,800 --> 00:15:53,040 Pero es que en este caso da igual el objeto que llame al 309 00:15:53,040 --> 00:15:55,120 método porque va a funcionar igual en todos. 310 00:15:55,120 --> 00:15:57,680 Entonces, me da igual el objeto que llame al método. 311 00:15:57,680 --> 00:16:00,160 Por eso no te deja usar el this. 312 00:16:00,160 --> 00:16:03,440 Lo incorpora ya en la sintaxis, ese concepto lo incorpora. 313 00:16:03,440 --> 00:16:05,360 Y cuando tú te refieres a la variable estática, 314 00:16:05,360 --> 00:16:07,440 la llamas con su clase y ya está. 315 00:16:07,440 --> 00:16:09,100 Como se llaman las variables estáticas, 316 00:16:09,100 --> 00:16:11,720 con el nombre de su clase. 317 00:16:11,720 --> 00:16:13,240 Si el parámetro tuviera otro nombre, 318 00:16:13,240 --> 00:16:14,640 es que no haría ni falta. 319 00:16:14,640 --> 00:16:19,080 Imaginaos que este parámetro yo lo llamo IVA1, IVA1. 320 00:16:19,080 --> 00:16:23,400 Pues, entonces, ahora es que aquí no haría ni falta. 321 00:16:23,400 --> 00:16:25,160 Porque aquí ya no hay confusión. 322 00:16:25,160 --> 00:16:26,920 Como se llaman distinto, no hay confusión. 323 00:16:26,920 --> 00:16:30,960 IVA es la propiedad de arriba e IVA1 es el parámetro. 324 00:16:30,960 --> 00:16:32,520 No habría confusión. 325 00:16:32,520 --> 00:16:37,560 Pero yo lo he llamado a propósito igual para tener que 326 00:16:37,560 --> 00:16:38,040 cambiarse. 327 00:16:38,040 --> 00:16:42,400 Lo que yo lo llamo igual, aquí hay una pedazo confusión 328 00:16:42,400 --> 00:16:43,240 impresionante. 329 00:16:43,240 --> 00:16:43,840 ¿IVA quién es? 330 00:16:43,840 --> 00:16:46,360 Pues, IVA siempre sería el parámetro. 331 00:16:46,360 --> 00:16:48,560 Oye, ojo, que este no quiero que sea el parámetro. 332 00:16:48,560 --> 00:16:51,200 Este quiero que sea la propiedad de arriba. 333 00:16:51,200 --> 00:16:52,880 Pues, llámala con su nombre completo. 334 00:16:52,880 --> 00:16:55,280 Llámala con su nombre completo. 335 00:16:55,280 --> 00:16:56,560 Pedido.IVA. 336 00:16:56,560 --> 00:16:57,060 ¿Vale? 337 00:17:01,960 --> 00:17:02,640 ¿Vale? 338 00:17:02,640 --> 00:17:05,760 Bueno, pues, estos son los métodos estáticos. 339 00:17:05,760 --> 00:17:07,200 Y ahora vendría la pregunta, oye, 340 00:17:07,200 --> 00:17:09,520 ¿por qué dices que es recomendable y que hay que poner 341 00:17:09,520 --> 00:17:10,720 el estático delante? 342 00:17:10,720 --> 00:17:13,320 Pero si yo lo tenía antes y la aplicación sonaba perfectamente, 343 00:17:13,440 --> 00:17:15,440 ¿estupendo? 344 00:17:15,440 --> 00:17:17,480 Hombre, vale, sí, todo era estupendo. 345 00:17:17,480 --> 00:17:20,840 Pero la ventaja de un método estático es que como funciona 346 00:17:20,840 --> 00:17:23,160 igual lo llame el objeto que lo llame, 347 00:17:23,160 --> 00:17:26,040 lo puedes llamar incluso sin que exista ningún objeto. 348 00:17:26,040 --> 00:17:27,320 Sin que exista ninguno. 349 00:17:27,320 --> 00:17:29,960 Como a la variable IVA, que la podíamos llamar aunque no 350 00:17:29,960 --> 00:17:30,960 existiera ningún objeto. 351 00:17:30,960 --> 00:17:33,760 Podríamos hacer pedido.IVA igual a tal. 352 00:17:33,760 --> 00:17:36,200 Pues, los métodos estáticos tienen esa ventaja. 353 00:17:36,200 --> 00:17:38,600 Que funcionan como funciones genéricas, 354 00:17:38,600 --> 00:17:40,800 no asociadas a ningún objeto. 355 00:17:40,800 --> 00:17:44,200 Y lo puedes llamar aunque no existan los objetos. 356 00:17:44,200 --> 00:17:48,320 Entonces, me permiten hacer eso que en tiempo remoto se llamaba 357 00:17:48,320 --> 00:17:50,440 funciones de librería. 358 00:17:50,440 --> 00:17:53,040 Tú metes un código, una función y lo llamas sin más. 359 00:17:53,040 --> 00:17:56,560 Y ahí no hay ningún objeto asociado ni hay nada. 360 00:17:56,560 --> 00:17:58,760 Esa es la gran ventaja. 361 00:17:58,760 --> 00:17:59,960 Y la llamas sin más. 362 00:18:03,120 --> 00:18:04,600 ¿Vale? 363 00:18:04,640 --> 00:18:11,640 Vamos a llamar a este método de esa manera. 364 00:18:11,640 --> 00:18:13,680 Vámonos otra vez a fijar IVA. 365 00:18:13,680 --> 00:18:16,240 Fijar IVA nuestro main, nuestra funcionalidad fijar IVA. 366 00:18:16,240 --> 00:18:18,560 Y luego ahora hacemos un ejemplo que se vea mejor. 367 00:18:18,560 --> 00:18:20,760 En nuestra funcionalidad fijar IVA habíamos fijado el IVA 368 00:18:20,760 --> 00:18:22,600 directamente así. 369 00:18:22,600 --> 00:18:25,120 Pero vamos a suponer que queremos llamar al método set 370 00:18:25,120 --> 00:18:27,200 IVA este de aquí. 371 00:18:27,200 --> 00:18:30,360 El método set IVA este de aquí que yo he llamado, 372 00:18:30,360 --> 00:18:39,560 le pasamos por un parámetro esto que hemos leído, ¿vale? 373 00:18:39,560 --> 00:18:43,960 Y el método set IVA al ser estático lo puedo llamar 374 00:18:43,960 --> 00:18:47,680 asociado al nombre de la clase directamente. 375 00:18:47,680 --> 00:18:51,240 Este método no lo llamo asociado a ningún objeto. 376 00:18:51,240 --> 00:18:54,240 No, porque da igual el objeto que lo llame, da igual. 377 00:18:54,240 --> 00:18:56,200 Como es estático va a hacer lo mismo, da igual. 378 00:18:56,200 --> 00:18:58,200 Pues lo llamo asociado al nombre de la clase. 379 00:19:01,120 --> 00:19:03,600 Y esa es la ventaja de los métodos estáticos que son como 380 00:19:03,600 --> 00:19:05,880 métodos genéricos que tú los llamas asociados al nombre de 381 00:19:05,880 --> 00:19:08,560 una clase y te hacen lo que tú hayas puesto, 382 00:19:08,560 --> 00:19:13,040 independientemente de ningún objeto en particular. 383 00:19:13,040 --> 00:19:15,800 Y los hemos estado usando con el math.random, 384 00:19:15,800 --> 00:19:17,120 el math.no sé qué. 385 00:19:17,120 --> 00:19:21,760 Ahora vamos a ello para que quede claro. 386 00:19:21,760 --> 00:19:24,480 A ver, no es que sea obligatorio llamar los métodos 387 00:19:24,480 --> 00:19:25,200 estáticos así. 388 00:19:25,200 --> 00:19:27,280 Yo puedo llamarlo asociado a un nombre de objeto si me da la 389 00:19:27,280 --> 00:19:28,200 gana. 390 00:19:28,200 --> 00:19:31,160 Yo puedo hacer esto si quiero, ¿vale? 391 00:19:31,160 --> 00:19:32,360 P0, ¿qué son pedidos? 392 00:19:35,400 --> 00:19:41,200 Pedidos de cero, punto, joder, ¿vale? 393 00:19:41,200 --> 00:19:41,700 SetIva. 394 00:19:45,320 --> 00:19:47,920 Yo puedo hacer esto si me da la gana. 395 00:19:47,920 --> 00:19:50,320 Estoy llamando al método igual. 396 00:19:50,320 --> 00:19:52,360 Lo está llamando un objeto, pero es que da igual, 397 00:19:52,360 --> 00:19:53,520 el objeto no pinta nada. 398 00:19:53,520 --> 00:19:56,800 El objeto no pinta nada porque este método no usa las 399 00:19:56,800 --> 00:19:57,880 propiedades de este objeto. 400 00:19:58,840 --> 00:20:01,160 Solo usa la propiedad global Iva. 401 00:20:01,160 --> 00:20:03,360 Con lo cual, me da igual que me llame pedidos de cero, 402 00:20:03,360 --> 00:20:05,080 que me llame pedidos de uno, es que me da igual. 403 00:20:05,080 --> 00:20:06,620 De hecho, por eso se pone en amarillo. 404 00:20:06,620 --> 00:20:07,840 Te dice, oye, qué feo. 405 00:20:07,840 --> 00:20:09,120 SetIva es un método estático. 406 00:20:09,120 --> 00:20:10,800 Llámale con el nombre de la clase. 407 00:20:10,800 --> 00:20:12,480 No me llames con el nombre de un objeto. 408 00:20:12,480 --> 00:20:14,480 Si tú tal, da igual que lo llames. 409 00:20:14,480 --> 00:20:17,360 Vale, pues la forma buena y bonita de llamarlo es la de 410 00:20:17,360 --> 00:20:21,920 arriba, en la que se ve claro que ese método lo que hace no 411 00:20:21,920 --> 00:20:23,560 tiene nada que ver con ningún objeto. 412 00:20:28,240 --> 00:20:29,920 Esto, pues, no lo usaríamos. 413 00:20:35,920 --> 00:20:38,160 También porque, de hecho, nos ahorraríamos futuros null 414 00:20:38,160 --> 00:20:40,480 pointer exception, si es que este objeto no tiene null. 415 00:20:46,920 --> 00:20:50,240 Bueno, pues los métodos estáticos nos abren un mundo 416 00:20:50,240 --> 00:20:51,680 de posibilidades. 417 00:20:51,680 --> 00:20:54,960 Por ejemplo, como ya sabéis, porque lo hemos usado, 418 00:20:55,000 --> 00:21:04,320 resulta que la máquina virtual de Java, que es esta, 419 00:21:04,320 --> 00:21:13,480 es decir, a ver, nosotros, aparte de nuestras 3 clases, 420 00:21:13,480 --> 00:21:17,000 ítem, pedido y main, aparte de esas clases, 421 00:21:17,000 --> 00:21:20,560 tenemos clases a las que podemos acceder que están metidas en 422 00:21:20,560 --> 00:21:24,120 nuestro proyecto, aunque no lo sepamos, que están metidas, 423 00:21:24,120 --> 00:21:28,480 que están todas aquí, donde pone JR. 424 00:21:28,480 --> 00:21:30,960 Fijaos la cantidad de clases que tenemos. 425 00:21:30,960 --> 00:21:36,320 Por ejemplo, aquí, solo aquí, tropecientas, todas estas. 426 00:21:36,320 --> 00:21:38,440 Es decir, cuando hacemos un proyecto, 427 00:21:38,440 --> 00:21:40,640 el proyecto no tiene solo nuestras clases. 428 00:21:40,640 --> 00:21:44,440 Tiene mogollón metidas en eso que está bajo el paraguas de 429 00:21:44,440 --> 00:21:44,960 JR. 430 00:21:44,960 --> 00:21:46,720 Tiene mogollón. 431 00:21:46,720 --> 00:21:48,320 Y esas clases tienen cosas. 432 00:21:48,320 --> 00:21:50,080 De esas clases podemos instanciar objetos, 433 00:21:50,080 --> 00:21:52,200 por ejemplo, de scanner, que también está por ahí. 434 00:21:52,200 --> 00:21:54,080 Hemos iniciado un new scan. 435 00:21:54,080 --> 00:21:56,560 Pero es que hemos hecho más cosas aparte del scanner. 436 00:21:56,560 --> 00:21:59,040 Por ejemplo, si uno baja por aquí, 437 00:21:59,040 --> 00:22:03,480 encuentra la clase math. 438 00:22:03,480 --> 00:22:05,640 Esta clase no la hemos hecho nosotros, pero está ahí. 439 00:22:05,640 --> 00:22:06,840 La podemos usar. 440 00:22:06,840 --> 00:22:07,360 Vale. 441 00:22:07,360 --> 00:22:18,360 Pues, si entramos en esta clase, que es esta de aquí, 442 00:22:18,360 --> 00:22:25,600 la clase math, esta clase no la hemos hecho nosotros. 443 00:22:25,600 --> 00:22:27,280 Está hecha, pero la podemos usar. 444 00:22:27,280 --> 00:22:29,280 Pues, esta clase tiene cosas maravillosas. 445 00:22:29,280 --> 00:22:34,760 Entre ellas, un montonazo de métodos con el static delante. 446 00:22:34,760 --> 00:22:37,120 ¿Y qué significa aquellos métodos con el static delante? 447 00:22:37,120 --> 00:22:39,400 Que los puedo llamar con el nombre de la clase para hacer 448 00:22:39,400 --> 00:22:40,240 cosas. 449 00:22:40,240 --> 00:22:43,640 Por ejemplo, que hago math.coseno, 450 00:22:43,640 --> 00:22:46,520 pasándole, pues, me devuelve el coseno como valor de retorno, 451 00:22:46,520 --> 00:22:47,880 el retorno. 452 00:22:47,880 --> 00:22:48,680 ¿Vale? 453 00:22:48,680 --> 00:22:50,160 ¿Qué hago math.random? 454 00:22:50,160 --> 00:22:52,600 Pues, por aquí tendré un método random que me hace lo que ya 455 00:22:52,600 --> 00:22:54,320 hemos usado, la tangente. 456 00:22:54,320 --> 00:22:56,520 Como veis, son todos estáticos. 457 00:22:56,520 --> 00:22:58,440 Todos estáticos. 458 00:22:58,440 --> 00:23:02,160 Y ahí tenemos, pues, de todo. 459 00:23:02,160 --> 00:23:03,000 ¿Vale? 460 00:23:03,000 --> 00:23:05,320 Todos estos métodos los podemos usar si nos da la gana para 461 00:23:05,320 --> 00:23:07,240 hacer millones de cosas matemáticas. 462 00:23:10,080 --> 00:23:13,200 Y todos ellos son estáticos. 463 00:23:13,200 --> 00:23:14,720 ¿Por qué son estáticos? 464 00:23:14,720 --> 00:23:17,880 Porque no usan propiedades de ningún objeto math concreto. 465 00:23:17,880 --> 00:23:20,080 Es que no hace falta crear un objeto math concreto. 466 00:23:20,080 --> 00:23:22,280 Porque no hace falta. 467 00:23:22,280 --> 00:23:26,640 Tú usas la clase math, o sea, ya escribes la clase math, 468 00:23:26,640 --> 00:23:29,240 y llamamos a sus métodos estáticos para hacer cosas, 469 00:23:29,240 --> 00:23:31,400 que es lo que hemos hecho ya. 470 00:23:31,400 --> 00:23:32,680 ¿Vale? 471 00:23:32,680 --> 00:23:35,160 Y quien dice la clase math con todos sus métodos estáticos 472 00:23:35,160 --> 00:23:40,360 delante, dice millones de clases que hay por aquí que nos 473 00:23:40,360 --> 00:23:43,240 permiten usar directamente métodos estáticos para hacer 474 00:23:43,240 --> 00:23:45,320 cosas. 475 00:23:45,320 --> 00:23:47,200 O instanciar objetos también, como Scanner, 476 00:23:47,200 --> 00:23:48,600 que Scanner lo hemos instanciado. 477 00:23:48,600 --> 00:23:52,560 No hemos usado métodos estáticos, lo hemos instanciado. 478 00:23:52,560 --> 00:23:54,720 Bueno, pues, gracias a que están los métodos estáticos, 479 00:23:54,720 --> 00:23:57,120 pues, podemos usar un montón de funcionalidades ya hechas de 480 00:23:57,120 --> 00:23:59,040 otros, ya hechas sin crear objetos. 481 00:24:01,840 --> 00:24:05,360 Voy a poner aquí, aunque ahora lo borre, aquí de este main. 482 00:24:05,360 --> 00:24:08,120 Por ejemplo, cuando hemos usado el método random para hacer 483 00:24:08,120 --> 00:24:12,600 cosas, o el de elevar una potencia a otra, por ejemplo, 484 00:24:12,600 --> 00:24:14,000 voy a elevar un número a otro. 485 00:24:14,000 --> 00:24:21,760 Que para eso la clase math tiene su método pw, ¿verdad? 486 00:24:24,880 --> 00:24:28,440 O aquí, ¿dónde estoy? 487 00:24:28,440 --> 00:24:31,760 Ah, debe ser que estoy fuera del método main, ¿no? 488 00:24:31,760 --> 00:24:34,360 Y por eso se queja. 489 00:24:34,360 --> 00:24:36,880 Vale, por ejemplo, yo aquí estoy. 490 00:24:36,880 --> 00:24:40,560 De la clase math, llamando al método estático pw, 491 00:24:40,560 --> 00:24:43,240 que es potencia, que es 3 elevado a 4. 492 00:24:43,240 --> 00:24:45,480 El valor de retorno, que me devuelva el valor de retorno, 493 00:24:45,480 --> 00:24:47,320 pues, hombre, lo debería guardar en algún lado, ¿no? 494 00:24:47,320 --> 00:24:48,720 Para que esto tuviera algún sentido. 495 00:24:53,720 --> 00:24:56,920 Vale, y si yo ahora aquí hago esto, pues, efectivamente, 496 00:24:56,920 --> 00:24:58,680 me va a mostrar 3 elevado a 4. 497 00:24:58,680 --> 00:25:03,080 Vale, hemos hecho la llamada al método estático este de la 498 00:25:03,080 --> 00:25:05,360 clase math. 499 00:25:05,360 --> 00:25:09,200 Si yo accedo, efectivamente, tengo este método. 500 00:25:09,200 --> 00:25:12,760 Tengo un método estático pw, al que le paso 2 numeritos y me 501 00:25:12,760 --> 00:25:13,760 devuelve como returns. 502 00:25:13,760 --> 00:25:16,280 De hecho, la documentación está con los comentarios, 503 00:25:16,280 --> 00:25:19,400 me lo está diciendo, todo lo que te hace, patatín, patatán. 504 00:25:19,400 --> 00:25:21,240 Y la clave es que es estático. 505 00:25:21,240 --> 00:25:24,720 Entonces, al ser estático, yo lo puedo llamar así, 506 00:25:24,720 --> 00:25:27,360 con el nombre de la clase. 507 00:25:27,360 --> 00:25:29,440 ¿Qué me da la instancia de un objeto math? 508 00:25:29,440 --> 00:25:31,160 Es que ni siquiera se me va a dejar instanciar porque 509 00:25:31,160 --> 00:25:33,160 seguramente se ha privado el constructor. 510 00:25:33,160 --> 00:25:36,680 Voy a ver si me deja instanciar un objeto math. 511 00:25:36,680 --> 00:25:40,200 No creo que me deje porque habrá puesto el constructor privado. 512 00:25:40,200 --> 00:25:43,040 Imagino, precisamente, para no dejar instanciar. 513 00:25:43,040 --> 00:25:43,600 Justo, ¿ves? 514 00:25:43,600 --> 00:25:46,920 Me dice, no es visible. 515 00:25:46,920 --> 00:25:48,600 Mirad, ¿ves? 516 00:25:48,600 --> 00:25:52,320 ¿Recordáis cuando habíamos los modificadores de accesos? 517 00:25:52,320 --> 00:25:55,200 Dije, puede tener sentido que el constructor sea privado. 518 00:25:55,200 --> 00:25:57,760 En algunos casos te puede interesar no permitir que te 519 00:25:57,760 --> 00:25:59,440 instancien. 520 00:25:59,440 --> 00:26:02,200 Pues, hombre, a la clase math no le interesa que le instancien. 521 00:26:02,240 --> 00:26:04,160 Si lo único que se va a usar de la clase math son métodos 522 00:26:04,160 --> 00:26:07,160 estáticos, para eso no hay que crear ningún objeto. 523 00:26:07,160 --> 00:26:09,280 Pones el nombre de la clase, la llamada, el método. 524 00:26:09,280 --> 00:26:10,280 Entonces, lo prohíbes. 525 00:26:10,280 --> 00:26:12,600 Dice, no, no, no, que nadie instancie math. 526 00:26:12,600 --> 00:26:14,280 Si yo cambio eso y lo pongo public, 527 00:26:14,280 --> 00:26:15,880 pues, ya sé que me dejaría instanciar. 528 00:26:15,880 --> 00:26:16,480 Pero, ¿para qué? 529 00:26:16,480 --> 00:26:17,560 ¿Para qué voy a hacer eso? 530 00:26:24,000 --> 00:26:30,000 Bueno, pues, entonces, si me dejara instanciar porque fuera 531 00:26:30,040 --> 00:26:35,040 public, que no me deja, me daría igual hacer math.pou que 532 00:26:35,040 --> 00:26:36,960 hacer esto. 533 00:26:36,960 --> 00:26:40,960 Me daría lo mismo llamarlo con un objeto concreto que con el 534 00:26:40,960 --> 00:26:41,800 nombre de la clase. 535 00:26:41,800 --> 00:26:43,200 Pero, ¿para qué voy a crear un objeto? 536 00:26:43,200 --> 00:26:44,840 Si no lo necesito para llamar al método. 537 00:26:44,840 --> 00:26:45,800 No lo necesito. 538 00:26:45,800 --> 00:26:47,440 Pues, ¿para qué voy a crear un objeto? 539 00:26:47,440 --> 00:26:50,120 Lo llamo con el nombre de la clase y listo. 540 00:26:50,120 --> 00:26:50,620 ¿Vale? 541 00:26:50,620 --> 00:26:59,420 Vale, pues, los métodos estáticos son, 542 00:26:59,420 --> 00:27:03,140 como está claro, como podéis imaginaros, muy útiles. 543 00:27:03,140 --> 00:27:04,980 Porque es que yo a veces necesito hacer código, 544 00:27:04,980 --> 00:27:07,220 recoger código que es independiente de que existan 545 00:27:07,220 --> 00:27:10,380 objetos, es independiente. 546 00:27:10,380 --> 00:27:16,780 Y, de hecho, para, bueno, tenemos tiempo de sobra, 547 00:27:16,780 --> 00:27:18,140 iba a decir, vamos a aprovechar, 548 00:27:18,140 --> 00:27:19,780 ya que tenemos los métodos estáticos, 549 00:27:19,820 --> 00:27:22,900 y vamos a olvidarnos de una vez por todas del problema este de 550 00:27:22,900 --> 00:27:25,540 los escáner, que, uy, cuidado cuando lees, 551 00:27:25,540 --> 00:27:28,820 que lees un número y luego lees un scanline, que no sé qué. 552 00:27:28,820 --> 00:27:31,500 Vamos a hacernos unos métodos estáticos en una clase aparte 553 00:27:31,500 --> 00:27:34,780 de utilidades de teclado que solucionen todo eso. 554 00:27:34,780 --> 00:27:39,300 Y ahora ya los llamaremos y ya nos será mucho más fácil leer 555 00:27:39,300 --> 00:27:40,260 por teclado. 556 00:27:40,260 --> 00:27:41,700 Porque ya nos tenemos, nos vamos a olvidar de todo eso. 557 00:27:41,700 --> 00:27:42,940 Vamos a aprovechar. 558 00:27:42,940 --> 00:27:46,020 Vamos a aprovechar para hacernos nuestra propia librería de 559 00:27:46,020 --> 00:27:48,780 métodos estáticos para cosas que nos son útiles. 560 00:27:48,780 --> 00:27:50,300 Que eso es para lo que interesan. 561 00:27:50,300 --> 00:27:52,820 Math es una librería de métodos para hacer cosas matemáticas. 562 00:27:52,820 --> 00:27:54,860 Eso es lo que es math, una librería de métodos para hacer 563 00:27:54,860 --> 00:27:56,300 cosas matemáticas. 564 00:27:56,300 --> 00:28:00,420 Vamos a hacernos una nuestra nosotros para hacer lecturas por 565 00:28:00,420 --> 00:28:05,460 teclado sin tener que estar todo el rato pendientes de hacer un 566 00:28:05,460 --> 00:28:08,740 doble next line si he leído el número, etcétera. 567 00:28:08,740 --> 00:28:13,500 Será una buena forma de poner en práctica los métodos estáticos. 568 00:28:13,500 --> 00:28:14,000 ¿Vale? 569 00:28:14,000 --> 00:28:14,500 ¿Vale? 570 00:28:18,240 --> 00:28:19,560 Vale. 571 00:28:19,560 --> 00:28:20,900 Pues, vamos a hacer esa librería. 572 00:28:20,900 --> 00:28:24,680 Y ya de paso aprovechamos para ver cómo podemos exportarla e 573 00:28:24,680 --> 00:28:27,000 importarla en los proyectos que nos dé la gana. 574 00:28:27,000 --> 00:28:30,440 Que tiene que ver directamente con el tema de paquetes. 575 00:28:30,440 --> 00:28:31,320 Vale. 576 00:28:31,320 --> 00:28:34,440 Bueno, como esto va a ser un poquito largo, 577 00:28:34,440 --> 00:28:36,520 ¿me podéis descansar un poco? 578 00:28:36,520 --> 00:28:38,960 Pues, venga, vamos a parar unos minutos.