1 00:00:00,500 --> 00:00:20,160 Vale, a ver, entonces, aplicación. Una aplicación siempre tiene clases que representan los objetos con los que va a trabajar, ¿vale? Y luego ya una aplicación que hace cosas. Pero primero hay que entender qué clases tenemos. Aquí ya me dicen dos punto pelota, ¿vale? 2 00:00:20,160 --> 00:00:22,739 porque va a ser una aplicación que 3 00:00:22,739 --> 00:00:25,519 va a darnos trayectorias 4 00:00:25,519 --> 00:00:27,239 y para que 5 00:00:27,239 --> 00:00:29,239 nosotros calculemos dándole un botoncito 6 00:00:29,239 --> 00:00:31,100 cuánto me he gastado yo 7 00:00:31,100 --> 00:00:33,420 en esa trayectoria, es una aplicación que vale para eso 8 00:00:33,420 --> 00:00:35,299 yo le meto una trayectoria 9 00:00:35,299 --> 00:00:36,820 le doy al botón y me dice 10 00:00:36,820 --> 00:00:38,659 en esta trayectoria te vas a gastar 11 00:00:38,659 --> 00:00:41,100 10.000 euros, vale 12 00:00:41,100 --> 00:00:43,100 o lo que sea, para eso vale 13 00:00:43,100 --> 00:00:44,899 bueno, pues entonces el que ha 14 00:00:44,899 --> 00:00:46,679 hecho el análisis de la aplicación ha dicho 15 00:00:46,679 --> 00:00:49,119 bueno, pues el diseño que me interesa es 16 00:00:49,119 --> 00:00:52,159 el vehículo, ¿qué dato necesito? 17 00:00:52,840 --> 00:00:54,280 lo que consume mi coche 18 00:00:54,280 --> 00:00:56,520 lo que consume por kilómetro, porque para saber 19 00:00:56,520 --> 00:00:58,159 lo que me voy a gastar en una trayectoria 20 00:00:58,159 --> 00:01:00,359 pues necesito saber lo que consumo 21 00:01:00,359 --> 00:01:02,460 por kilómetro, vale, pues ese dato 22 00:01:02,460 --> 00:01:04,739 lo voy a meter como propiedad 23 00:01:04,739 --> 00:01:05,840 de mi coche 24 00:01:05,840 --> 00:01:08,519 luego habrá una clase vehículo 25 00:01:08,519 --> 00:01:10,500 que se caracterizará 26 00:01:10,500 --> 00:01:12,680 ¿por qué? por lo que consume por kilómetro 27 00:01:12,680 --> 00:01:14,420 se podría caracterizar 28 00:01:14,420 --> 00:01:16,500 por más cosas, pues por su color, por su marca 29 00:01:16,500 --> 00:01:18,040 pero a la aplicación todo eso le da igual 30 00:01:18,040 --> 00:01:24,519 A la aplicación esta solo le interesa como propiedad del vehículo lo que consume por kilómetro. 31 00:01:25,260 --> 00:01:41,359 Vale, pues ya tiene una clase bastante caracterizada, que es clase vehículo con una única propiedad. 32 00:01:41,980 --> 00:01:47,620 Una única propiedad que es el gasto por kilómetro. 33 00:01:48,739 --> 00:01:50,540 De los métodos ya hablaremos después. 34 00:01:50,540 --> 00:01:52,799 vale, luego ya 35 00:01:52,799 --> 00:01:54,840 cuando haya una aplicación que arranque 36 00:01:54,840 --> 00:01:56,579 a lo mejor esa aplicación 37 00:01:56,579 --> 00:01:58,739 crea 20 coches 38 00:01:58,739 --> 00:02:01,000 diferentes, uno que gasta 3 39 00:02:01,000 --> 00:02:02,900 otro que gasta 7, otro que 40 00:02:02,900 --> 00:02:05,120 gasta 15, para cada uno de ellos 41 00:02:05,120 --> 00:02:06,819 podrá calcular lo que gasta por 42 00:02:06,819 --> 00:02:08,879 una trayectoria, a ver lo que gasta por una 43 00:02:08,879 --> 00:02:10,900 trayectoria el coche 1, ah pues mira me ha gastado 44 00:02:10,900 --> 00:02:12,900 esto, ahora me voy a crear otro 45 00:02:12,900 --> 00:02:14,879 coche diferente, a ver cuánto 46 00:02:14,879 --> 00:02:16,740 gasta en esa trayectoria, pues ha gastado 1000 47 00:02:16,740 --> 00:02:18,840 vale, en la aplicación ahora ya 48 00:02:18,840 --> 00:02:20,800 uno creará todos los coches que quiera 49 00:02:20,800 --> 00:02:22,719 para calcular lo que gastan 50 00:02:22,719 --> 00:02:24,699 pero clase hay una 51 00:02:24,699 --> 00:02:26,240 ya está, ¿qué significa? 52 00:02:26,360 --> 00:02:28,879 cuando haya coches se caracterizarán por esto 53 00:02:28,879 --> 00:02:30,780 y solo por eso porque no necesitamos 54 00:02:30,780 --> 00:02:32,259 más información para la aplicación 55 00:02:32,259 --> 00:02:33,520 vale 56 00:02:33,520 --> 00:02:36,680 bueno, ¿qué más cosas hace esta aplicación? 57 00:02:37,560 --> 00:02:38,879 pues tiene que registrar 58 00:02:38,879 --> 00:02:40,460 de alguna manera trayectorias 59 00:02:40,460 --> 00:02:42,680 tiene que registrar trayectorias 60 00:02:42,680 --> 00:02:45,020 porque si de lo que se trata 61 00:02:45,020 --> 00:02:46,599 en esta aplicación es de calcular 62 00:02:46,599 --> 00:02:49,020 el gasto en una trayectoria 63 00:02:49,020 --> 00:02:50,740 tiene que existir una trayectoria. Es una trayectoria 64 00:02:50,740 --> 00:02:51,879 es 65 00:02:51,879 --> 00:02:55,139 esto, ¿verdad? Esto es una trayectoria. 66 00:02:55,699 --> 00:02:56,780 Vale. Entonces yo 67 00:02:56,780 --> 00:02:58,740 puedo querer calcular cuánto va a 68 00:02:58,740 --> 00:03:00,120 gastar mi coche haciendo esto. 69 00:03:01,300 --> 00:03:02,819 Tengo que poner algún método 70 00:03:02,819 --> 00:03:04,939 matemático o algo porque esto es muy complicado 71 00:03:04,939 --> 00:03:06,800 de calcular. Tendría 72 00:03:06,800 --> 00:03:08,819 que medir esto. ¿Cómo mido yo esto? ¿Me pongo aquí 73 00:03:08,819 --> 00:03:10,259 con un metro físico a medirlo? 74 00:03:10,659 --> 00:03:12,780 Hombre, pues puedo hacerlo 75 00:03:12,780 --> 00:03:14,840 y dárselo a la aplicación. Pero entonces, ¿para qué 76 00:03:14,840 --> 00:03:16,819 me sirve la aplicación si voy a tener que venir yo 77 00:03:16,819 --> 00:03:18,800 con un metro a medirlo? Yo lo que quiero 78 00:03:18,800 --> 00:03:20,759 es que la propia aplicación yo le meta 79 00:03:20,759 --> 00:03:22,620 la trayectoria y lo mida. ¿Vale? 80 00:03:23,180 --> 00:03:24,919 Pues entonces, la única 81 00:03:24,919 --> 00:03:25,939 forma que tiene 82 00:03:25,939 --> 00:03:28,960 el ordenador de medirnos 83 00:03:28,960 --> 00:03:29,900 esto, 84 00:03:30,919 --> 00:03:32,840 como él no tiene un metro así para ir haciendo las 85 00:03:32,840 --> 00:03:34,840 curvas, es rectificarla. 86 00:03:36,659 --> 00:03:37,099 Rectificarla. 87 00:03:37,360 --> 00:03:39,060 Es ir marcando puntitos, 88 00:03:39,439 --> 00:03:39,800 ¿verdad? 89 00:03:40,539 --> 00:03:42,240 Un puntito aquí, un puntito aquí, 90 00:03:42,240 --> 00:03:44,180 y la línea recta que va de aquí a aquí. 91 00:03:44,840 --> 00:04:05,919 Ahora la rectifico, ahora de aquí a aquí, ahora de aquí a aquí, ahí, por ejemplo, ¿vale? Me voy marcando puntos y la voy rectificando. Vamos a ponerle pocos puntos para no estar aquí mil años, por ejemplo, así y así. 92 00:04:06,500 --> 00:04:11,539 Vale, entonces, si yo a la aplicación le doy estos puntos, 93 00:04:11,759 --> 00:04:15,039 este, este, este, este, la aplicación ya lo tiene muy 94 00:04:15,039 --> 00:04:18,699 fácil porque puede calcular esta distancia con la fórmula que hay 95 00:04:18,699 --> 00:04:22,199 de la distancia, sumarla a esta, sumarla a esta, a esta. 96 00:04:22,779 --> 00:04:24,420 Y tiene una aproximación. 97 00:04:24,959 --> 00:04:28,300 No es la distancia exacta, pero es una aproximación. 98 00:04:28,740 --> 00:04:32,220 Hombre, cuanto más puntitos le dé yo, más aproximada será. 99 00:04:32,519 --> 00:04:34,180 O sea, más real será la medida. 100 00:04:34,180 --> 00:04:35,860 cuanto más puntos le dé 101 00:04:35,860 --> 00:04:38,399 eso ya depende de la pereza 102 00:04:38,399 --> 00:04:40,379 que me dé a mí darle puntos 103 00:04:40,379 --> 00:04:42,259 si le doy 30 puntos 104 00:04:42,259 --> 00:04:44,519 pues va a estar más próxima 105 00:04:44,519 --> 00:04:45,199 a la realidad 106 00:04:45,199 --> 00:04:48,139 si le doy 3 puntos pues va a ser una medida 107 00:04:48,139 --> 00:04:49,439 muy poco próxima 108 00:04:49,439 --> 00:04:51,560 muy mala próxima 109 00:04:51,560 --> 00:04:53,000 ¿vale? entonces 110 00:04:53,000 --> 00:04:56,120 el que me hace el análisis me dice, vale, pues entonces 111 00:04:56,120 --> 00:04:58,259 otra clase que necesitas 112 00:04:58,259 --> 00:05:00,480 es la clase que representa 113 00:05:00,480 --> 00:05:02,079 cada uno de estos objetos punto 114 00:05:02,079 --> 00:05:04,319 Porque son elementos imprescindibles 115 00:05:04,319 --> 00:05:05,600 Para calcular la distancia 116 00:05:05,600 --> 00:05:06,759 Son elementos imprescindibles 117 00:05:06,759 --> 00:05:08,480 ¿Vale? Pues pensamos 118 00:05:08,480 --> 00:05:10,759 ¿Por qué se caracteriza cada punto en un plano? 119 00:05:12,000 --> 00:05:12,519 Exclusivamente 120 00:05:12,519 --> 00:05:14,699 Por la coordenada X y la Y 121 00:05:14,699 --> 00:05:15,339 Ya está 122 00:05:15,339 --> 00:05:17,000 Cada punto en el plano 123 00:05:17,000 --> 00:05:19,560 Vosotros que habéis estudiado matemáticas 124 00:05:19,560 --> 00:05:20,740 Y si no estáis jodidos 125 00:05:20,740 --> 00:05:25,759 Pues cada punto en el plano 126 00:05:25,759 --> 00:05:27,399 Si estas son las coordenadas X e Y 127 00:05:27,399 --> 00:05:29,199 Cada punto en el plano 128 00:05:29,199 --> 00:05:30,500 Sabemos que se caracteriza 129 00:05:30,500 --> 00:05:33,060 por la coordenada Y y la coordenada X. 130 00:05:33,560 --> 00:05:35,519 Este punto se caracteriza por dos coordenadas. 131 00:05:35,980 --> 00:05:37,639 Este punto, ¿por qué se caracteriza? 132 00:05:37,740 --> 00:05:39,519 Por su coordenada Y y su coordenada X. 133 00:05:39,939 --> 00:05:41,379 Eso lo tenemos claro todos, ¿no? 134 00:05:42,180 --> 00:05:43,720 Luego, entonces, ya sabemos 135 00:05:43,720 --> 00:05:46,420 que la clase punto 136 00:05:46,420 --> 00:05:48,920 solo necesita dos propiedades 137 00:05:48,920 --> 00:05:50,939 para caracterizar completamente al punto. 138 00:05:50,939 --> 00:05:52,079 La coordenada X y la Y. 139 00:05:52,959 --> 00:05:55,220 Y ya necesitamos más información. 140 00:05:56,220 --> 00:05:57,339 Pero no habría que meterle en plan 141 00:05:57,339 --> 00:05:58,800 X2, Y2 142 00:05:58,800 --> 00:06:02,980 para marcar el final de la trayectoria o algo así. 143 00:06:03,339 --> 00:06:06,100 Yo ahora estoy caracterizando mis objetos punto. 144 00:06:07,199 --> 00:06:08,839 Luego ya tendré que ver una trayectoria. 145 00:06:08,839 --> 00:06:09,740 Luego ya tendré que ver. 146 00:06:10,199 --> 00:06:12,680 ¿Y una trayectoria completa qué es? 147 00:06:13,079 --> 00:06:15,480 A una trayectoria completa es un montón de puntos. 148 00:06:15,600 --> 00:06:16,160 No pasa nada. 149 00:06:16,720 --> 00:06:18,420 ¿Qué es un montón de algo? 150 00:06:19,060 --> 00:06:19,939 Una RAI. 151 00:06:19,939 --> 00:06:20,699 Pues ya está. 152 00:06:20,839 --> 00:06:21,939 No nos hace falta más clases. 153 00:06:22,500 --> 00:06:23,959 Nos hace falta la clase vehículo, 154 00:06:24,120 --> 00:06:26,120 que tiene el gasto por kilómetro. 155 00:06:26,120 --> 00:06:27,779 la clase punto 156 00:06:27,779 --> 00:06:29,779 que me permite guardar 157 00:06:29,779 --> 00:06:30,920 cada uno de estos 158 00:06:30,920 --> 00:06:33,639 y ya con esas dos clases yo ya puedo 159 00:06:33,639 --> 00:06:34,959 construir mi aplicación 160 00:06:34,959 --> 00:06:37,899 puedo hacer una raíz de puntos que serán trayectorias 161 00:06:37,899 --> 00:06:39,720 puedo hacer distancias entre puntos 162 00:06:39,720 --> 00:06:41,740 puedo multiplicar eso por 163 00:06:41,740 --> 00:06:43,939 el gasto del vehículo, ya puedo hacer cualquier cosa 164 00:06:43,939 --> 00:06:45,759 pero estoy primero en la parte 165 00:06:45,759 --> 00:06:47,519 de declarar las clases 166 00:06:47,519 --> 00:06:49,220 hemos declarado vehículo 167 00:06:49,220 --> 00:06:51,879 ya hemos visto que a la aplicación no le hace falta 168 00:06:51,879 --> 00:06:53,920 más propiedades, lo que consume por kilómetro 169 00:06:53,920 --> 00:06:55,879 ya vamos a declarar la clase 170 00:06:55,879 --> 00:06:58,180 punto, cuyas propiedades son 171 00:06:58,180 --> 00:07:00,220 dos, coordenada x e y 172 00:07:00,220 --> 00:07:01,339 y ya está 173 00:07:01,339 --> 00:07:02,639 pues entonces 174 00:07:02,639 --> 00:07:05,959 la otra clase que hacemos 175 00:07:05,959 --> 00:07:11,670 la clase punto 176 00:07:11,670 --> 00:07:13,170 que tiene solamente dos coordenadas 177 00:07:13,170 --> 00:07:16,069 coordenada x 178 00:07:16,069 --> 00:07:17,410 y coordenada y 179 00:07:17,410 --> 00:07:19,750 ya está, para ser rápidos 180 00:07:19,750 --> 00:07:20,329 x e y 181 00:07:20,329 --> 00:07:22,970 hasta ahí las propiedades 182 00:07:22,970 --> 00:07:25,930 ahora ya vamos a ver los métodos 183 00:07:25,930 --> 00:07:27,430 que me van a ser útiles a mi 184 00:07:27,430 --> 00:07:28,750 para luego hacer mis cosas 185 00:07:28,750 --> 00:07:33,639 bueno, entonces, para entenderlo mejor 186 00:07:33,639 --> 00:07:35,379 vamos a ir llevando un main en paralelo 187 00:07:35,379 --> 00:07:47,959 vale, este main ya sí que es la aplicación 188 00:07:47,959 --> 00:07:49,180 que se ejecuta 189 00:07:49,180 --> 00:07:51,800 vale, entonces 190 00:07:51,800 --> 00:07:53,720 vamos a hacernos aquí un constructor 191 00:07:53,720 --> 00:07:55,759 un constructor 192 00:07:55,759 --> 00:07:57,660 para poder, a la vez que 193 00:07:57,660 --> 00:07:59,839 creamos un objeto vehículo, darle ya un gasto 194 00:07:59,839 --> 00:08:00,680 por combustible 195 00:08:00,680 --> 00:08:03,319 vamos a hacernos un constructor 196 00:08:03,319 --> 00:08:05,819 este de aquí 197 00:08:05,819 --> 00:08:07,180 donde le quito el public 198 00:08:07,180 --> 00:08:10,220 y el super, porque no entiendo lo que es 199 00:08:10,220 --> 00:08:14,089 ¿vale? y me voy a hacer un constructor 200 00:08:14,089 --> 00:08:15,949 en punto también que es más cómodo 201 00:08:15,949 --> 00:08:17,930 para luego crearme el objeto ya dándole 202 00:08:17,930 --> 00:08:19,029 directamente los valores 203 00:08:19,029 --> 00:08:28,740 le quito el public 204 00:08:28,740 --> 00:08:33,649 y esto, vale pues entonces 205 00:08:33,649 --> 00:08:35,210 mi aplicación 206 00:08:35,210 --> 00:08:37,110 main ¿qué va a hacer? pues por ejemplo 207 00:08:37,110 --> 00:08:40,570 vamos a crear un objeto 208 00:08:40,570 --> 00:08:43,350 vamos a decirle primero mi aplicación 209 00:08:43,350 --> 00:08:43,789 main 210 00:08:43,789 --> 00:08:47,289 esto ya si se va a ejecutar, esta es la que 211 00:08:47,289 --> 00:08:49,629 el usuario viene para ejecutar 212 00:08:49,629 --> 00:08:53,429 y para ver cuánto va a gastar en su coche en las diferentes trayectorias. 213 00:08:54,470 --> 00:09:01,850 Vale, pues venga, vamos a decirle que introduzca antes de nada lo que gasta su coche. 214 00:09:12,539 --> 00:09:15,600 ¿Cuánto gasta por kilómetro? Porque ese dato es el primero que necesita. 215 00:09:18,169 --> 00:09:22,149 Vale, pues nada, leemos a ver lo que gasta su coche por kilómetro. 216 00:09:39,480 --> 00:09:40,340 Vale, pues venga. 217 00:09:41,659 --> 00:09:45,399 Y ya vamos directamente, como ya somos muy listos y muy rápidos, 218 00:09:45,399 --> 00:09:47,399 vamos a crearnos ya un vehículo 219 00:09:47,399 --> 00:09:49,779 un objeto vehículo, que ya será mi coche 220 00:09:49,779 --> 00:09:50,379 concreto 221 00:09:50,379 --> 00:09:53,039 la marca 222 00:09:53,039 --> 00:09:55,039 no le gusta, no la quiere saber 223 00:09:55,039 --> 00:10:03,639 con ya 224 00:10:03,639 --> 00:10:04,440 directamente 225 00:10:04,440 --> 00:10:07,080 el dato que me den 226 00:10:07,080 --> 00:10:09,580 next double 227 00:10:09,580 --> 00:10:13,580 ala, en lugar de leerlo 228 00:10:13,580 --> 00:10:14,340 en una variable 229 00:10:14,340 --> 00:10:16,139 el dato que me dan 230 00:10:16,139 --> 00:10:19,379 y pasárselo al constructor para que instancie mi coche 231 00:10:19,379 --> 00:10:20,720 pues me ahorro esa variable 232 00:10:20,720 --> 00:10:23,299 me la ahorro, ya directamente 233 00:10:23,299 --> 00:10:25,000 este Scan Next Double se va a quedar 234 00:10:25,000 --> 00:10:26,840 esperando el valor 235 00:10:26,840 --> 00:10:29,259 y tal cual recibe el valor 236 00:10:29,259 --> 00:10:31,360 se lo pasa al constructor y creamos 237 00:10:31,360 --> 00:10:32,899 el coche con ese valor 238 00:10:32,899 --> 00:10:35,500 ala, pues ya tenemos el coche creado 239 00:10:35,500 --> 00:10:37,259 ya está 240 00:10:37,259 --> 00:10:39,360 pero esta aplicación vale 241 00:10:39,360 --> 00:10:41,460 para calcular cuánto va a gastar 242 00:10:41,460 --> 00:10:42,279 en una trayectoria 243 00:10:42,279 --> 00:10:45,279 vale, pues entonces 244 00:10:45,279 --> 00:10:47,480 aquí 245 00:10:47,480 --> 00:10:49,399 ¿qué nos interesa aquí? 246 00:10:49,399 --> 00:10:51,799 vamos a decirle, venga, dime qué trayectoria 247 00:10:51,799 --> 00:10:53,259 vas a hacer, entonces habrá que 248 00:10:53,259 --> 00:10:55,200 pedirle los puntos 249 00:10:55,200 --> 00:10:57,980 eso es un rollo porque el usuario va a tener que meterlos 250 00:10:57,980 --> 00:11:00,019 uno por uno, claro, esta aplicación 251 00:11:00,019 --> 00:11:00,820 tendría sentido 252 00:11:00,820 --> 00:11:03,320 hacerla con una interfaz gráfica 253 00:11:03,320 --> 00:11:05,580 y en lugar de pasarle los puntos escribiendo 254 00:11:05,580 --> 00:11:07,700 irlos marcando en la interfaz 255 00:11:07,700 --> 00:11:09,820 y eso es muy fácil, luego lo que 256 00:11:09,820 --> 00:11:11,500 hará el Java simplemente 257 00:11:11,500 --> 00:11:14,320 lo que tú has marcado lo transformará 258 00:11:14,320 --> 00:11:15,740 allá a dos valores x e y 259 00:11:15,740 --> 00:11:17,600 entonces siempre es más cómodo para el usuario 260 00:11:17,600 --> 00:11:19,679 pero como todavía no estamos en interfaz gráfica 261 00:11:19,679 --> 00:11:22,139 en lugar de marcarlo en la pantalla y que él lo transforme 262 00:11:22,139 --> 00:11:24,059 a x e y, vamos a tener que meter 263 00:11:24,059 --> 00:11:26,039 uno por uno, entonces vamos a decirle 264 00:11:26,039 --> 00:11:27,980 ahora ya que introduzca la trayectoria 265 00:11:27,980 --> 00:11:32,539 venga, primero que nos diga 266 00:11:32,539 --> 00:11:34,480 cuántos puntos va a tener, para crear 267 00:11:34,480 --> 00:11:36,559 el array, y así no nos complicamos 268 00:11:36,559 --> 00:11:37,080 la misma 269 00:11:37,080 --> 00:11:46,519 la vida, cuántos puntos 270 00:11:46,519 --> 00:11:48,299 tiene la trayectoria que va a meter usted 271 00:11:48,299 --> 00:11:50,480 entonces como esta aplicación se va a estar toda la vida 272 00:11:50,480 --> 00:11:52,539 ya, calculando precios por 273 00:11:52,539 --> 00:11:54,200 trayectoria, vamos a meter esto en un do while 274 00:11:54,200 --> 00:11:56,620 Para que esté ya la aplicación todo el rato 275 00:11:56,620 --> 00:11:58,399 Pidiéndote trayectorias y calculando 276 00:11:58,399 --> 00:12:00,360 Así de apañados 277 00:12:00,360 --> 00:12:01,159 Claro 278 00:12:01,159 --> 00:12:06,639 ¿Por qué? 279 00:12:07,259 --> 00:12:09,899 Hombre, porque cada vez puede meter trayectorias distintas 280 00:12:09,899 --> 00:12:10,179 Ah 281 00:12:10,179 --> 00:12:17,000 Hombre, es que 282 00:12:17,000 --> 00:12:18,100 Do while 283 00:12:18,100 --> 00:12:23,220 Habría que decirle en algún momento continuar 284 00:12:23,220 --> 00:12:25,740 Vamos a ponerle aquí abajo 285 00:12:25,740 --> 00:12:30,460 Para que nos quede bonito 286 00:12:30,460 --> 00:12:33,879 Desea continuar 287 00:12:33,879 --> 00:12:37,039 Y ahora leemos aquí la opción 288 00:12:37,039 --> 00:12:49,529 Vamos a ponerle 289 00:12:49,529 --> 00:12:50,529 Sí, no 290 00:12:50,529 --> 00:12:54,740 Con lo cual la opción que sea un char 291 00:12:54,740 --> 00:12:56,139 Esto 292 00:12:56,139 --> 00:12:59,039 Un char 293 00:12:59,039 --> 00:13:01,399 Y ahora ya leemos la opción 294 00:13:01,399 --> 00:13:03,000 Pues ya ves tú que complicación 295 00:13:03,000 --> 00:13:03,879 Leer un char 296 00:13:03,879 --> 00:13:06,220 con next line y quedándome 297 00:13:06,220 --> 00:13:08,080 con el carácter en la primera posición 298 00:13:08,080 --> 00:13:10,179 muy complicado 299 00:13:10,179 --> 00:13:12,179 y ahora ya hace esto 300 00:13:12,179 --> 00:13:13,480 mientras la opción 301 00:13:13,480 --> 00:13:16,419 sea distinta 302 00:13:16,419 --> 00:13:17,740 de 303 00:13:17,740 --> 00:13:19,220 no 304 00:13:19,220 --> 00:13:22,519 vale, entonces nuestra aplicación 305 00:13:22,519 --> 00:13:24,159 va a estar todo el rato pidiendo trayectorias 306 00:13:24,159 --> 00:13:25,500 mostrándote el resultado, pidiendo trayectorias 307 00:13:25,500 --> 00:13:27,679 hasta que le digas que ya no quiero más 308 00:13:27,679 --> 00:13:29,480 no voy a hacer más viajes 309 00:13:29,480 --> 00:13:32,460 vale, bueno, pues abrimos 310 00:13:32,460 --> 00:13:33,840 hueco aquí para meterlo de dentro 311 00:13:33,840 --> 00:13:35,779 ¿Cuántos puntos tiene la trayectoria? 312 00:13:35,960 --> 00:13:36,919 Vamos a leer los puntos 313 00:13:36,919 --> 00:13:49,649 Vale, ahora vamos a hacer 314 00:13:49,649 --> 00:13:51,649 Nuestro array de objetos punto 315 00:13:51,649 --> 00:13:52,990 Que esta será la trayectoria 316 00:13:52,990 --> 00:14:04,470 Vale 317 00:14:04,470 --> 00:14:06,549 Tengo esto 318 00:14:06,549 --> 00:14:08,389 Pues, colega 319 00:14:08,389 --> 00:14:09,490 Aquí 320 00:14:09,490 --> 00:14:13,090 ¿Qué? 321 00:14:15,490 --> 00:14:16,990 Sí, se me está complicando 322 00:14:16,990 --> 00:14:18,389 Pero si le estoy dando a la tecla buena 323 00:14:18,389 --> 00:14:20,669 Qué fuerte 324 00:14:20,669 --> 00:14:24,610 Joder, me ha costado 325 00:14:24,610 --> 00:14:25,649 Vale 326 00:14:25,649 --> 00:14:28,370 New punto, no un puntos 327 00:14:28,370 --> 00:14:35,820 Ahora tenemos el array y ahora viene 328 00:14:35,820 --> 00:14:36,940 Lo peor 329 00:14:36,940 --> 00:14:39,820 Porque es pedir 330 00:14:39,820 --> 00:14:41,340 Las coronas de los puntos uno a uno 331 00:14:41,340 --> 00:14:43,960 Para que cuando probemos esto no sea tan 332 00:14:43,960 --> 00:14:46,240 Rollo, vamos a generarlas aleatoriamente 333 00:14:46,240 --> 00:14:47,179 ¿Os parece? 334 00:14:47,919 --> 00:14:49,000 A tomar por saco 335 00:14:49,000 --> 00:14:51,720 Venga, pues vamos a recorrer este 336 00:14:51,720 --> 00:14:53,659 Este array 337 00:14:53,659 --> 00:14:56,600 no con un for each porque vamos a instanciar 338 00:14:56,600 --> 00:14:58,519 los objetos, pero con un for each jamás 339 00:14:58,519 --> 00:14:59,960 jamás 340 00:14:59,960 --> 00:15:00,879 jamás 341 00:15:00,879 --> 00:15:06,779 va a haber momentos en los que no te quede 342 00:15:06,779 --> 00:15:08,139 más remedio, insisto 343 00:15:08,139 --> 00:15:22,940 vale, pues vamos a 344 00:15:22,940 --> 00:15:26,480 ser tan, venga, pongo las llaves 345 00:15:26,480 --> 00:15:27,360 para que no os estreséis 346 00:15:27,360 --> 00:15:30,139 vale, pues vamos a crear 347 00:15:30,139 --> 00:15:32,879 en trayectoria 348 00:15:32,879 --> 00:15:38,740 de i un nuevo 349 00:15:38,740 --> 00:15:40,620 punto con el 350 00:15:40,620 --> 00:15:42,740 constructor que recibe los dos parámetros 351 00:15:42,740 --> 00:15:44,620 y le voy a dar dos puntos 352 00:15:44,620 --> 00:15:46,580 aleatorios como ya hicimos puntos 353 00:15:46,580 --> 00:15:48,019 aleatorios el otro día 354 00:15:48,019 --> 00:15:50,279 math.random 355 00:15:50,279 --> 00:15:52,980 me genera un aleatorio entre 0 y 1 356 00:15:52,980 --> 00:15:54,720 multiplico por 100 para que 357 00:15:54,720 --> 00:15:56,419 me genere un aleatorio entre 0 y 100 358 00:15:56,419 --> 00:15:58,600 y otro 359 00:15:58,600 --> 00:16:00,899 aleatorio entre 0 y 100 para este 360 00:16:00,899 --> 00:16:04,899 ala 361 00:16:04,899 --> 00:16:07,879 pues ya he creado una trayectoria 362 00:16:07,879 --> 00:16:08,980 aleatoria 363 00:16:08,980 --> 00:16:12,360 de numPuntos. 364 00:16:15,879 --> 00:16:16,639 ¿Vale? Luego 365 00:16:16,639 --> 00:16:19,179 la clase punto 366 00:16:19,179 --> 00:16:21,059 que está ahí, pero ¿cuántos puntos? Tengo el punto 367 00:16:21,059 --> 00:16:23,139 de no sé qué, el segundo punto, el tercer punto. 368 00:16:23,559 --> 00:16:24,860 La clase punto es 369 00:16:24,860 --> 00:16:27,440 una clase con dos propiedades 370 00:16:27,440 --> 00:16:29,059 y luego cuando haya 371 00:16:29,059 --> 00:16:31,120 un main que haga puntos, pues 372 00:16:31,120 --> 00:16:32,519 habrá tantos puntos como uno quiera. 373 00:16:33,159 --> 00:16:34,679 Entonces, en este main en particular 374 00:16:34,679 --> 00:16:36,679 la aplicación ha decidido 375 00:16:36,679 --> 00:16:39,200 que va a trabajar con trayectorias 376 00:16:39,200 --> 00:16:40,980 que van a ser 377 00:16:40,980 --> 00:16:42,120 Arrays de puntos 378 00:16:42,120 --> 00:16:44,720 Ha decidido eso, vale, pues entonces usa 379 00:16:44,720 --> 00:16:46,519 Un array de puntos, ya está 380 00:16:46,519 --> 00:16:48,840 Podríamos usar puntos sueltos 381 00:16:48,840 --> 00:16:50,659 Lo que fuera, pero esta aplicación en particular 382 00:16:50,659 --> 00:16:53,000 Usa un array de objetos punto 383 00:16:53,000 --> 00:16:53,980 Muy bien 384 00:16:53,980 --> 00:16:56,600 Pues nada, ¿de cuántos? De los que me digan 385 00:16:56,600 --> 00:16:58,320 Y ahora ya los voy rellenando 386 00:16:58,320 --> 00:17:00,799 Vale, pues hasta aquí 387 00:17:00,799 --> 00:17:02,399 Tenemos la trayectoria, ¿está claro? 388 00:17:04,019 --> 00:17:04,940 Vale, dime 389 00:17:04,940 --> 00:17:07,859 ¿Cómo? 390 00:17:08,740 --> 00:17:09,220 ¿Esto? 391 00:17:10,980 --> 00:17:12,839 vale, ya a partir de ahora 392 00:17:12,839 --> 00:17:14,339 aunque no entendemos todavía muy bien 393 00:17:14,339 --> 00:17:16,619 porque no conocemos métodos estáticos 394 00:17:16,619 --> 00:17:18,740 usad esto de aquí 395 00:17:18,740 --> 00:17:20,279 cada vez que queráis generar un número aleatorio 396 00:17:20,279 --> 00:17:21,000 entre 0 y 1 397 00:17:21,000 --> 00:17:24,740 decimal, entonces como entre 0 y 1 es muy pequeñito 398 00:17:24,740 --> 00:17:26,400 lo multiplicáis luego para extender 399 00:17:26,400 --> 00:17:28,099 el intervalo al tamaño que queráis 400 00:17:28,099 --> 00:17:30,700 es una forma cómoda de generar 401 00:17:30,700 --> 00:17:32,160 algo pseudo aleatorio 402 00:17:32,160 --> 00:17:34,759 que no aleatorio porque la aleatoriedad no existe en el mundo 403 00:17:34,759 --> 00:17:36,019 no existe 404 00:17:36,019 --> 00:17:38,680 ¿y por qué no existe? 405 00:17:38,680 --> 00:17:44,069 todo está condicionado por 406 00:17:44,069 --> 00:17:46,230 influencias externas 407 00:17:46,230 --> 00:17:47,630 con lo cual no hay aleatoriedad 408 00:17:47,630 --> 00:17:49,269 entonces si yo tiro la cara de una moneda 409 00:17:49,269 --> 00:17:51,779 ¿cuál es? 410 00:17:52,759 --> 00:17:55,559 no, porque me falta información, pero eso significa que la información no exista 411 00:17:55,559 --> 00:17:57,160 si tuviera toda la información 412 00:17:57,160 --> 00:17:59,039 de velocidad del aire, de la gravedad 413 00:17:59,039 --> 00:18:01,180 de en qué punto estamos de la trayectoria terrestre 414 00:18:01,180 --> 00:18:03,240 pero esa información no la tengo ni la sé procesar 415 00:18:03,240 --> 00:18:07,440 bueno, está claro, ¿no? 416 00:18:08,039 --> 00:18:08,400 vale 417 00:18:08,400 --> 00:18:10,519 el caso es que ahora 418 00:18:10,519 --> 00:18:14,579 a ver, el caso es que ahora 419 00:18:14,579 --> 00:18:16,200 lo que tiene que hacer mi aplicación 420 00:18:16,200 --> 00:18:17,799 es sumar 421 00:18:17,799 --> 00:18:20,619 ahora ya, mi array es este 422 00:18:20,619 --> 00:18:22,720 este es mi array, con estos puntitos 423 00:18:22,720 --> 00:18:25,079 ahora, lo que tiene que hacer mi aplicación 424 00:18:25,079 --> 00:18:26,880 ahora es hacer una suma acumulativa 425 00:18:26,880 --> 00:18:29,339 ¿de qué? de esta primera distancia 426 00:18:29,339 --> 00:18:30,839 más luego esta 427 00:18:30,839 --> 00:18:33,200 más luego esta, más luego esta, más luego esta 428 00:18:33,200 --> 00:18:35,299 luego tiene que hacer una suma acumulativa 429 00:18:35,299 --> 00:18:37,059 ¿de qué? de distancias 430 00:18:37,059 --> 00:18:38,259 entre dos puntos 431 00:18:38,259 --> 00:18:40,779 Vale, pues ahora nos queda la parte de 432 00:18:40,779 --> 00:18:43,640 Oye, que bien me vendría un método 433 00:18:43,640 --> 00:18:46,400 Que me calcule la distancia entre dos puntos 434 00:18:46,400 --> 00:18:48,299 ¿Dónde pongo ese método? 435 00:18:49,240 --> 00:18:51,400 Pues como ese método tiene que ver con puntos 436 00:18:51,400 --> 00:18:53,200 Es con lo que trabaja, con puntos 437 00:18:53,200 --> 00:18:55,559 Vamos a meter ese método en la clase punto 438 00:18:55,559 --> 00:18:56,259 ¿Vale? 439 00:18:56,799 --> 00:18:58,200 Bueno, vamos a meter este método 440 00:18:58,200 --> 00:18:59,819 Calcular distancia en la clase punto 441 00:18:59,819 --> 00:19:02,019 Nos vamos a la clase punto 442 00:19:02,019 --> 00:19:09,450 Vale 443 00:19:09,450 --> 00:19:11,609 La distancia que va a ser 444 00:19:11,609 --> 00:19:14,269 Entre dos puntos 445 00:19:14,869 --> 00:19:15,170 Siempre. 446 00:19:15,930 --> 00:19:16,869 ¿Entre qué dos puntos? 447 00:19:17,869 --> 00:19:22,230 Pues nosotros ya sabemos que a este método lo va a llamar un objeto punto. 448 00:19:22,829 --> 00:19:23,509 Ahí ya tenemos uno. 449 00:19:24,089 --> 00:19:26,089 Es decir, este método al estar en la clase punto, 450 00:19:26,089 --> 00:19:28,829 lo llamará un objeto punto en particular. 451 00:19:30,210 --> 00:19:34,710 Y trabajará este método con las propiedades del objeto punto que lo llama. 452 00:19:35,190 --> 00:19:36,130 Hasta ahí lo sabemos, ¿no? 453 00:19:36,130 --> 00:19:45,680 Entonces, las coordenadas del punto que llama al método 454 00:19:45,680 --> 00:19:53,700 Ya sabemos cuáles son 455 00:19:53,700 --> 00:19:56,859 Estas, estas x e y de aquí arriba 456 00:19:56,859 --> 00:20:02,269 Son estas de aquí 457 00:20:02,269 --> 00:20:04,930 Estas serán las coordenadas del punto que llame al método 458 00:20:04,930 --> 00:20:07,089 Que también las podemos llamar así 459 00:20:07,089 --> 00:20:08,349 Recordad el dis 460 00:20:08,349 --> 00:20:13,509 Que significa el objeto que llama al método 461 00:20:13,509 --> 00:20:15,109 Me da igual poner x e y 462 00:20:15,109 --> 00:20:17,410 que this.x this.y 463 00:20:17,410 --> 00:20:19,329 this.x 464 00:20:19,329 --> 00:20:20,369 lo pondré si hay 465 00:20:20,369 --> 00:20:23,009 ambigüedad porque hay alguna otra variable 466 00:20:23,009 --> 00:20:24,089 que se llame también x 467 00:20:24,089 --> 00:20:27,190 vale, pues entonces ya tenemos el primer punto 468 00:20:27,190 --> 00:20:28,650 el que llama al método 469 00:20:28,650 --> 00:20:30,049 cuyas propiedades son las de arriba 470 00:20:30,049 --> 00:20:32,670 es decir, si aquí 471 00:20:32,670 --> 00:20:34,890 a este método lo llamara 472 00:20:34,890 --> 00:20:35,650 por ejemplo 473 00:20:35,650 --> 00:20:38,730 trayectoria 474 00:20:38,730 --> 00:20:40,309 de 0 475 00:20:40,309 --> 00:20:42,329 punto distancia 476 00:20:42,329 --> 00:20:46,799 este método distancia 477 00:20:46,799 --> 00:20:49,500 cuando dice 478 00:20:49,500 --> 00:20:51,700 coordenadas x e y, estas de aquí 479 00:20:51,700 --> 00:20:53,599 x e y, ¿a cuáles estaría 480 00:20:53,599 --> 00:20:55,619 refiriendo? A las de este, que es el que llama 481 00:20:55,619 --> 00:20:57,759 al método, a las de ese se estaría refiriendo, vale 482 00:20:57,759 --> 00:20:59,579 pero es que la distancia 483 00:20:59,579 --> 00:21:01,700 es entre dos, vale 484 00:21:01,700 --> 00:21:03,720 pues el otro punto 485 00:21:03,720 --> 00:21:05,240 esto 486 00:21:05,240 --> 00:21:06,980 como va a devolver una distancia 487 00:21:06,980 --> 00:21:08,720 la distancia es en double 488 00:21:08,720 --> 00:21:10,720 ya le ponemos double 489 00:21:10,720 --> 00:21:13,819 vale, y el otro punto 490 00:21:13,819 --> 00:21:15,640 con el que hay que calcular la distancia porque se calcula 491 00:21:15,640 --> 00:21:16,759 entre dos, lo dice el enunciado 492 00:21:16,759 --> 00:21:22,019 Te dice, el otro punto, pásaselo como parámetro desde fuera, pásalo como parámetro. 493 00:21:23,039 --> 00:21:27,960 Luego este método necesita que le pasemos un segundo punto, 494 00:21:28,180 --> 00:21:32,480 pero esta vez que se lo pasemos como parámetro, para calcular la distancia 495 00:21:32,480 --> 00:21:37,200 entre el que llama el método, que será este o el que sea, 496 00:21:37,819 --> 00:21:42,019 y el que le pasamos aquí como parámetro, el punto que sea, otro punto cualquiera. 497 00:21:42,019 --> 00:21:52,470 Por ejemplo, si yo hago esta llamada, si hiciera esta, que no es la que tengo que hacer ahora, 498 00:21:53,250 --> 00:22:00,910 si hiciera esta, este método, la idea es que me calcule la distancia entre el que llama al método y el que paso como parámetro. 499 00:22:01,069 --> 00:22:02,210 Ahí están los dos puntos. 500 00:22:02,970 --> 00:22:05,549 El que lo llama y el que es pasado. 501 00:22:06,309 --> 00:22:08,089 Luego, este método, ¿cómo se declarará? 502 00:22:08,769 --> 00:22:15,089 Este método se declarará, aquí tengo que pasar un único parámetro, un único parámetro. 503 00:22:15,089 --> 00:22:17,509 y ese único parámetro 504 00:22:17,509 --> 00:22:18,329 ¿de qué tipo es? 505 00:22:19,069 --> 00:22:21,609 es int, si fuera int, pues le pasaría esto 506 00:22:21,609 --> 00:22:23,049 pero es que no es int 507 00:22:23,049 --> 00:22:24,549 lo que yo le quiero pasar es 508 00:22:24,549 --> 00:22:25,650 esto 509 00:22:25,650 --> 00:22:28,710 un objeto de tipo punto 510 00:22:28,710 --> 00:22:29,789 esto es lo que le quiero pasar 511 00:22:29,789 --> 00:22:32,630 pues ya tengo ahí los dos puntos 512 00:22:32,630 --> 00:22:35,230 el que llama al método y el que le paso como parámetro 513 00:22:35,230 --> 00:22:36,390 que tiene que ser de esta clase 514 00:22:36,390 --> 00:22:39,069 ¿no? ya estuvimos 515 00:22:39,069 --> 00:22:40,009 viendo el jueves 516 00:22:40,009 --> 00:22:43,269 cuando vimos esto de profesor 517 00:22:43,269 --> 00:22:44,849 que ahora ya es el momento 518 00:22:44,849 --> 00:22:46,069 en que sabemos hacer clases 519 00:22:46,069 --> 00:22:48,190 ya uno puede declarar todas las variables 520 00:22:48,190 --> 00:22:49,990 que necesite de ese tipo 521 00:22:49,990 --> 00:22:51,730 de esa clase que haya hecho 522 00:22:51,730 --> 00:22:54,369 aquí necesitábamos una propiedad 523 00:22:54,369 --> 00:22:55,869 que fuera de clase departamento 524 00:22:55,869 --> 00:22:58,869 porque el profesor tiene un departamento 525 00:22:58,869 --> 00:23:00,890 aquí es otro ejemplo 526 00:23:00,890 --> 00:23:02,609 aquí necesitamos 527 00:23:02,609 --> 00:23:04,109 pasar al método 528 00:23:04,109 --> 00:23:06,170 un objeto que sea de tipo punto 529 00:23:06,170 --> 00:23:08,109 pues le paso un parámetro 530 00:23:08,109 --> 00:23:10,289 que es una variable, pero es una variable objeto 531 00:23:10,289 --> 00:23:12,309 y esa variable ¿de qué tipo es? 532 00:23:12,329 --> 00:23:13,029 de esta, vale 533 00:23:13,029 --> 00:23:17,509 Entonces ahora tendremos aquí ya las otras coordenadas 534 00:23:17,509 --> 00:23:21,210 Las coordenadas del punto parámetro 535 00:23:21,210 --> 00:23:23,349 Pues cuáles serán 536 00:23:23,349 --> 00:23:26,390 Pues está claro, las coordenadas del punto parámetro 537 00:23:26,390 --> 00:23:28,430 ¿Cómo accedo yo a las coordenadas del punto parámetro? 538 00:23:28,569 --> 00:23:32,009 Pues punto X y punto Y 539 00:23:32,009 --> 00:23:34,329 ¿No? Punto es un objeto punto 540 00:23:34,329 --> 00:23:38,630 ¿Cómo accedo a las propiedades que tiene dentro? 541 00:23:38,630 --> 00:23:42,029 ¿Qué son estas? Pues con el operador punto 542 00:23:42,029 --> 00:23:44,950 pues entonces 543 00:23:44,950 --> 00:23:48,190 estas son las coordenadas 544 00:23:48,190 --> 00:23:50,269 del punto que llama el método 545 00:23:50,269 --> 00:23:52,490 y estas son las coordenadas del parámetro 546 00:23:52,490 --> 00:23:54,549 ahora lo único que tengo que hacer 547 00:23:54,549 --> 00:23:56,130 es aplicar la fórmula de la distancia 548 00:23:56,130 --> 00:23:58,650 la fórmula de la distancia te dice aquí que es la raíz cuadrada 549 00:23:58,650 --> 00:24:00,269 de esto 550 00:24:00,269 --> 00:24:02,349 pues vamos a aplicar esa fórmula 551 00:24:02,349 --> 00:24:03,150 y se acabó 552 00:24:03,150 --> 00:24:04,849 entonces 553 00:24:04,849 --> 00:24:07,769 ya lo puedo hasta devolver directamente 554 00:24:07,769 --> 00:24:09,210 return 555 00:24:09,210 --> 00:24:11,390 la raíz cuadrada 556 00:24:11,390 --> 00:24:22,349 de la raíz cuadrada de la diferencia de las coordenadas x al cuadrado, 557 00:24:23,589 --> 00:24:28,049 x menos punto x al cuadrado, 558 00:24:28,049 --> 00:24:31,410 que la forma más cómoda de elevarlo al cuadrado es multiplicarlo por sí mismo, 559 00:24:37,170 --> 00:24:41,980 para no anidar muchos más, 560 00:24:43,420 --> 00:24:46,019 esto más lo otro que me dice la fórmula, 561 00:24:46,019 --> 00:24:46,640 más 562 00:24:46,640 --> 00:24:50,039 la diferencia de las coordenadas 563 00:24:50,039 --> 00:24:50,859 y al cuadrado 564 00:24:50,859 --> 00:24:53,440 la bajo aquí abajo 565 00:24:53,440 --> 00:24:54,220 más 566 00:24:54,220 --> 00:25:01,859 y esto es y 567 00:25:01,859 --> 00:25:07,369 y 568 00:25:07,369 --> 00:25:09,269 y 569 00:25:09,269 --> 00:25:11,650 ya tengo el método hecho 570 00:25:11,650 --> 00:25:14,630 vale, aquí lo importante es entender 571 00:25:14,630 --> 00:25:16,890 que desde el momento en que uno tiene una clase declarada 572 00:25:16,890 --> 00:25:18,549 ya puede declarar 573 00:25:18,549 --> 00:25:20,910 todos los objetos que le den la gana de esa clase 574 00:25:20,910 --> 00:25:22,269 donde los necesite 575 00:25:22,269 --> 00:25:24,829 aquí lo hemos necesitado como parámetro 576 00:25:24,829 --> 00:25:28,390 aquí lo habíamos necesitado como propiedad 577 00:25:28,390 --> 00:25:29,609 del objeto profesor 578 00:25:29,609 --> 00:25:32,109 ¿vale? aquí en el main 579 00:25:32,109 --> 00:25:33,730 pues lo hemos necesitado como array 580 00:25:33,730 --> 00:25:36,029 es un tipo más, lo que pasa es que es un tipo objeto 581 00:25:36,029 --> 00:25:37,009 con propiedades dentro 582 00:25:37,009 --> 00:25:39,809 vale, pues distancia ya está 583 00:25:39,809 --> 00:25:42,140 ¿vale? 584 00:25:43,200 --> 00:25:45,279 entonces, había más métodos de aquí que 585 00:25:45,279 --> 00:25:47,000 había que hacer 586 00:25:47,000 --> 00:25:49,579 vehículo.con 587 00:25:49,579 --> 00:25:50,400 el método distancia 588 00:25:50,400 --> 00:25:52,740 y ahora 589 00:25:52,740 --> 00:25:55,099 ¿qué tiene que hacer esto? 590 00:25:56,140 --> 00:25:58,559 Ahora hay que hacer, vale, en punto ya tenemos 591 00:25:58,559 --> 00:26:00,000 lo que había que hacer, un método de distancia. 592 00:26:00,140 --> 00:26:01,380 Ahora, en la clase vehículo, 593 00:26:02,180 --> 00:26:04,859 un método que reciba como parámetro una trayectoria 594 00:26:04,859 --> 00:26:07,240 representada por la raíz de objetos 595 00:26:07,240 --> 00:26:09,420 y muestre lo que ha gastado ese vehículo 596 00:26:09,420 --> 00:26:10,259 en hacer el recorrido. 597 00:26:11,000 --> 00:26:12,980 Pues venga, estupendo, 598 00:26:13,059 --> 00:26:14,359 pero cuando tengamos ese método, 599 00:26:14,980 --> 00:26:17,259 le pasaremos esa trayectoria que acabamos de hacer 600 00:26:17,259 --> 00:26:18,599 y listo. 601 00:26:19,880 --> 00:26:22,339 Pues ese método estará aquí. 602 00:26:23,339 --> 00:26:25,599 Ese método que me va a devolver a un gasto, 603 00:26:25,599 --> 00:26:33,740 pues da a ver, gasto total a ese método que hay que pasarle una trayectoria, 604 00:26:33,839 --> 00:26:42,019 es decir, un conjunto de puntos, pues a este método le vamos a pasar un array de objetos punto. 605 00:26:43,940 --> 00:26:51,940 Y ahora, este método ya, tendremos que hacer aquí los cálculos para que sume las distancias de los puntos 2 a 2 y lo devuelva. 606 00:26:52,279 --> 00:26:55,519 Y cuando tengamos este método, ya mi main se queda comodísimo. 607 00:26:55,599 --> 00:26:58,160 porque ya en mi main ya tengo una trayectoria concreto 608 00:26:58,160 --> 00:27:00,319 y ahora ya puedo mostrar aquí 609 00:27:00,319 --> 00:27:04,960 el gasto es 610 00:27:04,960 --> 00:27:11,359 y llamo al método para este vehículo 611 00:27:11,359 --> 00:27:13,240 mi vehículo como se llamaba 612 00:27:13,240 --> 00:27:14,059 mi coche 613 00:27:14,059 --> 00:27:19,089 pues mi coche punto gasto total 614 00:27:19,089 --> 00:27:20,990 al que le paso la trayectoria 615 00:27:20,990 --> 00:27:22,589 y mi main ya está 616 00:27:22,589 --> 00:27:26,819 mi coche tiene un método gasto total 617 00:27:26,819 --> 00:27:28,140 que tengo que hacer, está sin hacer 618 00:27:28,140 --> 00:27:30,839 y ese método gasto total 619 00:27:30,839 --> 00:27:33,440 sé que si le paso una raíz de puntos 620 00:27:33,440 --> 00:27:36,059 pues me dice 621 00:27:36,059 --> 00:27:37,599 lo que gasta, pues ya está 622 00:27:37,599 --> 00:27:39,619 mi main yo le paso el array de puntos 623 00:27:39,619 --> 00:27:41,319 ya concretos que me ha metido 624 00:27:41,319 --> 00:27:43,160 el cliente en ese momento 625 00:27:43,160 --> 00:27:45,400 me ha metido un array concreto, este 626 00:27:45,400 --> 00:27:47,220 que lo acabo de construir, me ha metido ese 627 00:27:47,220 --> 00:27:49,319 se lo paso al método 628 00:27:49,319 --> 00:27:51,599 y ya 629 00:27:51,599 --> 00:27:53,619 el método me calculará eso 630 00:27:53,619 --> 00:27:55,420 y lo muestro, deseo continuar 631 00:27:55,420 --> 00:27:56,119 pues lo que sea 632 00:27:56,119 --> 00:27:59,279 ¿qué nos falta en la aplicación? hombre el método 633 00:27:59,279 --> 00:28:01,039 que todavía no lo hemos hecho, que nos ha quedado vacío 634 00:28:01,039 --> 00:28:03,079 nos falta este método 635 00:28:03,079 --> 00:28:05,319 cuando lo tengamos ya el main ya está 636 00:28:05,319 --> 00:28:06,779 vale 637 00:28:06,779 --> 00:28:09,019 y sumar todas las trayectorias 638 00:28:09,019 --> 00:28:11,160 dentro del método 639 00:28:11,160 --> 00:28:13,619 claro, el método yo le paso 640 00:28:13,619 --> 00:28:15,519 la trayectoria entera, entonces el método me tendrá que 641 00:28:15,519 --> 00:28:16,599 hacer la suma dentro todo 642 00:28:16,599 --> 00:28:19,200 vale, entonces ahora ya hay que programar este método 643 00:28:19,200 --> 00:28:20,140 que es lo único que nos falta 644 00:28:20,140 --> 00:28:23,500 pero eso es como en punto de si le tenía el método 645 00:28:23,500 --> 00:28:24,059 de distancia 646 00:28:24,059 --> 00:28:27,619 no, porque esa es la distancia entre dos 647 00:28:27,619 --> 00:28:28,940 puntos, esa es la distancia total 648 00:28:28,940 --> 00:28:31,599 claro, es que lo vamos a hacer 649 00:28:31,599 --> 00:28:35,099 Claro, es que lo vamos a usar porque si no se nos complica la vida 650 00:28:35,099 --> 00:28:35,740 Dime 651 00:28:35,740 --> 00:28:37,039 Sí 652 00:28:37,039 --> 00:28:42,480 Vale, pues ahora vamos a hacer este método 653 00:28:42,480 --> 00:28:45,400 Vale, entonces 654 00:28:45,400 --> 00:28:47,420 Este método, ¿qué tiene que hacer? 655 00:28:47,500 --> 00:28:49,720 Vamos a estudiarlo, vamos a analizarlo a ver qué tiene que hacer 656 00:28:49,720 --> 00:28:51,440 Va a recibir todo este array 657 00:28:51,440 --> 00:28:53,059 Este, este, este y este 658 00:28:53,059 --> 00:28:55,240 Pues va a tener que hacer un sumatorio 659 00:28:55,240 --> 00:28:56,180 Una suma 660 00:28:56,180 --> 00:28:59,480 De esta distancia más esta más esta 661 00:28:59,480 --> 00:29:01,460 Vale, pues menos mal que tenemos 662 00:29:01,460 --> 00:29:02,759 Un método distancia 663 00:29:02,759 --> 00:29:04,240 En la clase punto 664 00:29:04,240 --> 00:29:06,599 que si lo llama 665 00:29:06,599 --> 00:29:08,220 un objeto punto y le pasas otro 666 00:29:08,220 --> 00:29:09,779 te devuelve la distancia 667 00:29:09,779 --> 00:29:12,880 hombre, vamos a recorrer el array de trayectorias 668 00:29:12,880 --> 00:29:13,920 vamos a recorrerlos 669 00:29:13,920 --> 00:29:15,500 hasta el penúltimo 670 00:29:15,500 --> 00:29:18,480 y voy a 671 00:29:18,480 --> 00:29:20,220 para cada punto calcular la distancia 672 00:29:20,220 --> 00:29:21,180 entre ese y su siguiente 673 00:29:21,180 --> 00:29:24,640 y ya está, y vamos incorporando eso a la suma 674 00:29:24,640 --> 00:29:26,420 entonces lo que está claro es que este 675 00:29:26,420 --> 00:29:28,680 método va a ser una suma acumulativa 676 00:29:28,680 --> 00:29:30,460 de cosas, eso está claro 677 00:29:30,460 --> 00:29:31,740 que va a ser una suma acumulativa 678 00:29:31,740 --> 00:29:33,640 hasta ahí hemos llegado 679 00:29:33,640 --> 00:29:36,200 entonces esto va a ser así 680 00:29:36,200 --> 00:29:38,279 y ahora va a ser un bucle 681 00:29:38,279 --> 00:29:40,859 este bucle que va a ir recorriendo 682 00:29:40,859 --> 00:29:41,640 dígame 683 00:29:41,640 --> 00:29:45,180 para no poner 684 00:29:45,180 --> 00:29:47,160 el mismo nombre 685 00:29:47,160 --> 00:29:49,180 a propósito para que veáis 686 00:29:49,180 --> 00:29:51,000 claro que da igual el nombre que yo le pongo aquí 687 00:29:51,000 --> 00:29:52,960 al parámetro, que no tiene nada que ver 688 00:29:52,960 --> 00:29:55,339 con el que tú le pasas aquí, luego tú le pasas el que quieras 689 00:29:55,339 --> 00:29:57,220 lo he hecho a propósito 690 00:29:57,220 --> 00:29:58,920 para que no creáis 691 00:29:58,920 --> 00:30:00,599 que se tiene que llamar igual, no hay ninguna razón 692 00:30:00,599 --> 00:30:01,519 para que tenga que llamar igual 693 00:30:01,519 --> 00:30:02,519 vale 694 00:30:02,519 --> 00:30:05,799 yo aquí al parámetro este lo llamo como me da la gana 695 00:30:05,799 --> 00:30:07,740 y luego ya en el main le paso ya 696 00:30:07,740 --> 00:30:09,980 el array que yo quiera con el nombre que tenga 697 00:30:09,980 --> 00:30:11,140 vale 698 00:30:11,140 --> 00:30:13,859 pues que sumando vamos a ir acumulando 699 00:30:13,859 --> 00:30:14,680 la suma 700 00:30:14,680 --> 00:30:17,579 pues vamos a ir a recorrer el array, el array este 701 00:30:17,579 --> 00:30:18,720 que me han pasado como parámetro 702 00:30:18,720 --> 00:30:20,940 vamos a recorrerlo 703 00:30:20,940 --> 00:30:25,430 aquí se podría usar un for each 704 00:30:25,430 --> 00:30:27,670 pero no se adapta bien 705 00:30:27,670 --> 00:30:29,950 porque hemos dicho que este recorrido 706 00:30:29,950 --> 00:30:31,309 lo vamos a hacer hasta el penúltimo 707 00:30:31,309 --> 00:30:34,190 porque en cada parada vamos a sumar 708 00:30:34,190 --> 00:30:36,069 la distancia entre este y su siguiente 709 00:30:36,069 --> 00:30:38,410 luego nos vamos a parar en el penúltimo 710 00:30:38,410 --> 00:30:40,430 el for each lo recorre todos 711 00:30:40,430 --> 00:30:42,589 obligatoriamente, con lo cual nos interesa 712 00:30:42,589 --> 00:30:44,529 mejor el for normal para pararnos en el 713 00:30:44,529 --> 00:30:45,009 penúltimo 714 00:30:45,009 --> 00:30:48,130 pues venga, desde igual a 0 715 00:30:48,130 --> 00:30:49,650 mientras si sea menor que 716 00:30:49,650 --> 00:30:52,470 track.length 717 00:30:52,470 --> 00:30:54,430 menos 1, porque nos vamos a parar 718 00:30:54,430 --> 00:30:56,430 en el penúltimo, nos vamos a parar 719 00:30:56,430 --> 00:30:58,069 en este, para sumar 720 00:30:58,069 --> 00:31:00,829 que la última distancia que sumamos sea entre esta y su siguiente 721 00:31:00,829 --> 00:31:04,740 Incrementando Y 722 00:31:04,740 --> 00:31:12,950 Vale, pues aquí es una suma acumulativa 723 00:31:12,950 --> 00:31:15,049 Con lo cual esto va a ser algo así 724 00:31:15,049 --> 00:31:16,829 Suma más igual 725 00:31:16,829 --> 00:31:19,940 Y aquí 726 00:31:19,940 --> 00:31:22,220 Esto una vez que lo tengamos 727 00:31:22,220 --> 00:31:23,740 Pues ya devolveremos suma 728 00:31:23,740 --> 00:31:26,859 Y ahora lo único que nos falta es 729 00:31:26,859 --> 00:31:28,319 ¿Y qué le vamos sumando? 730 00:31:28,539 --> 00:31:30,319 ¿Qué le vamos sumando a esta suma acumulativa? 731 00:31:30,980 --> 00:31:32,500 Pues cada uno de estos segmentos 732 00:31:32,500 --> 00:31:34,500 Para cada posición Y 733 00:31:34,500 --> 00:31:36,200 Hay que sumar la distancia 734 00:31:36,200 --> 00:31:38,380 Entre el punto Y y el Y más 1 735 00:31:38,380 --> 00:31:39,900 eso es lo que hay que sumar 736 00:31:39,900 --> 00:31:42,940 para cada posición y la distancia entre i y el i más 1 737 00:31:42,940 --> 00:31:44,940 pues magnífico, porque tenemos un método 738 00:31:44,940 --> 00:31:46,619 distancia en la clase punto 739 00:31:46,619 --> 00:31:48,900 tenemos un método distancia 740 00:31:48,900 --> 00:31:49,740 en la clase punto 741 00:31:49,740 --> 00:31:53,059 que si lo llama un punto y tú le das 742 00:31:53,059 --> 00:31:54,900 otro, te calcula la distancia 743 00:31:54,900 --> 00:31:56,960 entre ambos, pues estupendo 744 00:31:56,960 --> 00:31:58,579 vamos a 745 00:31:58,579 --> 00:32:02,539 llamarle al método distancia 746 00:32:02,539 --> 00:32:03,559 para el punto i 747 00:32:03,559 --> 00:32:05,640 pasándole 748 00:32:05,640 --> 00:32:07,200 tras de i, perdón 749 00:32:07,200 --> 00:32:13,740 pasándole su siguiente 750 00:32:13,740 --> 00:32:19,890 y se acabó, ¿ya está hecho? 751 00:32:21,130 --> 00:32:22,170 pero, pero, pero 752 00:32:22,170 --> 00:32:24,750 pero, no muevo nada 753 00:32:24,750 --> 00:32:32,900 pero se ha añadido una línea 754 00:32:32,900 --> 00:32:51,970 vale, entonces 755 00:32:51,970 --> 00:32:54,130 gracias a que tenemos 756 00:32:54,130 --> 00:32:56,170 el método distancia en la clase punto 757 00:32:56,170 --> 00:32:58,170 gracias a que lo tenemos 758 00:32:58,170 --> 00:33:01,849 cada vez que tenga yo 759 00:33:01,849 --> 00:33:03,589 dos puntos puedo calcular la distancia 760 00:33:03,589 --> 00:33:05,650 entre ellos. En este caso 761 00:33:05,650 --> 00:33:07,690 nos interesa la distancia entre el i y el 762 00:33:07,690 --> 00:33:09,650 iésimo y el siguiente. Pues ya 763 00:33:09,650 --> 00:33:11,269 está, magnífico, gracias a este método. 764 00:33:14,039 --> 00:33:15,380 Con lo cual, ahora ya 765 00:33:15,380 --> 00:33:17,039 el main ya está. 766 00:33:17,640 --> 00:33:19,579 Llama gasto total para la trayectoria 767 00:33:19,579 --> 00:33:21,380 que yo le pase y me lo 768 00:33:21,380 --> 00:33:24,859 devuelve. Vamos a ejecutar 769 00:33:24,859 --> 00:33:26,299 a ver si tenemos algún error. 770 00:33:27,400 --> 00:33:28,460 Gasta 100. 771 00:33:29,319 --> 00:33:30,700 Entonces, ¿cuántos puntos tiene? 772 00:33:30,700 --> 00:33:31,819 Tenemos una trayectoria de 7. 773 00:33:32,640 --> 00:33:34,900 Ups. Ah, este es el scan 774 00:33:34,920 --> 00:33:37,140 No, pero esto es porque no he puesto un scan 775 00:33:37,140 --> 00:33:38,400 Next line este 776 00:33:38,400 --> 00:33:41,119 O sea, los next line estos 777 00:33:41,119 --> 00:33:42,160 O algo así 778 00:33:42,160 --> 00:33:44,980 Esto es porque 779 00:33:44,980 --> 00:33:47,359 No he revisado 780 00:33:47,359 --> 00:33:49,460 Los next line estos 781 00:33:49,460 --> 00:33:50,859 Entonces, main, ¿dónde está? Aquí 782 00:33:50,859 --> 00:33:53,359 Después de leer este número 783 00:33:53,359 --> 00:33:55,299 Se ha quedado 784 00:33:55,299 --> 00:33:57,039 Y aquí el next line ya se ha quedado 785 00:33:57,039 --> 00:33:58,000 Con el salto de línea 786 00:33:58,000 --> 00:33:59,680 Luego aquí me falta 787 00:33:59,680 --> 00:34:02,279 Después de este punto 788 00:34:02,279 --> 00:34:04,660 Un scan 789 00:34:04,660 --> 00:34:06,500 Next line 790 00:34:06,500 --> 00:34:10,730 Para quitar el salto de línea 791 00:34:10,730 --> 00:34:19,250 Vale, pues gasta 100 792 00:34:19,250 --> 00:34:20,769 La trayectoria es aleatoria 793 00:34:20,769 --> 00:34:22,369 Una trayectoria de 7, aleatoria 794 00:34:22,369 --> 00:34:24,570 Pues en esta, si desea continuar 795 00:34:24,570 --> 00:34:26,090 Vamos a darle una más cortita 796 00:34:26,090 --> 00:34:27,449 Venga, 3 puntos 797 00:34:27,449 --> 00:34:29,250 Pues gasta un poco menos 798 00:34:29,250 --> 00:34:33,110 Le vamos a dar una trayectoria 799 00:34:33,110 --> 00:34:34,510 Ahora de 100 puntos 800 00:34:34,510 --> 00:34:36,750 A ver cuánto gasta, pues un huevo 801 00:34:36,750 --> 00:34:37,829 Vale 802 00:34:37,829 --> 00:34:39,909 Ala 803 00:34:39,909 --> 00:34:42,590 Bueno 804 00:34:42,590 --> 00:34:44,250 Funciona, está bien hecho 805 00:34:44,250 --> 00:34:44,929 Vale 806 00:34:44,929 --> 00:34:48,090 ¿Dudas? 807 00:34:49,650 --> 00:34:51,210 No, todo no puede ser 808 00:34:51,210 --> 00:34:54,369 No te funciona 809 00:34:54,369 --> 00:34:57,429 Pero después de funcionarme 810 00:34:57,429 --> 00:34:58,309 Me voy a ir