1 00:00:00,000 --> 00:00:11,000 Bueno, confío en que recordéis lo del otro día, porque os habéis repasado 2 00:00:11,000 --> 00:00:14,000 esos apuntes que cogéis tan estupendos, ¿vale? 3 00:00:14,000 --> 00:00:16,000 No te ofendas, ¿eh? 4 00:00:19,000 --> 00:00:25,000 Ahora ya estamos desarrollando según el patrón de la programación 5 00:00:25,000 --> 00:00:29,000 orientada a objetos por a nivel básico, en el cual las aplicaciones 6 00:00:29,000 --> 00:00:37,000 están formadas por diferentes clases. Cada clase asociadla a un fichero 7 00:00:37,000 --> 00:00:43,000 distinto, ¿vale? A un fichero distinto. El código fuente se va a organizar 8 00:00:43,000 --> 00:00:47,000 en ficheros diferentes. Cada uno de ellos es una clase y cada uno de ellos 9 00:00:47,000 --> 00:00:56,000 con su extensión .java. ¿Vale? Entonces, de todas esas clases que forman 10 00:00:56,000 --> 00:01:06,000 la aplicación, en general habrá un conjunto de clases que son las que 11 00:01:06,000 --> 00:01:11,000 representan las realidades con las que trabaja nuestra aplicación. 12 00:01:11,000 --> 00:01:16,000 Las clases de entidad. Nosotros, el otro día, por ejemplo, si era una aplicación 13 00:01:16,000 --> 00:01:22,000 de hacer cosas con pedido, pues entonces dijimos, ah, vale, pues 14 00:01:23,000 --> 00:01:27,000 identificamos, por tanto, una clase pedido. Vamos a identificar una clase 15 00:01:27,000 --> 00:01:31,000 pedido porque uno de los elementos con los que trabaja nuestra aplicación 16 00:01:31,000 --> 00:01:36,000 son los pedidos, ¿vale? Pues una clase pedido y una vez que uno tiene ya 17 00:01:36,000 --> 00:01:44,000 las clases entidad y bondificadas, las programa, como dijimos el otro día, 18 00:01:45,000 --> 00:01:52,000 ¿vale? Dos partes, propiedades y métodos con la que aún no nos metimos. 19 00:01:52,000 --> 00:01:57,000 Dos partes, propiedades y métodos con la que aún no nos hemos metido. 20 00:01:57,000 --> 00:02:03,000 Entonces, la parte de propiedades es una lista de declaración de variables. 21 00:02:03,000 --> 00:02:07,000 Exactamente igual como nosotros declaramos las variables en los programas 22 00:02:07,000 --> 00:02:11,000 que hemos hecho hasta ahora. Exactamente igual. Esto es una lista de declaración 23 00:02:11,000 --> 00:02:17,000 de variables. Y cada variable, ¿a qué se corresponde? Cada variable se 24 00:02:17,000 --> 00:02:22,000 corresponde a alguna de las propiedades que caracterizan el pedido, 25 00:02:22,000 --> 00:02:25,000 que hemos decidido nosotros previamente, claro, en la fase de diseño, 26 00:02:25,000 --> 00:02:29,000 que nos interesa. Nos interesa que el pedido se caracterice por el código, 27 00:02:29,000 --> 00:02:34,000 la descripción, lo que sea. Bueno, pues entonces yo he identificado ya 28 00:02:34,000 --> 00:02:37,000 que esas son las características que me importan de los pedidos, 29 00:02:37,000 --> 00:02:42,000 para cada una de ellas una variable. ¿Vale? Y esto es lo que se llama 30 00:02:42,000 --> 00:02:47,000 el conjunto de propiedades, atributos, se suele usar también ese nombre, 31 00:02:47,000 --> 00:02:54,000 propiedades, atributos, incluso campos, incluso campos en literatura que veáis 32 00:02:54,000 --> 00:02:58,000 por ahí, en tutoriales, en incluso campos. ¿Por qué? Por el paralelismo 33 00:02:58,000 --> 00:03:03,000 que hay entre las clases y las tablas de una base de datos. ¿Verdad? 34 00:03:04,000 --> 00:03:07,000 En la tabla de una base de datos, si esta fuera una aplicación que guardara 35 00:03:07,000 --> 00:03:14,000 luego los pedidos en una base de datos, habría una tabla que se llamaría 36 00:03:14,000 --> 00:03:21,000 pedido para guardar los pedidos y esa tabla sería un conjunto de filas, 37 00:03:21,000 --> 00:03:26,000 cada fila sería un pedido y cada pedido tendría los campos con sus propiedades. 38 00:03:26,000 --> 00:03:30,000 Entonces, como es absolutamente paralelo el concepto de clase al concepto 39 00:03:30,000 --> 00:03:35,000 de mi tabla de base de datos, pues por eso a veces a eso también se le llaman 40 00:03:35,000 --> 00:03:41,000 campos, porque en base de datos a cada uno de los elementos que forman 41 00:03:41,000 --> 00:03:46,000 cada registro, pues se le llama campo también. El campo código, el campo nombre, 42 00:03:46,000 --> 00:03:55,000 el campo no sé qué. El eclipse, de hecho, eclipse, pues para entender 43 00:03:55,000 --> 00:03:59,000 la información contextual que da para todo eso, pues eclipse a cada uno 44 00:03:59,000 --> 00:04:10,000 de estos los llama así. Pero eso, luego ya programado en Java es una 45 00:04:10,000 --> 00:04:14,000 declaración de variable, una declaración de variable normal y corriente. 46 00:04:14,000 --> 00:04:21,000 Bueno, entonces, esto es la plantilla, habrá ya una clase especial, 47 00:04:21,000 --> 00:04:24,000 por llamar de alguna manera una clase especial, que es la que tiene este 48 00:04:24,000 --> 00:04:29,000 famoso método main, que la máquina virtual arranca y a partir de aquí 49 00:04:29,000 --> 00:04:34,000 empieza el programa. Y ya el programa hace las sentencias que nos dé la gana 50 00:04:34,000 --> 00:04:38,000 hacer a nosotros, tal y como hemos hecho hasta ahora, nuestros códigos 51 00:04:38,000 --> 00:04:42,000 con sentencias. Pero ahora además, ¿qué podemos hacer ahora? 52 00:04:42,000 --> 00:04:45,000 Pues podemos ahora ya, además de todo lo que hemos hecho antes, 53 00:04:45,000 --> 00:04:52,000 podemos además crear objetos de estas clases. Uno, dos, tres, mil. 54 00:04:52,000 --> 00:04:57,000 Una única clase, una única plantilla, pero objetos, todos los que a mí me den 55 00:04:57,000 --> 00:05:01,000 la gana. Ya vimos el otro día cómo, cada uno con su nombre, lo declaro 56 00:05:01,000 --> 00:05:05,000 del tipo pedido, cómo lo tengo que crear y una vez que lo tengo creado 57 00:05:05,000 --> 00:05:12,000 ya puedo acceder a sus propiedades, ¿vale? Esto fue más o menos 58 00:05:12,000 --> 00:05:15,000 pues lo que vimos el otro día. 59 00:05:22,000 --> 00:05:25,000 Subtítulos realizados por la comunidad de Amara.org 60 00:05:52,000 --> 00:05:55,000 Subtítulos realizados por la comunidad de Amara.org 61 00:06:22,000 --> 00:06:25,000 Subtítulos realizados por la comunidad de Amara.org 62 00:06:52,000 --> 00:06:55,000 Subtítulos realizados por la comunidad de Amara.org 63 00:07:22,000 --> 00:07:25,000 Subtítulos realizados por la comunidad de Amara.org 64 00:07:52,000 --> 00:07:55,000 Subtítulos realizados por la comunidad de Amara.org 65 00:08:22,000 --> 00:08:25,000 Subtítulos realizados por la comunidad de Amara.org 66 00:08:52,000 --> 00:08:55,000 Subtítulos realizados por la comunidad de Amara.org 67 00:09:22,000 --> 00:09:25,000 Subtítulos realizados por la comunidad de Amara.org 68 00:09:52,000 --> 00:09:55,000 Subtítulos realizados por la comunidad de Amara.org 69 00:10:22,000 --> 00:10:25,000 Subtítulos realizados por la comunidad de Amara.org 70 00:10:52,000 --> 00:10:55,000 Subtítulos realizados por la comunidad de Amara.org 71 00:11:22,000 --> 00:11:25,000 Subtítulos realizados por la comunidad de Amara.org 72 00:11:52,000 --> 00:11:55,000 Subtítulos realizados por la comunidad de Amara.org 73 00:12:22,000 --> 00:12:25,000 Subtítulos realizados por la comunidad de Amara.org 74 00:12:52,000 --> 00:12:55,000 Subtítulos realizados por la comunidad de Amara.org 75 00:13:22,000 --> 00:13:25,000 Subtítulos realizados por la comunidad de Amara.org 76 00:13:52,000 --> 00:13:55,000 Subtítulos realizados por la comunidad de Amara.org 77 00:14:22,000 --> 00:14:25,000 Subtítulos realizados por la comunidad de Amara.org 78 00:14:52,000 --> 00:14:55,000 Subtítulos realizados por la comunidad de Amara.org 79 00:15:22,000 --> 00:15:25,000 Subtítulos realizados por la comunidad de Amara.org 80 00:15:52,000 --> 00:15:55,000 Subtítulos realizados por la comunidad de Amara.org 81 00:16:22,000 --> 00:16:25,000 Subtítulos realizados por la comunidad de Amara.org 82 00:16:52,000 --> 00:16:55,000 Subtítulos realizados por la comunidad de Amara.org 83 00:17:22,000 --> 00:17:25,000 Subtítulos realizados por la comunidad de Amara.org 84 00:17:52,000 --> 00:17:55,000 Subtítulos realizados por la comunidad de Amara.org 85 00:18:22,000 --> 00:18:25,000 Subtítulos realizados por la comunidad de Amara.org 86 00:18:52,000 --> 00:18:55,000 Subtítulos realizados por la comunidad de Amara.org 87 00:19:22,000 --> 00:19:25,000 Subtítulos realizados por la comunidad de Amara.org 88 00:19:52,000 --> 00:19:55,000 Subtítulos realizados por la comunidad de Amara.org 89 00:20:22,000 --> 00:20:25,000 Subtítulos realizados por la comunidad de Amara.org 90 00:20:52,000 --> 00:20:55,000 Subtítulos realizados por la comunidad de Amara.org 91 00:21:22,000 --> 00:21:25,000 Subtítulos realizados por la comunidad de Amara.org 92 00:21:52,000 --> 00:21:55,000 Subtítulos realizados por la comunidad de Amara.org 93 00:22:22,000 --> 00:22:25,000 Subtítulos realizados por la comunidad de Amara.org 94 00:22:52,000 --> 00:22:55,000 Subtítulos realizados por la comunidad de Amara.org 95 00:23:22,000 --> 00:23:25,000 Subtítulos realizados por la comunidad de Amara.org 96 00:23:52,000 --> 00:23:55,000 Subtítulos realizados por la comunidad de Amara.org 97 00:24:22,000 --> 00:24:25,000 Subtítulos realizados por la comunidad de Amara.org 98 00:24:52,000 --> 00:24:55,000 Subtítulos realizados por la comunidad de Amara.org 99 00:25:22,000 --> 00:25:25,000 Subtítulos realizados por la comunidad de Amara.org 100 00:25:53,000 --> 00:25:56,000 Bueno, declaración de propiedades, luego, claro, 101 00:25:56,000 --> 00:25:58,000 se le pueden poner delante modificadores, cosas, 102 00:25:58,000 --> 00:26:00,000 pero tendremos que incorporarlo más adelante. 103 00:26:00,000 --> 00:26:04,000 Bueno, pues, ¿qué otra parte dijimos que contiene una clase? 104 00:26:04,000 --> 00:26:10,000 Hablamos de que contiene una parte que son los métodos, 105 00:26:10,000 --> 00:26:13,000 los métodos, con los que todavía no nos hemos metido. 106 00:26:13,000 --> 00:26:17,000 Entonces, una clase tiene propiedades que ya sabemos exactamente 107 00:26:17,000 --> 00:26:22,000 lo que son, las características que van a caracterizar 108 00:26:22,000 --> 00:26:24,000 a cada uno de los objetos. 109 00:26:24,000 --> 00:26:27,000 Cada objeto tendrá los valores suyos propios. 110 00:26:27,000 --> 00:26:30,000 Cada objeto tendrá un código, una descripción, 111 00:26:30,000 --> 00:26:33,000 cada uno el suyo, y los métodos. 112 00:26:33,000 --> 00:26:37,000 Bueno, pues los métodos, a los métodos se les suele llamar 113 00:26:37,000 --> 00:26:40,000 el comportamiento del objeto. 114 00:26:47,000 --> 00:26:50,000 Bueno, pues esta es la diferencia fundamental, 115 00:26:50,000 --> 00:26:52,000 aparte de que el objeto es una dirección de memoria, 116 00:26:52,000 --> 00:26:54,000 en realidad sería una variable primitiva, ¿no? 117 00:26:54,000 --> 00:26:58,000 Entre las variables primitivas y las variables objetos. 118 00:26:58,000 --> 00:27:02,000 Que las variables primitivas solo valen para meter en ellas un valor, 119 00:27:02,000 --> 00:27:05,000 ya está, para meter en ellas un valor, y luego yo, claro, 120 00:27:05,000 --> 00:27:08,000 recoger ese valor en una expresión para asignarlo, 121 00:27:08,000 --> 00:27:11,000 pero solamente valen como contenedores de valores. 122 00:27:11,000 --> 00:27:14,000 Solo valen como contenedores de valores las variables primitivas, 123 00:27:14,000 --> 00:27:16,000 no valen para nada más. 124 00:27:16,000 --> 00:27:20,000 Las variables objeto valen como contenedores de valores también, 125 00:27:20,000 --> 00:27:24,000 porque contienen el valor de un objeto, su código, su descripción, 126 00:27:24,000 --> 00:27:28,000 pero también valen para hacer cosas. 127 00:27:28,000 --> 00:27:30,000 Luego los objetos pueden hacer cosas también. 128 00:27:30,000 --> 00:27:34,000 Las variables primitivas no hacen nada, solo contienen un valor. 129 00:27:34,000 --> 00:27:38,000 Por si yo lo quiero coger en una expresión, pero no hacen nada. 130 00:27:38,000 --> 00:27:42,000 Las variables objeto contienen un valor, el valor de las propiedades, 131 00:27:42,000 --> 00:27:45,000 y además pueden hacer cosas. 132 00:27:45,000 --> 00:27:47,000 Hacer, ¿qué significa en Java? 133 00:27:47,000 --> 00:27:50,000 Hacer significa ejecutar sentencias. 134 00:27:50,000 --> 00:27:54,000 Luego las variables objeto, cuando existen y están creadas, 135 00:27:54,000 --> 00:27:57,000 además pueden ejecutar sentencias de Java, 136 00:27:57,000 --> 00:28:00,000 cosas que no puede una variable primitiva. 137 00:28:00,000 --> 00:28:03,000 Pues eso que pueden hacer las variables objeto, 138 00:28:03,000 --> 00:28:06,000 esas sentencias que ellas pueden ejecutar, 139 00:28:06,000 --> 00:28:10,000 se escriben aquí, en los métodos, ¿vale? 140 00:28:10,000 --> 00:28:13,000 Luego una clase tiene propiedades, lo que caracteriza al objeto, 141 00:28:13,000 --> 00:28:16,000 y métodos, que para que lo entendamos mejor es, 142 00:28:16,000 --> 00:28:20,000 cada método es como una función a la que el objeto puede llamar. 143 00:28:20,000 --> 00:28:23,000 Eso es el significado de método, 144 00:28:23,000 --> 00:28:27,000 una función a la que un objeto puede llamar. 145 00:28:27,000 --> 00:28:30,000 Esa es la idea. 146 00:28:30,000 --> 00:28:32,000 Vamos a ver cómo se declaran. 147 00:28:32,000 --> 00:28:35,000 Puede llamar y al llamarlo se va a ejecutar lo que hay dentro. 148 00:28:35,000 --> 00:28:37,000 Claro, por eso se dice que el objeto hace cosas. 149 00:28:37,000 --> 00:28:40,000 El objeto lo que hace es llamar al método 150 00:28:40,000 --> 00:28:45,000 y cuando se llama al método se ejecuta todo lo que hay dentro. 151 00:28:45,000 --> 00:28:48,000 Vamos a ver cómo se declaran los métodos, 152 00:28:48,000 --> 00:28:51,000 las cosas básicas primero, 153 00:28:51,000 --> 00:28:56,000 y cómo un objeto puede llamar a los métodos. 154 00:28:56,000 --> 00:28:58,000 ¿Cómo se declaran los métodos? 155 00:28:58,000 --> 00:29:02,000 Exactamente igual que se declaran las funciones 156 00:29:02,000 --> 00:29:05,000 que hemos visto ya en su momento, 157 00:29:05,000 --> 00:29:08,000 que las vimos como una pequeña introducción, 158 00:29:08,000 --> 00:29:15,000 nos sirven como pequeña introducción al concepto de método. 159 00:29:15,000 --> 00:29:19,000 Bueno, pues el método, por ejemplo, para poner un ejemplo. 160 00:29:19,000 --> 00:29:22,000 Cuando yo tengo un objeto pedido, 161 00:29:22,000 --> 00:29:29,000 ¿qué cosas me pueden interesar a mí que ocurran con ese pedido? 162 00:29:29,000 --> 00:29:32,000 Pues depende de mi aplicación lo que yo quiero que haga. 163 00:29:32,000 --> 00:29:37,000 Pues ver si un cliente lo ha pedido, ese pedido por ejemplo, 164 00:29:37,000 --> 00:29:44,000 porque ver si la descripción contiene la palabra boli, 165 00:29:44,000 --> 00:29:46,000 por ver si es un pedido de bolis. 166 00:29:46,000 --> 00:29:48,000 O sea, cuando uno hace una aplicación tiene, 167 00:29:48,000 --> 00:29:50,000 y hay muchas otras veces, 168 00:29:50,000 --> 00:29:53,000 tener una fase previa con lápiz, papel, hablando con el cliente, 169 00:29:53,000 --> 00:29:56,000 en la cual tiene que tener muy claro 170 00:29:56,000 --> 00:29:58,000 qué tiene que hacer la aplicación. 171 00:29:58,000 --> 00:30:02,000 Mi aplicación primero va a trabajar con pedidos, clientes, ¿vale? 172 00:30:02,000 --> 00:30:04,000 Y ahora, ¿qué tiene que hacer con ellos? 173 00:30:04,000 --> 00:30:05,000 ¿Qué tiene que hacer? 174 00:30:05,000 --> 00:30:06,000 Bueno, pues el cliente dirá, 175 00:30:06,000 --> 00:30:10,000 oye, la necesito para almacenar pedidos y calcular precios. 176 00:30:10,000 --> 00:30:13,000 La necesito para buscar dentro de los pedidos 177 00:30:13,000 --> 00:30:15,000 los clientes que me lo han pedido. 178 00:30:15,000 --> 00:30:16,000 Pero tendrá que decir, 179 00:30:16,000 --> 00:30:17,000 el que te ha pedido el software te dirá, 180 00:30:17,000 --> 00:30:18,000 necesito para esto. 181 00:30:18,000 --> 00:30:20,000 Todo esto lo recorre, lo recoge. 182 00:30:20,000 --> 00:30:21,000 Dices, ah, vale. 183 00:30:21,000 --> 00:30:24,000 Lo que tengo yo que hacer con esos pedidos de mi aplicación 184 00:30:24,000 --> 00:30:26,000 es esto, esto y esto. 185 00:30:26,000 --> 00:30:28,000 Pues, en general, muy en términos generales, 186 00:30:28,000 --> 00:30:30,000 cada cosa que yo identifico 187 00:30:30,000 --> 00:30:32,000 que hay que hacer con un pedido, 188 00:30:32,000 --> 00:30:34,000 la meto en un método concreto. 189 00:30:34,000 --> 00:30:37,000 Cada cosa la meto en un método concreto. 190 00:30:37,000 --> 00:30:40,000 Entonces, estos métodos 191 00:30:40,000 --> 00:30:42,000 son trozos de código 192 00:30:42,000 --> 00:30:44,000 que hacen cosas 193 00:30:44,000 --> 00:30:47,000 con los objetos pedidos. 194 00:30:47,000 --> 00:30:50,000 Ese sería su significado. 195 00:30:50,000 --> 00:30:51,000 Vamos a poner un ejemplo. 196 00:30:51,000 --> 00:30:53,000 Por ejemplo, a mí el cliente, 197 00:30:53,000 --> 00:30:54,000 el que me ha pedido el software me dice, 198 00:30:54,000 --> 00:30:57,000 sí, esta aplicación mía va a trabajar con pedidos 199 00:30:57,000 --> 00:31:00,000 y una de las cosas que yo quiero que haga la aplicación es 200 00:31:00,000 --> 00:31:04,000 que si yo le meto un nombre de un cliente, 201 00:31:04,000 --> 00:31:06,000 un nombre de un cliente, 202 00:31:06,000 --> 00:31:08,000 te tiene que decir 203 00:31:08,000 --> 00:31:12,000 si el pedido lo ha pedido ese cliente o no. 204 00:31:12,000 --> 00:31:14,000 Por ejemplo, vamos a poner aquí. 205 00:31:14,000 --> 00:31:17,000 Entonces, uno ya dice, ah, vale. 206 00:31:17,000 --> 00:31:21,000 Esa funcionalidad va a ser la siguiente. 207 00:31:21,000 --> 00:31:26,000 Dado un nombre de cliente, 208 00:31:26,000 --> 00:31:29,000 tiene que indicar 209 00:31:29,000 --> 00:31:34,000 si el pedido que llame a este método, 210 00:31:34,000 --> 00:31:35,000 ahora lo entenderemos mejor 211 00:31:35,000 --> 00:31:38,000 cuando ya hagamos una clase main que llame al método, 212 00:31:38,000 --> 00:31:42,000 el pedido que llame al método, 213 00:31:42,000 --> 00:31:44,000 ¿lo ha pedido ese cliente o no? 214 00:31:44,000 --> 00:31:46,000 Bueno, un poco retorcido explicado, ¿o no? 215 00:31:46,000 --> 00:31:52,000 ¿Lo ha pedido ese cliente o no? 216 00:31:52,000 --> 00:31:55,000 Vale, entonces esto ya es un funcionamiento, 217 00:31:55,000 --> 00:31:56,000 eso es un comportamiento. 218 00:31:56,000 --> 00:31:58,000 Esto no son propiedades. 219 00:31:58,000 --> 00:32:00,000 Las propiedades son, el pedido se caracteriza 220 00:32:00,000 --> 00:32:02,000 por código de descripción y lista de clientes. 221 00:32:02,000 --> 00:32:04,000 Y ahora otra cosa es, 222 00:32:04,000 --> 00:32:06,000 ¿qué cosas me interesa a mí hacer? 223 00:32:06,000 --> 00:32:08,000 ¿Qué cosas me interesa a mí hacer con los pedidos? 224 00:32:08,000 --> 00:32:10,000 Pues hemos identificado una. 225 00:32:10,000 --> 00:32:11,000 Hemos identificado una. 226 00:32:11,000 --> 00:32:14,000 Me va a interesar cuando el usuario de la aplicación 227 00:32:14,000 --> 00:32:15,000 me dé un nombre, 228 00:32:15,000 --> 00:32:17,000 me va a interesar que me diga 229 00:32:17,000 --> 00:32:22,000 si los pedidos los ha hecho ese cliente o no. 230 00:32:22,000 --> 00:32:25,000 Eso es una funcionalidad que me han dicho que me interesa. 231 00:32:25,000 --> 00:32:27,000 Vale, pues automáticamente. 232 00:32:27,000 --> 00:32:29,000 Eso es un comportamiento 233 00:32:29,000 --> 00:32:31,000 que se va a programar en un método 234 00:32:31,000 --> 00:32:33,000 y ese método decir, 235 00:32:33,000 --> 00:32:35,000 dado un nombre de cliente como entrada, 236 00:32:35,000 --> 00:32:38,000 me tiene que decir si el pedido 237 00:32:38,000 --> 00:32:43,000 está pedido por ese cliente o no está pedido. 238 00:32:43,000 --> 00:32:44,000 Vamos a programar esto. 239 00:32:44,000 --> 00:32:46,000 Una vez programado lo entenderemos mejor. 240 00:32:46,000 --> 00:32:49,000 Vale, pues esto es como una función como hemos visto. 241 00:32:49,000 --> 00:32:52,000 Primero, ¿qué nombre le queremos dar a este método? 242 00:32:52,000 --> 00:32:57,000 Pues comprobar cliente, por ejemplo. 243 00:32:57,000 --> 00:33:00,000 Le vamos a llamar comprobar cliente a este método. 244 00:33:00,000 --> 00:33:03,000 Comprobar cliente para ver si el cliente está. 245 00:33:03,000 --> 00:33:05,000 Comprobar cliente. 246 00:33:05,000 --> 00:33:10,000 De nuevo, pauta regla de estilo no obligatoria 247 00:33:10,000 --> 00:33:13,000 pero altísimamente recomendable. 248 00:33:13,000 --> 00:33:19,000 Los nombres de los métodos que arranquen con minúscula. 249 00:33:19,000 --> 00:33:22,000 Igual que los nombres de las propiedades. 250 00:33:22,000 --> 00:33:25,000 Porque luego los códigos quedan muchísimo más claros 251 00:33:25,000 --> 00:33:32,000 para todos que esperamos eso. 252 00:33:32,000 --> 00:33:34,000 Nombres de clases con mayúscula, 253 00:33:34,000 --> 00:33:36,000 nombres de propiedades y de métodos 254 00:33:36,000 --> 00:33:38,000 que arranquen con minúscula. 255 00:33:38,000 --> 00:33:39,000 Vale, ya he decidido mi nombre. 256 00:33:39,000 --> 00:33:40,000 Comprobar cliente. 257 00:33:40,000 --> 00:33:42,000 Ahora, tengo que pensar, vale, 258 00:33:42,000 --> 00:33:44,000 ¿este método qué información de entrada 259 00:33:44,000 --> 00:33:46,000 necesita para trabajar? 260 00:33:46,000 --> 00:33:47,000 Siguiente. 261 00:33:47,000 --> 00:33:50,000 Vale, pues me pongo a pensar. 262 00:33:50,000 --> 00:33:52,000 Pues solo el nombre del cliente. 263 00:33:52,000 --> 00:33:53,000 ¿No? 264 00:33:53,000 --> 00:33:54,000 El nombre del cliente. 265 00:33:54,000 --> 00:33:55,000 Ya está, dado un nombre del cliente, 266 00:33:55,000 --> 00:33:57,000 comprueba si está o no. 267 00:33:57,000 --> 00:34:00,000 Vale, pues eso será un parámetro del método. 268 00:34:00,000 --> 00:34:02,000 Exactamente igual que los parámetros de funciones 269 00:34:02,000 --> 00:34:05,000 que vimos, hemos visto. 270 00:34:05,000 --> 00:34:07,000 ¿Cómo se declaran los parámetros de los métodos? 271 00:34:07,000 --> 00:34:09,000 Tipo de dato del parámetro. 272 00:34:09,000 --> 00:34:11,000 Como es un nombre de cliente, 273 00:34:11,000 --> 00:34:14,000 un nombre se recoge un string. 274 00:34:14,000 --> 00:34:15,000 Pues string. 275 00:34:15,000 --> 00:34:17,000 Nombre que le doy al parámetro, 276 00:34:17,000 --> 00:34:19,000 el que me dé la gana. 277 00:34:19,000 --> 00:34:24,000 Nombre cliente. 278 00:34:24,000 --> 00:34:29,000 Vale, ya tengo el dato de entrada que necesita. 279 00:34:29,000 --> 00:34:33,000 ¿Qué es un método que necesita más datos de entrada? 280 00:34:33,000 --> 00:34:36,000 Se los pongo separados por comas. 281 00:34:36,000 --> 00:34:38,000 En este caso, este ejemplo mío, 282 00:34:38,000 --> 00:34:40,000 solo necesita un dato de entrada, 283 00:34:40,000 --> 00:34:41,000 que es el nombre del cliente. 284 00:34:41,000 --> 00:34:43,000 Pues ya está. 285 00:34:43,000 --> 00:34:45,000 Solo uno. 286 00:34:45,000 --> 00:34:48,000 Vale, siguiente cosa que me falta para completar 287 00:34:48,000 --> 00:34:50,000 la primera línea, la que se llama 288 00:34:50,000 --> 00:34:53,000 cabecera o firma del método. 289 00:34:53,000 --> 00:34:58,000 Cabecera del método o firma del método. 290 00:34:58,000 --> 00:35:02,000 Firma porque en inglés 291 00:35:02,000 --> 00:35:14,000 se suele traducir con signature. 292 00:35:14,000 --> 00:35:17,000 Vale, pues esta cabecera, firmas, 293 00:35:17,000 --> 00:35:18,000 me ha recogido. 294 00:35:18,000 --> 00:35:21,000 El nombre, el que a mí me dé la gana. 295 00:35:21,000 --> 00:35:23,000 Parámetros, datos de entrada. 296 00:35:23,000 --> 00:35:26,000 En este caso, uno solo, el nombre. 297 00:35:26,000 --> 00:35:30,000 Y ahora, ¿ese método me va a devolver algo? 298 00:35:30,000 --> 00:35:32,000 Pues vamos a ver qué tiene que hacer. 299 00:35:32,000 --> 00:35:34,000 El método me tiene que decir 300 00:35:34,000 --> 00:35:37,000 si ocurre que el cliente está en la lista de clientes 301 00:35:37,000 --> 00:35:39,000 o si no ocurre. 302 00:35:39,000 --> 00:35:41,000 La forma de trasladarme a mí 303 00:35:41,000 --> 00:35:44,000 una información sobre si algo pasa o no pasa 304 00:35:44,000 --> 00:35:45,000 es un boolean. 305 00:35:45,000 --> 00:35:46,000 No hay otra. 306 00:35:46,000 --> 00:35:48,000 Vale, pues entonces tiene sentido 307 00:35:48,000 --> 00:35:53,000 que este método me devuelva un boolean. 308 00:35:53,000 --> 00:35:55,000 ¿Vale? 309 00:35:55,000 --> 00:35:59,000 Entonces, este método recibe un nombre de cliente 310 00:35:59,000 --> 00:36:02,000 y me devuelve true o me devuelve false 311 00:36:02,000 --> 00:36:05,000 en función de si ocurre 312 00:36:05,000 --> 00:36:07,000 lo que tengo que programar yo ahora, 313 00:36:07,000 --> 00:36:14,000 que es si el cliente está en la lista de clientes o no. 314 00:36:14,000 --> 00:36:16,000 Vale, pues ahora ya que tenemos la firma 315 00:36:16,000 --> 00:36:18,000 con datos de entrada, 316 00:36:18,000 --> 00:36:26,000 tipo de dato de salida, dime. 317 00:36:26,000 --> 00:36:29,000 Claro, pero es que, claro, 318 00:36:29,000 --> 00:36:30,000 pero qué pedido en específico. 319 00:36:30,000 --> 00:36:33,000 Hemos dicho que los métodos los llama un pedido. 320 00:36:33,000 --> 00:36:36,000 Pues será para el pedido que llame a este método. 321 00:36:36,000 --> 00:36:38,000 Ahora cuando hagamos el main se ve más claro. 322 00:36:38,000 --> 00:36:42,000 Vale, o sea, esto tiene que ser llamado por un objeto. 323 00:36:42,000 --> 00:36:44,000 Tiene que ser llamado por un objeto. 324 00:36:44,000 --> 00:36:47,000 Y entonces el objeto que lo llame 325 00:36:47,000 --> 00:36:51,000 es el pedido sobre el cual se ejecutan estas sentencias. 326 00:36:51,000 --> 00:36:53,000 Ahora cuando ya hagamos un main 327 00:36:53,000 --> 00:36:56,000 con ese pedido que lo llame será mucho más claro. 328 00:36:56,000 --> 00:36:59,000 Vale, pues entonces, ahora hay que programar esto. 329 00:36:59,000 --> 00:37:01,000 Ahora, ¿qué tiene que hacer este método? 330 00:37:01,000 --> 00:37:04,000 Oye, tiene que acceder a la lista de clientes 331 00:37:04,000 --> 00:37:07,000 para ver si este es igual a alguno de ellos. 332 00:37:07,000 --> 00:37:09,000 ¿Y dónde está esa lista de clientes? 333 00:37:09,000 --> 00:37:11,000 Aquí arriba. 334 00:37:11,000 --> 00:37:12,000 La tiene aquí. 335 00:37:12,000 --> 00:37:15,000 O sea, los métodos acceden directamente. 336 00:37:15,000 --> 00:37:20,000 Vamos a poner aquí. 337 00:37:21,000 --> 00:37:26,000 El método accede directamente 338 00:37:26,000 --> 00:37:33,000 a las propiedades de la clase. 339 00:37:33,000 --> 00:37:36,000 A las que están arriba. 340 00:37:36,000 --> 00:37:38,000 Accede directamente a las propiedades que están arriba. 341 00:37:38,000 --> 00:37:40,000 No hay que pasárselas como parámetro ni nada. 342 00:37:40,000 --> 00:37:43,000 Accede directamente a las que están arriba. 343 00:37:43,000 --> 00:37:46,000 Entonces, este método utilizará 344 00:37:46,000 --> 00:37:49,000 mi dato de entrada que es el nombre del cliente 345 00:37:49,000 --> 00:37:54,000 y las propiedades del objeto que lo llama 346 00:37:54,000 --> 00:37:56,000 que son las de arriba 347 00:37:56,000 --> 00:37:59,000 y con ellas trabaja y hace lo que le da la gana. 348 00:37:59,000 --> 00:38:03,000 Esos son los dos conjuntos de datos 349 00:38:03,000 --> 00:38:05,000 con los que trabaja un método. 350 00:38:05,000 --> 00:38:10,000 Los parámetros que yo he decidido pasarle desde el exterior 351 00:38:10,000 --> 00:38:12,000 y las propiedades del objeto que lo llama 352 00:38:12,000 --> 00:38:14,000 que están declaradas ahí arriba. 353 00:38:14,000 --> 00:38:17,000 Puede trabajar con todo eso para hacer lo que toque. 354 00:38:17,000 --> 00:38:19,000 Y no puede trabajar con nada más que eso. 355 00:38:19,000 --> 00:38:20,000 Que le hacen falta más cosas. 356 00:38:20,000 --> 00:38:22,000 Habría que pasarle por parámetro. 357 00:38:22,000 --> 00:38:24,000 Pero aquí para hacer lo que tiene que hacer 358 00:38:24,000 --> 00:38:27,000 que es comprobar si este nombre está en la lista 359 00:38:27,000 --> 00:38:29,000 no le hace falta nada más. 360 00:38:29,000 --> 00:38:30,000 Pues entonces ya tiene toda la información 361 00:38:30,000 --> 00:38:32,000 que necesita para trabajar. 362 00:38:32,000 --> 00:38:33,000 Ahora ya hay que hacer el código 363 00:38:33,000 --> 00:38:39,000 que es pues venga vamos a recorrer el string de arriba. 364 00:38:39,000 --> 00:38:41,000 Como vamos a consultar solamente 365 00:38:41,000 --> 00:38:47,000 vamos a hacerlo con el for each rápido. 366 00:38:47,000 --> 00:38:51,000 Para cada cliente aquí. 367 00:38:51,000 --> 00:38:56,000 Si c.equals. 368 00:38:56,000 --> 00:38:58,000 Nombre cliente. 369 00:38:58,000 --> 00:39:02,000 Pues entonces aquí ya mi resultado sería true. 370 00:39:02,000 --> 00:39:05,000 Entonces vamos a ponerlo así para que quede más claro. 371 00:39:05,000 --> 00:39:08,000 Mi resultado lo voy a guardar en una variable boolean. 372 00:39:08,000 --> 00:39:09,000 Retune result. 373 00:39:09,000 --> 00:39:11,000 Inicialmente el cliente no está. 374 00:39:11,000 --> 00:39:13,000 Inicialmente no está. 375 00:39:13,000 --> 00:39:16,000 En cuanto me encuentre un cliente 376 00:39:16,000 --> 00:39:19,000 que sí que es igual al parámetro. 377 00:39:19,000 --> 00:39:23,000 Entonces ya lo puedo cambiar a true. 378 00:39:23,000 --> 00:39:25,000 Y ahora ya cuando el for ha terminado 379 00:39:25,000 --> 00:39:31,000 en este punto retune result. 380 00:39:31,000 --> 00:39:35,000 Retune result. 381 00:39:35,000 --> 00:39:37,000 Vale este sería mi método. 382 00:39:37,000 --> 00:39:39,000 Es como una función de las que hemos visto. 383 00:39:39,000 --> 00:39:40,000 ¿Qué es lo que hace? 384 00:39:40,000 --> 00:39:43,000 En este caso yo parto de que el cliente no está. 385 00:39:43,000 --> 00:39:45,000 Me pongo a recorrer la lista de clientes 386 00:39:45,000 --> 00:39:47,000 a la que tengo acceso directamente. 387 00:39:47,000 --> 00:39:48,000 Esta letra la de arriba. 388 00:39:48,000 --> 00:39:50,000 Tengo acceso directamente. 389 00:39:50,000 --> 00:39:53,000 En cuanto encuentre un cliente 390 00:39:53,000 --> 00:39:56,000 que es igual al parámetro que me han pasado. 391 00:39:56,000 --> 00:39:58,000 Como estoy comparando dos strings. 392 00:39:58,000 --> 00:39:59,000 Recordad que equals. 393 00:39:59,000 --> 00:40:02,000 En cuanto lo encuentro ya esta variable la puedo poner a true. 394 00:40:02,000 --> 00:40:04,000 En cuanto lo encuentre una vez la puedo poner a true. 395 00:40:04,000 --> 00:40:06,000 Y ahora ya una vez que haya terminado el for 396 00:40:06,000 --> 00:40:07,000 devuelvo el resultado. 397 00:40:07,000 --> 00:40:08,000 Y eso será falso. 398 00:40:08,000 --> 00:40:11,000 Si no encontré ningún cliente en la lista 399 00:40:11,000 --> 00:40:13,000 cuyo nombre sea este. 400 00:40:13,000 --> 00:40:15,000 Y será true si encontré uno. 401 00:40:15,000 --> 00:40:23,000 En cuanto encontrara uno ya se ha cambiado. 402 00:40:23,000 --> 00:40:25,000 Pues ya tengo un método hecho 403 00:40:25,000 --> 00:40:27,000 para la clase pedido 404 00:40:27,000 --> 00:40:30,000 que recoge esa funcionalidad concreta 405 00:40:30,000 --> 00:40:31,000 que me han pedido. 406 00:40:31,000 --> 00:40:33,000 Me pueden haber pedido muchas funcionalidades 407 00:40:33,000 --> 00:40:34,000 para mi aplicación. 408 00:40:34,000 --> 00:40:37,000 En principio cada una será un método. 409 00:40:37,000 --> 00:40:39,000 Pero esta que me han pedido que es 410 00:40:39,000 --> 00:40:41,000 oye yo te voy a dar desde fuera un cliente 411 00:40:41,000 --> 00:40:43,000 y tú me tienes que decir 412 00:40:43,000 --> 00:40:48,000 si el pedido tiene ese cliente en su lista o no. 413 00:40:48,000 --> 00:40:50,000 Pues eso que es una funcionalidad 414 00:40:50,000 --> 00:40:55,000 yo lo tengo que programar en un método. 415 00:40:55,000 --> 00:40:56,000 En un método. 416 00:40:56,000 --> 00:41:02,000 Pues aquí ya lo tengo. 417 00:41:03,000 --> 00:41:05,000 Ahora lo más importante de esto 418 00:41:05,000 --> 00:41:06,000 para entender bien esto 419 00:41:06,000 --> 00:41:07,000 es si ahora cómo uso yo esto. 420 00:41:07,000 --> 00:41:09,000 Y esto y qué pedido lo hace 421 00:41:09,000 --> 00:41:10,000 y cuándo lo hago yo 422 00:41:10,000 --> 00:41:11,000 y de qué manera y cómo. 423 00:41:11,000 --> 00:41:14,000 Bueno vamos a parar unos minutos 424 00:41:14,000 --> 00:41:16,000 y luego lo hacemos. 425 00:41:16,000 --> 00:41:17,000 Y ahora me acuerdo.