1 00:00:00,000 --> 00:00:07,000 Bueno, pues este método es bastante interesante porque nos permite a un pedido que ya existe 2 00:00:07,000 --> 00:00:11,000 No comas, Andrés, joder, de verdad, ¿eh? 3 00:00:12,000 --> 00:00:15,000 Ay, Dios mío 4 00:00:25,000 --> 00:00:30,000 Bueno, a ver, entonces este método nos lo pedía el cuerpo 5 00:00:30,000 --> 00:00:36,000 porque obviamente a un pedido que ya existe tiene sentido que se le añadan ítems, nos lo pedía el cuerpo 6 00:00:36,000 --> 00:00:42,000 Bueno, y una vez que ya está hecho, de nuevo, lo bueno que tiene es que una vez hecho este código 7 00:00:42,000 --> 00:00:47,000 ya este código uno ya se olvida de él, ya me da igual, yo ya lo hice en su momento y me olvido de él 8 00:00:47,000 --> 00:00:51,000 Cada vez que tenga que añadir un ítem, llamo al método y lo añado 9 00:00:51,000 --> 00:00:55,000 Como esté hecho el método por dentro es que ya no me preocupa nada, ¿vale? 10 00:00:55,000 --> 00:00:59,000 Esa es la famosa encapsulación que mencionábamos el otro día cuando hacía el método de objetos 11 00:00:59,000 --> 00:01:04,000 Yo hago un código dentro de un método, en el momento de hacerlo, pues obviamente he tenido que pensar y hacerlo 12 00:01:04,000 --> 00:01:09,000 Una vez que ya está hecho, todo esto ya se queda encapsulado con su nombrecito 13 00:01:09,000 --> 00:01:13,000 y yo ya lo llamo las doscientas mil veces que necesite 14 00:01:13,000 --> 00:01:17,000 que como esté hecho por dentro ya me da igual, me limito a llamar, ¿vale? 15 00:01:17,000 --> 00:01:20,000 Esa es la encapsulación, la ventaja de la aplicación de estos objetos 16 00:01:20,000 --> 00:01:22,000 Vale 17 00:01:27,000 --> 00:01:31,000 Bueno, pues venga, entonces, este método tiene su interés, ¿vale? 18 00:01:31,000 --> 00:01:35,000 ¿Qué otras cosas son interesantes realizar con los pedidos? 19 00:01:36,000 --> 00:01:42,000 Se supone que uno ha hablado con el cliente y el cliente le ha explicado las cosas que va a necesitar 20 00:01:42,000 --> 00:01:45,000 y entonces él las recoge y las mete aquí dentro 21 00:01:45,000 --> 00:01:49,000 Hombre, pues si estamos hablando de precios y de pedidos 22 00:01:49,000 --> 00:01:57,000 de hecho, el ítem, cada ítem, el boy, la goma, lo que fuera, cada ítem tiene un precio como propiedad 23 00:01:57,000 --> 00:02:03,000 Bueno, pues tiene sentido que el cliente necesite calcular el coste de un pedido entero, ¿no? 24 00:02:03,000 --> 00:02:07,000 Tiene sentido, seguramente sea una funcionalidad que el cliente me haya dicho 25 00:02:07,000 --> 00:02:13,000 Oye, cuando digo cliente, o sea no lo confundáis con el cliente de la aplicación clientes pedidos 26 00:02:13,000 --> 00:02:15,000 digo el que me está pidiendo el software, ¿vale? 27 00:02:15,000 --> 00:02:19,000 El que me está pidiendo el software lo más probable es que me haya dicho 28 00:02:19,000 --> 00:02:25,000 Oye, me voy a necesitar cuando yo tengo un pedido en mi aplicación ya hecho 29 00:02:25,000 --> 00:02:30,000 Voy a editar, dándole a un botoncito, paz, calcular lo que cuesta, voy a necesitarlo 30 00:02:30,000 --> 00:02:32,000 Ah, vale, muy bien 31 00:02:32,000 --> 00:02:38,000 Pues en ese caso, automáticamente ya pensamos en un método para hacer eso 32 00:02:38,000 --> 00:02:43,000 Pensamos en un método para calcular lo que me ha costado un pedido 33 00:02:43,000 --> 00:02:46,000 Ese método donde lo metemos 34 00:02:46,000 --> 00:02:50,000 Hombre, pues habrá que pensar con qué está relacionado esta funcionalidad 35 00:02:50,000 --> 00:02:54,000 La funcionalidad de calcular lo que me cuesta un pedido 36 00:02:54,000 --> 00:02:57,000 Pues el propio denunciado me lo dice, está relacionado con un pedido 37 00:02:57,000 --> 00:03:02,000 Está relacionado con un pedido, pues el sitio para meter ese método es el pedido 38 00:03:02,000 --> 00:03:05,000 Es el sitio para meterlo, ¿vale? 39 00:03:05,000 --> 00:03:10,000 Bueno, pues entonces en la clase pedido tiene por tanto todo el sentido del mundo 40 00:03:10,000 --> 00:03:13,000 que añadamos otro método más 41 00:03:13,000 --> 00:03:19,000 Un método para devolver el precio del pedido, ¿vale? 42 00:03:19,000 --> 00:03:24,000 Entonces, vamos a hacerlo 43 00:03:24,000 --> 00:03:29,000 Lo de siempre, un nombre, el nombre más explicativo posible 44 00:03:29,000 --> 00:03:34,000 Venga, pues devolver precio total, por ejemplo, devolver precio total 45 00:03:36,000 --> 00:03:41,000 Y ahora nos hacemos las preguntas de siempre 46 00:03:41,000 --> 00:03:46,000 ¿Vale? 47 00:03:46,000 --> 00:03:48,000 ¿Vale? 48 00:03:48,000 --> 00:03:50,000 Devolver precio total 49 00:03:50,000 --> 00:03:51,000 ¿Vale? 50 00:03:51,000 --> 00:03:54,000 Ya hemos tomado una decisión de diseño importantísima 51 00:03:54,000 --> 00:03:59,000 Que es donde ubico este método dentro de todas las clases que tengo 52 00:03:59,000 --> 00:04:05,000 Pues donde lo ubicamos, repito, como es un método que trabaja con cosas del pedido 53 00:04:05,000 --> 00:04:08,000 Pues lo ubico en la clase pedido 54 00:04:08,000 --> 00:04:09,000 ¿Vale? 55 00:04:09,000 --> 00:04:14,000 Todo eso son decisiones de diseño que son tan importantes como hacer un código puro y duro 56 00:04:14,000 --> 00:04:16,000 No lo perdáis de vista 57 00:04:16,000 --> 00:04:19,000 Bueno, pues en la clase pedido habrá un método de volver pedido 58 00:04:19,000 --> 00:04:23,000 para calcular el precio de ese pedido que llama al método 59 00:04:23,000 --> 00:04:25,000 El nombre ya lo hemos seleccionado 60 00:04:25,000 --> 00:04:28,000 Nos hacemos el resto de preguntas 61 00:04:28,000 --> 00:04:32,000 ¿Para calcular el precio del pedido que llame a este método 62 00:04:32,000 --> 00:04:35,000 necesito alguna información desde fuera 63 00:04:35,000 --> 00:04:40,000 O con lo que tengo aquí ya en las propiedades voy a poder calcularlo 64 00:04:43,000 --> 00:04:46,000 ¿Y el precio de cada ida dónde está? 65 00:04:50,000 --> 00:04:52,000 Claro, está aquí 66 00:04:52,000 --> 00:04:57,000 Con lo cual, ¿necesito alguna información desde fuera 67 00:04:57,000 --> 00:05:01,000 para que este método pueda calcular el precio total? 68 00:05:02,000 --> 00:05:06,000 No, porque el objeto pedido tiene ya su array de ítems 69 00:05:06,000 --> 00:05:10,000 Y cada ítem tiene su precio dentro, al que yo puedo acceder 70 00:05:10,000 --> 00:05:13,000 Entonces no necesito ninguna información desde fuera 71 00:05:13,000 --> 00:05:17,000 para calcular el precio total de todos los ítems, la suma 72 00:05:17,000 --> 00:05:20,000 Para calcular la suma de los precios no lo necesito 73 00:05:20,000 --> 00:05:23,000 Está aquí toda la información en una propiedad 74 00:05:23,000 --> 00:05:28,000 Entonces, esto, fuera, me da parámetros 75 00:05:29,000 --> 00:05:31,000 Vale, tipo de dato de salida 76 00:05:31,000 --> 00:05:34,000 ¿Me va a devolver algo este método? 77 00:05:35,000 --> 00:05:37,000 ¿Sí o no? 78 00:05:40,000 --> 00:05:43,000 ¿El precio? ¿Es un método para devolverme el precio? 79 00:05:43,000 --> 00:05:45,000 Pues me tendrá que devolver el precio 80 00:05:45,000 --> 00:05:50,000 O sea, este método, su efecto no es modificar una propiedad 81 00:05:50,000 --> 00:05:52,000 Su efecto no es modificar el código 82 00:05:52,000 --> 00:05:54,000 ni modificar la descripción 83 00:05:54,000 --> 00:05:56,000 ni modificar los ítems, no 84 00:05:56,000 --> 00:05:58,000 Su precio es calcular una suma 85 00:05:58,000 --> 00:06:00,000 de precios individuales de ítem 86 00:06:00,000 --> 00:06:03,000 y me la tendrá que entregar, para que pueda trabajar con ella 87 00:06:03,000 --> 00:06:04,000 me la tendrá que entregar 88 00:06:04,000 --> 00:06:07,000 Si no, yo la pierdo, me la tendrá que entregar 89 00:06:07,000 --> 00:06:10,000 Bueno, pues entonces este método 90 00:06:10,000 --> 00:06:13,000 me va a devolver un dabble con valor de retorno 91 00:06:13,000 --> 00:06:15,000 que es el precio 92 00:06:19,000 --> 00:06:21,000 A ver, otro diseño posible 93 00:06:21,000 --> 00:06:24,000 podría ser, podría ser 94 00:06:25,000 --> 00:06:28,000 A ver, tenéis que seguirme, no vale que os perdáis 95 00:06:28,000 --> 00:06:30,000 Otro diseño posible podría ser 96 00:06:30,000 --> 00:06:34,000 Oye, ¿y por qué no haces además una propiedad aquí en pedido? 97 00:06:34,000 --> 00:06:36,000 Ya que estás 98 00:06:36,000 --> 00:06:38,000 Hazme una propiedad que sea el precio del pedido 99 00:06:38,000 --> 00:06:40,000 Hazme una propiedad 100 00:06:40,000 --> 00:06:43,000 Bueno, vale, venga, vamos a hacer una propiedad que sea el precio del pedido 101 00:06:43,000 --> 00:06:45,000 Por ejemplo así 102 00:06:45,000 --> 00:06:48,000 Imaginaos que yo haga una propiedad que sea el precio del pedido 103 00:06:48,000 --> 00:06:50,000 Joder, no quería poder traer 104 00:06:54,000 --> 00:06:57,000 Vale, bueno 105 00:06:57,000 --> 00:06:59,000 Vale, imaginaos, la voy a quitar ahora 106 00:06:59,000 --> 00:07:01,000 Pero imaginaos que me dijeréis 107 00:07:01,000 --> 00:07:04,000 Oye, ¿por qué no haces una propiedad que sea el precio del pedido? 108 00:07:04,000 --> 00:07:06,000 Venga, ya que estamos diseñando 109 00:07:06,000 --> 00:07:08,000 Todavía la estáis, estamos diseñando 110 00:07:08,000 --> 00:07:10,000 Pues yo puedo diseñar donde la gana 111 00:07:10,000 --> 00:07:13,000 Pues venga, voy a hacer que una propiedad del pedido sea su precio 112 00:07:13,000 --> 00:07:15,000 Pues ya está, la pongo 113 00:07:15,000 --> 00:07:17,000 Si yo pongo ahí esa propiedad 114 00:07:17,000 --> 00:07:19,000 Pues hombre, este método 115 00:07:19,000 --> 00:07:21,000 En lugar de devolverlo 116 00:07:21,000 --> 00:07:23,000 Podría hacer que devolviera a Void 117 00:07:23,000 --> 00:07:25,000 Y ahora ya lo que, este método 118 00:07:25,000 --> 00:07:27,000 Haría lo que tuviera que hacer 119 00:07:27,000 --> 00:07:30,000 Y a esa propiedad precio ya le asignaría lo que fuera 120 00:07:30,000 --> 00:07:32,000 Después de yo haberlo calculado, ¿verdad? 121 00:07:32,000 --> 00:07:34,000 Ya le asignaría lo que fuera 122 00:07:34,000 --> 00:07:36,000 Entonces en este caso 123 00:07:36,000 --> 00:07:39,000 No hace falta que haga un return y devuelva nada 124 00:07:39,000 --> 00:07:42,000 Porque ese precio que calcula 125 00:07:42,000 --> 00:07:45,000 Lo guardaría en esta propiedad 126 00:07:45,000 --> 00:07:47,000 Lo guardaría en esta propiedad 127 00:07:47,000 --> 00:07:50,000 ¿Entendéis? Esto es para que os quede claro 128 00:07:50,000 --> 00:07:53,000 El concepto de valor de retorno de un método 129 00:07:53,000 --> 00:07:56,000 El valor de retorno de un método 130 00:07:56,000 --> 00:07:58,000 Es algo que entregamos hacia afuera 131 00:07:58,000 --> 00:08:01,000 Porque alguien de fuera lo necesita 132 00:08:01,000 --> 00:08:03,000 ¿Vale? 133 00:08:03,000 --> 00:08:05,000 Pero puede ser que el método 134 00:08:05,000 --> 00:08:07,000 Sus efectos 135 00:08:07,000 --> 00:08:10,000 Sean simplemente actualizar propiedades 136 00:08:10,000 --> 00:08:12,000 Entonces si ha actualizado propiedades 137 00:08:12,000 --> 00:08:14,000 El efecto ya está ahí en la propiedad del objeto 138 00:08:14,000 --> 00:08:16,000 Ya está ahí y el de fuera puede acceder a esa propiedad 139 00:08:16,000 --> 00:08:18,000 Para ver cómo ha quedado ya modificada 140 00:08:18,000 --> 00:08:20,000 Puede acceder desde fuera 141 00:08:20,000 --> 00:08:22,000 Entonces no es necesario que lo devuelva 142 00:08:22,000 --> 00:08:24,000 ¿Vale? 143 00:08:24,000 --> 00:08:26,000 Entonces hombre, si uno cambia el diseño y lo pone así 144 00:08:26,000 --> 00:08:28,000 ¿Vale? 145 00:08:28,000 --> 00:08:30,000 Lo que pasa es que este diseño 146 00:08:30,000 --> 00:08:32,000 Se presta a que luego la aplicación pueda tener un montón de errores 147 00:08:32,000 --> 00:08:34,000 ¿Por qué? 148 00:08:34,000 --> 00:08:36,000 Porque oye, cuidado que tiene que haber una correspondencia siempre 149 00:08:36,000 --> 00:08:38,000 Entre el precio del pedido 150 00:08:38,000 --> 00:08:40,000 Y la suma de los precios que hay aquí 151 00:08:40,000 --> 00:08:42,000 Entonces si yo añado un ítem 152 00:08:42,000 --> 00:08:44,000 Tengo que acordarme automáticamente 153 00:08:44,000 --> 00:08:46,000 De llamar otra vez a devolver precio 154 00:08:46,000 --> 00:08:48,000 Para que actualice el precio 155 00:08:48,000 --> 00:08:50,000 No sé si me explico 156 00:08:50,000 --> 00:08:52,000 Si añado un ítem, el precio del pedido cambia 157 00:08:52,000 --> 00:08:54,000 Entonces voy a tener que estar muy hábil 158 00:08:54,000 --> 00:08:56,000 Para cada vez que añado un ítem 159 00:08:56,000 --> 00:08:58,000 Asegurarme de actualizar esta propiedad 160 00:09:00,000 --> 00:09:02,000 Asegurarme de actualizarla 161 00:09:02,000 --> 00:09:04,000 Para sumarle el precio del nuevo ítem 162 00:09:04,000 --> 00:09:06,000 Que he metido 163 00:09:06,000 --> 00:09:08,000 Pues hombre, vaya complicación 164 00:09:08,000 --> 00:09:10,000 Con eso estoy comprando todas las papeletas 165 00:09:10,000 --> 00:09:12,000 Para que la aplicación funcione mal 166 00:09:12,000 --> 00:09:14,000 Porque a lo mejor le añado un ítem 167 00:09:14,000 --> 00:09:16,000 De que entonces el precio se ha quedado anticuado 168 00:09:16,000 --> 00:09:18,000 Y no me acuerdo 169 00:09:20,000 --> 00:09:22,000 Entonces empiezo a comprar papeletas 170 00:09:22,000 --> 00:09:24,000 De que esto no funcione mal 171 00:09:24,000 --> 00:09:26,000 Mejor diseño, oye 172 00:09:26,000 --> 00:09:28,000 El precio ya está metido en los ítems, el de cada uno 173 00:09:28,000 --> 00:09:30,000 Cuando lo quieras 174 00:09:30,000 --> 00:09:32,000 Llama al método que te dé el actualizado 175 00:09:32,000 --> 00:09:34,000 Y olvídate de esta variable 176 00:09:34,000 --> 00:09:36,000 Que te vas a tener que actualizarla a tu mano 177 00:09:36,000 --> 00:09:38,000 Cada dos por tres 178 00:09:38,000 --> 00:09:40,000 Olvídate porque se presta a que la cagues seguro 179 00:09:40,000 --> 00:09:42,000 ¿Vale? 180 00:09:44,000 --> 00:09:46,000 Pero, repito 181 00:09:46,000 --> 00:09:48,000 Si estuviera ahí esa variable, este método entonces 182 00:09:48,000 --> 00:09:50,000 No necesitaría devolver nada 183 00:09:50,000 --> 00:09:52,000 Porque su efecto se quedaría aquí guardadito 184 00:09:52,000 --> 00:09:54,000 Y ya el de fuera, el main 185 00:09:54,000 --> 00:09:56,000 Que acceda a esa propiedad si quiere 186 00:09:56,000 --> 00:09:58,000 Si no, no 187 00:09:58,000 --> 00:10:00,000 Pero repito, como que si está aquí esta propiedad 188 00:10:00,000 --> 00:10:02,000 Nos complica la vida, por esto que os digo 189 00:10:02,000 --> 00:10:04,000 Nos la complica 190 00:10:04,000 --> 00:10:06,000 Pues la quitamos 191 00:10:06,000 --> 00:10:08,000 Y si la quitamos, entonces ahora ya este método 192 00:10:08,000 --> 00:10:10,000 Lo devuelve con ahorro de retorno 193 00:10:10,000 --> 00:10:12,000 Para que el de fuera 194 00:10:12,000 --> 00:10:14,000 Obtenga ese precio y haga lo que le de la gana 195 00:10:14,000 --> 00:10:16,000 ¿Vale? 196 00:10:16,000 --> 00:10:18,000 Entonces, como veis 197 00:10:18,000 --> 00:10:20,000 Nuestra tarea de programar 198 00:10:20,000 --> 00:10:22,000 Empieza a ganar cada vez más recorrido 199 00:10:22,000 --> 00:10:24,000 En temas de 200 00:10:24,000 --> 00:10:26,000 Diseño, de hacer diseños 201 00:10:26,000 --> 00:10:28,000 Que creen aplicaciones 202 00:10:28,000 --> 00:10:30,000 No solo que funcionen 203 00:10:30,000 --> 00:10:32,000 Porque cualquier aplicación puede funcionar 204 00:10:32,000 --> 00:10:34,000 Sino que genere 205 00:10:34,000 --> 00:10:36,000 El mínimo conjunto 206 00:10:36,000 --> 00:10:38,000 De errores posible 207 00:10:38,000 --> 00:10:40,000 El mínimo conjunto de situaciones 208 00:10:40,000 --> 00:10:42,000 Que puedan ser problemáticas 209 00:10:42,000 --> 00:10:44,000 Sobre todo que tú la puedas ampliar 210 00:10:44,000 --> 00:10:46,000 Que la puedas entender 211 00:10:46,000 --> 00:10:48,000 Sin mayores complicaciones 212 00:10:48,000 --> 00:10:50,000 Bueno, pues entonces 213 00:10:50,000 --> 00:10:52,000 Devolver precio total, lo tenemos claro 214 00:10:52,000 --> 00:10:54,000 No necesita que le pasemos nada 215 00:10:54,000 --> 00:10:56,000 Porque será la suma 216 00:10:56,000 --> 00:10:58,000 De los precios de los ítems independientes 217 00:10:58,000 --> 00:11:00,000 Con lo cual necesita que le pasemos nada 218 00:11:00,000 --> 00:11:02,000 Eso está claro 219 00:11:02,000 --> 00:11:04,000 Y que devuelve el precio total 220 00:11:04,000 --> 00:11:06,000 Bueno, pues nada, devuelve el precio total 221 00:11:06,000 --> 00:11:08,000 Ahora ya esto será hacer una suma cumulativa de toda la vida 222 00:11:08,000 --> 00:11:10,000 Ahora ya, nosotros en cada método 223 00:11:10,000 --> 00:11:12,000 Ya integramos lo que sabemos 224 00:11:12,000 --> 00:11:14,000 De programar 225 00:11:14,000 --> 00:11:16,000 El precio total cual va a ser 226 00:11:16,000 --> 00:11:18,000 Pues de cada ítem de este 227 00:11:18,000 --> 00:11:20,000 Cada ítem de este Array 228 00:11:20,000 --> 00:11:22,000 Tiene un precio 229 00:11:22,000 --> 00:11:24,000 Entonces tendremos que hacer una suma acumulativa 230 00:11:24,000 --> 00:11:26,000 Que vaya sumando esos precios 231 00:11:26,000 --> 00:11:28,000 Y nada más, recorrer un Array 232 00:11:28,000 --> 00:11:30,000 Y en una suma acumulativa ir sumándolo 233 00:11:30,000 --> 00:11:32,000 Pues ahora ya vamos aplicando donde corresponde 234 00:11:32,000 --> 00:11:34,000 Todas esas cosas que sabemos hacer 235 00:11:34,000 --> 00:11:36,000 Las aplicamos donde toque 236 00:11:36,000 --> 00:11:38,000 Toca ahora hacer una suma acumulativa 237 00:11:38,000 --> 00:11:40,000 De precios del Array 238 00:11:42,000 --> 00:11:44,000 Pues venga, una suma acumulativa 239 00:11:44,000 --> 00:11:46,000 Empieza valiendo cero 240 00:11:46,000 --> 00:11:48,000 Y ahora los sumando 241 00:11:48,000 --> 00:11:50,000 Van viniendo de recorrer el Array de ítems 242 00:11:50,000 --> 00:11:52,000 Vamos a recorrer el Array de ítems 243 00:11:52,000 --> 00:11:54,000 Por comodidad 244 00:11:54,000 --> 00:11:56,000 Como solamente vamos a leer 245 00:11:56,000 --> 00:11:58,000 Usamos un for each 246 00:11:58,000 --> 00:12:00,000 Que si solamente recorremos 247 00:12:00,000 --> 00:12:02,000 Para leer es muy cómodo 248 00:12:06,000 --> 00:12:08,000 Y ahora 249 00:12:08,000 --> 00:12:10,000 Suma más igual 250 00:12:10,000 --> 00:12:12,000 ¿Qué pongo ahí? 251 00:12:12,000 --> 00:12:14,000 Dictadmelo 252 00:12:16,000 --> 00:12:18,000 Estoy con un for each 253 00:12:18,000 --> 00:12:20,000 No con i 254 00:12:22,000 --> 00:12:24,000 ¿Qué pongo ahí? ¿Que alguien me lo dicte? 255 00:12:24,000 --> 00:12:26,000 Quiero poner el precio del 256 00:12:26,000 --> 00:12:28,000 Ítem i 257 00:12:28,000 --> 00:12:30,000 ¿Qué pongo? 258 00:12:36,000 --> 00:12:38,000 ¿Eh? 259 00:12:38,000 --> 00:12:40,000 Eso, muy bien 260 00:12:40,000 --> 00:12:42,000 Precio, eso es lo que pongo 261 00:12:46,000 --> 00:12:48,000 Voy sumando 262 00:12:48,000 --> 00:12:50,000 En la suma acumulativa 263 00:12:50,000 --> 00:12:52,000 Los precios 264 00:12:52,000 --> 00:12:54,000 De cada ítem 265 00:12:54,000 --> 00:12:56,000 Cada ítem tiene un precio 266 00:12:56,000 --> 00:12:58,000 Bueno, claro 267 00:12:58,000 --> 00:13:00,000 Aquí esto ha quedado un poco 268 00:13:00,000 --> 00:13:02,000 Porque 269 00:13:02,000 --> 00:13:04,000 Ahora tendremos que preguntarnos 270 00:13:04,000 --> 00:13:06,000 Oye, cuidado, ¿este precio es el precio 271 00:13:06,000 --> 00:13:08,000 Por unidad? 272 00:13:08,000 --> 00:13:10,000 ¿O el precio total? 273 00:13:10,000 --> 00:13:12,000 Tiene sentido que sea el precio 274 00:13:12,000 --> 00:13:14,000 Por unidad 275 00:13:14,000 --> 00:13:16,000 ¿Verdad? 276 00:13:16,000 --> 00:13:18,000 Pero si es el precio total 277 00:13:18,000 --> 00:13:20,000 Estamos en la misma de antes 278 00:13:20,000 --> 00:13:22,000 Si yo a un ítem concreto le cambio la cantidad 279 00:13:22,000 --> 00:13:24,000 Tengo que acordarme de actualizar el precio 280 00:13:24,000 --> 00:13:26,000 Que me acuerde siempre 281 00:13:26,000 --> 00:13:28,000 No es muy confiable 282 00:13:28,000 --> 00:13:30,000 Entonces tiene sentido que este sea el precio 283 00:13:30,000 --> 00:13:32,000 Por unidad 284 00:13:32,000 --> 00:13:34,000 Y así 285 00:13:34,000 --> 00:13:36,000 Aprendemos un poco de refactorización 286 00:13:36,000 --> 00:13:38,000 ¿Vale? 287 00:13:38,000 --> 00:13:40,000 Refactorización es 288 00:13:40,000 --> 00:13:42,000 Algo que veréis en entornos de desarrollo 289 00:13:42,000 --> 00:13:44,000 Si no habéis visto ya 290 00:13:44,000 --> 00:13:46,000 Pero vamos, es una chorrada 291 00:13:46,000 --> 00:13:48,000 Cuando uno tiene un código ya hecho 292 00:13:48,000 --> 00:13:50,000 Que funciona 293 00:13:50,000 --> 00:13:52,000 Pues refactorizar 294 00:13:52,000 --> 00:13:54,000 Es simplemente cambiar 295 00:13:54,000 --> 00:13:56,000 Nombres, cambiar 296 00:13:56,000 --> 00:13:58,000 Donde están las cosas colocadas 297 00:13:58,000 --> 00:14:00,000 Para que el código sea más bonito y se entienda mejor 298 00:14:00,000 --> 00:14:02,000 Pero su funcionamiento no cambia nada 299 00:14:02,000 --> 00:14:04,000 No cambia nada 300 00:14:04,000 --> 00:14:06,000 Es cambiar solamente nombres y colocaciones 301 00:14:06,000 --> 00:14:08,000 Eso es refactorizar 302 00:14:08,000 --> 00:14:10,000 No altera nada el funcionamiento 303 00:14:10,000 --> 00:14:12,000 Porque si altera el funcionamiento estás cambiando el código 304 00:14:12,000 --> 00:14:14,000 Es otra cosa 305 00:14:14,000 --> 00:14:16,000 Entonces el término refactorizar es ese 306 00:14:16,000 --> 00:14:18,000 Voy a reescribir mi código para que quede más bonito 307 00:14:18,000 --> 00:14:20,000 Pues entonces 308 00:14:20,000 --> 00:14:22,000 Lo que yo he dicho de cambiar esta variable 309 00:14:22,000 --> 00:14:24,000 De precio a precio por unidad 310 00:14:24,000 --> 00:14:26,000 Para que quede más bonito 311 00:14:26,000 --> 00:14:28,000 Eso es 312 00:14:28,000 --> 00:14:30,000 Tarea de refactorización 313 00:14:30,000 --> 00:14:32,000 Porque estoy cambiando el código para que quede más bonito 314 00:14:32,000 --> 00:14:34,000 Vale, refactorizar 315 00:14:34,000 --> 00:14:36,000 Uno lo puede hacer a mano 316 00:14:36,000 --> 00:14:38,000 Que yo tendría que escribir aquí a mano 317 00:14:38,000 --> 00:14:40,000 Y ahora irme a cada vez que aparece precio 318 00:14:40,000 --> 00:14:42,000 Irme uno por uno, irlo cambiando 319 00:14:42,000 --> 00:14:44,000 Y estaría refactorizando 320 00:14:44,000 --> 00:14:46,000 A mano 321 00:14:46,000 --> 00:14:48,000 Pero hombre es un rollo 322 00:14:48,000 --> 00:14:50,000 Entonces los entornos de desarrollo 323 00:14:50,000 --> 00:14:52,000 Te permiten hacer tareas de refactorización automáticamente 324 00:14:52,000 --> 00:14:54,000 Entonces si yo me coloco 325 00:14:54,000 --> 00:14:56,000 Aquí en precio 326 00:14:56,000 --> 00:14:58,000 Botón derecho 327 00:14:58,000 --> 00:15:00,000 Veis que se abre un refactor 328 00:15:00,000 --> 00:15:02,000 En algún sitio, verdad 329 00:15:02,000 --> 00:15:04,000 Le dais a la variable 330 00:15:04,000 --> 00:15:06,000 Botón derecho, se abre un refactor 331 00:15:06,000 --> 00:15:08,000 Y aquí te vienen todas las tareas de refactorización 332 00:15:08,000 --> 00:15:10,000 Que puedes hacer 333 00:15:10,000 --> 00:15:12,000 La que yo quiero hacer es cambiarle el nombre 334 00:15:12,000 --> 00:15:14,000 The name 335 00:15:14,000 --> 00:15:16,000 Pues le doy a rename 336 00:15:16,000 --> 00:15:18,000 Y que hace, me cambia el nombre de esa y de todas 337 00:15:18,000 --> 00:15:20,000 Las apariciones en el resto del código 338 00:15:20,000 --> 00:15:22,000 Con lo cual me evita hacerlo a mano 339 00:15:22,000 --> 00:15:24,000 Es lo único que hace el Eclipse 340 00:15:24,000 --> 00:15:26,000 Refacto, rename 341 00:15:26,000 --> 00:15:28,000 Y me dice, vale, que nombre le quieres poner 342 00:15:28,000 --> 00:15:30,000 Pues unidad 343 00:15:30,000 --> 00:15:32,000 Enter 344 00:15:32,000 --> 00:15:34,000 Y ala, veis, magia, me la cambio en todas partes 345 00:15:34,000 --> 00:15:36,000 Veis, precio unidad 346 00:15:36,000 --> 00:15:38,000 Precio unidad 347 00:15:44,000 --> 00:15:46,000 Esto es simplemente que yo he querido cambiar el nombre 348 00:15:46,000 --> 00:15:48,000 Para que sea más claro 349 00:15:48,000 --> 00:15:50,000 Y repito, cambiar el código 350 00:15:50,000 --> 00:15:52,000 Para que sea más bonito, pero sin cambiar su funcionamiento 351 00:15:52,000 --> 00:15:54,000 A eso se le llama 352 00:15:54,000 --> 00:15:56,000 Refactorizar 353 00:15:56,000 --> 00:15:58,000 Y 354 00:15:58,000 --> 00:16:00,000 Los entornos de desarrollo 355 00:16:00,000 --> 00:16:02,000 Te permiten refactorizar de forma 356 00:16:02,000 --> 00:16:04,000 Cómoda para no tener tu que ir cambiando 357 00:16:04,000 --> 00:16:06,000 A mano 358 00:16:06,000 --> 00:16:08,000 Vale 359 00:16:10,000 --> 00:16:12,000 Pero 360 00:16:12,000 --> 00:16:14,000 Que os he dicho yo siempre 361 00:16:14,000 --> 00:16:16,000 Que los entornos de desarrollo son tontos 362 00:16:16,000 --> 00:16:18,000 Y que si os fiáis de ellos 363 00:16:18,000 --> 00:16:20,000 La vais a cagar 364 00:16:20,000 --> 00:16:22,000 Así tan ancho con la refactorización del rename 365 00:16:22,000 --> 00:16:24,000 La cagaos 366 00:16:24,000 --> 00:16:26,000 Porque el get y el set a esos no los ha cambiado de nombre 367 00:16:26,000 --> 00:16:28,000 No los ha cambiado 368 00:16:28,000 --> 00:16:30,000 Porque el no lo sabe 369 00:16:30,000 --> 00:16:32,000 Con lo cual si lo dejamos así 370 00:16:32,000 --> 00:16:34,000 Nuestra aplicación 371 00:16:34,000 --> 00:16:36,000 Dejo de funcionar 372 00:16:36,000 --> 00:16:38,000 Dejo de funcionar 373 00:16:40,000 --> 00:16:42,000 Porque el get no se llama 374 00:16:42,000 --> 00:16:44,000 GetPrecio ahora, se tiene que llamar 375 00:16:44,000 --> 00:16:46,000 GetPrecioUnidad 376 00:16:46,000 --> 00:16:48,000 Porque la propiedad ha cambiado 377 00:16:48,000 --> 00:16:50,000 A GetPrecioUnidad 378 00:16:56,000 --> 00:16:58,000 Y el set igual 379 00:17:02,000 --> 00:17:04,000 Vale 380 00:17:04,000 --> 00:17:06,000 Entonces no olvidéis 381 00:17:06,000 --> 00:17:08,000 Porque uno cuando genera los get y los set 382 00:17:08,000 --> 00:17:10,000 Como los genera automáticamente 383 00:17:10,000 --> 00:17:12,000 Hay veces que los mira 384 00:17:12,000 --> 00:17:14,000 Pero hombre, hay que asegurarse de que los get y los set 385 00:17:14,000 --> 00:17:16,000 Tienen los nombres que tienen que tener 386 00:17:16,000 --> 00:17:18,000 Que son get o set 387 00:17:18,000 --> 00:17:20,000 Lo que toque 388 00:17:20,000 --> 00:17:22,000 Y luego el nombre de la propiedad 389 00:17:22,000 --> 00:17:24,000 Pero cambiado a mayúscula la primera letra 390 00:17:24,000 --> 00:17:26,000 Cambiado a mayúscula 391 00:17:26,000 --> 00:17:28,000 Ese es el nombre que tienen que tener 392 00:17:28,000 --> 00:17:30,000 Porque si no tienen ese nombre 393 00:17:30,000 --> 00:17:32,000 Cuando otras clases 394 00:17:32,000 --> 00:17:34,000 Busquen nuestras propiedades 395 00:17:34,000 --> 00:17:36,000 No las van a encontrar 396 00:17:36,000 --> 00:17:38,000 Porque las van a buscar con ese convenio de nombres 397 00:17:38,000 --> 00:17:40,000 Si les hemos dado otro 398 00:17:40,000 --> 00:17:42,000 GetPepito, pues es imposible que encuentre 399 00:17:42,000 --> 00:17:44,000 El precio con un GetPepito 400 00:17:44,000 --> 00:17:46,000 Con un GetPrecio 401 00:17:46,000 --> 00:17:48,000 Vale 402 00:17:48,000 --> 00:17:50,000 Bueno, pues tenéis que mantener un control 403 00:17:50,000 --> 00:17:52,000 De todo 404 00:17:52,000 --> 00:17:54,000 Cuidado con las cosas que se generan, con las cosas que se hacen 405 00:17:54,000 --> 00:17:56,000 Dime 406 00:17:56,000 --> 00:17:58,000 Si 407 00:17:58,000 --> 00:18:00,000 AddItem que está aquí 408 00:18:00,000 --> 00:18:02,000 Vale 409 00:18:02,000 --> 00:18:04,000 Este 410 00:18:06,000 --> 00:18:08,000 ¿Hay algo mal? 411 00:18:14,000 --> 00:18:16,000 Vale 412 00:18:18,000 --> 00:18:20,000 Vale, pues entonces 413 00:18:20,000 --> 00:18:22,000 Ahora ya 414 00:18:22,000 --> 00:18:24,000 Este es el precio por unidad 415 00:18:24,000 --> 00:18:26,000 Entonces cada item 416 00:18:26,000 --> 00:18:28,000 Habrá que sumar 417 00:18:28,000 --> 00:18:30,000 A la suma acumulativa el precio por unidad 418 00:18:30,000 --> 00:18:32,000 Por la cantidad que tenga, ¿verdad? 419 00:18:32,000 --> 00:18:34,000 Entonces en mi suma acumulativa 420 00:18:34,000 --> 00:18:36,000 GetPrecio 421 00:18:36,000 --> 00:18:38,000 Por 422 00:18:38,000 --> 00:18:40,000 i.getCantidad 423 00:18:40,000 --> 00:18:42,000 ¿Vale? GetPrecio unidad 424 00:18:42,000 --> 00:18:44,000 La geta ha cambiado 425 00:18:44,000 --> 00:18:46,000 Vale, entonces 426 00:18:46,000 --> 00:18:48,000 Mi suma acumulativa es una suma 427 00:18:48,000 --> 00:18:50,000 Que va sumando 428 00:18:50,000 --> 00:18:52,000 Va incorporando 429 00:18:52,000 --> 00:18:54,000 ¿Qué sumando va incorporando a la suma? 430 00:18:54,000 --> 00:18:56,000 Pues para cada item i 431 00:18:56,000 --> 00:18:58,000 El precio unitario 432 00:18:58,000 --> 00:19:00,000 Por la cantidad 433 00:19:00,000 --> 00:19:02,000 Que tiene de eso 434 00:19:02,000 --> 00:19:04,000 ¿Vale? 435 00:19:04,000 --> 00:19:06,000 Recordad que el operador por 436 00:19:06,000 --> 00:19:08,000 Recordad cuando vimos que había operadores al principio de curso 437 00:19:08,000 --> 00:19:10,000 Que el operador multiplicación 438 00:19:10,000 --> 00:19:12,000 Y división 439 00:19:12,000 --> 00:19:14,000 Son prioritarios respecto a sumas y restas 440 00:19:14,000 --> 00:19:16,000 Con lo cual no hace falta 441 00:19:16,000 --> 00:19:18,000 Que ponga yo aquí paréntesis 442 00:19:18,000 --> 00:19:20,000 Porque esto se va a hacer siempre antes 443 00:19:20,000 --> 00:19:22,000 Porque está con el operador por que tiene una prioridad 444 00:19:22,000 --> 00:19:24,000 Pero si uno lo ve más claro 445 00:19:24,000 --> 00:19:26,000 Y le queda más claro 446 00:19:26,000 --> 00:19:28,000 Los paréntesis nunca molestan 447 00:19:28,000 --> 00:19:30,000 Si son para aclarar código 448 00:19:30,000 --> 00:19:32,000 Nunca molestan, entonces a lo mejor así lo vemos más claro 449 00:19:32,000 --> 00:19:34,000 A la suma acumulativa 450 00:19:34,000 --> 00:19:36,000 Le tenemos que sumar 451 00:19:36,000 --> 00:19:38,000 El resultado de precio unitario por cantidad 452 00:19:38,000 --> 00:19:40,000 Está claro, ¿no? 453 00:19:40,000 --> 00:19:42,000 Y cuando ya he terminado yo mi 454 00:19:42,000 --> 00:19:44,000 For 455 00:19:44,000 --> 00:19:46,000 Ya puedo devolver 456 00:19:46,000 --> 00:19:48,000 El precio del pedido 457 00:19:48,000 --> 00:19:50,000 De esta manera 458 00:19:50,000 --> 00:19:52,000 Vale, ya tengo ese otro 459 00:19:52,000 --> 00:19:54,000 Método 460 00:19:54,000 --> 00:19:56,000 Que dado un pedido me devuelve lo que ha 461 00:19:56,000 --> 00:19:58,000 Costado, sumando para ello 462 00:19:58,000 --> 00:20:00,000 Lo que aporta cada item 463 00:20:00,000 --> 00:20:02,000 A ese precio total 464 00:20:02,000 --> 00:20:04,000 ¿Vale? 465 00:20:04,000 --> 00:20:06,000 Ya tengo esa funcionalidad, bueno pues 466 00:20:06,000 --> 00:20:08,000 Fenomenal 467 00:20:08,000 --> 00:20:10,000 Y así uno puede incorporar a cada clase 468 00:20:10,000 --> 00:20:12,000 Todas las utilidades 469 00:20:12,000 --> 00:20:14,000 Que necesite hacer con los objetos de esa clase 470 00:20:16,000 --> 00:20:18,000 En este caso hemos identificado dos 471 00:20:18,000 --> 00:20:20,000 Utilidades, añadir un item 472 00:20:20,000 --> 00:20:22,000 Nuevo 473 00:20:22,000 --> 00:20:24,000 Y devolver el precio de ese pedido 474 00:20:24,000 --> 00:20:26,000 Hemos identificado esas dos 475 00:20:26,000 --> 00:20:28,000 Pero el cliente me puede decir, oye con los pedidos 476 00:20:28,000 --> 00:20:30,000 También tienes que poder hacer esto, hacerlo otro 477 00:20:30,000 --> 00:20:32,000 Por ejemplo 478 00:20:32,000 --> 00:20:34,000 Podría haber una funcionalidad 479 00:20:34,000 --> 00:20:36,000 Que vamos a dejarla 480 00:20:36,000 --> 00:20:38,000 Abierta para que la completéis en casa 481 00:20:38,000 --> 00:20:40,000 Tampoco aporta mucho 482 00:20:40,000 --> 00:20:42,000 Que fuera, oye, también tienes que poder 483 00:20:42,000 --> 00:20:44,000 Eliminar ítems de un pedido 484 00:20:44,000 --> 00:20:46,000 Por favor, eliminar ítems 485 00:20:46,000 --> 00:20:48,000 Quiero que elimines, no, los bolis no los quiero 486 00:20:48,000 --> 00:20:50,000 Las carpetas o no se que, elimina 487 00:20:50,000 --> 00:20:52,000 Vale, pues entonces eso de nuevo 488 00:20:52,000 --> 00:20:54,000 Sería un método que habría que meter en la clase pedido 489 00:20:54,000 --> 00:20:56,000 Porque es un método que trabaja con el pedido 490 00:20:56,000 --> 00:20:58,000 Para quitarle ítems 491 00:20:58,000 --> 00:21:00,000 Pues lo tendría que meter aquí 492 00:21:00,000 --> 00:21:02,000 Vale, pues el proceso de siempre 493 00:21:02,000 --> 00:21:04,000 Eh 494 00:21:06,000 --> 00:21:08,000 Nombrecito 495 00:21:08,000 --> 00:21:10,000 Que le tengo que pasar 496 00:21:12,000 --> 00:21:14,000 Y que tiene que devolver 497 00:21:14,000 --> 00:21:16,000 Pongo ya el public siempre 498 00:21:16,000 --> 00:21:18,000 Porque estos métodos los tendrán que llamar 499 00:21:18,000 --> 00:21:20,000 Desde fuera del paquete entidades 500 00:21:22,000 --> 00:21:24,000 Vale, aquí ya empieza mi trabajo, pues de pensar 501 00:21:24,000 --> 00:21:26,000 Vamos a ver 502 00:21:26,000 --> 00:21:28,000 Para realizar la acción 503 00:21:28,000 --> 00:21:30,000 De eliminar un ítem 504 00:21:30,000 --> 00:21:32,000 De el array de ítems 505 00:21:32,000 --> 00:21:34,000 Necesito que me digan 506 00:21:34,000 --> 00:21:36,000 Algo desde fuera 507 00:21:36,000 --> 00:21:38,000 Que pedido 508 00:21:38,000 --> 00:21:40,000 Que ítem quieres eliminar 509 00:21:40,000 --> 00:21:42,000 Que ítem, si me dices 510 00:21:42,000 --> 00:21:44,000 Elimina el ítem de tu array 511 00:21:44,000 --> 00:21:46,000 Ya, pero cual 512 00:21:46,000 --> 00:21:48,000 Vale, pues ahora viene de nuevo una pregunta 513 00:21:48,000 --> 00:21:50,000 A ver, pero que caracteriza 514 00:21:50,000 --> 00:21:52,000 A mi ítem, para distinguir unos de otros 515 00:21:52,000 --> 00:21:54,000 Si nos vamos al ítem, vale 516 00:21:54,000 --> 00:21:56,000 Pues lo más natural 517 00:21:56,000 --> 00:21:58,000 Es que me den 518 00:21:58,000 --> 00:22:00,000 Elimina el ítem de descripción 519 00:22:00,000 --> 00:22:02,000 Tal, elimina por 520 00:22:02,000 --> 00:22:04,000 Bolis, gomas, carpetas, es normal 521 00:22:04,000 --> 00:22:06,000 Que me digan elimina esto 522 00:22:06,000 --> 00:22:08,000 Vale, porque 523 00:22:08,000 --> 00:22:10,000 Esta propiedad es la que identifica 524 00:22:10,000 --> 00:22:12,000 Univocamente a cada ítem 525 00:22:12,000 --> 00:22:14,000 ¿Habéis visto 526 00:22:14,000 --> 00:22:16,000 Ya las claves primarias en bases de datos? 527 00:22:18,000 --> 00:22:20,000 Vale 528 00:22:20,000 --> 00:22:22,000 Una clave primaria, tenéis que hacer 529 00:22:22,000 --> 00:22:24,000 Mucho paralelismo entre esto y bases de datos 530 00:22:24,000 --> 00:22:26,000 Porque el desarrollo es desarrollar 531 00:22:26,000 --> 00:22:28,000 Para modelos de datos relacionales 532 00:22:28,000 --> 00:22:30,000 Hasta hoy en día 533 00:22:30,000 --> 00:22:32,000 Porque modelos de datos orientados a objetos 534 00:22:32,000 --> 00:22:34,000 Se abandonó 535 00:22:34,000 --> 00:22:36,000 Arrancó en el 2000 536 00:22:36,000 --> 00:22:38,000 Cuando empezó la aplicación 537 00:22:38,000 --> 00:22:40,000 Orientada a objetos, como ya se hizo con todo 538 00:22:40,000 --> 00:22:42,000 Pues obviamente 539 00:22:42,000 --> 00:22:44,000 La comunidad desarrolladora 540 00:22:44,000 --> 00:22:46,000 Dijo, hombre, pues vamos a hacer 541 00:22:46,000 --> 00:22:48,000 Bases de datos orientadas a objetos 542 00:22:48,000 --> 00:22:50,000 Y así tenemos 543 00:22:50,000 --> 00:22:52,000 El absoluto paralelismo entre 544 00:22:52,000 --> 00:22:54,000 Las bases de datos y el desarrollo 545 00:22:54,000 --> 00:22:56,000 Vale, se hizo un grupo 546 00:22:56,000 --> 00:22:58,000 A los 10 años 547 00:22:58,000 --> 00:23:00,000 Se abandonó porque no hubo manera 548 00:23:00,000 --> 00:23:02,000 ¿Por qué? Porque las bases de datos relacionales 549 00:23:02,000 --> 00:23:04,000 Estaban tan implantadas, llevan tantos años 550 00:23:04,000 --> 00:23:06,000 En el mercado que era imposible 551 00:23:06,000 --> 00:23:08,000 Sacarlas de ahí 552 00:23:08,000 --> 00:23:10,000 Entonces por eso 553 00:23:10,000 --> 00:23:12,000 La forma de almacenar datos sigue siendo 554 00:23:12,000 --> 00:23:14,000 Mayoritariamente en bases 555 00:23:14,000 --> 00:23:16,000 De datos relacionales 556 00:23:16,000 --> 00:23:18,000 Y nosotros tenemos que hacer 557 00:23:18,000 --> 00:23:20,000 Paralelismos entre nuestras clases 558 00:23:20,000 --> 00:23:22,000 Y las tablas de las bases de datos relacionales 559 00:23:22,000 --> 00:23:24,000 ¿Vale? 560 00:23:24,000 --> 00:23:26,000 Cuando alguna tecnología está muy implantada 561 00:23:26,000 --> 00:23:28,000 Es muy complicado echarla 562 00:23:28,000 --> 00:23:30,000 Es como los lenguajes de programación 563 00:23:30,000 --> 00:23:32,000 Java cuando arrancó 564 00:23:32,000 --> 00:23:34,000 Ostras, es muy lento 565 00:23:34,000 --> 00:23:36,000 Claro que es lento, porque tiene una máquina virtual 566 00:23:36,000 --> 00:23:38,000 Que interprete 567 00:23:38,000 --> 00:23:40,000 ¿Qué ha pasado con Java? 568 00:23:40,000 --> 00:23:42,000 Que se ha implantado y no hay forma de sacarlo 569 00:23:42,000 --> 00:23:44,000 De las aplicaciones de las empresas, no hay manera 570 00:23:44,000 --> 00:23:46,000 Python, parecía que lo iba a echar 571 00:23:46,000 --> 00:23:48,000 Nada, Python ya está 572 00:23:48,000 --> 00:23:50,000 Está pasando así, cuando algo se ha implantado 573 00:23:50,000 --> 00:23:52,000 ¿Funciona bien o no funciona bien? 574 00:23:52,000 --> 00:23:54,000 Sacarlo del mercado es prácticamente imposible 575 00:23:54,000 --> 00:23:56,000 Java es un ejemplo 576 00:23:56,000 --> 00:23:58,000 Bases de datos relacionales es otro 577 00:23:58,000 --> 00:24:00,000 Bueno, pues entonces 578 00:24:00,000 --> 00:24:02,000 A cuento de que venía este rollo 579 00:24:02,000 --> 00:24:04,000 Que habéis visto ya las claves primarias 580 00:24:04,000 --> 00:24:06,000 En bases de datos relacionales 581 00:24:06,000 --> 00:24:08,000 Y sabéis que una clave primaria 582 00:24:08,000 --> 00:24:10,000 Es el campo que identifica 583 00:24:10,000 --> 00:24:12,000 De forma única a cada registro 584 00:24:12,000 --> 00:24:14,000 ¿No? O sea, no puede haber dos registros 585 00:24:14,000 --> 00:24:16,000 Con la misma clave primaria 586 00:24:16,000 --> 00:24:18,000 Y si uno hace un buen modelo de datos 587 00:24:18,000 --> 00:24:20,000 Tiene que haber decidido 588 00:24:20,000 --> 00:24:22,000 ¿Cuál es la clave primaria? 589 00:24:22,000 --> 00:24:24,000 Porque tener registros 590 00:24:24,000 --> 00:24:26,000 Que no se pueden distinguir 591 00:24:26,000 --> 00:24:28,000 No tiene ningún sentido, la idea es que cada registro se pueda distinguir 592 00:24:28,000 --> 00:24:30,000 Para que se pueda distinguir 593 00:24:30,000 --> 00:24:32,000 Tiene que haber una clave primaria que los distinga 594 00:24:32,000 --> 00:24:34,000 Pues eso mismo 595 00:24:34,000 --> 00:24:36,000 Ocurre aquí también 596 00:24:36,000 --> 00:24:38,000 Cuando uno hace un diseño de clases y hace un diseño de campos 597 00:24:38,000 --> 00:24:40,000 Uno de los campos 598 00:24:40,000 --> 00:24:42,000 Debería funcionar 599 00:24:42,000 --> 00:24:44,000 Como clave primaria, entre comillas 600 00:24:44,000 --> 00:24:46,000 Es decir, como campo 601 00:24:46,000 --> 00:24:48,000 Que distinga de forma unívoca a cada objeto 602 00:24:48,000 --> 00:24:50,000 Porque si no 603 00:24:50,000 --> 00:24:52,000 Estás haciendo un diseño muy irregular 604 00:24:52,000 --> 00:24:54,000 Entonces, aquí 605 00:24:54,000 --> 00:24:56,000 De estos campos 606 00:24:56,000 --> 00:24:58,000 ¿Cuál es el que podría servirnos 607 00:24:58,000 --> 00:25:00,000 Para distinguir de forma unívoca el ítem? 608 00:25:00,000 --> 00:25:02,000 Hombre, pues la descripción 609 00:25:02,000 --> 00:25:04,000 La cantidad no, porque puede haber diferentes ítems 610 00:25:04,000 --> 00:25:06,000 Con la misma cantidad 611 00:25:06,000 --> 00:25:08,000 Y puede haber diferentes ítems con el mismo precio por unidad 612 00:25:08,000 --> 00:25:10,000 Pero hombre, la descripción debería ser distinta en cada uno 613 00:25:10,000 --> 00:25:12,000 Que aún así 614 00:25:12,000 --> 00:25:14,000 Yo analizando el problema 615 00:25:14,000 --> 00:25:16,000 Oye, no, pues tengo 616 00:25:16,000 --> 00:25:18,000 A lo mejor ítem que se puede llamar igual 617 00:25:18,000 --> 00:25:20,000 Pues me invento un campo adicional 618 00:25:20,000 --> 00:25:22,000 Que se llame código, por ejemplo, me lo invento 619 00:25:22,000 --> 00:25:24,000 Y ese ya sí que esfuerzo a que sea distinto en todos 620 00:25:24,000 --> 00:25:26,000 Luego es muy parecido 621 00:25:26,000 --> 00:25:28,000 El diseño de bases de datos y el diseño de clases 622 00:25:28,000 --> 00:25:30,000 Las mismas cosas que tienen en cuenta unos 623 00:25:30,000 --> 00:25:32,000 Tienen en cuenta otros 624 00:25:32,000 --> 00:25:34,000 La diferencia es que en las bases de datos 625 00:25:34,000 --> 00:25:36,000 Hay restricciones que son obligatorias 626 00:25:36,000 --> 00:25:38,000 Y que si no las satisfaces 627 00:25:38,000 --> 00:25:40,000 Luego las consultas en SQL te petan 628 00:25:40,000 --> 00:25:42,000 Aquí nadie te obliga 629 00:25:42,000 --> 00:25:44,000 A hacer algo que sea una clave primaria 630 00:25:44,000 --> 00:25:46,000 Pero hombre, es recomendable 631 00:25:46,000 --> 00:25:48,000 Bueno, pues en nuestro caso 632 00:25:48,000 --> 00:25:50,000 Suponemos que la descripción 633 00:25:50,000 --> 00:25:52,000 Va a ser diferente 634 00:25:52,000 --> 00:25:54,000 Para todos los objetos ítem 635 00:25:54,000 --> 00:25:56,000 Suponemos 636 00:25:56,000 --> 00:25:58,000 Repito, porque si no lo es 637 00:25:58,000 --> 00:26:00,000 Entonces voy a inventarme un campo código 638 00:26:00,000 --> 00:26:02,000 Un ID como que ya asegure 639 00:26:02,000 --> 00:26:04,000 Que me permite distinguir unos de otros 640 00:26:04,000 --> 00:26:06,000 Pero no vamos a inventar ese campo adicional 641 00:26:06,000 --> 00:26:08,000 Bueno, pues entonces 642 00:26:08,000 --> 00:26:10,000 Si la descripción es lo que distingue 643 00:26:10,000 --> 00:26:12,000 Unívocamente a un ítem de otro 644 00:26:12,000 --> 00:26:14,000 Es lo que lo distingue, es como su clave primaria 645 00:26:14,000 --> 00:26:16,000 Pues este método 646 00:26:16,000 --> 00:26:18,000 De eliminar ítem 647 00:26:18,000 --> 00:26:20,000 Tiene sentido 648 00:26:20,000 --> 00:26:22,000 Que lo que me pasen 649 00:26:22,000 --> 00:26:24,000 Desde fuera para decir 650 00:26:24,000 --> 00:26:26,000 Cual tengo que eliminar 651 00:26:26,000 --> 00:26:28,000 Sea precisamente ese campo de descripción 652 00:26:28,000 --> 00:26:30,000 Y esto será 653 00:26:30,000 --> 00:26:32,000 Oye, elimíname 654 00:26:32,000 --> 00:26:34,000 De este array 655 00:26:34,000 --> 00:26:36,000 Elimíname de este array 656 00:26:36,000 --> 00:26:38,000 El ítem 657 00:26:38,000 --> 00:26:40,000 Que tenga 658 00:26:40,000 --> 00:26:42,000 Que se llame así 659 00:26:42,000 --> 00:26:44,000 Que se llame descripción 660 00:26:44,000 --> 00:26:46,000 Elimíname ese, no tiene sentido 661 00:26:46,000 --> 00:26:48,000 Que sea esa la información que venga desde fuera 662 00:26:48,000 --> 00:26:50,000 Vale, elimíname este 663 00:26:50,000 --> 00:26:52,000 Bueno, pues 664 00:26:52,000 --> 00:26:54,000 El parámetro ya lo tenemos resuelto 665 00:26:54,000 --> 00:26:56,000 Ahora, me tiene que devolver algo 666 00:26:56,000 --> 00:26:58,000 Este método 667 00:26:58,000 --> 00:27:00,000 No, porque el efecto es dejar el array modificado 668 00:27:00,000 --> 00:27:02,000 Dejar el array con un ítem menos 669 00:27:02,000 --> 00:27:04,000 Dejarlo con un ítem menos 670 00:27:04,000 --> 00:27:06,000 El efecto del método 671 00:27:06,000 --> 00:27:08,000 Ya se queda aquí recogido 672 00:27:08,000 --> 00:27:10,000 Porque este array se quedará con un elemento menos 673 00:27:10,000 --> 00:27:12,000 Entonces, como el efecto del array 674 00:27:12,000 --> 00:27:14,000 Ya se queda ahí recogido 675 00:27:16,000 --> 00:27:18,000 Pues, le devuelvo aquí un gol 676 00:27:18,000 --> 00:27:20,000 Y ahora ya, este método 677 00:27:22,000 --> 00:27:24,000 Eliminará 678 00:27:24,000 --> 00:27:26,000 Elimina, lo que tiene que hacer 679 00:27:26,000 --> 00:27:28,000 Es eliminar del array 680 00:27:30,000 --> 00:27:32,000 Del array 681 00:27:32,000 --> 00:27:34,000 Ítems pedido 682 00:27:36,000 --> 00:27:38,000 El 683 00:27:40,000 --> 00:27:42,000 Ítem 684 00:27:42,000 --> 00:27:44,000 Cuya 685 00:27:44,000 --> 00:27:46,000 Descripción 686 00:27:48,000 --> 00:27:50,000 Se corresponda 687 00:27:50,000 --> 00:27:52,000 Con la pasada como parámetro 688 00:27:58,000 --> 00:28:00,000 Vale, vamos a dejar 689 00:28:00,000 --> 00:28:02,000 Pues este método ya 690 00:28:02,000 --> 00:28:04,000 Trabajará con el array eliminando 691 00:28:04,000 --> 00:28:06,000 Aquí en blanco, para que lo hagáis 692 00:28:06,000 --> 00:28:08,000 En casa, como ejercicio 693 00:28:08,000 --> 00:28:10,000 Vale, cuando este método esté 694 00:28:10,000 --> 00:28:12,000 Pues ya se llamará eliminar pedido 695 00:28:12,000 --> 00:28:14,000 Pasándole eliminar bolis 696 00:28:14,000 --> 00:28:16,000 Y ya está, desaparecerán los bolis 697 00:28:16,000 --> 00:28:18,000 De los ítems del pedido que llame a ese método 698 00:28:18,000 --> 00:28:20,000 Bueno 699 00:28:20,000 --> 00:28:22,000 Vale, y así uno sigue 700 00:28:22,000 --> 00:28:24,000 Metiendo los métodos que le interesan 701 00:28:24,000 --> 00:28:26,000 Vale, pues ahora 702 00:28:28,000 --> 00:28:30,000 A través de otra cuestión que vamos a plantear 703 00:28:30,000 --> 00:28:32,000 De otra necesidad 704 00:28:32,000 --> 00:28:34,000 Es decir 705 00:28:34,000 --> 00:28:36,000 Un concepto nuevo que necesitamos 706 00:28:38,000 --> 00:28:40,000 De programación de entrada de objetos 707 00:28:40,000 --> 00:28:42,000 Vale, pues vamos a plantear 708 00:28:42,000 --> 00:28:44,000 La siguiente situación 709 00:28:44,000 --> 00:28:46,000 Resulta que 710 00:28:46,000 --> 00:28:48,000 Esta aplicación 711 00:28:48,000 --> 00:28:50,000 El cliente me dice 712 00:28:50,000 --> 00:28:52,000 Oye, que también quiero trabajar con IVA 713 00:28:52,000 --> 00:28:54,000 Por ejemplo 714 00:28:54,000 --> 00:28:56,000 Quiero poder calcular precios con IVA 715 00:28:56,000 --> 00:28:58,000 Y sin él 716 00:28:58,000 --> 00:29:00,000 Porque aquí el precio que me has dado 717 00:29:00,000 --> 00:29:02,000 Con los ítems 718 00:29:02,000 --> 00:29:04,000 Pero yo quiero también tener la opción de devolver el precio 719 00:29:04,000 --> 00:29:06,000 Incluyendo un IVA 720 00:29:06,000 --> 00:29:08,000 Vale, entonces, bueno, esta aplicación 721 00:29:08,000 --> 00:29:10,000 Entonces le falta algo 722 00:29:10,000 --> 00:29:12,000 Le falta algo porque este método 723 00:29:12,000 --> 00:29:14,000 Devuelve la suma de precios 724 00:29:14,000 --> 00:29:16,000 De los ítems 725 00:29:16,000 --> 00:29:18,000 Pero no está teniendo en cuenta de ninguna manera 726 00:29:18,000 --> 00:29:20,000 Algo como IVA 727 00:29:20,000 --> 00:29:22,000 Bueno, entonces el usuario me dice esto 728 00:29:22,000 --> 00:29:24,000 El cliente, perdón 729 00:29:24,000 --> 00:29:26,000 Y yo ya empiezo a analizarlo 730 00:29:26,000 --> 00:29:28,000 Y empiezo a pensar 731 00:29:28,000 --> 00:29:30,000 Empiezo a analizarlo 732 00:29:30,000 --> 00:29:32,000 Y empiezo a pensar 733 00:29:32,000 --> 00:29:34,000 Digo, vale 734 00:29:34,000 --> 00:29:36,000 Primera pregunta 735 00:29:36,000 --> 00:29:38,000 ¿El IVA va a ser igual 736 00:29:38,000 --> 00:29:40,000 Para todos los pedidos de tu aplicación? 737 00:29:40,000 --> 00:29:42,000 ¿Va a ser el mismo? 738 00:29:42,000 --> 00:29:44,000 ¿Para todos los productos de tu empresa 739 00:29:44,000 --> 00:29:46,000 Todos reciben el mismo IVA? 740 00:29:48,000 --> 00:29:50,000 Vamos a suponer 741 00:29:50,000 --> 00:29:52,000 Que el cliente me ha dicho que sí 742 00:29:52,000 --> 00:29:54,000 Que me ha dicho que sí 743 00:29:54,000 --> 00:29:56,000 Me dice, sí, sí, sí 744 00:29:56,000 --> 00:29:58,000 Todos mis productos son de tipo tal 745 00:29:58,000 --> 00:30:00,000 Y todos reciben el mismo IVA 746 00:30:00,000 --> 00:30:02,000 Todos el mismo 747 00:30:02,000 --> 00:30:04,000 Otra cosa es que el IVA pueda cambiar 748 00:30:04,000 --> 00:30:06,000 En función, pues, del año 749 00:30:06,000 --> 00:30:08,000 La legislación, que el IVA pueda cambiar 750 00:30:08,000 --> 00:30:10,000 Pero todos reciben el mismo IVA 751 00:30:10,000 --> 00:30:12,000 Bueno, pues entonces 752 00:30:12,000 --> 00:30:14,000 ¿En qué situación estamos? 753 00:30:14,000 --> 00:30:16,000 Estamos en la situación de que IVA 754 00:30:16,000 --> 00:30:18,000 Llamémosle IVA sin más 755 00:30:18,000 --> 00:30:20,000 Esto 756 00:30:20,000 --> 00:30:22,000 Que es una variable 757 00:30:22,000 --> 00:30:24,000 Es una variable porque me ha dicho 758 00:30:24,000 --> 00:30:26,000 Oye, yo no quiero asumir 759 00:30:26,000 --> 00:30:28,000 De partida que el IVA es 16 o 20 760 00:30:28,000 --> 00:30:30,000 No, puede ser que cambie 761 00:30:30,000 --> 00:30:32,000 Puede ser que cambie de un mes para otro 762 00:30:32,000 --> 00:30:34,000 Puede ser, entonces 763 00:30:34,000 --> 00:30:36,000 Primera cosa que nosotros ya concluimos 764 00:30:36,000 --> 00:30:38,000 Como diseñadores de la aplicación 765 00:30:38,000 --> 00:30:40,000 Esto es una variable 766 00:30:40,000 --> 00:30:42,000 En algún día tiene que estar 767 00:30:42,000 --> 00:30:44,000 Pero es una variable porque no tiene valor fijo 768 00:30:44,000 --> 00:30:46,000 ¿Va a cambiar? 769 00:30:46,000 --> 00:30:48,000 Vale, es una variable 770 00:30:50,000 --> 00:30:52,000 Primera cosa la que hemos concluido 771 00:30:52,000 --> 00:30:54,000 Primera cosa que concluimos 772 00:30:54,000 --> 00:30:56,000 O que intentamos concluir 773 00:30:56,000 --> 00:30:58,000 ¿Es una variable? ¿Dónde la coloco? 774 00:30:58,000 --> 00:31:00,000 ¿Dónde la coloco? 775 00:31:00,000 --> 00:31:02,000 Bueno, pues lo primero que tengo que pensar 776 00:31:02,000 --> 00:31:04,000 Para ver dónde coloco yo una variable o un método 777 00:31:04,000 --> 00:31:06,000 Es con qué está relacionado 778 00:31:06,000 --> 00:31:08,000 Dentro de las entidades de mi aplicación 779 00:31:08,000 --> 00:31:10,000 ¿Con qué está relacionado el IVA? 780 00:31:10,000 --> 00:31:12,000 Bueno, el IVA está relacionado con los precios de los pedidos 781 00:31:12,000 --> 00:31:14,000 Luego está relacionado con pedidos 782 00:31:14,000 --> 00:31:16,000 O sea, el IVA no está relacionado con 783 00:31:16,000 --> 00:31:18,000 Imaginaos que esta aplicación además tiene 784 00:31:18,000 --> 00:31:20,000 Clientes registrados 785 00:31:20,000 --> 00:31:22,000 Que son los que hacen pedidos 786 00:31:22,000 --> 00:31:24,000 El IVA no está relacionado con los clientes 787 00:31:24,000 --> 00:31:26,000 El IVA está relacionado 788 00:31:26,000 --> 00:31:28,000 Con los pedidos 789 00:31:28,000 --> 00:31:30,000 Luego es una variable 790 00:31:30,000 --> 00:31:32,000 Relacionada con los pedidos 791 00:31:32,000 --> 00:31:34,000 Porque afecta a los precios de los pedidos 792 00:31:34,000 --> 00:31:36,000 ¿Está relacionada con? 793 00:31:36,000 --> 00:31:38,000 Significa a quién afectas 794 00:31:38,000 --> 00:31:40,000 ¿A quién afectas tú? ¿A quién afecta el IVA? 795 00:31:40,000 --> 00:31:42,000 El IVA afecta a los pedidos 796 00:31:42,000 --> 00:31:44,000 Vale, pues entonces su sitio 797 00:31:44,000 --> 00:31:46,000 Sería la clase pedido 798 00:31:46,000 --> 00:31:48,000 Entonces, con eso que yo he dicho 799 00:31:48,000 --> 00:31:50,000 Se plantaría aquí, diría 800 00:31:54,000 --> 00:31:56,000 IVA, vamos a suponer que lo queremos entero siempre 801 00:31:58,000 --> 00:32:00,000 Ay, perdón, perdón, perdón 802 00:32:00,000 --> 00:32:02,000 Que estoy en la clase que no era 803 00:32:02,000 --> 00:32:04,000 Perdón, en pedido 804 00:32:04,000 --> 00:32:06,000 Porque está relacionado con los pedidos 805 00:32:06,000 --> 00:32:08,000 Vale 806 00:32:08,000 --> 00:32:10,000 Venga, pues entonces 807 00:32:10,000 --> 00:32:12,000 Vamos a suponer 808 00:32:12,000 --> 00:32:14,000 Que es entero 809 00:32:14,000 --> 00:32:16,000 Y le vamos a dar un nombre 810 00:32:16,000 --> 00:32:18,000 Un nombre mismo 811 00:32:18,000 --> 00:32:20,000 Vale 812 00:32:20,000 --> 00:32:22,000 Entonces 813 00:32:22,000 --> 00:32:24,000 Esto cumple lo de que es una variable 814 00:32:24,000 --> 00:32:26,000 Y que yo le puedo cambiar cuando me dé la gana 815 00:32:26,000 --> 00:32:28,000 Vale 816 00:32:28,000 --> 00:32:30,000 Me faltaría añadir el get y el set 817 00:32:30,000 --> 00:32:32,000 Poner el constructor 818 00:32:32,000 --> 00:32:34,000 Todo eso me faltaría 819 00:32:34,000 --> 00:32:36,000 Pero lo voy a incorporar todavía 820 00:32:36,000 --> 00:32:38,000 Porque vamos a 821 00:32:38,000 --> 00:32:40,000 A seguir viendo cosas 822 00:32:40,000 --> 00:32:42,000 Vale, entonces es una variable 823 00:32:42,000 --> 00:32:44,000 Puede cambiar de valor 824 00:32:44,000 --> 00:32:46,000 Y está relacionada con pedidos 825 00:32:46,000 --> 00:32:48,000 Luego va aquí 826 00:32:48,000 --> 00:32:50,000 Bueno, vale 827 00:32:50,000 --> 00:32:52,000 Vale, pero es que entonces yo ahora miro esto y digo 828 00:32:52,000 --> 00:32:54,000 A ver, pero el 829 00:32:54,000 --> 00:32:56,000 Que me ha pedido el software, el cliente me ha dicho 830 00:32:56,000 --> 00:32:58,000 Que todos los pedidos 831 00:32:58,000 --> 00:33:00,000 Van a tener el mismo 832 00:33:00,000 --> 00:33:02,000 Todos los pedidos van a tener el mismo IVA 833 00:33:02,000 --> 00:33:04,000 Tal y como está aquí colocado 834 00:33:04,000 --> 00:33:06,000 Esto es una propiedad 835 00:33:06,000 --> 00:33:08,000 Diferente para cada 836 00:33:08,000 --> 00:33:10,000 O puede ser una propiedad diferente para cada objeto, verdad 837 00:33:10,000 --> 00:33:12,000 Es decir, si yo tengo 838 00:33:12,000 --> 00:33:14,000 Un pedido 1, desde un main cualquiera 839 00:33:14,000 --> 00:33:16,000 Este de aquí 840 00:33:16,000 --> 00:33:18,000 Que por ahora vamos a dejar aquí vacío 841 00:33:18,000 --> 00:33:20,000 Un main que tengo aquí 842 00:33:20,000 --> 00:33:22,000 Lo vamos a dejar vacío 843 00:33:22,000 --> 00:33:24,000 Este main 844 00:33:24,000 --> 00:33:26,000 O sea, si yo tengo un pedido aquí, ahora ya en mi main 845 00:33:28,000 --> 00:33:30,000 Pedido P1, por ejemplo 846 00:33:32,000 --> 00:33:34,000 New pedido 847 00:33:34,000 --> 00:33:36,000 Pues este pedido tendrá 848 00:33:36,000 --> 00:33:38,000 Su propio valor 849 00:33:38,000 --> 00:33:40,000 En la variable IVA, verdad, su propio valor 850 00:33:40,000 --> 00:33:42,000 Como está sin inicializar, pues cero 851 00:33:42,000 --> 00:33:44,000 Pero yo se lo podría cambiar luego a través del set 852 00:33:44,000 --> 00:33:46,000 Como fuera 853 00:33:46,000 --> 00:33:48,000 Que tengo aquí otro pedido P2 en mi main 854 00:33:50,000 --> 00:33:52,000 New pedido 855 00:33:52,000 --> 00:33:54,000 Pues este pedido P2 es otro objeto que tendrá 856 00:33:54,000 --> 00:33:56,000 Su otra copia de IVA 857 00:33:56,000 --> 00:33:58,000 Que tengo en mi aplicación 858 00:33:58,000 --> 00:34:00,000 27.000 pedidos que podría tener 859 00:34:00,000 --> 00:34:02,000 Mi aplicación metiendo pedidos 860 00:34:02,000 --> 00:34:04,000 En un conjunto de pedidos 861 00:34:04,000 --> 00:34:06,000 Pues cada pedido tiene su propia copia 862 00:34:06,000 --> 00:34:08,000 De la variable IVA 863 00:34:08,000 --> 00:34:10,000 27.000 copias 864 00:34:10,000 --> 00:34:12,000 De esta variable 865 00:34:12,000 --> 00:34:14,000 27.000 copias de esta 866 00:34:14,000 --> 00:34:16,000 Tiene sentido 867 00:34:16,000 --> 00:34:18,000 Tiene sentido tener 27.000 copias de código 868 00:34:18,000 --> 00:34:20,000 Porque cada pedido tiene su código, obviamente 869 00:34:20,000 --> 00:34:22,000 Y tiene sentido tener 27.000 copias 870 00:34:22,000 --> 00:34:24,000 De descripción, porque cada pedido tiene su descripción 871 00:34:24,000 --> 00:34:26,000 Y tiene sentido tener 872 00:34:26,000 --> 00:34:28,000 27.000 copias de este array 873 00:34:28,000 --> 00:34:30,000 Porque cada pedido tiene su array 874 00:34:30,000 --> 00:34:32,000 Pero tiene sentido tener 27.000 copias de IVA 875 00:34:32,000 --> 00:34:34,000 Cuando el cliente me ha dicho que todos los pedidos 876 00:34:34,000 --> 00:34:36,000 Tienen el mismo 877 00:34:36,000 --> 00:34:38,000 Si es 16 lo es para todos 878 00:34:38,000 --> 00:34:40,000 Y si es 20 lo es para todos 879 00:34:40,000 --> 00:34:42,000 ¿Tiene sentido? 880 00:34:42,000 --> 00:34:44,000 Bueno, tiene sentido 881 00:34:44,000 --> 00:34:46,000 Bueno, pues por situaciones como esta 882 00:34:46,000 --> 00:34:48,000 Se incorpora el concepto 883 00:34:48,000 --> 00:34:50,000 De variable estática, que se llama 884 00:34:50,000 --> 00:34:52,000 Que es una variable 885 00:34:52,000 --> 00:34:54,000 Que está en una clase 886 00:34:54,000 --> 00:34:56,000 Cuyo valor es compartido 887 00:34:56,000 --> 00:34:58,000 Por todos los objetos de la clase 888 00:34:58,000 --> 00:35:00,000 Es decir 889 00:35:00,000 --> 00:35:02,000 La idea es esta 890 00:35:02,000 --> 00:35:04,000 La idea es esta 891 00:35:04,000 --> 00:35:06,000 Tu tienes una clase 892 00:35:06,000 --> 00:35:08,000 Pedido como esta 893 00:35:08,000 --> 00:35:10,000 Y vamos a instanciar objetos 894 00:35:10,000 --> 00:35:12,000 Pues si tu instancias el objeto 895 00:35:12,000 --> 00:35:14,000 Pues este objeto tiene 896 00:35:14,000 --> 00:35:16,000 Sus propiedades 897 00:35:16,000 --> 00:35:18,000 Pues tiene su propiedad código 898 00:35:18,000 --> 00:35:20,000 Vale 899 00:35:20,000 --> 00:35:22,000 Tiene su propiedad descripción 900 00:35:22,000 --> 00:35:24,000 Vale, vamos a olvidarnos de la propiedad array 901 00:35:24,000 --> 00:35:26,000 Para no escribir tanto 902 00:35:26,000 --> 00:35:28,000 Y con lo que yo he escrito ahí 903 00:35:28,000 --> 00:35:30,000 Tendría su propiedad IVA 904 00:35:30,000 --> 00:35:32,000 Vale, este sería mi pedido 905 00:35:32,000 --> 00:35:34,000 P1, ala, ahí 906 00:35:34,000 --> 00:35:36,000 La propiedad array además que no he escrito 907 00:35:36,000 --> 00:35:38,000 Ahora, me hago mi pedido 908 00:35:38,000 --> 00:35:40,000 P2, en mi main 909 00:35:40,000 --> 00:35:42,000 Pues ala, aquí tengo mi otro pedido 910 00:35:42,000 --> 00:35:44,000 P2, este 911 00:35:44,000 --> 00:35:46,000 Y este de nuevo 912 00:35:46,000 --> 00:35:48,000 Tendrá 913 00:35:48,000 --> 00:35:50,000 Sus tres propiedades 914 00:35:50,000 --> 00:35:52,000 Más el array 915 00:35:52,000 --> 00:35:54,000 Que estaría por ahí, que no la pongo 916 00:35:54,000 --> 00:35:56,000 Para no escribir tanto 917 00:35:56,000 --> 00:35:58,000 Su propiedad código 918 00:35:58,000 --> 00:36:00,000 Su propiedad 919 00:36:02,000 --> 00:36:04,000 Descripción 920 00:36:04,000 --> 00:36:06,000 Y su propiedad 921 00:36:06,000 --> 00:36:08,000 IVA 922 00:36:08,000 --> 00:36:10,000 Con el modelo que yo he hecho 923 00:36:10,000 --> 00:36:12,000 Así están las cosas 924 00:36:12,000 --> 00:36:14,000 Cada uno tiene su código 925 00:36:14,000 --> 00:36:16,000 Descripción e IVA 926 00:36:16,000 --> 00:36:18,000 Vale, que tengo treinta mil 927 00:36:18,000 --> 00:36:20,000 Como este, pues ala 928 00:36:20,000 --> 00:36:22,000 Cada uno tiene su código, descripción e IVA 929 00:36:22,000 --> 00:36:24,000 Repito 930 00:36:24,000 --> 00:36:26,000 Para el código y descripción 931 00:36:26,000 --> 00:36:28,000 Es que tiene que ser así 932 00:36:28,000 --> 00:36:30,000 Cada uno tiene el suyo propio 933 00:36:30,000 --> 00:36:32,000 Vale, cada uno tiene el suyo propio 934 00:36:32,000 --> 00:36:34,000 Tiene que ser así 935 00:36:34,000 --> 00:36:36,000 Pero en esta situación concreta 936 00:36:36,000 --> 00:36:38,000 Que me han planteado y me han dicho 937 00:36:38,000 --> 00:36:40,000 Oye, perdona, que el valor del IVA 938 00:36:40,000 --> 00:36:42,000 Sea el que sea, que irá cambiando 939 00:36:42,000 --> 00:36:44,000 13, 12, va a ser el mismo para todos 940 00:36:44,000 --> 00:36:46,000 Va a ser el mismo 941 00:36:46,000 --> 00:36:48,000 Entonces que sentido tiene tener esto 942 00:36:48,000 --> 00:36:50,000 Veinte mil copias de esa variable 943 00:36:50,000 --> 00:36:52,000 Ninguno 944 00:36:52,000 --> 00:36:54,000 Las puedo tener, pero vaya pérdida de tiempo 945 00:36:54,000 --> 00:36:56,000 Bueno, pues para eso surge este concepto 946 00:36:56,000 --> 00:36:58,000 Que decimos, y es 947 00:36:58,000 --> 00:37:00,000 Pues vamos a cambiar esta propiedad, IVA 948 00:37:00,000 --> 00:37:02,000 Y le vamos a poner un modificador 949 00:37:02,000 --> 00:37:04,000 Aquí, estupendo, un modificador 950 00:37:04,000 --> 00:37:06,000 Que 951 00:37:06,000 --> 00:37:08,000 Se llama así 952 00:37:08,000 --> 00:37:10,000 Static 953 00:37:10,000 --> 00:37:12,000 Ala, le planto este modificador 954 00:37:12,000 --> 00:37:14,000 Delante del tipo de dato 955 00:37:14,000 --> 00:37:16,000 Vale, le planto ese modificador 956 00:37:16,000 --> 00:37:18,000 Bueno, pues 957 00:37:18,000 --> 00:37:20,000 Plantándole ese modificador 958 00:37:20,000 --> 00:37:22,000 A una variable cualquiera de la clase 959 00:37:22,000 --> 00:37:24,000 Que consigo 960 00:37:24,000 --> 00:37:26,000 Que esa variable, automáticamente 961 00:37:26,000 --> 00:37:28,000 Se convierte en una única variable 962 00:37:28,000 --> 00:37:30,000 Como si fuera el concepto 963 00:37:30,000 --> 00:37:32,000 De variable global, que no lo es 964 00:37:32,000 --> 00:37:34,000 Ahora aclaremos porque no lo es 965 00:37:34,000 --> 00:37:36,000 Compartida por todos los objetos 966 00:37:36,000 --> 00:37:38,000 Todos acceden al mismo espacio 967 00:37:38,000 --> 00:37:40,000 Compartido, que solo hay uno, único 968 00:37:40,000 --> 00:37:42,000 Al ponerle el modificador 969 00:37:42,000 --> 00:37:44,000 Static, la he convertido en una variable 970 00:37:44,000 --> 00:37:46,000 De ese tipo, variable estática 971 00:37:46,000 --> 00:37:48,000 Que implica esto que he dicho 972 00:37:48,000 --> 00:37:50,000 Al ponerle el modificador 973 00:37:50,000 --> 00:37:52,000 Static, esta variable mía de aquí 974 00:37:52,000 --> 00:37:54,000 Ahora ya automáticamente 975 00:37:54,000 --> 00:37:56,000 Desaparece de ahí 976 00:37:56,000 --> 00:37:58,000 Desaparece 977 00:37:58,000 --> 00:38:00,000 De ahí 978 00:38:00,000 --> 00:38:02,000 Vale 979 00:38:02,000 --> 00:38:04,000 Y ahora ya, hay 980 00:38:04,000 --> 00:38:06,000 Una única variable 981 00:38:06,000 --> 00:38:08,000 Aquí fuera, fuera de todo objeto 982 00:38:08,000 --> 00:38:10,000 Fuera de todo objeto 983 00:38:10,000 --> 00:38:12,000 Una única variable que se llama IVA 984 00:38:12,000 --> 00:38:14,000 Se llama con ese nombre, esta 985 00:38:14,000 --> 00:38:16,000 Y ahora 986 00:38:16,000 --> 00:38:18,000 Todos los objetos 987 00:38:18,000 --> 00:38:20,000 Su propiedad IVA 988 00:38:20,000 --> 00:38:22,000 Esta estática, es como si 989 00:38:22,000 --> 00:38:24,000 Apunta al mismo sitio, apunta aquí 990 00:38:24,000 --> 00:38:26,000 Todos apuntan a la misma 991 00:38:26,000 --> 00:38:28,000 Todos 992 00:38:28,000 --> 00:38:30,000 Que yo tengo aquí otro objeto 993 00:38:30,000 --> 00:38:32,000 P3 o los 200.000 994 00:38:32,000 --> 00:38:34,000 Que a mí me den la gana 995 00:38:34,000 --> 00:38:36,000 Que tengo otro objeto aquí 996 00:38:40,000 --> 00:38:42,000 Vale, pues tendrá 997 00:38:42,000 --> 00:38:44,000 Su propio código 998 00:38:44,000 --> 00:38:46,000 Eso sí 999 00:38:46,000 --> 00:38:48,000 Porque son variables normales 1000 00:38:48,000 --> 00:38:50,000 Propiedades normales 1001 00:38:50,000 --> 00:38:52,000 Su propia descripción 1002 00:38:52,000 --> 00:38:54,000 Pero su tercera propiedad 1003 00:38:54,000 --> 00:38:56,000 Esta de aquí 1004 00:38:56,000 --> 00:38:58,000 Su propio array, claro 1005 00:38:58,000 --> 00:39:00,000 Pero su propiedad IVA 1006 00:39:00,000 --> 00:39:02,000 No hay una nueva para él 1007 00:39:02,000 --> 00:39:04,000 Su propiedad IVA 1008 00:39:04,000 --> 00:39:06,000 Apunta automáticamente 1009 00:39:06,000 --> 00:39:08,000 A esta también 1010 00:39:08,000 --> 00:39:10,000 Luego 1011 00:39:10,000 --> 00:39:12,000 Me ahorro 1012 00:39:12,000 --> 00:39:14,000 De lo mismo 1013 00:39:14,000 --> 00:39:16,000 Y esto luego que implica 1014 00:39:16,000 --> 00:39:18,000 En términos de ejecución del programa 1015 00:39:18,000 --> 00:39:20,000 Que si yo la cambio 1016 00:39:20,000 --> 00:39:22,000 Esta propiedad a través del objeto P1 1017 00:39:22,000 --> 00:39:24,000 La cambio para todos 1018 00:39:24,000 --> 00:39:26,000 Porque es un espacio compartido 1019 00:39:26,000 --> 00:39:28,000 La cambio para todos 1020 00:39:28,000 --> 00:39:30,000 Vamos a verlo ahora en el main 1021 00:39:30,000 --> 00:39:32,000 Yo he cambiado aquí 1022 00:39:32,000 --> 00:39:34,000 Mi propiedad static y la he llamado 1023 00:39:34,000 --> 00:39:36,000 Así 1024 00:39:36,000 --> 00:39:38,000 Le he cambiado el modificador 1025 00:39:38,000 --> 00:39:40,000 Y le he puesto static 1026 00:39:40,000 --> 00:39:42,000 Pues como es privada 1027 00:39:42,000 --> 00:39:44,000 Para poder acceder a ella desde fuera 1028 00:39:44,000 --> 00:39:46,000 Sin el get 1029 00:39:46,000 --> 00:39:48,000 Le voy a poner public 1030 00:39:48,000 --> 00:39:50,000 ¿Por qué? 1031 00:39:50,000 --> 00:39:52,000 Porque las propiedades estáticas 1032 00:39:52,000 --> 00:39:54,000 Las propiedades estáticas 1033 00:39:56,000 --> 00:39:58,000 No se les pone en get y set 1034 00:39:58,000 --> 00:40:00,000 Se les podría poner 1035 00:40:00,000 --> 00:40:02,000 Pero no se les pone en get y set 1036 00:40:02,000 --> 00:40:04,000 Como su concepto es distinto 1037 00:40:04,000 --> 00:40:06,000 Es como si fueran variables globales 1038 00:40:06,000 --> 00:40:08,000 Y directamente para quitar las cosas 1039 00:40:08,000 --> 00:40:10,000 Se las hace públicas 1040 00:40:10,000 --> 00:40:12,000 Y se accede a ellas tal cual 1041 00:40:12,000 --> 00:40:14,000 Se podría haber decidido usarlas de otra manera 1042 00:40:14,000 --> 00:40:16,000 Pero no, se sigue de nuevo 1043 00:40:16,000 --> 00:40:18,000 Como convenio de programación 1044 00:40:18,000 --> 00:40:20,000 Que las variables estáticas 1045 00:40:20,000 --> 00:40:22,000 No se accede a ellas a través de get y set 1046 00:40:22,000 --> 00:40:24,000 Sino directamente a la variable 1047 00:40:24,000 --> 00:40:26,000 Entonces por eso lo voy a hacer así 1048 00:40:26,000 --> 00:40:28,000 Le voy a cambiar el modificador 1049 00:40:28,000 --> 00:40:30,000 Y le pongo public 1050 00:40:30,000 --> 00:40:32,000 Y no pongo ni get ni set 1051 00:40:32,000 --> 00:40:34,000 Vale, entonces 1052 00:40:34,000 --> 00:40:36,000 Ahora, tengo mi variable estática 1053 00:40:36,000 --> 00:40:38,000 Pues voy a mi main 1054 00:40:38,000 --> 00:40:40,000 Voy a ponerle 1055 00:40:40,000 --> 00:40:42,000 P1 1056 00:40:42,000 --> 00:40:44,000 Uy, ya tengo mis dos pedidos 1057 00:40:44,000 --> 00:40:46,000 Por ahora con las variables inicializar 1058 00:40:46,000 --> 00:40:48,000 Pues venga, voy a poner 1059 00:40:48,000 --> 00:40:50,000 P1 1060 00:41:02,000 --> 00:41:04,000 A ver, un momento 1061 00:41:04,000 --> 00:41:06,000 ¿Por qué no me deja acceder? 1062 00:41:06,000 --> 00:41:08,000 Ah 1063 00:41:08,000 --> 00:41:10,000 Ahora 1064 00:41:10,000 --> 00:41:12,000 Vale, pues entonces 1065 00:41:12,000 --> 00:41:14,000 Estoy accediendo a la propiedad ciba 1066 00:41:14,000 --> 00:41:16,000 A través del objeto P1 1067 00:41:16,000 --> 00:41:18,000 Puedo, no hay ningún problema 1068 00:41:18,000 --> 00:41:20,000 Porque la propiedad ciba 1069 00:41:20,000 --> 00:41:22,000 Está dentro de pedido 1070 00:41:22,000 --> 00:41:24,000 Entonces yo accedo a través de los objetos 1071 00:41:24,000 --> 00:41:26,000 Y como es public, puedo acceder a través del punto 1072 00:41:26,000 --> 00:41:28,000 Directamente a través del punto 1073 00:41:28,000 --> 00:41:30,000 No hace falta el get y el set, de hecho no los he hecho 1074 00:41:30,000 --> 00:41:32,000 Vale, entonces ¿qué estoy haciendo aquí? 1075 00:41:32,000 --> 00:41:34,000 Pues estoy poniendo un 4 aquí 1076 00:41:34,000 --> 00:41:36,000 Estoy poniendo un 4 en la zona compartida 1077 00:41:38,000 --> 00:41:40,000 Porque P1.iva es esto 1078 00:41:40,000 --> 00:41:42,000 P1.código es esto 1079 00:41:42,000 --> 00:41:44,000 Pero P1.iva es esto 1080 00:41:44,000 --> 00:41:46,000 Entonces ahora 1081 00:41:46,000 --> 00:41:48,000 Si yo accedo a través de cualquier otro objeto como P2 1082 00:41:48,000 --> 00:41:50,000 Voy a ver que tiene ese valor 1083 00:41:50,000 --> 00:41:52,000 Es decir, si yo ahora hago 1084 00:41:58,000 --> 00:42:00,000 Pues veré como me muestra el 4 1085 00:42:00,000 --> 00:42:02,000 Se ha accedido a través de P1 1086 00:42:02,000 --> 00:42:04,000 Pero he cambiado el valor para todos 1087 00:42:04,000 --> 00:42:06,000 Porque es compartida por todos 1088 00:42:06,000 --> 00:42:08,000 Es compartida 1089 00:42:08,000 --> 00:42:10,000 Esta propiedad ciba de aquí 1090 00:42:12,000 --> 00:42:14,000 No funciona como las otras 1091 00:42:14,000 --> 00:42:16,000 Si yo cambio el código de P1 1092 00:42:16,000 --> 00:42:18,000 Cambio solo el código de P1 1093 00:42:18,000 --> 00:42:20,000 Y el de P2 sigue siendo el suyo 1094 00:42:20,000 --> 00:42:22,000 Si cambio la descripción de P1 1095 00:42:22,000 --> 00:42:24,000 Cambio solo la de P1 1096 00:42:24,000 --> 00:42:26,000 La de P2 y P3 sigue siendo la suya 1097 00:42:26,000 --> 00:42:28,000 Pero si cambio el IVA de P1, cambio el IVA de todos 1098 00:42:28,000 --> 00:42:30,000 Porque al ser una propiedad estática 1099 00:42:30,000 --> 00:42:32,000 Es un espacio compartido común para todos 1100 00:42:34,000 --> 00:42:36,000 Vamos a comprobarlo aquí como yo le he dado 4 1101 00:42:36,000 --> 00:42:38,000 Y accediendo a través de P2 1102 00:42:38,000 --> 00:42:40,000 Me aparece el 4 1103 00:42:42,000 --> 00:42:44,000 Efectivamente 1104 00:42:44,000 --> 00:42:46,000 Y si yo ahora a través de P2 lo vuelvo a cambiar 1105 00:42:46,000 --> 00:42:48,000 Oye 1106 00:42:48,000 --> 00:42:50,000 P2.iva 1107 00:42:50,000 --> 00:42:52,000 Vamos a darle ahora 8 1108 00:42:52,000 --> 00:42:54,000 Y ahora lo voy a mostrar 1109 00:42:54,000 --> 00:42:56,000 Pero a través de P1 1110 00:42:58,000 --> 00:43:00,000 Pues efectivamente 1111 00:43:00,000 --> 00:43:02,000 Me va a salir 8 1112 00:43:02,000 --> 00:43:04,000 Primero el 4 anterior 1113 00:43:04,000 --> 00:43:06,000 Y luego el 8 1114 00:43:08,000 --> 00:43:10,000 Yo lo he cambiado a través de P2 1115 00:43:10,000 --> 00:43:12,000 Pero a través de P1 1116 00:43:12,000 --> 00:43:14,000 Se ha cambiado igual 1117 00:43:14,000 --> 00:43:16,000 Se ha cambiado igual 1118 00:43:16,000 --> 00:43:18,000 Se ha cambiado igual 1119 00:43:18,000 --> 00:43:20,000 Porque es un espacio compartido 1120 00:43:20,000 --> 00:43:22,000 Entonces las variables estáticas 1121 00:43:22,000 --> 00:43:24,000 Son variables compartidas 1122 00:43:24,000 --> 00:43:26,000 Por todos los objetos de una clase 1123 00:43:26,000 --> 00:43:28,000 A ver 1124 00:43:28,000 --> 00:43:30,000 No son variables globales 1125 00:43:30,000 --> 00:43:32,000 En términos de lo que se llama variables globales 1126 00:43:32,000 --> 00:43:34,000 En los lenguajes de pronunciación antiguos 1127 00:43:34,000 --> 00:43:36,000 En los lenguajes de pronunciación antiguos 1128 00:43:36,000 --> 00:43:38,000 Una variable global es una variable compartida 1129 00:43:38,000 --> 00:43:40,000 Por toda la aplicación 1130 00:43:40,000 --> 00:43:42,000 Las variables estáticas son solo compartidas 1131 00:43:42,000 --> 00:43:44,000 Por los objetos de una clase 1132 00:43:44,000 --> 00:43:46,000 De la clase en la que está 1133 00:43:46,000 --> 00:43:48,000 Si IVA está en pedido 1134 00:43:48,000 --> 00:43:50,000 Es una variable accesible 1135 00:43:50,000 --> 00:43:52,000 Y compartida por todos los objetos 1136 00:43:52,000 --> 00:43:54,000 De la clase pedido 1137 00:43:54,000 --> 00:43:56,000 Pero solo por los objetos de la clase pedido 1138 00:43:56,000 --> 00:43:58,000 Solo por eso 1139 00:43:58,000 --> 00:44:00,000 En ese sentido no es global 1140 00:44:00,000 --> 00:44:02,000 Es global pero para los objetos pedidos 1141 00:44:04,000 --> 00:44:06,000 Entonces está claro 1142 00:44:06,000 --> 00:44:08,000 Que si ponéis el modificador static 1143 00:44:08,000 --> 00:44:10,000 La variable sale 1144 00:44:10,000 --> 00:44:12,000 Del campo de propiedades 1145 00:44:12,000 --> 00:44:14,000 De cada objeto 1146 00:44:14,000 --> 00:44:16,000 Para ser una propiedad 1147 00:44:16,000 --> 00:44:18,000 Común para todos 1148 00:44:18,000 --> 00:44:20,000 Entonces yo accedo a ella 1149 00:44:20,000 --> 00:44:22,000 Para leer con cualquiera de los objetos 1150 00:44:22,000 --> 00:44:24,000 Porque yo llego al mismo lado 1151 00:44:26,000 --> 00:44:28,000 Bueno pues en este caso 1152 00:44:28,000 --> 00:44:30,000 Con lo recrito que me ha dado el cliente 1153 00:44:30,000 --> 00:44:32,000 El IVA tiene sentido que es una propiedad estática 1154 00:44:32,000 --> 00:44:34,000 Porque me han dicho 1155 00:44:34,000 --> 00:44:36,000 No sé cual va a ser 1156 00:44:36,000 --> 00:44:38,000 A veces es 16 a veces 12 1157 00:44:38,000 --> 00:44:40,000 Pero lo que sí que te puedo decir 1158 00:44:40,000 --> 00:44:42,000 Es que va a ser el mismo para todos 1159 00:44:42,000 --> 00:44:44,000 Bueno pues entonces hagamos la estática 1160 00:44:44,000 --> 00:44:46,000 Para que voy a tener yo una copia 1161 00:44:46,000 --> 00:44:48,000 En todos ellos 1162 00:44:48,000 --> 00:44:50,000 Si sé que es el mismo para todos 1163 00:44:50,000 --> 00:44:52,000 No es que me facilito el diseño 1164 00:44:52,000 --> 00:44:54,000 Sino que evito errores 1165 00:44:54,000 --> 00:44:56,000 Porque si el IVA cambia a 18 1166 00:44:56,000 --> 00:44:58,000 Con el modelo anterior yo tendría que irme en todos 1167 00:44:58,000 --> 00:45:00,000 Uno por uno a ponerlo a 18 1168 00:45:00,000 --> 00:45:02,000 Diseñado de esta manera 1169 00:45:02,000 --> 00:45:04,000 Poniendo 18 aquí 1170 00:45:04,000 --> 00:45:06,000 Ya lo he puesto en todos 1171 00:45:06,000 --> 00:45:08,000 ¿Vale? 1172 00:45:08,000 --> 00:45:10,000 Luego esta es 1173 00:45:10,000 --> 00:45:12,000 La motivación 1174 00:45:12,000 --> 00:45:14,000 De la existencia de variables estáticas 1175 00:45:14,000 --> 00:45:16,000 Que luego esto nos abre 1176 00:45:16,000 --> 00:45:18,000 Un mundo ahí de posibilidades para hacer cosas 1177 00:45:18,000 --> 00:45:20,000 ¿Vale? 1178 00:45:22,000 --> 00:45:24,000 Bueno pues en esta aplicación en la que estamos 1179 00:45:24,000 --> 00:45:26,000 Aquí por tanto 1180 00:45:26,000 --> 00:45:28,000 Que el IVA sea estático nos viene estupendo 1181 00:45:28,000 --> 00:45:30,000 Porque refleja exactamente lo que queremos 1182 00:45:30,000 --> 00:45:32,000 Nos viene estupendo que sea estático 1183 00:45:32,000 --> 00:45:34,000 ¿Vale? 1184 00:45:34,000 --> 00:45:36,000 Entonces las variables estáticas 1185 00:45:36,000 --> 00:45:38,000 Como hemos comprobado 1186 00:45:38,000 --> 00:45:40,000 Como da exactamente igual 1187 00:45:40,000 --> 00:45:42,000 El objeto que los llame 1188 00:45:42,000 --> 00:45:44,000 Me da igual que lo llame p1.y 1189 00:45:44,000 --> 00:45:46,000 Como da exactamente igual 1190 00:45:46,000 --> 00:45:48,000 Las variables estáticas si uno quiere 1191 00:45:48,000 --> 00:45:50,000 Se las puede llamar directamente 1192 00:45:50,000 --> 00:45:52,000 Con el nombre de la clase 1193 00:45:52,000 --> 00:45:54,000 Ni siquiera ningún objeto en concreto 1194 00:45:54,000 --> 00:45:56,000 Ni siquiera ninguno 1195 00:45:56,000 --> 00:45:58,000 Si no con el nombre de la clase 1196 00:45:58,000 --> 00:46:00,000 Es decir si me vuelvo a mi main 1197 00:46:00,000 --> 00:46:02,000 Que está aquí 1198 00:46:02,000 --> 00:46:04,000 Me da igual hacer 1199 00:46:04,000 --> 00:46:06,000 p1.iva 1200 00:46:08,000 --> 00:46:10,000 p1.iva 1201 00:46:10,000 --> 00:46:12,000 Igual a 12 1202 00:46:12,000 --> 00:46:14,000 Que hacer 1203 00:46:14,000 --> 00:46:16,000 Es el nombre de la clase 1204 00:46:16,000 --> 00:46:18,000 p1.iva 1205 00:46:18,000 --> 00:46:20,000 Igual a 12 1206 00:46:20,000 --> 00:46:22,000 Es lo mismo 1207 00:46:22,000 --> 00:46:24,000 El resto de variables 1208 00:46:24,000 --> 00:46:26,000 Que no son estáticas 1209 00:46:26,000 --> 00:46:28,000 Nunca se las puede llamar con el nombre de la clase 1210 00:46:28,000 --> 00:46:30,000 Nunca 1211 00:46:30,000 --> 00:46:32,000 Hay que llamarlas con un objeto en concreto 1212 00:46:32,000 --> 00:46:34,000 Para decir oye de que objeto me estás hablando 1213 00:46:34,000 --> 00:46:36,000 Es decir el código 1214 00:46:36,000 --> 00:46:38,000 Yo nunca podría poner 1215 00:46:38,000 --> 00:46:40,000 Pedido 1216 00:46:40,000 --> 00:46:42,000 Punto código 1217 00:46:42,000 --> 00:46:44,000 Esta propiedad código está de aquí 1218 00:46:44,000 --> 00:46:46,000 Esta propiedad código 1219 00:46:46,000 --> 00:46:48,000 Pedido.código 1220 00:46:48,000 --> 00:46:50,000 Igual a lo que sea 1221 00:46:50,000 --> 00:46:52,000 El compilador me diría 1222 00:46:52,000 --> 00:46:54,000 El código de quien 1223 00:46:54,000 --> 00:46:56,000 De p1, de p2, de p3 1224 00:46:56,000 --> 00:46:58,000 Porque tengo muchos códigos 1225 00:46:58,000 --> 00:47:00,000 Tengo este, tengo este 1226 00:47:00,000 --> 00:47:02,000 Nunca me dejaría a una propiedad 1227 00:47:02,000 --> 00:47:04,000 Que no sea estática 1228 00:47:04,000 --> 00:47:06,000 Llamarla así con el nombre de la clase 1229 00:47:06,000 --> 00:47:08,000 Pero una propiedad que sea estática 1230 00:47:08,000 --> 00:47:10,000 Sí 1231 00:47:10,000 --> 00:47:12,000 Me da igual de quien sea iva 1232 00:47:12,000 --> 00:47:14,000 Me da igual que sea de p1, de p2 1233 00:47:14,000 --> 00:47:16,000 De p3, me da lo mismo 1234 00:47:16,000 --> 00:47:18,000 Porque es que es esta la única 1235 00:47:18,000 --> 00:47:20,000 Que hay, me da igual 1236 00:47:20,000 --> 00:47:22,000 Con lo cual el compilador nos deja llamarla 1237 00:47:22,000 --> 00:47:24,000 Con el nombre de la clase directamente 1238 00:47:24,000 --> 00:47:26,000 Y con esto decimos 1239 00:47:26,000 --> 00:47:28,000 Oye esta es la variable estática 1240 00:47:28,000 --> 00:47:30,000 Iva de la clase pedido 1241 00:47:32,000 --> 00:47:34,000 Pero la variable estática code de la clase pedido 1242 00:47:34,000 --> 00:47:36,000 No existe 1243 00:47:36,000 --> 00:47:38,000 Pero la variable estática iva sí 1244 00:47:40,000 --> 00:47:42,000 ¿Vale? 1245 00:47:42,000 --> 00:47:44,000 Entonces 1246 00:47:44,000 --> 00:47:46,000 No sólo se puede 1247 00:47:46,000 --> 00:47:48,000 Acceder así sino que es lo recomendable 1248 00:47:48,000 --> 00:47:50,000 ¿Vale? 1249 00:47:50,000 --> 00:47:52,000 Lo recomendable es 1250 00:47:52,000 --> 00:47:54,000 Acceder a 1251 00:47:54,000 --> 00:47:56,000 De hecho 1252 00:47:56,000 --> 00:47:58,000 El compilador ya te lo dice 1253 00:47:58,000 --> 00:48:00,000 Te dice 1254 00:48:02,000 --> 00:48:04,000 Mirad lo que dice 1255 00:48:04,000 --> 00:48:06,000 Cuando yo he accedido a la variable iva 1256 00:48:06,000 --> 00:48:08,000 A través del objeto p1 1257 00:48:08,000 --> 00:48:10,000 Me está diciendo 1258 00:48:16,000 --> 00:48:18,000 Me está diciendo 1259 00:48:20,000 --> 00:48:22,000 El campo estático iva 1260 00:48:22,000 --> 00:48:24,000 Es 1261 00:48:24,000 --> 00:48:26,000 No sé si 1262 00:48:26,000 --> 00:48:28,000 Debería ser accedido 1263 00:48:28,000 --> 00:48:30,000 Debería para que lo hagas más bonito 1264 00:48:30,000 --> 00:48:32,000 Y no seas tan cutre 1265 00:48:32,000 --> 00:48:34,000 Debería ser accedido 1266 00:48:34,000 --> 00:48:36,000 De la manera estática 1267 00:48:36,000 --> 00:48:38,000 Pues la static way 1268 00:48:38,000 --> 00:48:40,000 Es esta de abajo con el nombre de la clase 1269 00:48:40,000 --> 00:48:42,000 A esto se refiere 1270 00:48:42,000 --> 00:48:44,000 Entonces lo único que está diciendo es 1271 00:48:44,000 --> 00:48:46,000 Oye que feo esto 1272 00:48:46,000 --> 00:48:48,000 Que accedas a una propiedad estática con un objeto 1273 00:48:48,000 --> 00:48:50,000 Accede con el nombre de la clase 1274 00:48:50,000 --> 00:48:52,000 Pero como da igual que accedas con este objeto 1275 00:48:52,000 --> 00:48:54,000 Con este, con este, con este 1276 00:48:54,000 --> 00:48:56,000 Pues accede con el nombre de la clase 1277 00:48:56,000 --> 00:48:58,000 Te avisa de eso 1278 00:48:58,000 --> 00:49:00,000 Ya que te pone accede bien 1279 00:49:00,000 --> 00:49:02,000 ¿Vale? 1280 00:49:02,000 --> 00:49:04,000 De hecho 1281 00:49:06,000 --> 00:49:08,000 ¿Me estáis siguiendo, no? 1282 00:49:10,000 --> 00:49:12,000 De hecho 1283 00:49:12,000 --> 00:49:14,000 Hay veces que ni siquiera 1284 00:49:14,000 --> 00:49:16,000 Se puede acceder con el nombre de un objeto 1285 00:49:16,000 --> 00:49:18,000 Porque no existen 1286 00:49:18,000 --> 00:49:20,000 Voy a borrar todo lo que hay en el main 1287 00:49:20,000 --> 00:49:22,000 Todo fuera 1288 00:49:22,000 --> 00:49:24,000 Vale 1289 00:49:24,000 --> 00:49:26,000 Vale, mi main está vacío 1290 00:49:26,000 --> 00:49:28,000 No hay nada 1291 00:49:28,000 --> 00:49:30,000 ¿Qué variables tengo ahora? 1292 00:49:30,000 --> 00:49:32,000 ¿Qué variables tengo? 1293 00:49:32,000 --> 00:49:34,000 Ninguna 1294 00:49:34,000 --> 00:49:36,000 Mi main está vacío, no tengo ninguna 1295 00:49:36,000 --> 00:49:38,000 Vale 1296 00:49:38,000 --> 00:49:40,000 Pues de repente voy a hacer esto 1297 00:49:42,000 --> 00:49:44,000 Pedido.iva 1298 00:49:44,000 --> 00:49:46,000 Igual a 12 1299 00:49:48,000 --> 00:49:50,000 ¿Y esto? 1300 00:49:50,000 --> 00:49:52,000 Mirad que es mi única sentencia 1301 00:49:52,000 --> 00:49:54,000 Del programa 1302 00:49:54,000 --> 00:49:56,000 Y puedo hacerla 1303 00:49:56,000 --> 00:49:58,000 ¿Qué significa esto? 1304 00:49:58,000 --> 00:50:00,000 La variable iva 1305 00:50:00,000 --> 00:50:02,000 Compartida por todos los objetos pedidos 1306 00:50:02,000 --> 00:50:04,000 Por todos 1307 00:50:04,000 --> 00:50:06,000 Ponla 12 1308 00:50:06,000 --> 00:50:08,000 Eso significa, con lo que yo he dicho 1309 00:50:08,000 --> 00:50:10,000 La variable iva compartida por todos los objetos pedidos 1310 00:50:10,000 --> 00:50:12,000 Ponla 12 1311 00:50:12,000 --> 00:50:14,000 Claro, entonces ahora me diríais 1312 00:50:14,000 --> 00:50:16,000 Pero si es que no hay ningún objeto pedido 1313 00:50:16,000 --> 00:50:18,000 ¿Cuál es la variable compartida por todos los objetos pedidos? 1314 00:50:18,000 --> 00:50:20,000 Si es que no hay ninguno 1315 00:50:20,000 --> 00:50:22,000 Claro, es que las variables estáticas de una clase 1316 00:50:22,000 --> 00:50:24,000 Pueden existir incluso 1317 00:50:24,000 --> 00:50:26,000 Aunque no haya objetos de esa clase 1318 00:50:26,000 --> 00:50:28,000 Aunque no haya objetos 1319 00:50:28,000 --> 00:50:30,000 Es decir, esta variable 1320 00:50:30,000 --> 00:50:32,000 Puede existir 1321 00:50:32,000 --> 00:50:34,000 Aunque no exista ninguno de estos 1322 00:50:36,000 --> 00:50:38,000 Aunque yo los borre todos 1323 00:50:38,000 --> 00:50:40,000 Y los mande todos a la basura 1324 00:50:40,000 --> 00:50:42,000 Fuera 1325 00:50:42,000 --> 00:50:44,000 Esta variable de aquí 1326 00:50:44,000 --> 00:50:46,000 Sigue pudiendo existir 1327 00:50:46,000 --> 00:50:48,000 Y la pregunta natural sería 1328 00:50:48,000 --> 00:50:50,000 Oye, pero cuando aparece, cuando nace 1329 00:50:50,000 --> 00:50:52,000 Cuando nace esa variable 1330 00:50:52,000 --> 00:50:54,000 La primera vez que la uso 1331 00:50:54,000 --> 00:50:56,000 Es decir, aquí en este punto 1332 00:50:56,000 --> 00:50:58,000 Aquí todavía no hay nada 1333 00:50:58,000 --> 00:51:00,000 No hay nada en la memoria 1334 00:51:00,000 --> 00:51:02,000 Yo accedo por primera vez 1335 00:51:02,000 --> 00:51:04,000 A esta variable estática 1336 00:51:04,000 --> 00:51:06,000 En el modo estático 1337 00:51:06,000 --> 00:51:08,000 Claro, no tengo otro porque no hay ningún objeto pedido 1338 00:51:08,000 --> 00:51:10,000 Pues la primera vez que accedo a ella 1339 00:51:10,000 --> 00:51:12,000 Plaz, nace, apareció 1340 00:51:12,000 --> 00:51:14,000 Apareció en memoria 1341 00:51:14,000 --> 00:51:16,000 Esta variable 1342 00:51:16,000 --> 00:51:18,000 Iva 1343 00:51:18,000 --> 00:51:20,000 Asociada a los objetos pedidos 1344 00:51:20,000 --> 00:51:22,000 Cuando los haya, que todavía no hay ninguno 1345 00:51:22,000 --> 00:51:24,000 Apareció y ya está ahí 1346 00:51:24,000 --> 00:51:26,000 Ya sé que hay para siempre 1347 00:51:26,000 --> 00:51:28,000 Y ya está 1348 00:51:28,000 --> 00:51:30,000 Esto es lo que se llama hacer nacer el contexto estático 1349 00:51:30,000 --> 00:51:32,000 De una clase 1350 00:51:32,000 --> 00:51:34,000 O sea, el contexto estático de una clase 1351 00:51:34,000 --> 00:51:36,000 Y todas las variables estáticas que tiene 1352 00:51:36,000 --> 00:51:38,000 Pues las variables estáticas 1353 00:51:38,000 --> 00:51:40,000 De una clase aparecen 1354 00:51:40,000 --> 00:51:42,000 La primera vez que yo las uso 1355 00:51:42,000 --> 00:51:44,000 Por ejemplo aquí, ala, apareció 1356 00:51:44,000 --> 00:51:46,000 Y ya está esa variable 1357 00:51:46,000 --> 00:51:48,000 Y no hay ningún objeto 1358 00:51:48,000 --> 00:51:50,000 Que ahora yo creo un objeto 1359 00:51:50,000 --> 00:51:52,000 No pasa nada 1360 00:51:52,000 --> 00:51:54,000 Ahora creo un objeto pedido p 1361 00:51:54,000 --> 00:51:56,000 Venga, igual a new pedido 1362 00:51:56,000 --> 00:51:58,000 Bueno, pues este 1363 00:51:58,000 --> 00:52:00,000 Objeto que yo acabo de crear 1364 00:52:00,000 --> 00:52:02,000 Su propiedad iva 1365 00:52:02,000 --> 00:52:04,000 Es esta, la estática que ya existe 1366 00:52:04,000 --> 00:52:06,000 De antes, la compartida por todos 1367 00:52:06,000 --> 00:52:08,000 Y según vayan apareciendo 1368 00:52:08,000 --> 00:52:10,000 Objetos nuevos 1369 00:52:10,000 --> 00:52:12,000 Su propiedad iva será esa estática 1370 00:52:12,000 --> 00:52:14,000 Compartida por todos 1371 00:52:14,000 --> 00:52:16,000 De hecho, si yo quisiera hacer ahora 1372 00:52:16,000 --> 00:52:18,000 p.iva 1373 00:52:18,000 --> 00:52:20,000 La propiedad iva a través de p 1374 00:52:20,000 --> 00:52:22,000 Veré que me va a dar 12 1375 00:52:22,000 --> 00:52:24,000 Y el objeto no existía todavía 1376 00:52:24,000 --> 00:52:26,000 Cuando yo le di valor, no existía 1377 00:52:30,000 --> 00:52:32,000 ¿Veis? 1378 00:52:32,000 --> 00:52:34,000 Es 12, o sea, este objeto pedido p 1379 00:52:34,000 --> 00:52:36,000 Que ha aparecido 1380 00:52:36,000 --> 00:52:38,000 Su propiedad iva es esta estática 1381 00:52:38,000 --> 00:52:40,000 La compartida por todos 1382 00:52:40,000 --> 00:52:42,000 ¿Vale? Pero esa propiedad estática 1383 00:52:42,000 --> 00:52:44,000 Puede nacer incluso antes 1384 00:52:44,000 --> 00:52:46,000 De que aparezcan los objetos, no pasa nada 1385 00:52:46,000 --> 00:52:48,000 Y nacerá la primera vez 1386 00:52:48,000 --> 00:52:50,000 Que yo la invoque así 1387 00:52:50,000 --> 00:52:52,000 De esta manera, así nacerá 1388 00:52:52,000 --> 00:52:54,000 ¿Vale? 1389 00:53:00,000 --> 00:53:02,000 Bueno, pues muy importante 1390 00:53:02,000 --> 00:53:04,000 Entender esto bien 1391 00:53:06,000 --> 00:53:08,000 ¿Vale? Muy importante entender 1392 00:53:08,000 --> 00:53:10,000 Que una clase puede tener una o 1393 00:53:10,000 --> 00:53:12,000 Muchas variables estáticas 1394 00:53:12,000 --> 00:53:14,000 Una o muchas, todas las que hagan falta 1395 00:53:14,000 --> 00:53:16,000 Y esas variables son 1396 00:53:16,000 --> 00:53:18,000 Variables 1397 00:53:18,000 --> 00:53:20,000 Comunes, compartidas 1398 00:53:20,000 --> 00:53:22,000 Por todos los objetos de la clase 1399 00:53:22,000 --> 00:53:24,000 Cuando esos objetos existan 1400 00:53:26,000 --> 00:53:28,000 ¿Vale? 1401 00:53:28,000 --> 00:53:30,000 Y luego para acceder a esas variables, por tanto 1402 00:53:30,000 --> 00:53:32,000 No hace falta acceder con un objeto concreto 1403 00:53:32,000 --> 00:53:34,000 No hace falta, pero como es compartido 1404 00:53:34,000 --> 00:53:36,000 Por todas, no hace falta, puedo acceder 1405 00:53:36,000 --> 00:53:38,000 Con el nombre de la clase y ya está 1406 00:53:40,000 --> 00:53:42,000 ¿Vale? Y también importante entender 1407 00:53:42,000 --> 00:53:44,000 Que esas variables pueden existir 1408 00:53:44,000 --> 00:53:46,000 Aunque no existan objetos 1409 00:53:46,000 --> 00:53:48,000 No hace falta que existan objetos 1410 00:53:48,000 --> 00:53:50,000 Tienen existencia propia 1411 00:53:50,000 --> 00:53:52,000 ¿Vale? Pero todos los objetos 1412 00:53:52,000 --> 00:53:54,000 Que aparezcan después estarán asociados 1413 00:53:54,000 --> 00:53:56,000 A esa 1414 00:53:58,000 --> 00:54:00,000 ¿Vale? 1415 00:54:02,000 --> 00:54:04,000 Vale, vamos a parar aquí un momentito