1 00:00:00,000 --> 00:00:10,000 Vale, a ver, de nuevo, ¿es obligatorio que los métodos devuelvan algo? 2 00:00:10,000 --> 00:00:15,000 No, a lo mejor las acciones que hacen los métodos es o mostrar por consola 3 00:00:15,000 --> 00:00:19,000 o cambiar el valor de una propiedad, si cambia el valor de una propiedad 4 00:00:19,000 --> 00:00:23,000 ese cambio ya se queda reflejado en la propiedad, no hay que devolverlo 5 00:00:23,000 --> 00:00:26,000 hacia afuera, entonces en ese caso si el método no tiene un retún 6 00:00:26,000 --> 00:00:31,000 porque no necesitamos que devuelva nada, ¿qué poníamos aquí? 7 00:00:31,000 --> 00:00:38,000 Eso, ¿vale? 8 00:00:38,000 --> 00:00:42,000 Vale, y ahora al llamar al método, pues para llamar al método 9 00:00:42,000 --> 00:00:45,000 tiene que haber un objeto pedido, si no hay un objeto pedido 10 00:00:45,000 --> 00:00:47,000 ¿quién va a llamar al método? 11 00:00:47,000 --> 00:00:53,000 A los métodos los llaman los objetos concretos que ya existen 12 00:00:53,000 --> 00:01:01,000 ¿vale? por ejemplo si yo he creado aquí un objeto pedido P1 13 00:01:01,000 --> 00:01:07,000 si yo he creado este objeto, ¿vale? este objeto P1 14 00:01:07,000 --> 00:01:11,000 ya puede llamar a este método si le da la gana 15 00:01:11,000 --> 00:01:22,000 de la manera que decíamos P1 punto, pues el nombre del método 16 00:01:22,000 --> 00:01:27,000 y ahora cuando llamemos al método, este método te dice 17 00:01:27,000 --> 00:01:32,000 perdona pero necesito un número entero porque lo necesito para trabajar 18 00:01:32,000 --> 00:01:36,000 pues entonces habrá que pasarle un número entero 19 00:01:36,000 --> 00:01:39,000 ¿vale? el número entero que a mí me dé la gana 20 00:01:39,000 --> 00:01:46,000 y ahora ya cuando dentro de mi main, pues ahora esto que hace 21 00:01:46,000 --> 00:01:50,000 se va aquí y ¿con qué propiedad precio trabaja? 22 00:01:50,000 --> 00:01:53,000 con IVA está claro, la que le hemos pasado 23 00:01:53,000 --> 00:01:56,000 pero ¿con cuál trabaja? pues con la de P1 24 00:01:56,000 --> 00:02:00,000 la que tenga P1, P1 es un objeto que yo he creado 25 00:02:00,000 --> 00:02:05,000 que apunta a su propia descripción y a su propio precio 26 00:02:05,000 --> 00:02:08,000 apunta ahí, el precio que sea que tenga 27 00:02:08,000 --> 00:02:11,000 ahora mismo no tiene ninguno porque no se lo he dado 28 00:02:11,000 --> 00:02:14,000 tendría cero porque por defecto la máquina virtual 29 00:02:14,000 --> 00:02:17,000 si yo no le doy valor a los números los pone a cero 30 00:02:17,000 --> 00:02:20,000 pero bueno, lo normal aquí es que yo le hubiera dado un valor al precio 31 00:02:20,000 --> 00:02:23,000 antes de llamar al método 32 00:02:23,000 --> 00:02:28,000 ¿vale? entonces este trabajará con el valor precio 33 00:02:28,000 --> 00:02:31,000 que tenga este objeto concreto, este 34 00:02:31,000 --> 00:02:35,000 y ¿qué hará? pues construirá esto y me lo devolverá 35 00:02:35,000 --> 00:02:37,000 si yo lo llamo así sin más ¿qué pasa? 36 00:02:37,000 --> 00:02:39,000 vale, pues que me lo ha devuelto 37 00:02:39,000 --> 00:02:41,000 pero lo he tirado a la basura 38 00:02:41,000 --> 00:02:44,000 entonces lo normal es que el valor de retorno yo lo asigne a algún sitio 39 00:02:44,000 --> 00:02:47,000 lo asigne a algún lado para no perderlo 40 00:02:47,000 --> 00:02:50,000 y ahora ya pues nada, lo muestro, hago lo que sea con él 41 00:02:50,000 --> 00:02:53,000 o lo que quiera ¿vale? 42 00:02:53,000 --> 00:02:57,000 que tengo otro objeto P2 diferente 43 00:02:57,000 --> 00:03:00,000 pues P2 también puede llamar a devolver precio 44 00:03:00,000 --> 00:03:03,000 pero ahora P2 va a trabajar, ¿con qué propiedad va a trabajar? 45 00:03:03,000 --> 00:03:06,000 con la suya, va a trabajar con la suya 46 00:03:06,000 --> 00:03:09,000 cada uno trabaja con su propiedad, precio 47 00:03:09,000 --> 00:03:12,000 ¿vale? 48 00:03:12,000 --> 00:03:14,000 bueno, pues esto era la base de todo 49 00:03:14,000 --> 00:03:17,000 lo que hace es que ahora ya todo esto 50 00:03:17,000 --> 00:03:20,000 claro 51 00:03:23,000 --> 00:03:26,000 igual que yo estoy trabajando aquí con tipos 52 00:03:26,000 --> 00:03:29,000 simples 53 00:03:29,000 --> 00:03:31,000 exactamente igual con Arrays 54 00:03:31,000 --> 00:03:34,000 me da igual que esto sea un Double 55 00:03:34,000 --> 00:03:36,000 o que esto sea un Array de no sé qué 56 00:03:36,000 --> 00:03:39,000 o aquí devolver un Double o devolver un Array de lo que sea 57 00:03:39,000 --> 00:03:42,000 pensad que un Array de cosas es una variable más 58 00:03:42,000 --> 00:03:45,000 entonces todo esto se puede extender 59 00:03:45,000 --> 00:03:48,000 se puede extender a trabajar también con Arrays 60 00:03:48,000 --> 00:03:51,000 como ya hicimos en algún ejemplo ¿vale? 61 00:03:51,000 --> 00:03:53,000 ¿y qué es lo último que vimos? 62 00:03:53,000 --> 00:03:56,000 porque no nos dio tiempo a ver más de esto 63 00:03:56,000 --> 00:03:59,000 pues un método especial 64 00:03:59,000 --> 00:04:01,000 de toda la parte de métodos que dijimos 65 00:04:01,000 --> 00:04:04,000 que una clase tiene propiedades y métodos 66 00:04:05,000 --> 00:04:08,000 pues solamente hay un método 67 00:04:08,000 --> 00:04:11,000 que se salta a estas reglas de construcción 68 00:04:11,000 --> 00:04:13,000 solo hay uno y ninguno más 69 00:04:13,000 --> 00:04:16,000 solo hay uno que se salta a estas reglas de construcción 70 00:04:16,000 --> 00:04:18,000 que ese método se llamaba como? 71 00:04:18,000 --> 00:04:20,000 S 72 00:04:20,000 --> 00:04:22,000 y el método constructor se salta a esas reglas 73 00:04:22,000 --> 00:04:25,000 porque tiene un nombre obligatorio 74 00:04:25,000 --> 00:04:27,000 que el nombre obligatorio es el de la clase 75 00:04:27,000 --> 00:04:30,000 pedido 76 00:04:31,000 --> 00:04:35,000 no tiene ahí delante ni void ni nada 77 00:04:35,000 --> 00:04:38,000 porque ese método no devuelve nada 78 00:04:38,000 --> 00:04:40,000 por definición 79 00:04:40,000 --> 00:04:42,000 puede tener un público o lo que sea 80 00:04:42,000 --> 00:04:45,000 pero esto cuando haya modificado este acceso ya lo pondremos 81 00:04:45,000 --> 00:04:47,000 no tiene nada 82 00:04:47,000 --> 00:04:49,000 y ahora ya ¿qué tiene aquí en los paréntesis? 83 00:04:49,000 --> 00:04:51,000 lo que a mí me dé la gana 84 00:04:51,000 --> 00:04:53,000 si es que a mí me da la gana pasarle cosas al constructor 85 00:04:53,000 --> 00:04:55,000 si es que me da la gana pasárselas 86 00:04:55,000 --> 00:04:57,000 ¿y qué tiene aquí en las llaves? 87 00:04:57,000 --> 00:04:59,000 lo que a mí me dé la gana 88 00:04:59,000 --> 00:05:01,000 lo que teníamos que entender de los constructores 89 00:05:01,000 --> 00:05:03,000 es que son métodos 90 00:05:03,000 --> 00:05:05,000 que no es que se invoquen 91 00:05:05,000 --> 00:05:07,000 cuando ya el objeto está creado y llama al constructor 92 00:05:07,000 --> 00:05:09,000 no, no tiene sentido 93 00:05:09,000 --> 00:05:11,000 el constructor se invoca él solito 94 00:05:11,000 --> 00:05:13,000 cuando instanciamos el objeto 95 00:05:13,000 --> 00:05:15,000 cuando lo instanciamos con el new 96 00:05:15,000 --> 00:05:17,000 ahí es cuando se invoca, él solo 97 00:05:17,000 --> 00:05:19,000 no lo invocamos luego nosotros 98 00:05:19,000 --> 00:05:21,000 con el objeto ya creado, ahí ya no tiene sentido 99 00:05:21,000 --> 00:05:23,000 el constructor se invoca 100 00:05:23,000 --> 00:05:25,000 él solo cuando instanciamos el objeto 101 00:05:25,000 --> 00:05:27,000 entonces después de hacer el new 102 00:05:27,000 --> 00:05:29,000 por tanto, pasan dos cosas 103 00:05:29,000 --> 00:05:31,000 primero 104 00:05:31,000 --> 00:05:33,000 que aparece el espacio en memoria 105 00:05:33,000 --> 00:05:35,000 este que decimos 106 00:05:35,000 --> 00:05:37,000 y segundo, que se llama al constructor 107 00:05:37,000 --> 00:05:39,000 ¿vale? 108 00:05:39,000 --> 00:05:41,000 y estos parámetros 109 00:05:41,000 --> 00:05:43,000 que yo pongo aquí 110 00:05:43,000 --> 00:05:45,000 se los tengo que pasar aquí 111 00:05:45,000 --> 00:05:47,000 ¿vale? 112 00:05:47,000 --> 00:05:49,000 entonces, que yo no he hecho ningún constructor 113 00:05:49,000 --> 00:05:51,000 ¿por qué no me da la gana hacerlo? 114 00:05:51,000 --> 00:05:53,000 pues dijimos que entonces 115 00:05:53,000 --> 00:05:55,000 la máquina virtual se inventa uno 116 00:05:55,000 --> 00:05:57,000 que es así 117 00:05:57,000 --> 00:05:59,000 sin paréntesis y vacío 118 00:05:59,000 --> 00:06:01,000 se lo inventa, yo no lo veo, pero está ahí en realidad 119 00:06:01,000 --> 00:06:03,000 aunque yo no lo vea 120 00:06:03,000 --> 00:06:05,000 entonces cuando hacemos el new pedido 121 00:06:05,000 --> 00:06:07,000 se crea esto y él llama a este método 122 00:06:07,000 --> 00:06:09,000 que no hace nada 123 00:06:09,000 --> 00:06:11,000 pero yo puedo hacer constructores míos 124 00:06:11,000 --> 00:06:13,000 porque me interese en el momento de crear el objeto 125 00:06:13,000 --> 00:06:15,000 dar valor a las propiedades 126 00:06:15,000 --> 00:06:17,000 o lo que me dé la gana 127 00:06:17,000 --> 00:06:19,000 pues si me interesa, pues lo creo 128 00:06:19,000 --> 00:06:21,000 y se llamará en este momento 129 00:06:21,000 --> 00:06:23,000 pasándole aquí los parámetros 130 00:06:23,000 --> 00:06:25,000 que yo quiera, esos parámetros tienen que casar 131 00:06:25,000 --> 00:06:27,000 con los que hay aquí, se hará esto 132 00:06:27,000 --> 00:06:29,000 ¿vale? 133 00:06:31,000 --> 00:06:33,000 bueno, pues 134 00:06:33,000 --> 00:06:35,000 esto es todo lo que hemos visto de clases y objetos 135 00:06:37,000 --> 00:06:39,000 ¿está claro? 136 00:06:39,000 --> 00:06:41,000 bueno, pues a la vuelta del recreo 137 00:06:41,000 --> 00:06:43,000 entonces hacemos unos ejercicios