1 00:00:00,000 --> 00:00:10,000 Vamos a calentar un poco con este ejercicio a ver si tenemos claro todas las cosas. 2 00:00:10,000 --> 00:00:19,000 Esto estaba en ejercicios, clases, objetos 1, ejercicio 5. 3 00:00:19,000 --> 00:00:24,000 Luego ya subo este proyecto en el que tengo las resoluciones que hemos hecho aquí en clase. 4 00:00:24,000 --> 00:00:29,000 Luego ya la dejo subida para que estén todos tal y como los hemos resuelto en clase. 5 00:00:29,000 --> 00:00:36,000 Que vosotros podéis haberlo hecho de otra manera a lo mejor. 6 00:00:36,000 --> 00:00:47,000 Los estoy separando en paquetes distintos, cada paquete un ejercicio. 7 00:00:47,000 --> 00:01:12,000 Ahora ya que entendemos exactamente que son los paquetes y las implicaciones que tienen que usarlos. 8 00:01:12,000 --> 00:01:18,000 Ya los usaremos a demanda según necesitemos nos venga bien organizar nuestras aplicaciones con ellos o no. 9 00:01:18,000 --> 00:01:23,000 Esta aplicación por ejemplo en la que yo he decidido meter todos los ejercicios. 10 00:01:23,000 --> 00:01:29,000 Pues aquí viene estupendo meter las clases asociadas a cada ejercicio en un paquete diferente. 11 00:01:29,000 --> 00:01:34,000 Entonces los paquetes se incorporan cuando dentro de una misma aplicación tengo muchas clases 12 00:01:34,000 --> 00:01:39,000 y a efectos organizativos me viene muy bien hacer una agrupación. 13 00:01:39,000 --> 00:01:45,000 Pues aquí me viene fenomenal, esta aplicación mía tiene varios ejercicios, pues estupendo. 14 00:01:45,000 --> 00:01:50,000 Como cada ejercicio tiene varias clases, pues cada uno lo agrupo en un paquete diferente. 15 00:01:50,000 --> 00:01:56,000 Y ya sabemos todas las implicaciones que tiene separar las clases por paquetes. 16 00:01:56,000 --> 00:02:05,000 La implicación fundamental es si desde clases de un paquete quiero usar yo, instanciar clases de otro. 17 00:02:06,000 --> 00:02:11,000 Entonces en ese caso ya sabemos que hay que incluir los modificadores de acceso, 18 00:02:11,000 --> 00:02:16,000 los import si queremos hacer la trampita de usar el nombre corto de las clases. 19 00:02:16,000 --> 00:02:23,000 Bueno ya todos esos matices ya los conocemos del otro día y tenemos que intentar no olvidarlos. 20 00:02:23,000 --> 00:02:28,000 Vale pues entonces hacemos ahora un paquetillo para el ejercicio 5 que era lo que estábamos, 21 00:02:28,000 --> 00:02:34,000 que ya está hecho aquí y hacemos este ejercicio, calentamos y luego continuamos con otra aplicación. 22 00:02:36,000 --> 00:02:42,000 Bueno pues esta aplicación como todas va a necesitar varias clases. 23 00:02:42,000 --> 00:02:49,000 De nuevo repito por enésima vez, en una situación real a ti te plantea unas necesidades 24 00:02:49,000 --> 00:02:56,000 y con esas necesidades tu decides que clases pueden representar esa situación 25 00:02:56,000 --> 00:03:00,000 y ya a partir de ahí programas, es la parte de análisis y diseño. 26 00:03:00,000 --> 00:03:05,000 Nuestros ejercicios ya directamente parten de que te dicen oye hazme estas clases, 27 00:03:05,000 --> 00:03:09,000 estamos obviando esa fase de análisis y diseño, que no la obviéis porque 28 00:03:09,000 --> 00:03:12,000 un proceso de desarrollo completo obviamente está ahí. 29 00:03:12,000 --> 00:03:16,000 En nuestro caso es otro caso más en el cual nos dicen que clases hay que hacer. 30 00:03:16,000 --> 00:03:24,000 Pues vamos a necesitar una clase vehículo, porque nuestra aplicación gestiona cosas relacionadas con vehículos. 31 00:03:24,000 --> 00:03:28,000 En este caso como esta aplicación lo que gestiona es gasto, consumo, 32 00:03:28,000 --> 00:03:35,000 pues la única propiedad que interesa del vehículo es lo que consume por kilómetro. 33 00:03:35,000 --> 00:03:40,000 Si fuera una aplicación que va a gestionar otras cosas de los vehículos, pues sus marcas, 34 00:03:40,000 --> 00:03:44,000 sus dueños pues entonces tendría propiedades relacionadas con eso que va a gestionar. 35 00:03:44,000 --> 00:03:51,000 En este caso como esta aplicación sirve solo para gestionar el consumo que han tenido los vehículos, 36 00:03:51,000 --> 00:03:57,000 que se instancien, pues esta es la única propiedad que el que diseñó esto decidió que le interesaba. 37 00:03:57,000 --> 00:04:02,000 ¿Vale? Pues esta clase tendremos que hacerla. 38 00:04:02,000 --> 00:04:04,000 Entonces, sigamos por partes. 39 00:04:04,000 --> 00:04:08,000 Bueno, vale, pues como esta clase en principio es independiente de cualquier otra, 40 00:04:08,000 --> 00:04:12,000 pues una clase vehículo con consumo por kilómetro. 41 00:04:12,000 --> 00:04:18,000 Pues yo la puedo hacer ya directamente porque es independiente de cualquier otra. 42 00:04:19,000 --> 00:04:24,000 Pues venga, me hago mi clase vehículo. 43 00:04:26,000 --> 00:04:29,000 Recordad que el entorno de desarrollo me ofrece siempre el public. 44 00:04:29,000 --> 00:04:33,000 Yo antes lo quitaba porque no me gustaba tener algo ahí que no sabíamos lo que significaba. 45 00:04:33,000 --> 00:04:35,000 Ahora ya sí sabemos lo que significa. 46 00:04:35,000 --> 00:04:37,000 Entonces ahora decido, ¿me molesta que esté el public? 47 00:04:37,000 --> 00:04:40,000 Pues nada, no me molesta que esté el public. 48 00:04:40,000 --> 00:04:42,000 ¿Vale? Pues lo dejamos. 49 00:04:43,000 --> 00:04:45,000 Propiedades de vehículo. 50 00:04:45,000 --> 00:04:52,000 Me han dicho lo que consume por kilómetro realizado, ¿no? 51 00:04:52,000 --> 00:04:55,000 El gasto de combustible por kilómetro realizado. 52 00:04:55,000 --> 00:04:57,000 El gasto de combustible. 53 00:04:57,000 --> 00:05:00,000 Aquí la decisión sería, ¿lo hago en DAVE, lo hago en IND? 54 00:05:00,000 --> 00:05:02,000 Venga, vamos a hacerlo en DAVE. 55 00:05:08,000 --> 00:05:10,000 ¿Vale? 56 00:05:10,000 --> 00:05:15,000 Por cierto, ¿ha venido alguien a arreglar las mesas, los cables pelados esos de atrás? 57 00:05:15,000 --> 00:05:17,000 Sí, aquí hay otro. 58 00:05:17,000 --> 00:05:21,000 Sí vinieron, ¿no? Es que puse el aviso antes de Navidad y no sabía... 59 00:05:21,000 --> 00:05:24,000 O sea, ¿esa mesa ya no tiene el cable pelado? 60 00:05:24,000 --> 00:05:25,000 Aquí también hay. 61 00:05:25,000 --> 00:05:27,000 ¿Y ahí hay otro? 62 00:05:27,000 --> 00:05:29,000 ¿Os los coméis? 63 00:05:31,000 --> 00:05:33,000 ¿Y acordaros radiadores? 64 00:05:33,000 --> 00:05:34,000 No, eso no. 65 00:05:34,000 --> 00:05:36,000 ¿Sigue frío? 66 00:05:37,000 --> 00:05:42,000 Pues habrá que volverlo a decir o igual es que van con todas las frases hasta que lleguen aquí. 67 00:05:47,000 --> 00:05:49,000 Vale, pues entonces. 68 00:05:49,000 --> 00:05:51,000 Nuestra única propiedad es esta. 69 00:05:53,000 --> 00:05:55,000 Nuestro margen de decisión es el tipo de dato. 70 00:05:55,000 --> 00:06:03,000 En principio, bueno, el gasto por kilómetro, pues 3,5 litros, 8,9 litros, mejor un DAVE. 71 00:06:03,000 --> 00:06:05,000 Vale, pues un DAVE. 72 00:06:05,000 --> 00:06:09,000 Vale, ahora ya tenemos más decisiones que tomar que antes. 73 00:06:09,000 --> 00:06:14,000 Vale, esta propiedad, aparte del tipo de dato, que esto ya lo hemos decidido, 74 00:06:14,000 --> 00:06:16,000 ahora ya tenemos otra decisión más que tomar. 75 00:06:16,000 --> 00:06:19,000 ¿Qué modificador de acceso le pongo? 76 00:06:19,000 --> 00:06:21,000 ¿Le pongo que sea privada? 77 00:06:21,000 --> 00:06:23,000 ¿No le pongo nada? 78 00:06:23,000 --> 00:06:25,000 ¿O le pongo public? 79 00:06:25,000 --> 00:06:27,000 Que son las tres opciones. 80 00:06:27,000 --> 00:06:30,000 Porque la opción protected, que es la cuarta que mencionamos, 81 00:06:30,000 --> 00:06:35,000 la dejamos aparcada porque esa tiene que ver con si hay clases herederas. 82 00:06:35,000 --> 00:06:38,000 Aquí no hay nada heredero todavía, pero no sabemos. 83 00:06:38,000 --> 00:06:41,000 Bueno, pues ya saben lo que significa cada cosa. 84 00:06:41,000 --> 00:06:49,000 Si yo no pongo nada, significa que a esta propiedad pueden acceder clases del mismo paquete. 85 00:06:49,000 --> 00:06:56,000 Si pongo public, significa que a la propiedad gasto por kilómetro pueden acceder clases 86 00:06:56,000 --> 00:06:59,000 de cualquier otro paquete de la aplicación. 87 00:07:00,000 --> 00:07:06,000 Si pongo esto, significa que a esta propiedad solo se puede acceder desde aquí dentro. 88 00:07:07,000 --> 00:07:09,000 ¿Qué decisión solemos tomar? 89 00:07:09,000 --> 00:07:11,000 Ya lo mencionamos el otro día. 90 00:07:11,000 --> 00:07:16,000 Nosotros, efectivamente, las propiedades del vehículo, cuando el vehículo esté instanciado, 91 00:07:16,000 --> 00:07:18,000 necesitaremos acceder a ellas. 92 00:07:18,000 --> 00:07:23,000 Si no podemos acceder al gasto que tiene un vehículo, ¿de qué nos sirve ese vehículo? 93 00:07:23,000 --> 00:07:26,000 Si esa aplicación va a gestionar precisamente los gastos de los vehículos. 94 00:07:26,000 --> 00:07:30,000 Si yo no puedo acceder a ella, ¿de qué me sirve? 95 00:07:30,000 --> 00:07:35,000 Pensaría entonces uno que poner ahí un privado no tiene ningún sentido. 96 00:07:35,000 --> 00:07:42,000 Claro, es que tenemos que acceder a la propiedad, pero la forma de hacerlo no es directamente así. 97 00:07:42,000 --> 00:07:45,000 Si yo tengo por aquí otra clase, imaginaos que estoy aquí en otro paquete. 98 00:07:45,000 --> 00:07:49,000 Estoy aquí en mi main y quiero instanciar un vehículo. 99 00:07:49,000 --> 00:07:52,000 Voy a guardar esto. 100 00:07:53,000 --> 00:07:55,000 Yo quiero instanciar aquí un vehículo. 101 00:07:55,000 --> 00:07:58,000 Estoy fuera del paquete, estoy en otro lado. 102 00:07:58,000 --> 00:08:01,000 Me voy a hacer un vehículo por aquí. 103 00:08:03,000 --> 00:08:07,000 Vale, he puesto el nombre mal porque la clase no se llama vehículo. 104 00:08:07,000 --> 00:08:09,000 Claro que no, ¿la clase cómo se llama? 105 00:08:09,000 --> 00:08:11,000 Esta clase en realidad. 106 00:08:12,000 --> 00:08:14,000 Ejercicio 5. Vehículo. 107 00:08:14,000 --> 00:08:17,000 He puesto el nombre mal, obviamente, por eso el compilador me dice 108 00:08:17,000 --> 00:08:19,000 ¿Qué me estás poniendo? 109 00:08:19,000 --> 00:08:22,000 Ah, claro, es que no hay ninguna clase que se llame así. 110 00:08:22,000 --> 00:08:25,000 Hay una clase que se llama así. 111 00:08:25,000 --> 00:08:27,000 Esto sí. 112 00:08:27,000 --> 00:08:30,000 Así sí hay una clase que se llama. 113 00:08:30,000 --> 00:08:32,000 Así sí. 114 00:08:32,000 --> 00:08:35,000 Pero digo, ¡buf! ¡Menudo rollo! 115 00:08:35,000 --> 00:08:39,000 Tener que poner ejercicio de 5 vehículos, ¡qué feo queda todo el rato! 116 00:08:39,000 --> 00:08:41,000 Venga, vamos a poner un import. 117 00:08:41,000 --> 00:08:43,000 Porque somos unos jodidos vagos. 118 00:08:43,000 --> 00:08:46,000 Pues venga, ponemos un import. 119 00:08:48,000 --> 00:08:55,000 ¡Hala! Como he puesto un import, ya le puedo quitar esto. 120 00:08:58,000 --> 00:09:04,000 Genero confusión en el caso de que haya otra clase vehículo dentro de este paquete. 121 00:09:04,000 --> 00:09:10,000 Porque si hay otra, entonces vehículo es la del paquete, no esta que estoy importando. 122 00:09:10,000 --> 00:09:14,000 Pero como no es el caso, no hay ninguna otra clase vehículo, no hay problema. 123 00:09:14,000 --> 00:09:19,000 Bueno, pues entonces, efectivamente, si yo esta propiedad la dejo privada, 124 00:09:19,000 --> 00:09:22,000 pues no me sirve para nada. 125 00:09:22,000 --> 00:09:24,000 Porque ahora yo no puedo acceder a ella. 126 00:09:24,000 --> 00:09:30,000 No puedo hacer esto para asignarle valores y gestionar el vehículo. 127 00:09:30,000 --> 00:09:33,000 Se llama así, ¿no? La he puesto bien. 128 00:09:33,000 --> 00:09:35,000 No puedo hacer esto. 129 00:09:35,000 --> 00:09:38,000 Me dice, oye, que no, que no es visible. 130 00:09:38,000 --> 00:09:40,000 Claro que no es visible. 131 00:09:40,000 --> 00:09:42,000 Porque le he puesto este modificador. 132 00:09:43,000 --> 00:09:47,000 Entonces, pues ¿de qué me vale una propiedad privada? 133 00:09:47,000 --> 00:09:50,000 Claro, es que sí hay que dar acceso a esta propiedad. 134 00:09:50,000 --> 00:09:53,000 Pero la forma de hacerlo no es esta. 135 00:09:53,000 --> 00:09:56,000 O sea, no es la forma recomendable, repito. 136 00:09:56,000 --> 00:10:02,000 O la forma que todos hemos acordado en la comunidad Java para utilizar. 137 00:10:02,000 --> 00:10:05,000 Si yo hago esto, claro que lo hago visible, ya está. 138 00:10:05,000 --> 00:10:08,000 ¡Hala! Ya se me quitó el rojito. 139 00:10:08,000 --> 00:10:11,000 Le asigno 7, luego la recupero, la multiplico por 12, lo que me dé la gana. 140 00:10:11,000 --> 00:10:15,000 Pero, hombre, esto es muy feo. 141 00:10:15,000 --> 00:10:19,000 La forma de hacerlo es la que dijimos, que era hacerla privada 142 00:10:19,000 --> 00:10:22,000 y ahora habilitar el acceso a esta propiedad mediante ti. 143 00:10:25,000 --> 00:10:28,000 ¿Solo estudias tú o es que los demás son muy tímidos? 144 00:10:28,000 --> 00:10:31,000 ¿Sois tímidos? Espero que sea eso. 145 00:10:31,000 --> 00:10:38,000 Porque es que la forma asimilada de la comunidad Java 146 00:10:39,000 --> 00:10:44,000 es que las propiedades sean privadas y luego tú habilites unos métodos 147 00:10:44,000 --> 00:10:46,000 para acceder a ellas. 148 00:10:46,000 --> 00:10:49,000 Uno para leer y otro para escribir. 149 00:10:49,000 --> 00:10:54,000 Y así separas los dos accesos, el de lectura y escritura. 150 00:10:54,000 --> 00:10:59,000 Porque si yo pongo aquí el public, estoy de golpe 151 00:10:59,000 --> 00:11:06,000 habilitando acceso para escribir, como aquí, y también para leer. 152 00:11:06,000 --> 00:11:08,000 Con esto estaría leyendo. 153 00:11:11,000 --> 00:11:17,000 Aquí estoy escribiendo la propiedad y aquí estoy leyendo la propiedad 154 00:11:17,000 --> 00:11:19,000 para dársela a un System Output de LN. 155 00:11:19,000 --> 00:11:24,000 Entonces, con el public, yo habilito de golpe acceso tanto a recoger 156 00:11:24,000 --> 00:11:29,000 el valor de la propiedad, como aquí, recogerlo, como a escribirlo. 157 00:11:29,000 --> 00:11:33,000 Pero, sin embargo, si lo hago a través, si yo aquí pongo el privado 158 00:11:34,000 --> 00:11:36,000 y lo hago a través de los get y los set, 159 00:11:39,000 --> 00:11:43,000 que o los escribo a mano, o si tengo un entorno de desarrollo, 160 00:11:43,000 --> 00:11:46,000 pues bueno, venga, que me los genere automáticamente. 161 00:11:46,000 --> 00:11:51,000 Si lo hago a través de los get y los set, ahora ya este método 162 00:11:51,000 --> 00:11:56,000 es el que me habilita la recogida de la propiedad y este método 163 00:11:56,000 --> 00:11:59,000 es el que me habilita la escritura de la propiedad. 164 00:11:59,000 --> 00:12:03,000 Que los dos son públicos, habilito los dos permisos. 165 00:12:03,000 --> 00:12:08,000 Que este lo quiero quitar, he habilitado solo el de escritura. 166 00:12:08,000 --> 00:12:13,000 Que el que quito es este, he habilitado solo el de lectura. 167 00:12:13,000 --> 00:12:19,000 Entonces tengo más margen, tengo mucho más margen de decisión 168 00:12:19,000 --> 00:12:23,000 con los get y los set que con el public de la propiedad. 169 00:12:23,000 --> 00:12:27,000 Por eso es la forma que hemos acordado y que se usa habitualmente 170 00:12:27,000 --> 00:12:29,000 en las entidades, ¿vale? 171 00:12:29,000 --> 00:12:31,000 Entonces ahora yo con estos, aunque la propiedad es privada, 172 00:12:31,000 --> 00:12:35,000 con estos métodos, yo ya el acceso a la propiedad así no puedo. 173 00:12:35,000 --> 00:12:39,000 Pero ¿qué pondría aquí para hacer esto mismo? 174 00:12:39,000 --> 00:12:42,000 Como esto no puedo porque la propiedad es privada, 175 00:12:42,000 --> 00:12:44,000 ¿qué sentencia pondríamos para hacer lo mismo? 176 00:12:44,000 --> 00:12:46,000 Para darle 7 a esa propiedad. 177 00:12:46,000 --> 00:12:54,000 Dictadme, v. no es para asignar valor a la propiedad. 178 00:12:55,000 --> 00:12:58,000 Pondríamos esto, ¿vale? 179 00:12:58,000 --> 00:13:02,000 Con esto estaríamos haciendo lo de arriba, pero no a través de la propiedad 180 00:13:02,000 --> 00:13:04,000 porque no puedo, porque es privada. 181 00:13:04,000 --> 00:13:06,000 Lo estaría haciendo a través del set, lo mismo. 182 00:13:06,000 --> 00:13:10,000 Y para hacer esto de aquí, que es la lectura, así no puedo 183 00:13:10,000 --> 00:13:12,000 porque la propiedad es privada. 184 00:13:12,000 --> 00:13:15,000 Lo que haríamos es, ¿qué pondríamos aquí? 185 00:13:15,000 --> 00:13:20,000 Dictadme, ¿eh? 186 00:13:20,000 --> 00:13:26,000 Vale, pero dictadme tal cual, v. get. 187 00:13:26,000 --> 00:13:28,000 Pues lo de arriba y lo de abajo es lo mismo. 188 00:13:28,000 --> 00:13:33,000 Aquí estoy recogiendo la propiedad a través del return del get, 189 00:13:33,000 --> 00:13:41,000 a través del return, y aquí la estoy accediendo directamente. 190 00:13:41,000 --> 00:13:45,000 Pero si la propiedad es privada, esto no puedo. 191 00:13:45,000 --> 00:13:47,000 Entonces lo tengo que hacer a través del get. 192 00:13:47,000 --> 00:13:51,000 Y esta es la forma en la que accederíamos a las propiedades de vehículo, 193 00:13:51,000 --> 00:13:53,000 el get y el set. 194 00:13:53,000 --> 00:13:56,000 Esta es la manera, no esta directamente. 195 00:13:56,000 --> 00:14:01,000 Y para hacerlo así, de hecho, es por lo que se prohíbe el acceso desde aquí 196 00:14:01,000 --> 00:14:04,000 y se hacen estos métodos. 197 00:14:04,000 --> 00:14:06,000 Que esto es obligatorio hacerlo así, no. 198 00:14:06,000 --> 00:14:09,000 No es obligatorio y no puede programar como le dé la gana. 199 00:14:09,000 --> 00:14:13,000 Pero insisto, si tú no te adaptas a los estilos de programación, 200 00:14:13,000 --> 00:14:15,000 no vas a poder interaccionar con los demás. 201 00:14:15,000 --> 00:14:18,000 Las librerías que te descargues para que usen tus entidades 202 00:14:18,000 --> 00:14:21,000 no las van a entender porque ellas van a esperar que haya un get 203 00:14:21,000 --> 00:14:24,000 para recoger la propiedad y cuando llamen a ese get, 204 00:14:24,000 --> 00:14:27,000 tu aplicación va a decir, no existe método get. 205 00:14:27,000 --> 00:14:30,000 Claro, puedes hacer las propiedades, tú puedes programar como quieras 206 00:14:30,000 --> 00:14:32,000 dentro de las posibilidades que te da Java. 207 00:14:32,000 --> 00:14:35,000 Pero si tu aplicación está aislada del mundo, fenomenal. 208 00:14:35,000 --> 00:14:39,000 Pero si no está aislada del mundo, vas a tener problemas. 209 00:14:39,000 --> 00:14:42,000 Bueno, pues aparte de, vale, pues esto venía en cuanto a, 210 00:14:42,000 --> 00:14:45,000 ya habíamos decidido el tipo de dato de la propiedad. 211 00:14:45,000 --> 00:14:48,000 Ahora tenemos algo más que decidir, que es el modificador de acceso. 212 00:14:48,000 --> 00:14:52,000 Pues ya decidimos este porque es una propiedad de una entidad. 213 00:14:52,000 --> 00:14:57,000 Y las propiedades de las entidades se suelen programar así. 214 00:14:57,000 --> 00:14:58,000 Y vale, pues ya está. 215 00:14:58,000 --> 00:15:01,000 ¿Y qué más cosas se suelen poner en una clase entidad? 216 00:15:01,000 --> 00:15:03,000 Una clase que representa la realidad de mi aplicación. 217 00:15:03,000 --> 00:15:05,000 Aparte de las propiedades con sus getter y setter. 218 00:15:05,000 --> 00:15:06,000 ¿Qué me falta? 219 00:15:06,000 --> 00:15:08,000 Los constructores, ¿no? 220 00:15:08,000 --> 00:15:09,000 Los constructores. 221 00:15:09,000 --> 00:15:13,000 Vale, pues entonces lo normal es que haya siempre un constructor 222 00:15:13,000 --> 00:15:21,000 con parámetros, este de aquí, que el public, ya lo puedo dejar, 223 00:15:21,000 --> 00:15:23,000 ya no me molesta porque sé lo que significa, 224 00:15:23,000 --> 00:15:29,000 y es que permito usar el método constructor desde fuera de la clase. 225 00:15:29,000 --> 00:15:33,000 El super sí que lo quito porque eso sí que seguimos sin saber lo que significa. 226 00:15:33,000 --> 00:15:38,000 Vale, este es mi constructor sin parámetros, perdón, con parámetros. 227 00:15:38,000 --> 00:15:41,000 Como solo tengo una propiedad, pues este constructor solo tiene una. 228 00:15:41,000 --> 00:15:44,000 Claro, ¿qué ha pasado cuando yo he hecho este constructor? 229 00:15:44,000 --> 00:15:46,000 ¡Qué paz! 230 00:15:46,000 --> 00:15:48,000 Me apareció el rojo ahí. 231 00:15:48,000 --> 00:15:51,000 ¿Os acordáis por qué me ha aparecido este rojo ahí? 232 00:15:51,000 --> 00:15:56,000 Cuando este constructor no estaba, cuando este constructor no estaba, 233 00:15:56,000 --> 00:16:00,000 y yo tenía mi clase sin ningún constructor, sin ninguno, 234 00:16:00,000 --> 00:16:05,000 este main encantó de la vida, instanciando el vehículo. 235 00:16:05,000 --> 00:16:12,000 Cuando este constructor yo lo hago, lo incluyo, 236 00:16:12,000 --> 00:16:19,000 el main ya, ala, se fastidió, ya no me deja instanciar así. 237 00:16:19,000 --> 00:16:23,000 ¿Por qué? 238 00:16:23,000 --> 00:16:28,000 Claro, porque cuando no hay constructor, cuando no hay ninguno escrito, 239 00:16:28,000 --> 00:16:34,000 recordad que entonces Java se inventa uno sin parámetros, vacío, 240 00:16:34,000 --> 00:16:37,000 y asume que está ahí, se lo inventa, aunque yo no lo vea. 241 00:16:37,000 --> 00:16:40,000 Pero desde el momento en que hago uno, ese que se inventó desaparece, 242 00:16:40,000 --> 00:16:43,000 ese que se inventó desaparece, porque ya está el que yo he hecho, 243 00:16:43,000 --> 00:16:47,000 y el que yo he hecho necesita un parámetro, y aquí lo estoy llamando mal, 244 00:16:47,000 --> 00:16:49,000 con lo cual no me deja. 245 00:16:49,000 --> 00:16:53,000 Lo habitual es poner en las entidades los dos constructores, 246 00:16:53,000 --> 00:16:56,000 el con parámetros y el sin parámetros también, 247 00:16:56,000 --> 00:16:59,000 para dar la posibilidad de instanciar con parámetros o sin ellos, 248 00:16:59,000 --> 00:17:03,000 porque alguien le puede dar la gana instanciar un vehículo 249 00:17:03,000 --> 00:17:08,000 y luego pasarle las propiedades más tarde, ponerlo set. 250 00:17:08,000 --> 00:17:10,000 Puede ocurrir, ¿no? 251 00:17:10,000 --> 00:17:15,000 Entonces, lo relativamente habitual en las clases entidad 252 00:17:15,000 --> 00:17:18,000 es que tengan este constructor con parámetros 253 00:17:18,000 --> 00:17:22,000 y también tengan uno vacío, que no haga nada, 254 00:17:22,000 --> 00:17:25,000 y tener uno vacío que no hace nada, 255 00:17:25,000 --> 00:17:29,000 lo que permite es ahora ya que la gente pueda hacer esto, 256 00:17:29,000 --> 00:17:34,000 puede instanciar un vehículo sin más, porque puede ser interesante, 257 00:17:34,000 --> 00:17:36,000 yo puedo querer instanciar vehículos, 258 00:17:36,000 --> 00:17:39,000 pero todavía no saber el gasto, ponérselo más tarde, 259 00:17:39,000 --> 00:17:41,000 a lo mejor todavía no lo sé. 260 00:17:41,000 --> 00:17:45,000 Entonces yo habilito las dos maneras de crear vehículos. 261 00:17:45,000 --> 00:17:49,000 Habilito una manera en la cual ya sé lo que vale su propiedad 262 00:17:49,000 --> 00:17:52,000 y lo instancio con ese valor, porque ya lo sé. 263 00:17:52,000 --> 00:17:55,000 Pero habilito también una segunda manera, 264 00:17:55,000 --> 00:17:57,000 por si alguien quiere instanciar un vehículo 265 00:17:57,000 --> 00:17:59,000 y todavía no sabe cuál es el valor de esa propiedad, 266 00:17:59,000 --> 00:18:03,000 pues lo habilito y ya lo fijo más tarde con el set. 267 00:18:03,000 --> 00:18:06,000 Por eso lo habitual en una clase entidad por defecto 268 00:18:06,000 --> 00:18:08,000 es que figuren los dos, 269 00:18:08,000 --> 00:18:12,000 y así das la opción de cada uno que instancie como le dé la gana. 270 00:18:12,000 --> 00:18:14,000 Eso es lo que aparece siempre por defecto 271 00:18:14,000 --> 00:18:16,000 en cualquier clase entidad que veáis por ahí. 272 00:18:16,000 --> 00:18:20,000 Las propiedades privadas, los getter y los setter, 273 00:18:20,000 --> 00:18:24,000 un par para cada uno de ellos y los constructores. 274 00:18:27,000 --> 00:18:30,000 Pero si es lo que explicamos el otro día. 275 00:18:30,000 --> 00:18:37,000 ¿Pero lo ha repasado del martes aquí? 276 00:18:37,000 --> 00:18:40,000 Claro, es que no vale entenderlo. 277 00:18:40,000 --> 00:18:43,000 Entenderlo en clase está fenomenal. 278 00:18:43,000 --> 00:18:46,000 Ya, ya lo sé, no está grabado, pero bueno, 279 00:18:46,000 --> 00:18:48,000 porque falló la grabación. 280 00:18:48,000 --> 00:18:52,000 Pero hombre, vosotros ni la responsabilidad de tomar notas. 281 00:18:52,000 --> 00:18:58,000 Entonces entenderlo está muy bien, en lo deseable. 282 00:18:58,000 --> 00:19:00,000 Pero el segundo paso a entenderlo es, 283 00:19:00,000 --> 00:19:03,000 ahora lo miro en casa para consolidarlo. 284 00:19:03,000 --> 00:19:05,000 Porque lo que has entendido, si no lo miras, 285 00:19:05,000 --> 00:19:08,000 lo normal es que se te olvide. 286 00:19:08,000 --> 00:19:10,000 Entonces claro, yo no puedo estar explicando. 287 00:19:10,000 --> 00:19:14,000 Ahora, de hecho todo lo que he hecho en este rato que llevamos de clase, 288 00:19:14,000 --> 00:19:18,000 que llevamos media hora, ha sido todo repaso. 289 00:19:18,000 --> 00:19:21,000 No ha avanzado nada nuevo, ha sido todo repaso. 290 00:19:21,000 --> 00:19:26,000 Pero claro, todavía más repaso, 291 00:19:26,000 --> 00:19:31,000 porque no lo repaséis en casa. 292 00:19:31,000 --> 00:19:33,000 Bueno, pues lo de los Getty lo sé, 293 00:19:33,000 --> 00:19:36,000 lo van madurando, porque hombre, es fácil de decir lo entendiste. 294 00:19:36,000 --> 00:19:39,000 El otro día es muy fácil de entender según lo vas usando, 295 00:19:39,000 --> 00:19:41,000 no vas a tener problema en eso. 296 00:19:41,000 --> 00:19:43,000 Y aparte es que lo acabo de explicar, 297 00:19:43,000 --> 00:19:46,000 acabo de explicarlo tal cual, otra vez. 298 00:19:46,000 --> 00:19:49,000 Vale, pues entonces en las clases entidad lo habitual es esto. 299 00:19:49,000 --> 00:19:51,000 Ya la hemos hecho, nuestra clase vehículo. 300 00:19:51,000 --> 00:19:55,000 Su propiedad, estos dos métodos para permitir 301 00:19:55,000 --> 00:19:57,000 recuperar el valor de la propiedad, 302 00:19:57,000 --> 00:20:00,000 o fijarle un valor, el que a mí me dé la gana, 303 00:20:00,000 --> 00:20:02,000 y los dos constructores, 304 00:20:02,000 --> 00:20:05,000 para permitir instanciar de la manera que yo quiera. 305 00:20:05,000 --> 00:20:07,000 ¿La clase vehículo está? 306 00:20:07,000 --> 00:20:09,000 ¿La clase vehículo está algo más? 307 00:20:09,000 --> 00:20:10,000 Pues no. 308 00:20:10,000 --> 00:20:12,000 Vale, mi aplicación tiene otra. 309 00:20:12,000 --> 00:20:13,000 ¿Cómo está? 310 00:20:13,000 --> 00:20:14,000 Sí. 311 00:20:14,000 --> 00:20:17,000 Como buenas prácticas de programación, 312 00:20:17,000 --> 00:20:22,000 ¿los de Getty 7 tienen un orden con respecto a los constructores 313 00:20:22,000 --> 00:20:24,000 o es diferente? 314 00:20:24,000 --> 00:20:25,000 Yo creo que no. 315 00:20:25,000 --> 00:20:27,000 A ver, yo por costumbre pongo propiedades, 316 00:20:27,000 --> 00:20:29,000 constructor y Getty 7, 317 00:20:29,000 --> 00:20:32,000 pero eso sí que yo creo que lo puedes ver de muchas maneras distintas. 318 00:20:32,000 --> 00:20:34,000 Lo he visto de esa manera. 319 00:20:34,000 --> 00:20:37,000 Me imagino que lo habrás visto constructor y Getty 7 después. 320 00:20:37,000 --> 00:20:41,000 Claro, o sea lo que sí que suele ser relativamente habitual, 321 00:20:41,000 --> 00:20:42,000 pero relativamente, 322 00:20:42,000 --> 00:20:45,000 es que propiedades primero y métodos después. 323 00:20:45,000 --> 00:20:47,000 Pero incluso digo relativamente, 324 00:20:47,000 --> 00:20:49,000 porque en las aplicaciones que tienen interfaz gráfica 325 00:20:49,000 --> 00:20:51,000 es relativamente habitual que uno se encuentre 326 00:20:51,000 --> 00:20:54,000 métodos antes y los elementos gráficos después. 327 00:20:54,000 --> 00:20:56,000 Pero bueno, en general eso sí que suele ser, 328 00:20:56,000 --> 00:20:58,000 propiedades y métodos. 329 00:20:58,000 --> 00:20:59,000 Dentro de los métodos, 330 00:20:59,000 --> 00:21:01,000 constructores antes y Getty 7 después, 331 00:21:01,000 --> 00:21:03,000 yo tengo la costumbre de constructores antes 332 00:21:03,000 --> 00:21:05,000 y Getty 7 después. 333 00:21:05,000 --> 00:21:07,000 Ahora lo he hecho después porque es que 334 00:21:07,000 --> 00:21:10,000 como íbamos primero por la propiedad, 335 00:21:10,000 --> 00:21:11,000 pero yo tengo esa costumbre 336 00:21:11,000 --> 00:21:13,000 y seguramente tengo esa costumbre 337 00:21:13,000 --> 00:21:14,000 porque es que es lo que he visto siempre 338 00:21:14,000 --> 00:21:16,000 y lo que he hecho siempre. 339 00:21:16,000 --> 00:21:18,000 De hecho los vamos a colocar delante 340 00:21:18,000 --> 00:21:19,000 porque yo me siento más cómoda 341 00:21:19,000 --> 00:21:21,000 si los veo primero los constructores, 342 00:21:21,000 --> 00:21:25,000 porque es lo que estoy acostumbrada. 343 00:21:25,000 --> 00:21:29,000 ¿Vale? 344 00:21:29,000 --> 00:21:32,000 Vale, pues entonces. 345 00:21:32,000 --> 00:21:34,000 Ahora, esta clase está. 346 00:21:34,000 --> 00:21:35,000 Bueno, como esta aplicación 347 00:21:35,000 --> 00:21:40,000 trabaja con el consumo en una distancia, 348 00:21:40,000 --> 00:21:42,000 pues la aplicación ha necesitado 349 00:21:42,000 --> 00:21:44,000 definir una entidad 350 00:21:44,000 --> 00:21:47,000 en la cual se puedan medir distancias. 351 00:21:47,000 --> 00:21:50,000 Entonces, como la aplicación 352 00:21:50,000 --> 00:21:52,000 después de analizarla, 353 00:21:52,000 --> 00:21:55,000 uno ha visto que los recorridos del coche 354 00:21:55,000 --> 00:21:57,000 son trayectorias que pueden ir así, 355 00:21:57,000 --> 00:22:02,000 de cualquier manera. 356 00:22:02,000 --> 00:22:03,000 ¿Vale? 357 00:22:03,000 --> 00:22:04,000 O sea, el que le planteó esta aplicación 358 00:22:04,000 --> 00:22:05,000 a alguien le dijo, 359 00:22:05,000 --> 00:22:08,000 oye, los coches pueden hacer trayectorias 360 00:22:08,000 --> 00:22:13,000 de este tipo. 361 00:22:13,000 --> 00:22:15,000 Así, todas como segmentos en línea recta, 362 00:22:15,000 --> 00:22:18,000 así, patapam, patapam. 363 00:22:18,000 --> 00:22:19,000 ¿Vale? 364 00:22:19,000 --> 00:22:21,000 Entonces, a ver, esto tiene sentido 365 00:22:21,000 --> 00:22:22,000 porque una trayectoria cualquiera 366 00:22:22,000 --> 00:22:23,000 que uno haga incluso en círculo, 367 00:22:23,000 --> 00:22:25,000 así por papá, 368 00:22:25,000 --> 00:22:27,000 pues siempre tiene una aproximación 369 00:22:27,000 --> 00:22:28,000 bastante fiable, ¿verdad? 370 00:22:28,000 --> 00:22:31,000 Siempre la tiene mediante segmentos rectos pequeñitos. 371 00:22:31,000 --> 00:22:33,000 ¿Verdad? 372 00:22:33,000 --> 00:22:39,000 Esto es la segmentación de las trayectorias. 373 00:22:39,000 --> 00:22:42,000 Me gustan tanto las matemáticas. 374 00:22:42,000 --> 00:22:43,000 Entonces, tiene sentido 375 00:22:43,000 --> 00:22:45,000 cuando en una aplicación 376 00:22:45,000 --> 00:22:49,000 tienes que emular trayectorias, 377 00:22:49,000 --> 00:22:50,000 pues que esas trayectorias 378 00:22:50,000 --> 00:22:54,000 sean sucesiones de segmentos rectos 379 00:22:54,000 --> 00:22:56,000 porque las sucesiones de segmentos rectos 380 00:22:56,000 --> 00:22:59,000 te permiten aproximar 381 00:22:59,000 --> 00:23:02,000 cualquier trayectoria circular 382 00:23:02,000 --> 00:23:06,000 con bastante fiabilidad. 383 00:23:06,000 --> 00:23:07,000 Claro, cuanto más pequeñitos 384 00:23:07,000 --> 00:23:09,000 sean los segmentos más, obviamente. 385 00:23:09,000 --> 00:23:10,000 Si los segmentos son muy pequeñitos, 386 00:23:10,000 --> 00:23:12,000 la aproximarás muy bien. 387 00:23:12,000 --> 00:23:14,000 Si los segmentos rectos son muy grandes, 388 00:23:14,000 --> 00:23:15,000 la aproximarás fatal. 389 00:23:15,000 --> 00:23:18,000 Pero bueno, la forma de aproximar 390 00:23:18,000 --> 00:23:20,000 cualquier trayectoria 391 00:23:20,000 --> 00:23:21,000 siempre es mediante una sucesión 392 00:23:21,000 --> 00:23:23,000 de segmentos rectos. 393 00:23:23,000 --> 00:23:25,000 Todo esto es lo que pensó el que 394 00:23:25,000 --> 00:23:29,000 diseñó esta aplicación, mini aplicación, 395 00:23:29,000 --> 00:23:32,000 que a nosotros ya nos da diseñada, claro. 396 00:23:32,000 --> 00:23:33,000 Pero bueno, el que la pensó dijo, 397 00:23:33,000 --> 00:23:35,000 vale, pues entonces yo la tengo que recoger 398 00:23:35,000 --> 00:23:37,000 de alguna manera en mi aplicación 399 00:23:37,000 --> 00:23:39,000 el concepto trayectoria 400 00:23:39,000 --> 00:23:41,000 porque tengo dos conceptos. 401 00:23:41,000 --> 00:23:43,000 El concepto vehículo, ya está recogido, 402 00:23:43,000 --> 00:23:45,000 y el concepto trayectoria. 403 00:23:45,000 --> 00:23:47,000 Jolín, ¿cómo recojo eso? 404 00:23:47,000 --> 00:23:49,000 Vale, pues si uno piensa que una trayectoria 405 00:23:49,000 --> 00:23:51,000 es una sucesión de segmentos rectos, 406 00:23:51,000 --> 00:23:53,000 una idea posible, de las muchas posibles, 407 00:23:53,000 --> 00:23:55,000 es, ah bueno, pues una trayectoria 408 00:23:55,000 --> 00:23:57,000 se puede definir por la sucesión 409 00:23:57,000 --> 00:24:00,000 de los puntos, ya está, puntos en un plano. 410 00:24:00,000 --> 00:24:02,000 Es la forma más sencilla 411 00:24:02,000 --> 00:24:04,000 de definir una trayectoria, 412 00:24:04,000 --> 00:24:07,000 que es un conjunto de puntos en el plano 413 00:24:07,000 --> 00:24:09,000 porque así necesito solo una clase, 414 00:24:09,000 --> 00:24:11,000 la clase punto, 415 00:24:11,000 --> 00:24:13,000 y el conjunto de puntos, 416 00:24:13,000 --> 00:24:14,000 que eso ya es una colección de datos, 417 00:24:14,000 --> 00:24:16,000 sea una raíz, sea la que sea, 418 00:24:16,000 --> 00:24:18,000 es la trayectoria. 419 00:24:18,000 --> 00:24:20,000 Es una idea muy natural 420 00:24:20,000 --> 00:24:21,000 que se le puede ocurrir a alguien 421 00:24:21,000 --> 00:24:24,000 para recoger en una aplicación 422 00:24:24,000 --> 00:24:28,000 esta realidad, la realidad trayectoria. 423 00:24:28,000 --> 00:24:32,000 Pues un conjunto de puntitos. 424 00:24:32,000 --> 00:24:34,000 Dado que los segmentos rectos 425 00:24:34,000 --> 00:24:36,000 pueden simular cualquier trayectoria, 426 00:24:36,000 --> 00:24:37,000 bueno, esto forma de nuevo 427 00:24:37,000 --> 00:24:40,000 parte de la fase de análisis y diseño. 428 00:24:40,000 --> 00:24:42,000 A nosotros ya nos la han hecha 429 00:24:42,000 --> 00:24:43,000 y nos dicen, 430 00:24:43,000 --> 00:24:45,000 la clase que tú necesitas 431 00:24:45,000 --> 00:24:47,000 es la clase punto 432 00:24:47,000 --> 00:24:49,000 y cuando tengas muchos puntos 433 00:24:49,000 --> 00:24:51,000 tendrás una trayectoria. 434 00:24:51,000 --> 00:24:52,000 Perfecto, estupendo. 435 00:24:52,000 --> 00:24:53,000 Vale, pues ahora llegaríamos 436 00:24:53,000 --> 00:24:54,000 a la siguiente parte. 437 00:24:54,000 --> 00:24:55,000 Muy bien, y la clase punto 438 00:24:55,000 --> 00:24:56,000 ¿por qué se caracteriza? 439 00:24:56,000 --> 00:24:59,000 Hombre, pues los puntos en un plano 440 00:24:59,000 --> 00:25:01,000 sabemos cómo se caracterizan, 441 00:25:01,000 --> 00:25:02,000 los puntos en un plano 442 00:25:02,000 --> 00:25:05,000 ¿cómo se caracterizan? 443 00:25:05,000 --> 00:25:06,000 Pues sus dos coordenadas, 444 00:25:06,000 --> 00:25:07,000 la x y la y, ¿no? 445 00:25:07,000 --> 00:25:08,000 Con dos coordenadas, 446 00:25:08,000 --> 00:25:10,000 la coordenada x y la coordenada y 447 00:25:10,000 --> 00:25:12,000 ya tenemos el punto en el plano. 448 00:25:12,000 --> 00:25:14,000 Un plano siempre tiene un eje de referencia, 449 00:25:14,000 --> 00:25:15,000 un eje de referencia 450 00:25:15,000 --> 00:25:16,000 que es su eje de abscisas 451 00:25:16,000 --> 00:25:18,000 o su eje de ordenadas. 452 00:25:18,000 --> 00:25:21,000 Pues un par de coordenadas 453 00:25:21,000 --> 00:25:22,000 define completamente 454 00:25:22,000 --> 00:25:24,000 una posición en el plano. 455 00:25:24,000 --> 00:25:26,000 Igual que un trío de coordenadas 456 00:25:26,000 --> 00:25:28,000 define completamente 457 00:25:28,000 --> 00:25:29,000 una posición en el espacio. 458 00:25:29,000 --> 00:25:30,000 Pero aquí estamos hablando 459 00:25:30,000 --> 00:25:32,000 de trayectorias en el plano, 460 00:25:32,000 --> 00:25:33,000 en el suelo, 461 00:25:33,000 --> 00:25:34,000 que es por donde va el coche. 462 00:25:34,000 --> 00:25:36,000 Si habláramos de trayectorias en el espacio 463 00:25:36,000 --> 00:25:37,000 porque es esto mismo, 464 00:25:37,000 --> 00:25:39,000 pero con aviones, 465 00:25:39,000 --> 00:25:40,000 pues lo único que cambiaría 466 00:25:40,000 --> 00:25:42,000 es que el punto se caracteriza 467 00:25:42,000 --> 00:25:43,000 por tres coordenadas 468 00:25:43,000 --> 00:25:44,000 porque en el espacio 469 00:25:44,000 --> 00:25:46,000 se caracterizan las posiciones 470 00:25:46,000 --> 00:25:47,000 por tres coordenadas. 471 00:25:47,000 --> 00:25:49,000 Pero aquí hablamos de trayectorias 472 00:25:49,000 --> 00:25:50,000 de un coche que va en plano. 473 00:25:50,000 --> 00:25:52,000 Luego, con puntos de dos coordenadas, 474 00:25:52,000 --> 00:25:53,000 suficiente. 475 00:25:53,000 --> 00:25:54,000 Bueno, pues todo eso 476 00:25:54,000 --> 00:25:56,000 es a lo que llega la conclusión, 477 00:25:56,000 --> 00:25:57,000 el que está analizando esta aplicación 478 00:25:57,000 --> 00:25:59,000 y ya dice, pues ya está, 479 00:25:59,000 --> 00:26:01,000 necesito una clase punto 480 00:26:01,000 --> 00:26:03,000 y esa clase punto tiene dos propiedades. 481 00:26:04,000 --> 00:26:05,000 X e Y. 482 00:26:05,000 --> 00:26:06,000 Y se acabó. 483 00:26:06,000 --> 00:26:07,000 Y ahora ya, 484 00:26:07,000 --> 00:26:10,000 cuando ya tenemos las únicas dos entidades 485 00:26:10,000 --> 00:26:11,000 que necesitamos, 486 00:26:11,000 --> 00:26:13,000 vehículo y punto del plano, 487 00:26:13,000 --> 00:26:15,000 ya uno aborda los requisitos de la aplicación. 488 00:26:15,000 --> 00:26:17,000 Pues dado un conjunto de puntos, 489 00:26:17,000 --> 00:26:19,000 lo que el coche ha consumido en la trayectoria. 490 00:26:19,000 --> 00:26:21,000 Pues cuál es la mayor trayectoria posible 491 00:26:21,000 --> 00:26:22,000 que puede hacer un coche 492 00:26:22,000 --> 00:26:23,000 que no quiere consumir 493 00:26:23,000 --> 00:26:24,000 más de tres kilómetros. 494 00:26:24,000 --> 00:26:26,000 Por los requisitos que toquen. 495 00:26:26,000 --> 00:26:27,000 Habrá muchos requisitos. 496 00:26:27,000 --> 00:26:29,000 Y todos ellos se construirán, 497 00:26:29,000 --> 00:26:31,000 se solucionarán, 498 00:26:31,000 --> 00:26:33,000 pues ahora ya creando puntos, 499 00:26:33,000 --> 00:26:34,000 creando coches, 500 00:26:34,000 --> 00:26:35,000 haciendo cuentas para allá, 501 00:26:35,000 --> 00:26:36,000 para acá, etc. 502 00:26:36,000 --> 00:26:38,000 Pero con punto y vehículo 503 00:26:38,000 --> 00:26:41,000 tenemos todas las entidades que necesitamos. 504 00:26:41,000 --> 00:26:43,000 Pues ahora vamos a hacer entonces 505 00:26:43,000 --> 00:26:45,000 la clase punto. 506 00:26:47,000 --> 00:26:48,000 Vale. 507 00:26:49,000 --> 00:26:50,000 Ejercicio 5. 508 00:26:53,000 --> 00:26:55,000 Sí, ejercicio 5 estoy. 509 00:26:55,000 --> 00:26:56,000 Clase punto. 510 00:26:57,000 --> 00:26:58,000 Clase punto, 511 00:26:58,000 --> 00:27:00,000 le damos el nombre lo más explicativo posible, 512 00:27:00,000 --> 00:27:01,000 como siempre. 513 00:27:01,000 --> 00:27:02,000 Propiedades. 514 00:27:03,000 --> 00:27:04,000 Pues ya que estamos, 515 00:27:04,000 --> 00:27:07,000 vamos a hacerlo ya 516 00:27:07,000 --> 00:27:09,000 con la forma general, 517 00:27:09,000 --> 00:27:11,000 la forma habitual, 518 00:27:11,000 --> 00:27:13,000 con propiedades privadas. 519 00:27:13,000 --> 00:27:14,000 Coordenada X, 520 00:27:14,000 --> 00:27:15,000 coordenada Y, 521 00:27:15,000 --> 00:27:16,000 a ver, para no escribir tanto 522 00:27:16,000 --> 00:27:17,000 vamos a llamarlas X, Y. 523 00:27:17,000 --> 00:27:18,000 Y ya está. 524 00:27:19,000 --> 00:27:20,000 X, Y. 525 00:27:21,000 --> 00:27:22,000 Ahora vamos a, 526 00:27:22,000 --> 00:27:24,000 bueno, si le pongo el tipo de dato mejor. 527 00:27:25,000 --> 00:27:26,000 Las coordenadas, 528 00:27:26,000 --> 00:27:27,000 pues podemos definirlas 529 00:27:27,000 --> 00:27:28,000 decimales, enteras, 530 00:27:28,000 --> 00:27:30,000 para no complicarnos ahora la vida, 531 00:27:30,000 --> 00:27:32,000 las coordenadas X, Y son enteras. 532 00:27:32,000 --> 00:27:33,000 Pues el punto 3, 7, 533 00:27:33,000 --> 00:27:34,000 el punto 2, 9, 534 00:27:34,000 --> 00:27:36,000 el punto menos 1, 4, 535 00:27:36,000 --> 00:27:38,000 coordenadas enteras. 536 00:27:39,000 --> 00:27:42,000 Y ahora ya hago los constructores, 537 00:27:42,000 --> 00:27:44,000 el sin parámetros 538 00:27:44,000 --> 00:27:45,000 y el con parámetros 539 00:27:45,000 --> 00:27:46,000 y los getter y setter. 540 00:27:46,000 --> 00:27:48,000 Eso lo hago siempre ya por defecto. 541 00:27:53,000 --> 00:27:55,000 Pues un constructor que use 542 00:27:55,000 --> 00:27:57,000 las coordenadas X, Y 543 00:27:57,000 --> 00:27:59,000 para crear el punto. 544 00:28:00,000 --> 00:28:02,000 Otro constructor sin parámetros. 545 00:28:07,000 --> 00:28:08,000 Este. 546 00:28:08,000 --> 00:28:09,000 Le quito el super 547 00:28:09,000 --> 00:28:11,000 porque no sé lo que significa. 548 00:28:11,000 --> 00:28:13,000 Y ahora ya los getter y setter 549 00:28:13,000 --> 00:28:15,000 para las dos propiedades. 550 00:28:24,000 --> 00:28:25,000 Vale. 551 00:28:28,000 --> 00:28:31,000 Vale, como veis los getter y setter 552 00:28:31,000 --> 00:28:33,000 siempre siguen el mismo convenio. 553 00:28:33,000 --> 00:28:35,000 Es get o set 554 00:28:35,000 --> 00:28:37,000 y luego el nombre de la propiedad 555 00:28:37,000 --> 00:28:39,000 empezando por mayúscula. 556 00:28:39,000 --> 00:28:40,000 En este caso, 557 00:28:40,000 --> 00:28:41,000 como la propiedad 558 00:28:41,000 --> 00:28:42,000 tiene solo un carácter, 559 00:28:42,000 --> 00:28:44,000 pues es directamente 560 00:28:44,000 --> 00:28:46,000 ese único carácter en mayúscula. 561 00:28:47,000 --> 00:28:48,000 Ese es el convenio 562 00:28:48,000 --> 00:28:50,000 para nombrar a los getter y los setter. 563 00:28:50,000 --> 00:28:51,000 Y hay que seguirlo 564 00:28:51,000 --> 00:28:52,000 porque si no, 565 00:28:52,000 --> 00:28:53,000 otras clases que quieran 566 00:28:53,000 --> 00:28:54,000 trabajar con nosotros 567 00:28:54,000 --> 00:28:56,000 no nos van a acceder, 568 00:28:56,000 --> 00:28:57,000 no van a poder. 569 00:28:58,000 --> 00:28:59,000 Hay que seguir. 570 00:28:59,000 --> 00:29:01,000 Vale, ya tenemos vehículo y punto. 571 00:29:01,000 --> 00:29:02,000 Y ahora ya se trata 572 00:29:02,000 --> 00:29:03,000 de hacer la aplicación 573 00:29:03,000 --> 00:29:04,000 que satisfaga los requisitos 574 00:29:04,000 --> 00:29:05,000 que me han pedido. 575 00:29:05,000 --> 00:29:06,000 Pues de cálculo, 576 00:29:06,000 --> 00:29:07,000 de trayectorias, 577 00:29:07,000 --> 00:29:08,000 de consumos, 578 00:29:08,000 --> 00:29:09,000 de lo que sea. 579 00:29:09,000 --> 00:29:10,000 Lo que me pida el cliente. 580 00:29:10,000 --> 00:29:11,000 Pues yo quiero una aplicación 581 00:29:11,000 --> 00:29:14,000 que cuando tú le metas 582 00:29:14,000 --> 00:29:16,000 una trayectoria y un vehículo 583 00:29:16,000 --> 00:29:17,000 me digas cuánto voy a gastar, 584 00:29:17,000 --> 00:29:18,000 por ejemplo. 585 00:29:21,000 --> 00:29:22,000 ¿El sin parámetros? 586 00:29:23,000 --> 00:29:24,000 Pues igual, 587 00:29:24,000 --> 00:29:26,000 pero en source, 588 00:29:27,000 --> 00:29:29,000 generar constructor, 589 00:29:29,000 --> 00:29:30,000 using fields también, 590 00:29:30,000 --> 00:29:32,000 pero luego los he deseleccionado. 591 00:29:34,000 --> 00:29:35,000 Para que no use ninguno. 592 00:29:35,000 --> 00:29:37,000 Y entonces te lo creas sin nada. 593 00:29:41,000 --> 00:29:43,000 Y sí, puedes aquí quitar el... 594 00:29:45,000 --> 00:29:46,000 ¿Dónde? 595 00:29:47,000 --> 00:29:48,000 Esto. 596 00:29:48,000 --> 00:29:49,000 Que no llame al constructor 597 00:29:49,000 --> 00:29:50,000 de object super 598 00:29:50,000 --> 00:29:51,000 y ya está. 599 00:29:51,000 --> 00:29:52,000 Si quieres, vale. 600 00:29:53,000 --> 00:29:54,000 No lo tienes que... 601 00:29:56,000 --> 00:29:57,000 De todas formas, 602 00:29:57,000 --> 00:29:59,000 el super no molesta nada 603 00:29:59,000 --> 00:30:01,000 porque está llamando ahora 604 00:30:01,000 --> 00:30:03,000 a una clase que no hace nada. 605 00:30:03,000 --> 00:30:04,000 Ahora. 606 00:30:04,000 --> 00:30:06,000 Entonces no es buena práctica 607 00:30:06,000 --> 00:30:08,000 quitarlo porque en otras situaciones. 608 00:30:08,000 --> 00:30:09,000 Entonces no es bueno 609 00:30:09,000 --> 00:30:10,000 que marquéis eso por defecto. 610 00:30:11,000 --> 00:30:12,000 Lo que pasa es que yo 611 00:30:12,000 --> 00:30:13,000 lo estoy quitando 612 00:30:14,000 --> 00:30:15,000 pues porque no aparezcan 613 00:30:15,000 --> 00:30:16,000 nuestros programas 614 00:30:16,000 --> 00:30:17,000 a lo que no sabemos lo que es. 615 00:30:17,000 --> 00:30:19,000 Pero hombre, si está mejor. 616 00:30:19,000 --> 00:30:20,000 En este caso, 617 00:30:20,000 --> 00:30:21,000 va a dar lo mismo 618 00:30:21,000 --> 00:30:22,000 efectos prácticos. 619 00:30:22,000 --> 00:30:23,000 Que esté o no esté. 620 00:30:23,000 --> 00:30:24,000 Pero en general, 621 00:30:24,000 --> 00:30:25,000 en otras situaciones, 622 00:30:25,000 --> 00:30:26,000 si está va a ser siempre mejor. 623 00:30:26,000 --> 00:30:27,000 Pero bueno, yo lo quito 624 00:30:27,000 --> 00:30:28,000 solo para que no aparezca 625 00:30:28,000 --> 00:30:29,000 algo que no hemos visto. 626 00:30:36,000 --> 00:30:37,000 Hay un par 627 00:30:37,000 --> 00:30:38,000 por cada propiedad. 628 00:30:38,000 --> 00:30:40,000 GetX, GetX, GetY, GetY. 629 00:30:46,000 --> 00:30:47,000 Bueno, pues ya tenemos 630 00:30:47,000 --> 00:30:48,000 las dos entidades. 631 00:30:49,000 --> 00:30:50,000 Ahora ya, 632 00:30:50,000 --> 00:30:51,000 ¿qué me están pidiendo 633 00:30:51,000 --> 00:30:52,000 a mí hacer? 634 00:30:52,000 --> 00:30:53,000 ¿Qué aplicación 635 00:30:53,000 --> 00:30:54,000 se va a ejecutar? 636 00:30:54,000 --> 00:30:55,000 Es decir, 637 00:30:55,000 --> 00:30:56,000 ¿qué main 638 00:30:56,000 --> 00:30:57,000 tengo que hacer? 639 00:30:57,000 --> 00:30:58,000 Ahora ya sí. 640 00:30:58,000 --> 00:30:59,000 Con esto he descrito 641 00:30:59,000 --> 00:31:00,000 una realidad. 642 00:31:00,000 --> 00:31:01,000 Y esa realidad 643 00:31:01,000 --> 00:31:02,000 está descrita. 644 00:31:02,000 --> 00:31:03,000 Es como decir, 645 00:31:03,000 --> 00:31:04,000 vale, 646 00:31:04,000 --> 00:31:05,000 yo tengo alumnos, 647 00:31:05,000 --> 00:31:06,000 tengo asignaturas, 648 00:31:07,000 --> 00:31:08,000 tengo profesores 649 00:31:08,000 --> 00:31:09,000 y eso es lo que tengo. 650 00:31:09,000 --> 00:31:10,000 Y así nos quedamos 651 00:31:10,000 --> 00:31:11,000 parados y cruzados 652 00:31:11,000 --> 00:31:12,000 del tanto. 653 00:31:12,000 --> 00:31:13,000 Eso es lo que hemos hecho. 654 00:31:13,000 --> 00:31:14,000 Y ahí viene la siguiente fase 655 00:31:14,000 --> 00:31:15,000 que es, 656 00:31:15,000 --> 00:31:16,000 ¿ahora qué tengo 657 00:31:16,000 --> 00:31:17,000 que hacerle con esto? 658 00:31:17,000 --> 00:31:18,000 Tienes alumnos 659 00:31:18,000 --> 00:31:19,000 con profesores. 660 00:31:19,000 --> 00:31:20,000 Tienes que dar 661 00:31:20,000 --> 00:31:21,000 de baja alumnos. 662 00:31:21,000 --> 00:31:22,000 Ese ya es el main. 663 00:31:22,000 --> 00:31:23,000 Es decir, 664 00:31:23,000 --> 00:31:24,000 ¿y ahora qué tengo 665 00:31:24,000 --> 00:31:25,000 que hacer con esto? 666 00:31:25,000 --> 00:31:26,000 Ese ya es el main. 667 00:31:26,000 --> 00:31:27,000 Bueno, pues lo que me pidan, 668 00:31:27,000 --> 00:31:28,000 lo que el cliente me diga, 669 00:31:28,000 --> 00:31:29,000 oye, yo es que necesito 670 00:31:29,000 --> 00:31:30,000 que me hagas esto. 671 00:31:30,000 --> 00:31:31,000 Pues vamos a ver 672 00:31:31,000 --> 00:31:32,000 qué es lo que necesitas hacer. 673 00:31:32,000 --> 00:31:33,000 Bueno, 674 00:31:33,000 --> 00:31:34,000 pues... 675 00:31:36,000 --> 00:31:37,000 Ah, 676 00:31:37,000 --> 00:31:38,000 seguimos con la clase punto 677 00:31:38,000 --> 00:31:39,000 porque aquí ya nos han pedido 678 00:31:39,000 --> 00:31:40,000 que le metamos métodos. 679 00:31:41,000 --> 00:31:42,000 Vale. 680 00:31:43,000 --> 00:31:44,000 Declaramos la clase punto, 681 00:31:44,000 --> 00:31:45,000 hemos hecho hasta aquí. 682 00:31:45,000 --> 00:31:46,000 Vale. 683 00:31:46,000 --> 00:31:47,000 A ver, 684 00:31:47,000 --> 00:31:48,000 oye tú, 685 00:31:48,000 --> 00:31:49,000 el que diseñó esto, 686 00:31:49,000 --> 00:31:50,000 que lo diseñó 687 00:31:50,000 --> 00:31:51,000 desde la aplicación, 688 00:31:51,000 --> 00:31:52,000 pues decidió 689 00:31:52,000 --> 00:31:53,000 que le va a venir muy bien 690 00:31:53,000 --> 00:31:54,000 que en la clase punto 691 00:31:54,000 --> 00:31:55,000 haya un método, 692 00:31:55,000 --> 00:31:56,000 un método, 693 00:31:56,000 --> 00:31:57,000 porque ahora mismo 694 00:31:57,000 --> 00:31:58,000 solamente están 695 00:31:58,000 --> 00:31:59,000 las propiedades 696 00:31:59,000 --> 00:32:00,000 constructores y etcétera, 697 00:32:00,000 --> 00:32:01,000 etcétera. 698 00:32:01,000 --> 00:32:02,000 Vale. 699 00:32:02,000 --> 00:32:03,000 No hemos puesto 700 00:32:03,000 --> 00:32:04,000 métodos específicos 701 00:32:04,000 --> 00:32:05,000 para la clase. 702 00:32:05,000 --> 00:32:06,000 Dice, 703 00:32:06,000 --> 00:32:07,000 pues a ver, 704 00:32:07,000 --> 00:32:08,000 va a venir muy bien 705 00:32:08,000 --> 00:32:09,000 a las necesidades 706 00:32:09,000 --> 00:32:10,000 de mi cliente, 707 00:32:10,000 --> 00:32:11,000 le va a venir muy bien 708 00:32:11,000 --> 00:32:12,000 que yo pueda calcular 709 00:32:12,000 --> 00:32:13,000 la distancia 710 00:32:13,000 --> 00:32:14,000 entre dos puntos. 711 00:32:14,000 --> 00:32:15,000 Ahora viene estupendo. 712 00:32:15,000 --> 00:32:16,000 Hombre, 713 00:32:16,000 --> 00:32:17,000 la he de prever 714 00:32:17,000 --> 00:32:18,000 que le vaya a venir estupendo, 715 00:32:18,000 --> 00:32:19,000 porque 716 00:32:19,000 --> 00:32:20,000 la longitud 717 00:32:20,000 --> 00:32:21,000 en kilómetros 718 00:32:21,000 --> 00:32:22,000 de una trayectoria 719 00:32:23,000 --> 00:32:24,000 va a ser una suma 720 00:32:24,000 --> 00:32:25,000 de distancias. 721 00:32:25,000 --> 00:32:26,000 La suma de esta distancia 722 00:32:26,000 --> 00:32:27,000 entre estos dos, 723 00:32:27,000 --> 00:32:28,000 más la suma 724 00:32:28,000 --> 00:32:29,000 de esta distancia 725 00:32:29,000 --> 00:32:30,000 entre estos dos, 726 00:32:30,000 --> 00:32:31,000 más la suma 727 00:32:31,000 --> 00:32:32,000 de esta distancia. 728 00:32:32,000 --> 00:32:33,000 Entonces, 729 00:32:33,000 --> 00:32:34,000 el que está analizando 730 00:32:34,000 --> 00:32:35,000 la aplicación 731 00:32:35,000 --> 00:32:36,000 ha dicho, 732 00:32:36,000 --> 00:32:37,000 a ver, 733 00:32:37,000 --> 00:32:38,000 yo voy a necesitar 734 00:32:38,000 --> 00:32:39,000 poder calcular 735 00:32:39,000 --> 00:32:40,000 dado un punto 736 00:32:40,000 --> 00:32:41,000 la distancia 737 00:32:41,000 --> 00:32:42,000 que tiene respecto a otro. 738 00:32:42,000 --> 00:32:43,000 Lo voy a necesitar, 739 00:32:43,000 --> 00:32:44,000 porque si no, 740 00:32:44,000 --> 00:32:45,000 me va a venir muy bien 741 00:32:45,000 --> 00:32:46,000 la trayectoria. 742 00:32:46,000 --> 00:32:47,000 Tengo que calcular 743 00:32:47,000 --> 00:32:48,000 una suma de distancias, 744 00:32:48,000 --> 00:32:49,000 esta, más esta, 745 00:32:49,000 --> 00:32:50,000 más esta. 746 00:32:50,000 --> 00:32:51,000 Entonces, 747 00:32:51,000 --> 00:32:52,000 el que está analizando 748 00:32:52,000 --> 00:32:53,000 la aplicación 749 00:32:53,000 --> 00:32:54,000 dice, 750 00:32:54,000 --> 00:32:55,000 ah, 751 00:32:55,000 --> 00:32:56,000 me viene muy bien 752 00:32:56,000 --> 00:32:57,000 a mí en el método punto, 753 00:32:57,000 --> 00:32:58,000 el método punto 754 00:32:58,000 --> 00:32:59,000 que es el implicado 755 00:32:59,000 --> 00:33:00,000 en calcular la distancia 756 00:33:00,000 --> 00:33:01,000 de un punto con otro 757 00:33:01,000 --> 00:33:02,000 de la clase, 758 00:33:02,000 --> 00:33:03,000 perdón, 759 00:33:03,000 --> 00:33:04,000 en la clase punto, 760 00:33:04,000 --> 00:33:05,000 me viene muy bien 761 00:33:05,000 --> 00:33:06,000 un método 762 00:33:06,000 --> 00:33:07,000 al que yo le pase 763 00:33:07,000 --> 00:33:08,000 otro punto 764 00:33:08,000 --> 00:33:09,000 y me dé la distancia. 765 00:33:09,000 --> 00:33:10,000 Me va a venir estupendo. 766 00:33:10,000 --> 00:33:11,000 Cuando tenga yo 767 00:33:11,000 --> 00:33:12,000 luego que calcular trayectorias, 768 00:33:12,000 --> 00:33:13,000 hago sumas 769 00:33:13,000 --> 00:33:14,000 te dice, 770 00:33:14,000 --> 00:33:15,000 oye, 771 00:33:15,000 --> 00:33:16,000 por favor, 772 00:33:16,000 --> 00:33:17,000 programa en la clase punto 773 00:33:17,000 --> 00:33:18,000 un método 774 00:33:18,000 --> 00:33:19,000 al que le pasas 775 00:33:19,000 --> 00:33:20,000 como parámetro 776 00:33:20,000 --> 00:33:21,000 otro objeto punto 777 00:33:21,000 --> 00:33:22,000 y te devuelve la distancia 778 00:33:22,000 --> 00:33:23,000 entre ambos, 779 00:33:23,000 --> 00:33:24,000 porque nos va a venir muy bien. 780 00:33:24,000 --> 00:33:25,000 Pues venga, 781 00:33:25,000 --> 00:33:26,000 vamos a meter 782 00:33:26,000 --> 00:33:27,000 ese método 783 00:33:27,000 --> 00:33:28,000 en la clase punto. 784 00:33:28,000 --> 00:33:29,000 Vale, 785 00:33:29,000 --> 00:33:30,000 pues nos vamos 786 00:33:30,000 --> 00:33:31,000 a la clase punto 787 00:33:31,000 --> 00:33:32,000 y ahora vamos a meter 788 00:33:32,000 --> 00:33:33,000 un método. 789 00:33:33,000 --> 00:33:34,000 Este método 790 00:33:34,000 --> 00:33:35,000 obtiene la distancia 791 00:33:35,000 --> 00:33:36,000 entre dos puntos, 792 00:33:36,000 --> 00:33:37,000 ¿no? 793 00:33:37,000 --> 00:33:38,000 Pues venga, 794 00:33:38,000 --> 00:33:39,000 vamos a llamarle, 795 00:33:39,000 --> 00:33:40,000 yo qué sé, 796 00:33:41,000 --> 00:33:42,000 calcular distancia 797 00:33:42,000 --> 00:33:43,000 puntos, 798 00:33:43,000 --> 00:33:44,000 empezando con minúscula 799 00:33:44,000 --> 00:33:45,000 los nombres 800 00:33:45,000 --> 00:33:46,000 de los métodos 801 00:33:46,000 --> 00:33:47,000 preferiblemente siempre, 802 00:33:47,000 --> 00:33:48,000 recordad, 803 00:33:48,000 --> 00:33:49,000 calcular distancia. 804 00:33:49,000 --> 00:33:50,000 ¿Cómo es de este punto 805 00:33:50,000 --> 00:33:51,000 con otro? 806 00:33:51,000 --> 00:33:52,000 Pues venga, 807 00:33:52,000 --> 00:33:53,000 no es que sea muy bonito 808 00:33:53,000 --> 00:33:54,000 el nombre, 809 00:33:54,000 --> 00:33:55,000 pero vamos a llamarlo 810 00:33:55,000 --> 00:33:56,000 de este punto 811 00:33:56,000 --> 00:33:57,000 con otro, 812 00:33:57,000 --> 00:33:58,000 ¿no? 813 00:33:58,000 --> 00:33:59,000 Pues venga, 814 00:33:59,000 --> 00:34:00,000 vamos a llamarlo 815 00:34:00,000 --> 00:34:01,000 de este punto 816 00:34:01,000 --> 00:34:02,000 con otro, 817 00:34:02,000 --> 00:34:03,000 ¿no? 818 00:34:03,000 --> 00:34:04,000 Pues venga, 819 00:34:04,000 --> 00:34:05,000 vamos a llamarlo 820 00:34:05,000 --> 00:34:06,000 de este punto 821 00:34:06,000 --> 00:34:07,000 con otro, 822 00:34:07,000 --> 00:34:08,000 ¿no? 823 00:34:08,000 --> 00:34:09,000 Pues venga, 824 00:34:09,000 --> 00:34:10,000 no es que sea muy bonito 825 00:34:10,000 --> 00:34:11,000 el nombre, 826 00:34:11,000 --> 00:34:12,000 pero bueno, 827 00:34:12,000 --> 00:34:13,000 calcular distancia 828 00:34:13,000 --> 00:34:14,000 con punto. 829 00:34:14,000 --> 00:34:15,000 Entonces, 830 00:34:15,000 --> 00:34:16,000 este método 831 00:34:16,000 --> 00:34:17,000 está en la clase punto, 832 00:34:17,000 --> 00:34:18,000 luego este método 833 00:34:18,000 --> 00:34:19,000 lo va a llamar un punto, 834 00:34:19,000 --> 00:34:20,000 lo llama un punto, 835 00:34:20,000 --> 00:34:21,000 eso lo tenemos claro. 836 00:34:21,000 --> 00:34:22,000 Vale, 837 00:34:22,000 --> 00:34:23,000 pues entonces, 838 00:34:23,000 --> 00:34:24,000 como parámetro 839 00:34:24,000 --> 00:34:25,000 se pasa otro 840 00:34:25,000 --> 00:34:26,000 desde fuera, 841 00:34:26,000 --> 00:34:27,000 se pasa otro. 842 00:34:27,000 --> 00:34:28,000 Bueno, 843 00:34:28,000 --> 00:34:29,000 pues el parámetro 844 00:34:29,000 --> 00:34:30,000 que pasamos, 845 00:34:30,000 --> 00:34:31,000 ¿qué es? 846 00:34:31,000 --> 00:34:32,000 Una variable, 847 00:34:32,000 --> 00:34:33,000 pero que es de tipo punto, 848 00:34:33,000 --> 00:34:34,000 o sea, 849 00:34:34,000 --> 00:34:35,000 es una variable objeto, 850 00:34:35,000 --> 00:34:36,000 una variable objeto 851 00:34:36,000 --> 00:34:37,000 que es de tipo punto, 852 00:34:37,000 --> 00:34:38,000 igual que le podría pasar yo 853 00:34:38,000 --> 00:34:39,000 un int si lo necesitara, 854 00:34:39,000 --> 00:34:40,000 un string 855 00:34:40,000 --> 00:34:41,000 si lo necesitara, 856 00:34:41,000 --> 00:34:42,000 pues es que no necesito esto, 857 00:34:42,000 --> 00:34:43,000 lo que yo necesito 858 00:34:43,000 --> 00:34:44,000 no es esto, 859 00:34:44,000 --> 00:34:45,000 lo que yo necesito 860 00:34:45,000 --> 00:34:46,000 es una variable 861 00:34:46,000 --> 00:34:47,000 objeto 862 00:34:47,000 --> 00:34:48,000 de tipo punto, 863 00:34:48,000 --> 00:34:49,000 esto es lo que yo necesito, 864 00:34:49,000 --> 00:34:50,000 ¿vale? 865 00:34:50,000 --> 00:34:51,000 Pues se lo paso, 866 00:34:51,000 --> 00:34:52,000 ya está, 867 00:34:52,000 --> 00:34:53,000 es una variable más, 868 00:34:53,000 --> 00:34:54,000 me da igual que la variable 869 00:34:54,000 --> 00:34:55,000 sea tipo punto, 870 00:34:55,000 --> 00:34:56,000 tipo string, 871 00:34:56,000 --> 00:34:57,000 tipo int, 872 00:34:57,000 --> 00:34:58,000 es una variable, 873 00:34:58,000 --> 00:34:59,000 es una variable tipo objeto, 874 00:34:59,000 --> 00:35:00,000 pero es una variable. 875 00:35:00,000 --> 00:35:01,000 Vale, 876 00:35:01,000 --> 00:35:02,000 pues esta es la variable 877 00:35:02,000 --> 00:35:03,000 de tipo punto, 878 00:35:03,000 --> 00:35:04,000 ¿vale? 879 00:35:04,000 --> 00:35:05,000 Entonces, 880 00:35:05,000 --> 00:35:06,000 vamos a hacer 881 00:35:07,000 --> 00:35:08,000 Vale, 882 00:35:08,000 --> 00:35:09,000 pues esta es la variable 883 00:35:09,000 --> 00:35:10,000 que yo le tengo que pasar 884 00:35:10,000 --> 00:35:11,000 desde fuera 885 00:35:11,000 --> 00:35:12,000 para que el método 886 00:35:12,000 --> 00:35:13,000 calcule la distancia 887 00:35:13,000 --> 00:35:14,000 entre este punto 888 00:35:14,000 --> 00:35:15,000 y el que llama al método. 889 00:35:15,000 --> 00:35:16,000 Aquí habrá que calcular 890 00:35:16,000 --> 00:35:17,000 esa distancia. 891 00:35:18,000 --> 00:35:19,000 Antes de seguir 892 00:35:19,000 --> 00:35:20,000 nos planteamos, 893 00:35:20,000 --> 00:35:21,000 vale, 894 00:35:21,000 --> 00:35:22,000 este método queda 895 00:35:22,000 --> 00:35:23,000 doble el cobrador de retorno, 896 00:35:23,000 --> 00:35:24,000 una distancia entre puntos. 897 00:35:24,000 --> 00:35:25,000 Esa distancia, 898 00:35:25,000 --> 00:35:26,000 una distancia, 899 00:35:26,000 --> 00:35:27,000 pues la forma 900 00:35:27,000 --> 00:35:28,000 de recogerla 901 00:35:28,000 --> 00:35:29,000 más genérica 902 00:35:29,000 --> 00:35:30,000 es un número real, 903 00:35:30,000 --> 00:35:31,000 ¿no? 904 00:35:31,000 --> 00:35:32,000 Un número decimal. 905 00:35:32,000 --> 00:35:33,000 Pues venga, 906 00:35:33,000 --> 00:35:34,000 que me devuelva un valor. 907 00:35:34,000 --> 00:35:35,000 ¡Hala! 908 00:35:37,000 --> 00:35:38,000 Y ahora ya, 909 00:35:38,000 --> 00:35:39,000 llegados aquí 910 00:35:39,000 --> 00:35:40,000 dentro de, 911 00:35:40,000 --> 00:35:41,000 aquí dentro de este método, 912 00:35:42,000 --> 00:35:43,000 ahora ya tenemos aquí 913 00:35:43,000 --> 00:35:44,000 dos objetos puntos 914 00:35:44,000 --> 00:35:45,000 involucrados, 915 00:35:45,000 --> 00:35:46,000 involucrados. 916 00:35:50,000 --> 00:35:51,000 Lo voy a poner aquí. 917 00:35:56,000 --> 00:35:57,000 El método este, 918 00:35:57,000 --> 00:35:58,000 ¿qué tiene que hacer? 919 00:35:58,000 --> 00:35:59,000 Tiene que calcular 920 00:35:59,000 --> 00:36:00,000 la distancia. 921 00:36:04,000 --> 00:36:07,000 Entre el objeto punto 922 00:36:07,000 --> 00:36:09,000 que llama al método, 923 00:36:18,000 --> 00:36:20,000 el objeto punto 924 00:36:20,000 --> 00:36:21,000 que llama al método, 925 00:36:25,000 --> 00:36:29,000 y el objeto punto 926 00:36:29,000 --> 00:36:30,000 pasado como parámetro. 927 00:36:35,000 --> 00:36:40,000 El objeto punto 928 00:36:40,000 --> 00:36:41,000 pasado como parámetro, 929 00:36:41,000 --> 00:36:42,000 ya sabemos cuál es. 930 00:36:42,000 --> 00:36:43,000 Es este. 931 00:36:43,000 --> 00:36:44,000 Este es el objeto punto 932 00:36:44,000 --> 00:36:45,000 pasado como parámetro. 933 00:36:45,000 --> 00:36:46,000 Lo pongo aquí dentro. 934 00:36:46,000 --> 00:36:47,000 Este es la referencia. 935 00:36:48,000 --> 00:36:49,000 Esta es la referencia 936 00:36:49,000 --> 00:36:50,000 del objeto punto 937 00:36:50,000 --> 00:36:51,000 pasado como parámetro. 938 00:36:52,000 --> 00:36:53,000 Pero el objeto punto 939 00:36:53,000 --> 00:36:54,000 que llama al método, 940 00:36:54,000 --> 00:36:56,000 ¿ese quién es? 941 00:36:57,000 --> 00:36:58,000 ¿Quién es ese? 942 00:36:58,000 --> 00:36:59,000 ¿Eh? 943 00:37:01,000 --> 00:37:02,000 El objeto entero, 944 00:37:02,000 --> 00:37:03,000 ¿quién es? 945 00:37:05,000 --> 00:37:06,000 No, no, no. 946 00:37:06,000 --> 00:37:07,000 El objeto punto 947 00:37:07,000 --> 00:37:08,000 que llama al método. 948 00:37:08,000 --> 00:37:10,000 X, Y son sus propiedades, 949 00:37:10,000 --> 00:37:11,000 pero el objeto entero en sí, 950 00:37:11,000 --> 00:37:12,000 ¿cómo puedo acceder yo 951 00:37:12,000 --> 00:37:14,000 al objeto en el que estoy? 952 00:37:19,000 --> 00:37:21,000 Sí, pero aquí estoy en la... 953 00:37:21,000 --> 00:37:22,000 aquí todavía no hay 954 00:37:22,000 --> 00:37:23,000 ningún objeto creado. 955 00:37:23,000 --> 00:37:24,000 Aquí estoy declarando 956 00:37:24,000 --> 00:37:25,000 un método en general 957 00:37:25,000 --> 00:37:26,000 y quiero decir, 958 00:37:26,000 --> 00:37:27,000 el objeto que llame 959 00:37:27,000 --> 00:37:28,000 a este método, 960 00:37:28,000 --> 00:37:29,000 cuando teníamos que 961 00:37:29,000 --> 00:37:30,000 referirnos a S en general, 962 00:37:30,000 --> 00:37:31,000 el objeto que llama 963 00:37:31,000 --> 00:37:32,000 a este método, 964 00:37:32,000 --> 00:37:33,000 ¿qué término usábamos? 965 00:37:33,000 --> 00:37:34,000 Dis. 966 00:37:35,000 --> 00:37:36,000 ¿Vale? 967 00:37:36,000 --> 00:37:37,000 Ahí la importancia del dis. 968 00:37:37,000 --> 00:37:38,000 Yo tengo que poder 969 00:37:38,000 --> 00:37:39,000 desde un método 970 00:37:39,000 --> 00:37:40,000 referirme el objeto 971 00:37:40,000 --> 00:37:41,000 que llame a este método, 972 00:37:41,000 --> 00:37:42,000 que no sé quién será, 973 00:37:42,000 --> 00:37:43,000 cuando yo tenga un main, 974 00:37:43,000 --> 00:37:44,000 ya veré cuál es, 975 00:37:44,000 --> 00:37:45,000 si es P1, si es P2, 976 00:37:45,000 --> 00:37:46,000 si es P7, 977 00:37:46,000 --> 00:37:47,000 ya veré. 978 00:37:47,000 --> 00:37:48,000 Ahora mismo 979 00:37:48,000 --> 00:37:49,000 lo único que tengo 980 00:37:49,000 --> 00:37:50,000 es un método que me dice, 981 00:37:50,000 --> 00:37:51,000 cuando un objeto 982 00:37:51,000 --> 00:37:52,000 llame a este método, 983 00:37:52,000 --> 00:37:53,000 hará eso. 984 00:37:53,000 --> 00:37:54,000 ¿Y cómo puedo yo 985 00:37:54,000 --> 00:37:55,000 referirme desde aquí 986 00:37:55,000 --> 00:37:56,000 al objeto que llame 987 00:37:56,000 --> 00:37:57,000 a este método? 988 00:37:57,000 --> 00:37:58,000 Pues efectivamente, 989 00:37:58,000 --> 00:37:59,000 dis, 990 00:37:59,000 --> 00:38:00,000 para esto servía. 991 00:38:00,000 --> 00:38:01,000 Para referirme 992 00:38:01,000 --> 00:38:02,000 al objeto 993 00:38:02,000 --> 00:38:03,000 que llama 994 00:38:03,000 --> 00:38:04,000 a este método, 995 00:38:04,000 --> 00:38:05,000 y el objeto 996 00:38:05,000 --> 00:38:06,000 que llama 997 00:38:06,000 --> 00:38:07,000 a este método, 998 00:38:07,000 --> 00:38:08,000 tendrá sus propiedades 999 00:38:08,000 --> 00:38:09,000 dis.x 1000 00:38:09,000 --> 00:38:10,000 y dis.y. 1001 00:38:10,000 --> 00:38:11,000 Y el objeto 1002 00:38:11,000 --> 00:38:12,000 punto pasado 1003 00:38:12,000 --> 00:38:13,000 como parámetro 1004 00:38:13,000 --> 00:38:14,000 tiene punto, 1005 00:38:14,000 --> 00:38:15,000 punto, 1006 00:38:15,000 --> 00:38:16,000 punto x 1007 00:38:16,000 --> 00:38:17,000 y punto y. 1008 00:38:17,000 --> 00:38:18,000 Son dos objetos distintos. 1009 00:38:18,000 --> 00:38:19,000 Tengo 1010 00:38:19,000 --> 00:38:20,000 el objeto 1011 00:38:20,000 --> 00:38:21,000 que llama al método, 1012 00:38:21,000 --> 00:38:22,000 que es este, 1013 00:38:22,000 --> 00:38:23,000 y el objeto 1014 00:38:23,000 --> 00:38:24,000 pasado como parámetro, 1015 00:38:24,000 --> 00:38:25,000 que es este otro, 1016 00:38:25,000 --> 00:38:26,000 y ambos son 1017 00:38:26,000 --> 00:38:27,000 objetos de tipo punto. 1018 00:38:27,000 --> 00:38:28,000 Y ahora 1019 00:38:28,000 --> 00:38:29,000 lo que tengo que hacer 1020 00:38:29,000 --> 00:38:30,000 es calcular 1021 00:38:30,000 --> 00:38:31,000 la distancia 1022 00:38:31,000 --> 00:38:32,000 entre ellos. 1023 00:38:32,000 --> 00:38:33,000 ¿Vale? 1024 00:38:33,000 --> 00:38:34,000 Claro, 1025 00:38:34,000 --> 00:38:35,000 ahora entonces 1026 00:38:35,000 --> 00:38:36,000 tendría que irme 1027 00:38:36,000 --> 00:38:37,000 a las matemáticas 1028 00:38:37,000 --> 00:38:38,000 y decir, 1029 00:38:38,000 --> 00:38:39,000 si yo tengo 1030 00:38:39,000 --> 00:38:40,000 un punto de coordenadas 1031 00:38:40,000 --> 00:38:41,000 x e y, 1032 00:38:41,000 --> 00:38:42,000 otro punto de coordenadas 1033 00:38:42,000 --> 00:38:43,000 x e y, 1034 00:38:43,000 --> 00:38:44,000 ¿cómo calculo 1035 00:38:44,000 --> 00:38:45,000 la distancia? 1036 00:38:45,000 --> 00:38:46,000 Bueno, 1037 00:38:46,000 --> 00:38:47,000 pues eso 1038 00:38:47,000 --> 00:38:48,000 en topología 1039 00:38:48,000 --> 00:38:49,000 ya está resuelto. 1040 00:38:49,000 --> 00:38:50,000 Y es 1041 00:38:50,000 --> 00:38:51,000 esta formulita. 1042 00:38:51,000 --> 00:38:52,000 Si estas son 1043 00:38:52,000 --> 00:38:53,000 las coordenadas 1044 00:38:53,000 --> 00:38:54,000 del primer punto 1045 00:38:54,000 --> 00:38:55,000 y estas son 1046 00:38:55,000 --> 00:38:56,000 las del segundo punto, 1047 00:38:56,000 --> 00:38:57,000 la distancia 1048 00:38:57,000 --> 00:38:58,000 es 1049 00:38:58,000 --> 00:38:59,000 la raíz 1050 00:38:59,000 --> 00:39:00,000 de esto. 1051 00:39:00,000 --> 00:39:01,000 ¿Vale? 1052 00:39:01,000 --> 00:39:02,000 Pues entonces 1053 00:39:02,000 --> 00:39:03,000 aquí 1054 00:39:03,000 --> 00:39:04,000 ¿cuáles son 1055 00:39:04,000 --> 00:39:05,000 las coordenadas 1056 00:39:05,000 --> 00:39:06,000 involucradas? 1057 00:39:06,000 --> 00:39:07,000 Las coordenadas 1058 00:39:07,000 --> 00:39:08,000 del primer punto, 1059 00:39:08,000 --> 00:39:09,000 es decir, 1060 00:39:09,000 --> 00:39:10,000 del punto 1061 00:39:10,000 --> 00:39:11,000 que llama 1062 00:39:11,000 --> 00:39:12,000 al método, 1063 00:39:12,000 --> 00:39:13,000 ¿cuáles serán? 1064 00:39:13,000 --> 00:39:14,000 Serán 1065 00:39:14,000 --> 00:39:15,000 dis.x 1066 00:39:15,000 --> 00:39:16,000 y 1067 00:39:16,000 --> 00:39:17,000 dis.y. 1068 00:39:17,000 --> 00:39:18,000 Esas son 1069 00:39:18,000 --> 00:39:19,000 las coordenadas 1070 00:39:19,000 --> 00:39:20,000 del punto 1071 00:39:20,000 --> 00:39:21,000 que llama 1072 00:39:21,000 --> 00:39:22,000 al método. 1073 00:39:22,000 --> 00:39:23,000 ¿Y cuáles son 1074 00:39:23,000 --> 00:39:24,000 las coordenadas 1075 00:39:24,000 --> 00:39:25,000 del parámetro? 1076 00:39:25,000 --> 00:39:26,000 Coordinadas 1077 00:39:26,000 --> 00:39:27,000 del parámetro 1078 00:39:27,000 --> 00:39:28,000 son 1079 00:39:28,000 --> 00:39:29,000 las coordenadas 1080 00:39:29,000 --> 00:39:30,000 del parámetro 1081 00:39:30,000 --> 00:39:31,000 punto. 1082 00:39:31,000 --> 00:39:32,000 El parámetro 1083 00:39:32,000 --> 00:39:33,000 pasado. 1084 00:39:33,000 --> 00:39:34,000 Las coordenadas 1085 00:39:34,000 --> 00:39:35,000 de este parámetro 1086 00:39:35,000 --> 00:39:36,000 pasado, 1087 00:39:36,000 --> 00:39:37,000 punto, 1088 00:39:37,000 --> 00:39:38,000 son 1089 00:39:38,000 --> 00:39:39,000 punto.x 1090 00:39:39,000 --> 00:39:40,000 y 1091 00:39:40,000 --> 00:39:41,000 punto.y. 1092 00:39:41,000 --> 00:39:42,000 Serían 1093 00:39:42,000 --> 00:39:43,000 esas. 1094 00:39:43,000 --> 00:39:44,000 Para que lo 1095 00:39:44,000 --> 00:39:45,000 entendamos, 1096 00:39:45,000 --> 00:39:46,000 ¿no? 1097 00:39:46,000 --> 00:39:47,000 Y ahora 1098 00:39:47,000 --> 00:39:48,000 tengo que meter 1099 00:39:48,000 --> 00:39:49,000 eso en la 1100 00:39:49,000 --> 00:39:50,000 fórmula. 1101 00:39:50,000 --> 00:39:51,000 Hasta 1102 00:39:51,000 --> 00:39:52,000 aquí 1103 00:39:52,000 --> 00:39:53,000 está claro. 1104 00:39:53,000 --> 00:39:54,000 Pues tengo 1105 00:39:54,000 --> 00:39:55,000 dos puntos 1106 00:39:55,000 --> 00:39:56,000 involucrados. 1107 00:39:56,000 --> 00:39:57,000 El punto dis, 1108 00:39:57,000 --> 00:39:58,000 que es el que 1109 00:39:58,000 --> 00:39:59,000 yo paso como 1110 00:39:59,000 --> 00:40:00,000 parámetro. 1111 00:40:00,000 --> 00:40:01,000 Pero luego 1112 00:40:01,000 --> 00:40:02,000 en el main 1113 00:40:02,000 --> 00:40:03,000 ya veremos 1114 00:40:03,000 --> 00:40:04,000 cuál es. 1115 00:40:04,000 --> 00:40:05,000 Ahora estamos 1116 00:40:05,000 --> 00:40:06,000 en el main. 1117 00:40:06,000 --> 00:40:07,000 Y el punto 1118 00:40:07,000 --> 00:40:08,000 que yo paso 1119 00:40:08,000 --> 00:40:09,000 como parámetro, 1120 00:40:09,000 --> 00:40:10,000 ese. 1121 00:40:10,000 --> 00:40:11,000 Vale, 1122 00:40:11,000 --> 00:40:12,000 pues si 1123 00:40:12,000 --> 00:40:13,000 yo hago 1124 00:40:13,000 --> 00:40:14,000 la fórmula 1125 00:40:14,000 --> 00:40:15,000 de esto 1126 00:40:15,000 --> 00:40:16,000 de aquí, 1127 00:40:16,000 --> 00:40:17,000 voy a poner 1128 00:40:17,000 --> 00:40:18,000 la 1129 00:40:18,000 --> 00:40:19,000 formulita 1130 00:40:19,000 --> 00:40:20,000 que sería 1131 00:40:20,000 --> 00:40:21,000 dis.x 1132 00:40:21,000 --> 00:40:22,000 menos 1133 00:40:22,000 --> 00:40:23,000 punto.x 1134 00:40:23,000 --> 00:40:24,000 y esto 1135 00:40:24,000 --> 00:40:25,000 al cuadrado 1136 00:40:25,000 --> 00:40:26,000 y elevar 1137 00:40:26,000 --> 00:40:27,000 al cuadrado 1138 00:40:27,000 --> 00:40:28,000 dos veces. 1139 00:40:28,000 --> 00:40:29,000 Esto sería 1140 00:40:29,000 --> 00:40:30,000 el x1 1141 00:40:30,000 --> 00:40:31,000 menos 1142 00:40:31,000 --> 00:40:32,000 y1, 1143 00:40:32,000 --> 00:40:33,000 perdón, 1144 00:40:33,000 --> 00:40:34,000 el x1 1145 00:40:34,000 --> 00:40:35,000 menos 1146 00:40:35,000 --> 00:40:36,000 x2 1147 00:40:36,000 --> 00:40:37,000 al cuadrado 1148 00:40:37,000 --> 00:40:38,000 sería esto 1149 00:40:38,000 --> 00:40:39,000 primero. 1150 00:40:39,000 --> 00:40:40,000 Y el 1151 00:40:40,000 --> 00:40:41,000 y1 1152 00:40:41,000 --> 00:40:42,000 menos 1153 00:40:42,000 --> 00:40:43,000 y2 1154 00:40:43,000 --> 00:40:44,000 al cuadrado 1155 00:40:44,000 --> 00:40:45,000 sería 1156 00:40:45,000 --> 00:40:46,000 más 1157 00:40:46,000 --> 00:40:47,000 esto 1158 00:40:47,000 --> 00:40:48,000 pero con la 1159 00:40:48,000 --> 00:40:49,000 y. 1160 00:40:49,000 --> 00:40:50,000 Vale. 1161 00:40:51,000 --> 00:40:52,000 Y ahora sería 1162 00:40:52,000 --> 00:40:53,000 la raíz 1163 00:40:53,000 --> 00:40:54,000 de todo esto. 1164 00:40:54,000 --> 00:40:55,000 Con esto he hecho 1165 00:40:55,000 --> 00:40:56,000 el x1 1166 00:40:56,000 --> 00:40:57,000 menos x2 1167 00:40:57,000 --> 00:40:58,000 al cuadrado 1168 00:40:58,000 --> 00:40:59,000 más 1169 00:40:59,000 --> 00:41:00,000 y1 1170 00:41:00,000 --> 00:41:01,000 menos y2 1171 00:41:01,000 --> 00:41:02,000 al cuadrado. 1172 00:41:02,000 --> 00:41:03,000 Pero tengo que hacer 1173 00:41:03,000 --> 00:41:04,000 la raíz cuadrada 1174 00:41:04,000 --> 00:41:05,000 de esto. 1175 00:41:05,000 --> 00:41:06,000 La raíz cuadrada 1176 00:41:06,000 --> 00:41:07,000 en Java, 1177 00:41:07,000 --> 00:41:08,000 ¿cómo la hacemos? 1178 00:41:08,000 --> 00:41:09,000 ¿Tenemos que programar 1179 00:41:09,000 --> 00:41:10,000 algoritmos 1180 00:41:10,000 --> 00:41:11,000 en la raíz cuadrada? 1181 00:41:11,000 --> 00:41:12,000 Pues no. 1182 00:41:12,000 --> 00:41:13,000 Afortunadamente 1183 00:41:13,000 --> 00:41:14,000 tenemos un 1184 00:41:14,000 --> 00:41:15,000 algoritmo 1185 00:41:15,000 --> 00:41:16,000 que se llama 1186 00:41:16,000 --> 00:41:17,000 x1 1187 00:41:17,000 --> 00:41:18,000 menos x2 1188 00:41:18,000 --> 00:41:19,000 al cuadrado 1189 00:41:19,000 --> 00:41:20,000 pero afortunadamente 1190 00:41:20,000 --> 00:41:21,000 tenemos un método 1191 00:41:21,000 --> 00:41:22,000 que nos lo ha hecho. 1192 00:41:22,000 --> 00:41:23,000 ¿Os acordáis 1193 00:41:23,000 --> 00:41:24,000 cuando queríamos crear 1194 00:41:24,000 --> 00:41:25,000 un numeratorio 1195 00:41:25,000 --> 00:41:26,000 que usábamos 1196 00:41:26,000 --> 00:41:27,000 el math.random? 1197 00:41:27,000 --> 00:41:28,000 Pues aparte 1198 00:41:28,000 --> 00:41:29,000 del math.random 1199 00:41:29,000 --> 00:41:30,000 tenemos math. 1200 00:41:30,000 --> 00:41:31,000 Un montón de cosas 1201 00:41:31,000 --> 00:41:32,000 para hacer cosas 1202 00:41:32,000 --> 00:41:33,000 matemáticas. 1203 00:41:33,000 --> 00:41:34,000 Entre ellas 1204 00:41:34,000 --> 00:41:35,000 la raíz cuadrada. 1205 00:41:35,000 --> 00:41:36,000 Entonces si yo 1206 00:41:36,000 --> 00:41:37,000 paso todo esto 1207 00:41:37,000 --> 00:41:38,000 a esto de aquí 1208 00:41:38,000 --> 00:41:39,000 math.sqrt 1209 00:41:39,000 --> 00:41:40,000 y le paso 1210 00:41:40,000 --> 00:41:41,000 como parámetro 1211 00:41:41,000 --> 00:41:42,000 todo esto 1212 00:41:42,000 --> 00:41:43,000 que he hecho 1213 00:41:43,000 --> 00:41:44,000 ahí 1214 00:41:44,000 --> 00:41:45,000 y ahí 1215 00:41:45,000 --> 00:41:46,000 y aquí 1216 00:41:46,000 --> 00:41:47,000 y aquí 1217 00:41:47,000 --> 00:41:48,000 y aquí 1218 00:41:48,000 --> 00:41:49,000 y ahí 1219 00:41:51,000 --> 00:41:52,000 Pues esto 1220 00:41:52,000 --> 00:41:53,000 ya sería 1221 00:41:55,000 --> 00:41:56,000 Espera que aquí 1222 00:41:56,000 --> 00:41:57,000 estoy poniendo 1223 00:41:57,000 --> 00:41:58,000 this as a repository 1224 00:41:58,000 --> 00:41:59,000 vale 1225 00:42:01,000 --> 00:42:02,000 double 1226 00:42:03,000 --> 00:42:04,000 result 1227 00:42:08,000 --> 00:42:09,000 igual a esto 1228 00:42:10,000 --> 00:42:11,000 result 1229 00:42:12,000 --> 00:42:13,000 y ahora 1230 00:42:13,000 --> 00:42:14,000 esta sería 1231 00:42:14,000 --> 00:42:15,000 esta fórmula matemática 1232 00:42:15,000 --> 00:42:16,000 esta fórmula 1233 00:42:17,000 --> 00:42:18,000 siendo x1 1234 00:42:18,000 --> 00:42:19,000 la coordenada x 1235 00:42:19,000 --> 00:42:20,000 de this 1236 00:42:20,000 --> 00:42:21,000 y siendo x2 1237 00:42:21,000 --> 00:42:22,000 la coordenada x 1238 00:42:22,000 --> 00:42:23,000 de punto 1239 00:42:23,000 --> 00:42:24,000 y esto sería 1240 00:42:24,000 --> 00:42:25,000 la coordenada y 1241 00:42:25,000 --> 00:42:26,000 de this 1242 00:42:26,000 --> 00:42:27,000 y esto sería 1243 00:42:27,000 --> 00:42:28,000 la coordenada y 1244 00:42:28,000 --> 00:42:29,000 de punto del otro 1245 00:42:29,000 --> 00:42:30,000 Pues esta misma fórmula 1246 00:42:30,000 --> 00:42:31,000 esta misma fórmula 1247 00:42:31,000 --> 00:42:32,000 es esto que yo 1248 00:42:32,000 --> 00:42:33,000 he escrito aquí 1249 00:42:33,000 --> 00:42:34,000 la raíz cuadrada 1250 00:42:34,000 --> 00:42:35,000 de esto al cuadrado 1251 00:42:35,000 --> 00:42:36,000 más esto al cuadrado 1252 00:42:38,000 --> 00:42:39,000 vale 1253 00:42:39,000 --> 00:42:40,000 y ahora ya 1254 00:42:40,000 --> 00:42:41,000 el método 1255 00:42:41,000 --> 00:42:42,000 tiene que devolver 1256 00:42:42,000 --> 00:42:43,000 esto como valor 1257 00:42:43,000 --> 00:42:44,000 de retorno 1258 00:42:44,000 --> 00:42:45,000 porque el método 1259 00:42:45,000 --> 00:42:46,000 ya está en la referencia 1260 00:42:50,000 --> 00:42:51,000 método 1261 00:42:51,000 --> 00:42:52,000 result 1262 00:42:52,000 --> 00:42:53,000 ala 1263 00:42:55,000 --> 00:42:56,000 el método ya estaría 1264 00:43:00,000 --> 00:43:01,000 vale 1265 00:43:01,000 --> 00:43:02,000 pues aquí 1266 00:43:02,000 --> 00:43:03,000 lo importante 1267 00:43:03,000 --> 00:43:04,000 de hacer de este método 1268 00:43:04,000 --> 00:43:05,000 cuál era mi objetivo 1269 00:43:06,000 --> 00:43:07,000 pues que 1270 00:43:08,000 --> 00:43:09,000 doble 1271 00:43:10,000 --> 00:43:11,000 primero 1272 00:43:11,000 --> 00:43:12,000 que veáis 1273 00:43:12,000 --> 00:43:13,000 que quede claro 1274 00:43:13,000 --> 00:43:14,000 que las variables 1275 00:43:14,000 --> 00:43:15,000 objetos 1276 00:43:15,000 --> 00:43:16,000 son como cualquier 1277 00:43:16,000 --> 00:43:17,000 otra variable 1278 00:43:18,000 --> 00:43:19,000 e igual que puedo 1279 00:43:19,000 --> 00:43:20,000 pasar por parámetro 1280 00:43:20,000 --> 00:43:21,000 números enteros 1281 00:43:21,000 --> 00:43:22,000 números double 1282 00:43:22,000 --> 00:43:23,000 claro que puedo pasar 1283 00:43:23,000 --> 00:43:24,000 por parámetro 1284 00:43:24,000 --> 00:43:25,000 cosas que sean objetos 1285 00:43:25,000 --> 00:43:26,000 porque son variables 1286 00:43:26,000 --> 00:43:27,000 como otras cualquiera 1287 00:43:27,000 --> 00:43:28,000 lo que pasa 1288 00:43:28,000 --> 00:43:29,000 es que una variable 1289 00:43:29,000 --> 00:43:30,000 objeto 1290 00:43:30,000 --> 00:43:31,000 sus datos 1291 00:43:31,000 --> 00:43:32,000 están a su vez 1292 00:43:32,000 --> 00:43:33,000 en propiedades 1293 00:43:33,000 --> 00:43:34,000 porque la variable 1294 00:43:34,000 --> 00:43:35,000 objeto en si 1295 00:43:35,000 --> 00:43:36,000 es una dirección 1296 00:43:36,000 --> 00:43:37,000 de memoria 1297 00:43:37,000 --> 00:43:38,000 no lo olvidéis nunca 1298 00:43:38,000 --> 00:43:39,000 que punto 1299 00:43:39,000 --> 00:43:40,000 en realidad 1300 00:43:40,000 --> 00:43:41,000 punto a secas 1301 00:43:41,000 --> 00:43:42,000 punto a palo seco 1302 00:43:42,000 --> 00:43:43,000 es una dirección 1303 00:43:43,000 --> 00:43:44,000 si yo hago un system 1304 00:43:44,000 --> 00:43:45,000 println punto 1305 00:43:45,000 --> 00:43:46,000 me sale una cosa rara 1306 00:43:46,000 --> 00:43:47,000 que no entiendo 1307 00:43:47,000 --> 00:43:48,000 claro 1308 00:43:48,000 --> 00:43:49,000 es que una variable 1309 00:43:49,000 --> 00:43:50,000 objeto 1310 00:43:50,000 --> 00:43:51,000 su información 1311 00:43:51,000 --> 00:43:52,000 está guardada 1312 00:43:52,000 --> 00:43:53,000 en propiedades 1313 00:43:53,000 --> 00:43:54,000 está guardada 1314 00:43:54,000 --> 00:43:55,000 en casillitas 1315 00:43:55,000 --> 00:43:56,000 y cada casillita 1316 00:43:56,000 --> 00:43:57,000 tiene su nombre 1317 00:43:57,000 --> 00:43:58,000 en este caso 1318 00:43:58,000 --> 00:43:59,000 pues claro 1319 00:43:59,000 --> 00:44:00,000 punto tiene 1320 00:44:00,000 --> 00:44:01,000 su casillita 1321 00:44:01,000 --> 00:44:02,000 i 1322 00:44:02,000 --> 00:44:03,000 y punto 1323 00:44:03,000 --> 00:44:04,000 tiene 1324 00:44:04,000 --> 00:44:05,000 su casillita 1325 00:44:05,000 --> 00:44:06,000 x 1326 00:44:06,000 --> 00:44:07,000 yo no accedo 1327 00:44:07,000 --> 00:44:08,000 a punto tal cual 1328 00:44:08,000 --> 00:44:09,000 porque punto 1329 00:44:09,000 --> 00:44:10,000 es un objeto 1330 00:44:10,000 --> 00:44:11,000 sino accedo 1331 00:44:11,000 --> 00:44:12,000 a sus propiedades 1332 00:44:12,000 --> 00:44:13,000 entonces 1333 00:44:13,000 --> 00:44:14,000 es su primer objetivo 1334 00:44:14,000 --> 00:44:15,000 que empecéis a ver 1335 00:44:15,000 --> 00:44:16,000 las variables 1336 00:44:16,000 --> 00:44:17,000 objeto 1337 00:44:17,000 --> 00:44:18,000 como cualquier 1338 00:44:18,000 --> 00:44:19,000 otra variable 1339 00:44:19,000 --> 00:44:20,000 que puedo pasar 1340 00:44:20,000 --> 00:44:21,000 por parámetro 1341 00:44:21,000 --> 00:44:22,000 que puedo devolver 1342 00:44:22,000 --> 00:44:23,000 como valor de retorno 1343 00:44:23,000 --> 00:44:24,000 en un método 1344 00:44:24,000 --> 00:44:25,000 lo que sea 1345 00:44:25,000 --> 00:44:26,000 pero claro 1346 00:44:26,000 --> 00:44:27,000 su peculiaridad 1347 00:44:27,000 --> 00:44:28,000 es esa 1348 00:44:28,000 --> 00:44:29,000 que en realidad 1349 00:44:29,000 --> 00:44:30,000 accedemos 1350 00:44:30,000 --> 00:44:31,000 a las propiedades 1351 00:44:31,000 --> 00:44:32,000 de esas variables 1352 00:44:32,000 --> 00:44:33,000 no a la variable 1353 00:44:33,000 --> 00:44:34,000 sin más 1354 00:44:34,000 --> 00:44:35,000 no como cuando 1355 00:44:35,000 --> 00:44:36,000 declaramos 1356 00:44:36,000 --> 00:44:37,000 int n 1357 00:44:37,000 --> 00:44:38,000 accedemos a n 1358 00:44:38,000 --> 00:44:39,000 tal cual 1359 00:44:39,000 --> 00:44:40,000 n igual a 7 1360 00:44:40,000 --> 00:44:41,000 cuando declaramos 1361 00:44:41,000 --> 00:44:42,000 p punto x 1362 00:44:42,000 --> 00:44:43,000 p punto y 1363 00:44:43,000 --> 00:44:44,000 ¿vale? 1364 00:44:44,000 --> 00:44:45,000 Esa es la primera cosa 1365 00:44:45,000 --> 00:44:46,000 que quería dejar clara 1366 00:44:46,000 --> 00:44:47,000 con este método 1367 00:44:47,000 --> 00:44:48,000 y segunda 1368 00:44:48,000 --> 00:44:49,000 segunda 1369 00:44:49,000 --> 00:44:50,000 pues que 1370 00:44:50,000 --> 00:44:51,000 reviséis 1371 00:44:51,000 --> 00:44:52,000 el concepto 1372 00:44:52,000 --> 00:44:53,000 de this 1373 00:44:53,000 --> 00:44:54,000 el significado 1374 00:44:54,000 --> 00:44:55,000 de this 1375 00:44:55,000 --> 00:44:56,000 que es fundamental 1376 00:44:56,000 --> 00:44:57,000 claro 1377 00:44:57,000 --> 00:44:58,000 ya lo hemos usado 1378 00:44:58,000 --> 00:44:59,000 cuando teníamos 1379 00:44:59,000 --> 00:45:00,000 que distinguir 1380 00:45:00,000 --> 00:45:01,000 nombres de variables 1381 00:45:01,000 --> 00:45:02,000 this 1382 00:45:02,000 --> 00:45:03,000 en una clase 1383 00:45:03,000 --> 00:45:04,000 se refiere siempre 1384 00:45:04,000 --> 00:45:05,000 al objeto 1385 00:45:05,000 --> 00:45:06,000 que está llamando 1386 00:45:06,000 --> 00:45:07,000 a este método 1387 00:45:07,000 --> 00:45:08,000 que es 1388 00:45:08,000 --> 00:45:09,000 el objeto 1389 00:45:09,000 --> 00:45:10,000 que está llamando 1390 00:45:10,000 --> 00:45:11,000 a este método 1391 00:45:11,000 --> 00:45:12,000 el objeto 1392 00:45:12,000 --> 00:45:13,000 en el que estoy 1393 00:45:13,000 --> 00:45:14,000 se refiere 1394 00:45:14,000 --> 00:45:15,000 al objeto 1395 00:45:15,000 --> 00:45:16,000 que se lo está llamando 1396 00:45:16,000 --> 00:45:17,000 y yo aquí 1397 00:45:17,000 --> 00:45:18,000 lo necesitaba 1398 00:45:18,000 --> 00:45:19,000 lo necesito 1399 00:45:19,000 --> 00:45:20,000 porque quiero 1400 00:45:20,000 --> 00:45:21,000 calcular la distancia 1401 00:45:21,000 --> 00:45:22,000 entre 1402 00:45:22,000 --> 00:45:23,000 el punto 1403 00:45:23,000 --> 00:45:24,000 que llama 1404 00:45:24,000 --> 00:45:25,000 al método 1405 00:45:25,000 --> 00:45:26,000 y el que llama 1406 00:45:26,000 --> 00:45:27,000 al método 1407 00:45:27,000 --> 00:45:28,000 es el objeto 1408 00:45:28,000 --> 00:45:29,000 en el que estoy 1409 00:45:29,000 --> 00:45:30,000 que es this 1410 00:45:30,000 --> 00:45:31,000 y este 1411 00:45:31,000 --> 00:45:32,000 ¿vale? 1412 00:45:32,000 --> 00:45:33,000 Ahora hay otra cosa 1413 00:45:33,000 --> 00:45:34,000 y con esto paramos 1414 00:45:34,000 --> 00:45:35,000 es que recordéis 1415 00:45:35,000 --> 00:45:36,000 que el this 1416 00:45:36,000 --> 00:45:37,000 cuando no hay ambigüedad 1417 00:45:37,000 --> 00:45:38,000 era opcional 1418 00:45:38,000 --> 00:45:39,000 acordaos 1419 00:45:39,000 --> 00:45:40,000 que lo hemos 1420 00:45:40,000 --> 00:45:41,000 ya lo hemos dicho 1421 00:45:41,000 --> 00:45:42,000 varias veces 1422 00:45:42,000 --> 00:45:43,000 entonces 1423 00:45:43,000 --> 00:45:44,000 cuando 1424 00:45:44,000 --> 00:45:45,000 si yo quito el this 1425 00:45:45,000 --> 00:45:46,000 y dejo x 1426 00:45:46,000 --> 00:45:47,000 a palo seco 1427 00:45:47,000 --> 00:45:49,000 aquí no va a pasar nada 1428 00:45:49,000 --> 00:45:51,000 porque x 1429 00:45:51,000 --> 00:45:53,000 solo tiene 1430 00:45:53,000 --> 00:45:54,000 solo tiene 1431 00:45:54,000 --> 00:45:56,000 una declaración 1432 00:45:56,000 --> 00:45:57,000 que es esta 1433 00:45:57,000 --> 00:45:58,000 la propiedad x de aquí 1434 00:45:58,000 --> 00:45:59,000 solo tiene esa 1435 00:45:59,000 --> 00:46:00,000 solo tiene esa 1436 00:46:00,000 --> 00:46:01,000 no tiene otra 1437 00:46:01,000 --> 00:46:03,000 entonces yo podría quitar el this 1438 00:46:03,000 --> 00:46:04,000 y sería lo mismo 1439 00:46:04,000 --> 00:46:05,000 me seguiría refiriendo 1440 00:46:05,000 --> 00:46:06,000 a la propiedad x 1441 00:46:06,000 --> 00:46:07,000 del objeto este 1442 00:46:07,000 --> 00:46:08,000 en el que estoy 1443 00:46:08,000 --> 00:46:10,000 me seguiría refiriendo 1444 00:46:10,000 --> 00:46:11,000 pero como aquí 1445 00:46:11,000 --> 00:46:12,000 se me ocurriera a mí 1446 00:46:12,000 --> 00:46:13,000 por 1447 00:46:13,000 --> 00:46:14,000 yo que sé 1448 00:46:14,000 --> 00:46:15,000 de repente 1449 00:46:15,000 --> 00:46:16,000 entro una variable y 1450 00:46:16,000 --> 00:46:17,000 me da la gana 1451 00:46:17,000 --> 00:46:18,000 llamarla x 1452 00:46:18,000 --> 00:46:19,000 porque quiero hacer 1453 00:46:19,000 --> 00:46:20,000 cualquier chorrada 1454 00:46:20,000 --> 00:46:21,000 ahí ya la confusión 1455 00:46:21,000 --> 00:46:22,000 apareció 1456 00:46:22,000 --> 00:46:23,000 y con este x 1457 00:46:23,000 --> 00:46:24,000 ahora ya diría 1458 00:46:24,000 --> 00:46:25,000 oye 1459 00:46:25,000 --> 00:46:26,000 este x 1460 00:46:26,000 --> 00:46:27,000 ¿cuál es? 1461 00:46:27,000 --> 00:46:28,000 ¿esta variable 1462 00:46:28,000 --> 00:46:29,000 que te has declarado aquí? 1463 00:46:29,000 --> 00:46:30,000 o este x 1464 00:46:30,000 --> 00:46:31,000 es la propiedad 1465 00:46:31,000 --> 00:46:32,000 del objeto 1466 00:46:32,000 --> 00:46:33,000 que llama al método 1467 00:46:33,000 --> 00:46:34,000 o lo que viene 1468 00:46:34,000 --> 00:46:35,000 de arriba 1469 00:46:35,000 --> 00:46:36,000 aquí de nuevo 1470 00:46:36,000 --> 00:46:37,000 aparece la ambigüedad famosa 1471 00:46:37,000 --> 00:46:38,000 en una situación como esta 1472 00:46:38,000 --> 00:46:39,000 en la que yo aquí 1473 00:46:39,000 --> 00:46:40,000 me invento esta variable 1474 00:46:40,000 --> 00:46:41,000 porque me da la gana 1475 00:46:41,000 --> 00:46:42,000 aquí sí que tendría 1476 00:46:42,000 --> 00:46:43,000 que poner el this 1477 00:46:43,000 --> 00:46:44,000 igual 1478 00:46:44,000 --> 00:46:45,000 no, ojo 1479 00:46:45,000 --> 00:46:46,000 que este x 1480 00:46:46,000 --> 00:46:47,000 es la coordenada x 1481 00:46:47,000 --> 00:46:48,000 del objeto 1482 00:46:48,000 --> 00:46:49,000 que llama al método 1483 00:46:49,000 --> 00:46:50,000 no esta variable 1484 00:46:50,000 --> 00:46:51,000 que me acabo inventando 1485 00:46:51,000 --> 00:46:52,000 pero en este método mío 1486 00:46:52,000 --> 00:46:53,000 que yo no tengo 1487 00:46:53,000 --> 00:46:54,000 ninguna otra cosa 1488 00:46:54,000 --> 00:46:55,000 que se llama x 1489 00:46:55,000 --> 00:46:56,000 ninguna otra 1490 00:46:56,000 --> 00:46:57,000 pues el this 1491 00:46:57,000 --> 00:46:58,000 lo podríais quitar 1492 00:46:58,000 --> 00:46:59,000 lo podríais quitar 1493 00:46:59,000 --> 00:47:00,000 del x 1494 00:47:00,000 --> 00:47:01,000 del y 1495 00:47:01,000 --> 00:47:02,000 de todas partes 1496 00:47:02,000 --> 00:47:03,000 lo podríais quitar 1497 00:47:03,000 --> 00:47:04,000 porque no hay duda 1498 00:47:04,000 --> 00:47:05,000 de a quién se está refiriendo 1499 00:47:05,000 --> 00:47:06,000 pero si es importante 1500 00:47:06,000 --> 00:47:07,000 que cuando no aparezca 1501 00:47:07,000 --> 00:47:08,000 sepáis que esa x 1502 00:47:08,000 --> 00:47:09,000 es la x 1503 00:47:09,000 --> 00:47:10,000 del objeto this 1504 00:47:10,000 --> 00:47:11,000 del que está llamando 1505 00:47:11,000 --> 00:47:12,000 al método 1506 00:47:12,000 --> 00:47:13,000 vale 1507 00:47:13,000 --> 00:47:14,000 bueno 1508 00:47:14,000 --> 00:47:15,000 esto se entiende mejor 1509 00:47:15,000 --> 00:47:16,000 de nuevo 1510 00:47:16,000 --> 00:47:17,000 ahora ya haciendo el main 1511 00:47:17,000 --> 00:47:18,000 que crea ya los puntos 1512 00:47:18,000 --> 00:47:19,000 llama 1513 00:47:19,000 --> 00:47:20,000 a los métodos 1514 00:47:20,000 --> 00:47:21,000 para puntos concretos 1515 00:47:21,000 --> 00:47:22,000 etc 1516 00:47:22,000 --> 00:47:23,000 pero eso 1517 00:47:23,000 --> 00:47:24,000 lo hacemos ahora después