1 00:00:00,000 --> 00:00:08,000 Vale, uno al que se le pasan los parámetros para que en el momento de crear el objeto 2 00:00:08,000 --> 00:00:13,000 ya el objeto se cree con los valores y otro vacío por si uno quiere crear el objeto 3 00:00:13,000 --> 00:00:18,000 pero todavía no tiene valores para los campos y los quiere dar más adelante. 4 00:00:18,000 --> 00:00:25,000 Bueno, pues este solo es el aspecto típico de una clase entidad, el aspecto típico. 5 00:00:25,000 --> 00:00:30,000 Vale, vamos a añadirle algo más para que sea un poquito más complicado. 6 00:00:30,000 --> 00:00:34,000 Bueno, pues el que me explicó, el que me dijo que tenía necesidades de hacer esta aplicación 7 00:00:34,000 --> 00:00:40,000 bueno, pues me dice, oye, a ver, que los pedidos pueden tener diferentes elementos. 8 00:00:40,000 --> 00:00:44,000 Puede ser un pedido que tenga bolis, carpetas, etc. 9 00:00:44,000 --> 00:00:48,000 Entonces yo en el pedido a lo mejor puedo incorporar cosas o quitar cosas. 10 00:00:49,000 --> 00:00:51,000 Entonces eso como lo meto. 11 00:00:51,000 --> 00:00:57,000 Entonces ahora ya viene, el cliente ya te ha soltado esto y ahora tú ya te pones a pensar 12 00:00:57,000 --> 00:01:01,000 y dices, a ver, de qué manera puedo yo reflejar aquí en mi aplicación 13 00:01:01,000 --> 00:01:06,000 que un pedido puede tener bolis, gomas, carpetas y de repente le quito las carpetas 14 00:01:06,000 --> 00:01:11,000 y solo tiene bolis y gomas o a las bolis, gomas y carpetas ahora le quiero añadir 15 00:01:11,000 --> 00:01:15,000 ordenadores, ¿cómo puedo reflejar yo esto? 16 00:01:15,000 --> 00:01:18,000 Bueno, hay muchas alternativas, malas, buenas, peores. 17 00:01:18,000 --> 00:01:21,000 Uno podría decir, uy, lo voy a meter en el string. 18 00:01:21,000 --> 00:01:26,000 Hago un string separado con guiones, bolis, guion, carpeta, guion. 19 00:01:26,000 --> 00:01:34,000 Ostras, pero añadir un pedido, vale, añadir un nuevo elemento de pedido, bueno, vale. 20 00:01:34,000 --> 00:01:36,000 Es concatenarlo con un guion y el elemento. 21 00:01:36,000 --> 00:01:42,000 Pero es un rollo, porque si tengo que hacer búsquedas, ¿este pedido tiene bolis? 22 00:01:42,000 --> 00:01:46,000 Pues tengo que ir haciendo sub-string de mi string, a ver si tiene bolis dentro. 23 00:01:46,000 --> 00:01:50,000 Vaya manera de hacer un diseño que luego te complica las búsquedas, ¿no? 24 00:01:50,000 --> 00:01:52,000 De elementos y todo. 25 00:01:52,000 --> 00:01:55,000 Y no solo eso, sino que además luego la aplicación en el futuro cambia 26 00:01:55,000 --> 00:02:00,000 y te dicen, oye, de cada elemento de pedido, por favor, que la aplicación 27 00:02:00,000 --> 00:02:04,000 también pueda recoger cuántos bolis ha pedido. 28 00:02:04,000 --> 00:02:08,000 No solo si el pedido ha pedido bolis, no solo si el pedido tiene bolis, carpetas, 29 00:02:08,000 --> 00:02:11,000 sino además que me recoja cuántos bolis tienen. 30 00:02:11,000 --> 00:02:16,000 Ostras, pues con el diseño que yo tenía, que los elementos estuvieran en un string 31 00:02:16,000 --> 00:02:19,000 separados por guiones, recoger eso se me complica. 32 00:02:19,000 --> 00:02:22,000 ¿Qué hago? ¿Añado a ese string el numerito? 33 00:02:22,000 --> 00:02:25,000 Mira, se empieza esto ya a volver loco. 34 00:02:25,000 --> 00:02:27,000 Entonces, ¿qué quiero decir con esto? 35 00:02:27,000 --> 00:02:32,000 Que hay diseños buenos y malos, en el sentido de que nos pueden complicar 36 00:02:32,000 --> 00:02:37,000 más o menos las funcionalidades y sobre todo nos pueden complicar más o menos 37 00:02:38,000 --> 00:02:44,000 la ampliación de funcionalidades, la mejora del código. 38 00:02:44,000 --> 00:02:48,000 Vale, pues en este caso, que el cliente te ha dicho, oye, que mi pedido puede 39 00:02:48,000 --> 00:02:50,000 que tenga diferentes elementos. 40 00:02:50,000 --> 00:02:52,000 Ahora ya entras tú, él ya se va. 41 00:02:52,000 --> 00:02:53,000 ¿Cómo recojo esto? 42 00:02:53,000 --> 00:02:56,000 Hombre, pues entonces lo mejor es que hagas una clase para eso. 43 00:02:56,000 --> 00:03:01,000 Que cada elemento de pedido sea parte de una clase, cada elemento de pedido. 44 00:03:01,000 --> 00:03:05,000 Y así si en el futuro cada elemento de pedido, sea bolis, carpetas, 45 00:03:05,000 --> 00:03:09,000 la aplicación se amplía y tienes que recoger para cada elemento de pedido 46 00:03:09,000 --> 00:03:11,000 cuántos hay, cuánto valen. 47 00:03:11,000 --> 00:03:15,000 Estupendo, como es un objeto le añades propiedades y ya está. 48 00:03:15,000 --> 00:03:18,000 Bueno, pues entonces sería la opción que elegiríamos para esto. 49 00:03:18,000 --> 00:03:22,000 Me han dicho que cada pedido tiene que incluir elementos de pedido. 50 00:03:22,000 --> 00:03:26,000 Pues voy a hacer una clase aparte, una clase para reflejar ese concepto. 51 00:03:26,000 --> 00:03:30,000 Elemento de pedido, o item, o como uno lo quiera llamar. 52 00:03:31,000 --> 00:03:36,000 Y ahora ya mi clase pedido tendrá como propiedad el conjunto de esos. 53 00:03:36,000 --> 00:03:37,000 Y se acabó. 54 00:03:37,000 --> 00:03:39,000 Será un diseño siempre mucho mejor. 55 00:03:39,000 --> 00:03:41,000 Un diseño mucho mejor. 56 00:03:41,000 --> 00:03:42,000 ¿Vale? 57 00:03:42,000 --> 00:03:45,000 Que no meterlo todo en un string, que solo se va a acabar convirtiendo 58 00:03:45,000 --> 00:03:47,000 en algo inmanejable. 59 00:03:47,000 --> 00:03:49,000 Pues venga, vamos a hacer una clase aparte. 60 00:03:52,000 --> 00:03:57,000 Una clase aparte, item, que es un nombre más cortito. 61 00:03:57,000 --> 00:03:59,000 Vamos a llamar item. 62 00:04:00,000 --> 00:04:05,000 Y ahora esto vendría como fruto de haber hablado con el cliente de cada item. 63 00:04:05,000 --> 00:04:07,000 ¿Qué nos interesa? 64 00:04:07,000 --> 00:04:10,000 Pues podría ser la descripción y la cantidad. 65 00:04:10,000 --> 00:04:11,000 Y ya está. 66 00:04:11,000 --> 00:04:13,000 La descripción y la cantidad. 67 00:04:15,000 --> 00:04:17,000 Pues venga, dos propiedades aquí. 68 00:04:17,000 --> 00:04:19,000 La descripción va a ser un string. 69 00:04:22,000 --> 00:04:24,000 Y la cantidad, pues un entero. 70 00:04:30,000 --> 00:04:31,000 ¿Vale? 71 00:04:31,000 --> 00:04:34,000 Y ahora ya nos ponemos a hacer lo estándar, lo que siempre se hace. 72 00:04:34,000 --> 00:04:37,000 Los constructores y los getter y los setter. 73 00:04:43,000 --> 00:04:47,000 Hacemos el constructor usando los parámetros, que nos es muy útil siempre. 74 00:04:49,000 --> 00:04:55,000 Super no va a hacer nada estando, pero lo quitamos. 75 00:04:56,000 --> 00:04:59,000 Hacemos un constructor sin parámetros. 76 00:05:01,000 --> 00:05:05,000 El super lo mismo. 77 00:05:07,000 --> 00:05:09,000 Y los getter y setter. 78 00:05:20,000 --> 00:05:24,000 Vale, ya tenemos aquí nuestro item. 79 00:05:25,000 --> 00:05:29,000 Vale, entonces aquí vamos a reformular un poco esto. 80 00:05:29,000 --> 00:05:34,000 Porque claro, esto del precio del pedido, hombre, tiene sentido. 81 00:05:34,000 --> 00:05:39,000 Que el precio del pedido efectivamente sea la suma de lo que cuesta cada item. 82 00:05:39,000 --> 00:05:40,000 ¿No? 83 00:05:40,000 --> 00:05:45,000 Entonces tiene mucho más sentido ahora que el precio esté en el item. 84 00:05:45,000 --> 00:05:49,000 O sea, que el item diga un boli, cuesta esto, lo que cuesta. 85 00:05:49,000 --> 00:05:51,000 Y ya el precio del pedido ya se podrá calcular. 86 00:05:51,000 --> 00:05:56,000 Entonces, este precio aquí, vamos a quitar el precio en el pedido. 87 00:05:56,000 --> 00:06:03,000 Porque con la nueva ampliación, el precio, su sitio es el item, el boli. 88 00:06:03,000 --> 00:06:04,000 ¿Cuánto cuesta el boli? 89 00:06:04,000 --> 00:06:05,000 ¿Cuánto cuesta el...? 90 00:06:13,000 --> 00:06:16,000 Sí, pero los precios de los items los tienes que saber. 91 00:06:16,000 --> 00:06:18,000 Entonces, tendrían que estar recogidos aquí. 92 00:06:19,000 --> 00:06:21,000 Sí, pero el precio del pedido... 93 00:06:21,000 --> 00:06:23,000 A ver, el precio... 94 00:06:23,000 --> 00:06:27,000 Claro, pero el precio del pedido lo podrás tú obtener sumando el otro. 95 00:06:27,000 --> 00:06:30,000 Entonces, ¿para qué duplicar la propiedad? 96 00:06:30,000 --> 00:06:31,000 ¿No? 97 00:06:31,000 --> 00:06:33,000 Vale, entonces esta es una tarea habitual. 98 00:06:33,000 --> 00:06:34,000 Tener que estar reformulando. 99 00:06:34,000 --> 00:06:37,000 Según te van diciendo ampliaciones, tienes que estar reformulando. 100 00:06:37,000 --> 00:06:38,000 ¿Dónde ubico esto? 101 00:06:38,000 --> 00:06:45,000 Entonces, claro, no es trivial el hacer un diseño que refleje lo mejor posible 102 00:06:45,000 --> 00:06:47,000 cómo es la realidad. 103 00:06:47,000 --> 00:06:51,000 Y la realidad es que lo que cuesta son las cosas sueltas. 104 00:06:51,000 --> 00:06:52,000 Lo que cuesta es el boli. 105 00:06:52,000 --> 00:06:53,000 Lo que cuesta es la goma. 106 00:06:53,000 --> 00:06:55,000 Lo que cuesta es no sé qué. 107 00:06:55,000 --> 00:06:56,000 Eso es lo que cuesta dinero. 108 00:06:56,000 --> 00:06:59,000 Entonces, tiene sentido que el precio vaya ahí. 109 00:06:59,000 --> 00:07:01,000 ¿Que se puede hacer otro diseño? 110 00:07:01,000 --> 00:07:02,000 Claro que se puede hacer. 111 00:07:05,000 --> 00:07:08,000 Vale, entonces, si ponemos aquí el precio, 112 00:07:08,000 --> 00:07:13,000 ahora el constructor con parámetros le falta un parámetro. 113 00:07:13,000 --> 00:07:15,000 Bueno, vamos a añadírselo ahí. 114 00:07:15,000 --> 00:07:16,000 No pasa nada. 115 00:07:16,000 --> 00:07:19,000 Vale, no hace falta que lo generemos otra vez con el eclipse, 116 00:07:19,000 --> 00:07:20,000 que no somos tontos. 117 00:07:20,000 --> 00:07:23,000 Ya sabemos lo que hace el constructor con parámetros. 118 00:07:23,000 --> 00:07:33,000 Recibe un parámetro por cada propiedad y los usa para inicializar. 119 00:07:39,000 --> 00:07:41,000 Ahora el constructor ya está. 120 00:07:43,000 --> 00:07:47,000 El constructor ya ha incorporado esta propiedad. 121 00:07:49,000 --> 00:07:51,000 Vale, se le pasa por aquí. 122 00:07:52,000 --> 00:07:55,000 Porque cuidado, que porque a veces usamos el eclipse 123 00:07:55,000 --> 00:07:57,000 para generar código automáticamente, 124 00:07:57,000 --> 00:07:59,000 no perdamos de vista nunca lo que estamos haciendo. 125 00:08:03,000 --> 00:08:04,000 Vale, entonces, ¿qué falta aquí? 126 00:08:04,000 --> 00:08:05,000 Falta un get y un set. 127 00:08:07,000 --> 00:08:08,000 Vamos a hacerlo a mano. 128 00:08:08,000 --> 00:08:10,000 No vamos a ser vagos y no lo vamos a... 129 00:08:10,000 --> 00:08:12,000 Vamos a hacer a mano el get y el set del que nos falta. 130 00:08:12,000 --> 00:08:16,000 Bueno, pues el get ya sabemos qué tipo de método es. 131 00:08:16,000 --> 00:08:20,000 El get nos devuelve esa propiedad. 132 00:08:20,000 --> 00:08:22,000 Luego tiene data del cuadro de retorno. 133 00:08:22,000 --> 00:08:27,000 El get, si sigo la nomenclatura estándar que debo seguirla, 134 00:08:27,000 --> 00:08:31,000 siempre es get, nombre de la propiedad empezando con mayúscula 135 00:08:31,000 --> 00:08:32,000 y sin parámetros. 136 00:08:33,000 --> 00:08:34,000 ¿Y qué me hace el get? 137 00:08:34,000 --> 00:08:36,000 Me devuelve la propiedad. 138 00:08:37,000 --> 00:08:40,000 El eclipse, como veis, le... 139 00:08:44,000 --> 00:08:45,000 Lo he hecho tal cual, ¿no? 140 00:08:46,000 --> 00:08:47,000 Vale, pues ya está. 141 00:08:47,000 --> 00:08:48,000 Ya he hecho el get. 142 00:08:48,000 --> 00:08:51,000 Este método me devuelve el valor de esa propiedad 143 00:08:51,000 --> 00:08:52,000 cuando yo lo invoque. 144 00:08:53,000 --> 00:08:55,000 Y me falta el set para el precio. 145 00:08:55,000 --> 00:08:58,000 De nuevo método público para que pueda ser llamado 146 00:08:58,000 --> 00:08:59,000 desde fuera del paquete. 147 00:08:59,000 --> 00:09:03,000 El set no devuelve nada porque lo que hace 148 00:09:03,000 --> 00:09:05,000 es asignar un valor a la propiedad 149 00:09:06,000 --> 00:09:07,000 No devuelve nada. 150 00:09:07,000 --> 00:09:10,000 Y si sigo la nomenclatura, pues set seguido del nombre 151 00:09:10,000 --> 00:09:12,000 de la variable empezando con mayúscula. 152 00:09:12,000 --> 00:09:14,000 ¿Y qué le tengo que pasar al set? 153 00:09:14,000 --> 00:09:19,000 Un valor nuevo, un valor nuevo para esa propiedad. 154 00:09:19,000 --> 00:09:20,000 Un valor nuevo. 155 00:09:21,000 --> 00:09:22,000 Pues venga, un valor nuevo. 156 00:09:23,000 --> 00:09:25,000 Y ahora ya, ¿qué hago con ese valor nuevo? 157 00:09:26,000 --> 00:09:29,000 Se lo asigno a la propiedad. 158 00:09:31,000 --> 00:09:33,000 Perdón, es dabble, sí. 159 00:09:36,000 --> 00:09:42,000 Vale, pues ya he hecho los get y set que me faltaban. 160 00:09:44,000 --> 00:09:47,000 Entonces estos métodos, de nuevo, están claros 161 00:09:47,000 --> 00:09:49,000 a lo que sirven, cómo los hacemos, etc. 162 00:09:49,000 --> 00:09:51,000 Son los que ya hemos estado trabajando otros días. 163 00:09:52,000 --> 00:09:57,000 Vale, pues mi clase pedido ya aparentemente 164 00:09:57,000 --> 00:10:02,000 tiene todo lo necesario para cumplir las tareas 165 00:10:02,000 --> 00:10:04,000 que el cliente me ha dicho que tiene que cumplir. 166 00:10:04,000 --> 00:10:07,000 Y en esas tareas solo necesitamos conocer descripciones, 167 00:10:07,000 --> 00:10:08,000 cantidades y precio. 168 00:10:08,000 --> 00:10:11,000 Luego ya en el mail, ya fijaremos unas tareas concretas 169 00:10:11,000 --> 00:10:12,000 para hacer. 170 00:10:14,000 --> 00:10:18,000 Sí, eso he dicho antes que ese método lo borrábamos 171 00:10:18,000 --> 00:10:20,000 porque lo pusimos para explicar métodos. 172 00:10:20,000 --> 00:10:23,000 El otro día tenemos el pedido a palo seco. 173 00:10:23,000 --> 00:10:24,000 Vale, ahora mismo. 174 00:10:24,000 --> 00:10:26,000 El pedido con las tres propiedades. 175 00:10:27,000 --> 00:10:30,000 Los dos constructores y los get y los set. 176 00:10:30,000 --> 00:10:33,000 Esto es todo lo que le hace falta a la aplicación, 177 00:10:33,000 --> 00:10:34,000 hacer de los ítems. 178 00:10:34,000 --> 00:10:35,000 Vale, esto de los ítems. 179 00:10:35,000 --> 00:10:36,000 Ahora vámonos al pedido. 180 00:10:38,000 --> 00:10:40,000 Vale, porque el ítem, esta propiedad, esta clase 181 00:10:40,000 --> 00:10:44,000 la hemos metido nueva porque el cliente nos ha dicho 182 00:10:44,000 --> 00:10:46,000 oye, mis pedidos pueden ser de varias cosas 183 00:10:46,000 --> 00:10:49,000 y yo puedo necesitar meter cosas nuevas 184 00:10:49,000 --> 00:10:50,000 o quitar cosas nuevas. 185 00:10:50,000 --> 00:10:52,000 Como el cliente nos ha dicho eso, 186 00:10:52,000 --> 00:10:54,000 hemos incorporado esta clase adicional. 187 00:10:55,000 --> 00:10:56,000 Ahora ya que esta clase adicional ya está, 188 00:10:56,000 --> 00:10:57,000 volvemos a pedido. 189 00:10:58,000 --> 00:10:59,000 Vale, pedido. 190 00:10:59,000 --> 00:11:00,000 ¿Qué tiene el pedido? 191 00:11:00,000 --> 00:11:07,000 Su código, su descripción y el conjunto de ítems. 192 00:11:07,000 --> 00:11:09,000 Obviamente, el conjunto de ítems. 193 00:11:09,000 --> 00:11:10,000 Para eso hemos hecho esa clase. 194 00:11:11,000 --> 00:11:13,000 Vale, pues tiene otra propiedad entonces 195 00:11:13,000 --> 00:11:17,000 que es privada y como esta propiedad son 196 00:11:17,000 --> 00:11:21,000 todos los ítems que tiene, pues va a tener que ser esto. 197 00:11:22,000 --> 00:11:26,000 Esto o luego cuando tengamos ya colecciones, sets, listas, 198 00:11:26,000 --> 00:11:28,000 se puede cambiar esto a una lista, a un conjunto 199 00:11:28,000 --> 00:11:29,000 y la aplicación va a funcionar igual. 200 00:11:31,000 --> 00:11:32,000 ¿Vale? 201 00:11:34,000 --> 00:11:36,000 Pues llamémosle ítems por ejemplo. 202 00:11:36,000 --> 00:11:37,000 Ítems pedido. 203 00:11:38,000 --> 00:11:39,000 Así. 204 00:11:49,000 --> 00:11:50,000 Vale, entonces. 205 00:11:52,000 --> 00:11:54,000 Hemos añadido esta propiedad. 206 00:11:54,000 --> 00:11:56,000 Por ahora parece ser que es lo único 207 00:11:56,000 --> 00:11:58,000 que vamos a necesitar en pedido, por ahora. 208 00:12:00,000 --> 00:12:02,000 Que es el código, la descripción y ítems pedido. 209 00:12:02,000 --> 00:12:03,000 Vale. 210 00:12:03,000 --> 00:12:05,000 Pero vamos a seguir pensando. 211 00:12:07,000 --> 00:12:08,000 Bueno, no. 212 00:12:08,000 --> 00:12:10,000 Vamos a dejarlo para cuando metamos el cliente. 213 00:12:10,000 --> 00:12:13,000 Vale, pues como hemos añadido una propiedad, 214 00:12:13,000 --> 00:12:15,000 nos falta modificar. 215 00:12:15,000 --> 00:12:17,000 Este precio de aquí se va. 216 00:12:17,000 --> 00:12:18,000 ¿Vale? 217 00:12:19,000 --> 00:12:20,000 Y este que dice de aquí se va. 218 00:12:23,000 --> 00:12:24,000 ¿Vale? 219 00:12:24,000 --> 00:12:27,000 Entonces pedido tiene ahora código, descripción 220 00:12:27,000 --> 00:12:29,000 y sus elementos. 221 00:12:29,000 --> 00:12:32,000 ¿Que queremos obtener el precio de ese pedido? 222 00:12:32,000 --> 00:12:33,000 Ahora lo haremos. 223 00:12:33,000 --> 00:12:34,000 Ahora lo haréis. 224 00:12:34,000 --> 00:12:36,000 Nos metemos en los ítems para sumarlo. 225 00:12:36,000 --> 00:12:37,000 Ahora lo haremos. 226 00:12:37,000 --> 00:12:38,000 ¿Vale? 227 00:12:38,000 --> 00:12:40,000 Pero estas son las tres propiedades que tiene. 228 00:12:40,000 --> 00:12:41,000 Constructor. 229 00:12:41,000 --> 00:12:43,000 El constructor vamos a quitarle este parámetro 230 00:12:43,000 --> 00:12:45,000 precio que ya no lo necesita. 231 00:12:48,000 --> 00:12:49,000 ¿Vale? 232 00:12:49,000 --> 00:12:51,000 Y ahora, ¿qué nos falta en el constructor? 233 00:12:52,000 --> 00:12:55,000 Hombre, tenemos un constructor con parámetros 234 00:12:55,000 --> 00:12:57,000 que solamente recibe los dos primeros. 235 00:12:58,000 --> 00:12:59,000 El otro no los recibe. 236 00:13:00,000 --> 00:13:03,000 Pues hombre, vamos a hacer un constructor que reciba los tres. 237 00:13:03,000 --> 00:13:04,000 ¿Vale? 238 00:13:06,000 --> 00:13:07,000 Pues otra vez lo de siempre. 239 00:13:13,000 --> 00:13:16,000 Le paso un parámetro que sea la array 240 00:13:16,000 --> 00:13:18,000 y ahora ya a esa propiedad. 241 00:13:26,000 --> 00:13:29,000 Ahora ya tenemos un constructor con los tres parámetros 242 00:13:29,000 --> 00:13:30,000 y otro vacío. 243 00:13:36,000 --> 00:13:37,000 ¿Vale? 244 00:13:39,000 --> 00:13:40,000 Situación habitual. 245 00:13:42,000 --> 00:13:45,000 Cuando tenemos una clase que una de sus propiedades 246 00:13:45,000 --> 00:13:47,000 significa algo de este estilo. 247 00:13:47,000 --> 00:13:49,000 Es un conjunto de cosas que van a ir creciendo, 248 00:13:49,000 --> 00:13:51,000 encogiendo, creciendo, encogiendo 249 00:13:51,000 --> 00:13:53,000 según la vida de la clase. 250 00:13:54,000 --> 00:13:57,000 Según la vida del objeto va evolucionando. 251 00:13:57,000 --> 00:13:59,000 El objeto pedido se instanciará en algún momento. 252 00:13:59,000 --> 00:14:01,000 Este y otros mil más. 253 00:14:01,000 --> 00:14:03,000 El objeto pedido se instanciará. 254 00:14:03,000 --> 00:14:06,000 Y en ese objeto pedido, pues los ítems 255 00:14:06,000 --> 00:14:09,000 al principio tendrá unos, luego a lo mejor se le meten más, 256 00:14:09,000 --> 00:14:11,000 luego a lo mejor se le meten menos. 257 00:14:12,000 --> 00:14:13,000 ¿Vale? 258 00:14:13,000 --> 00:14:14,000 Entonces en una situación como esta 259 00:14:14,000 --> 00:14:17,000 en la que un objeto tiene como propiedad 260 00:14:17,000 --> 00:14:19,000 una cosa que es una colección, 261 00:14:19,000 --> 00:14:21,000 un array, o sea un conjunto de cosas, 262 00:14:21,000 --> 00:14:22,000 una colección, un array, 263 00:14:22,000 --> 00:14:25,000 es muy habitual, ahora lo pongo en comentarios 264 00:14:25,000 --> 00:14:26,000 en el método, 265 00:14:26,000 --> 00:14:28,000 hacerle un constructor en el cual 266 00:14:28,000 --> 00:14:31,000 sólo use las propiedades que no son el conjunto. 267 00:14:31,000 --> 00:14:33,000 De tal forma que tú puedas crear 268 00:14:33,000 --> 00:14:35,000 un pedido sólo con código y descripción 269 00:14:35,000 --> 00:14:38,000 y luego ya le vayas tú añadiendo los ítems 270 00:14:38,000 --> 00:14:40,000 o quitándolos según te dé la gana. 271 00:14:40,000 --> 00:14:42,000 Pero tener la opción de hacer un pedido 272 00:14:42,000 --> 00:14:45,000 por ahora sin nada, en su conjunto de cosas. 273 00:14:45,000 --> 00:14:46,000 Sin nada. 274 00:14:46,000 --> 00:14:48,000 Y luego tú lo vas añadiendo después. 275 00:14:48,000 --> 00:14:49,000 Es algo habitual. 276 00:14:49,000 --> 00:14:51,000 Pues vamos a hacer ese constructor. 277 00:14:51,000 --> 00:14:53,000 Voy a ponerlo aquí en comentarios. 278 00:14:57,000 --> 00:15:00,000 Cuando una clase tiene una propiedad 279 00:15:03,000 --> 00:15:05,000 que es, voy a decirlo en general, 280 00:15:05,000 --> 00:15:07,000 un conjunto, cuando yo digo un conjunto 281 00:15:07,000 --> 00:15:08,000 es muchos de algo. 282 00:15:08,000 --> 00:15:10,000 Y ese muchos de algo hasta ahora 283 00:15:10,000 --> 00:15:12,000 nosotros sólo lo estamos pudiendo hacer 284 00:15:12,000 --> 00:15:13,000 con array. 285 00:15:13,000 --> 00:15:15,000 Más adelante lo haremos con otras cosas. 286 00:15:15,000 --> 00:15:17,000 Pues cuando una clase tiene una propiedad 287 00:15:17,000 --> 00:15:21,000 que es un conjunto de otras cosas, 288 00:15:21,000 --> 00:15:24,000 en este caso un conjunto de ítems, ¿verdad? 289 00:15:24,000 --> 00:15:26,000 Pero podría ser un conjunto de string, 290 00:15:26,000 --> 00:15:28,000 un conjunto de lo que sea. 291 00:15:28,000 --> 00:15:30,000 Pues cuando una clase tiene una propiedad 292 00:15:30,000 --> 00:15:32,000 que es un conjunto de otras cosas 293 00:15:32,000 --> 00:15:34,000 es habitual 294 00:15:38,000 --> 00:15:40,000 crear un constructor 295 00:15:40,000 --> 00:15:48,000 que no inicialice 296 00:15:48,000 --> 00:15:52,000 esta propiedad. 297 00:15:52,000 --> 00:15:54,000 Que no la inicialice. 298 00:15:54,000 --> 00:15:56,000 Entonces el conjunto de cosas 299 00:15:56,000 --> 00:15:57,000 cuando el objeto es instancia 300 00:15:57,000 --> 00:15:59,000 ese conjunto está vacío. 301 00:15:59,000 --> 00:16:00,000 Y ya se irán añadiendo cosas. 302 00:16:00,000 --> 00:16:02,000 Ya se irán metiendo cosas. 303 00:16:11,000 --> 00:16:12,000 De tal manera que ese conjunto 304 00:16:12,000 --> 00:16:14,000 se vaya llenando o vaciando 305 00:16:14,000 --> 00:16:16,000 a lo largo de la vida del objeto. 306 00:16:18,000 --> 00:16:22,000 Se vaya llenando o vaciando 307 00:16:24,000 --> 00:16:26,000 posteriormente. 308 00:16:26,000 --> 00:16:28,000 Posteriormente. 309 00:16:28,000 --> 00:16:30,000 ¿Vale? Relativamente habitual. 310 00:16:30,000 --> 00:16:32,000 Bueno, pues tiene sentido. 311 00:16:32,000 --> 00:16:33,000 ¿No? Hacer un constructor 312 00:16:33,000 --> 00:16:34,000 que solamente inicialice 313 00:16:34,000 --> 00:16:36,000 código y descripción. 314 00:16:36,000 --> 00:16:38,000 Por ahora sin pedidos. 315 00:16:38,000 --> 00:16:40,000 Y ahora ya 316 00:16:40,000 --> 00:16:41,000 le vamos añadiendo pedidos 317 00:16:41,000 --> 00:16:43,000 o quitando. 318 00:16:43,000 --> 00:16:45,000 ¿Vale? Es un modelo de diseño habitual. 319 00:16:45,000 --> 00:16:47,000 Pues venga, vamos a ponerle 320 00:16:47,000 --> 00:16:49,000 ese constructor. 321 00:16:49,000 --> 00:16:51,000 Ese constructor. 322 00:16:51,000 --> 00:16:52,000 Vale, vamos a generarlo 323 00:16:52,000 --> 00:16:53,000 también automáticamente 324 00:16:53,000 --> 00:16:54,000 para no escribir tanto 325 00:16:54,000 --> 00:16:55,000 souls, el get, 326 00:16:55,000 --> 00:16:57,000 generar constructor usando campos. 327 00:16:57,000 --> 00:16:59,000 ¿Pero qué campos? 328 00:16:59,000 --> 00:17:00,000 Pues de selección o ítems 329 00:17:00,000 --> 00:17:02,000 y marco sólo los dos de arriba. 330 00:17:03,000 --> 00:17:05,000 Entonces hacemos un constructor 331 00:17:05,000 --> 00:17:07,000 que use sólo código y descripción. 332 00:17:09,000 --> 00:17:11,000 ¡Hala! Generado. Aquí está. 333 00:17:11,000 --> 00:17:13,000 Me lo ha metido ahí en medio de... 334 00:17:13,000 --> 00:17:15,000 Bueno, mete donde le da la gana. 335 00:17:15,000 --> 00:17:17,000 Así que lo voy a poner aquí debajo. 336 00:17:18,000 --> 00:17:20,000 Y le quito el super. 337 00:17:20,000 --> 00:17:22,000 ¡Hala! Ya tenemos un constructor 338 00:17:22,000 --> 00:17:24,000 que sólo inicializa código y descripción. 339 00:17:24,000 --> 00:17:26,000 Entonces cuando instanciemos un objeto 340 00:17:26,000 --> 00:17:28,000 con new pedido de esto 341 00:17:28,000 --> 00:17:30,000 su conjunto de ids va a estar a null. 342 00:17:30,000 --> 00:17:32,000 Va a ser null. 343 00:17:32,000 --> 00:17:34,000 Pero luego ya la idea es ir 344 00:17:34,000 --> 00:17:36,000 añadiendo pedidos a ese objeto. 345 00:17:36,000 --> 00:17:38,000 Esto es también la siguiente pregunta. 346 00:17:38,000 --> 00:17:40,000 ¿Cómo añado yo pedidos? 347 00:17:40,000 --> 00:17:42,000 Porque añadir un pedido 348 00:17:42,000 --> 00:17:44,000 implicará acceder a este array 349 00:17:44,000 --> 00:17:46,000 que es privado. ¿Cómo? 350 00:17:46,000 --> 00:17:48,000 Podría con el set. 351 00:17:48,000 --> 00:17:50,000 Pero hombre, es feo 352 00:17:50,000 --> 00:17:52,000 usar el set para esto. 353 00:17:52,000 --> 00:17:54,000 Porque el set es para fijar 354 00:17:54,000 --> 00:17:56,000 un array de golpe. 355 00:17:56,000 --> 00:17:58,000 Y yo lo que quiero es simplemente 356 00:17:58,000 --> 00:18:00,000 a los ítems que hay en un momento dado 357 00:18:00,000 --> 00:18:02,000 añadir uno nuevo. 358 00:18:02,000 --> 00:18:04,000 ¿Entendéis la diferencia? 359 00:18:04,000 --> 00:18:06,000 Te doy un array entero y con ese array 360 00:18:06,000 --> 00:18:08,000 sobrescribes al que ya haya. 361 00:18:08,000 --> 00:18:10,000 Ese set me puede ser útil 362 00:18:10,000 --> 00:18:12,000 en un momento dado. 363 00:18:12,000 --> 00:18:14,000 El array de ítems que haya 364 00:18:14,000 --> 00:18:16,000 lo quiero sobrescribir entero por otro nuevo. 365 00:18:16,000 --> 00:18:18,000 Puede usar eso. 366 00:18:18,000 --> 00:18:20,000 Voy a necesitar eso alguna vez. 367 00:18:20,000 --> 00:18:22,000 Pero también hay una necesidad 368 00:18:22,000 --> 00:18:24,000 que seguramente yo tenga que es 369 00:18:24,000 --> 00:18:26,000 añadir uno solo al array simplemente. 370 00:18:26,000 --> 00:18:28,000 Que no es hacer el set. 371 00:18:28,000 --> 00:18:30,000 Es añadir uno solo al que ya haya. 372 00:18:30,000 --> 00:18:32,000 En este caso me está pidiendo 373 00:18:32,000 --> 00:18:34,000 esto a Gritos que haga un método 374 00:18:34,000 --> 00:18:36,000 añadir ítem. 375 00:18:36,000 --> 00:18:38,000 Me lo está pidiendo a Gritos. 376 00:18:38,000 --> 00:18:40,000 Añadir ítem. 377 00:18:40,000 --> 00:18:42,000 ¿Cómo haríamos el método añadir ítem? 378 00:18:42,000 --> 00:18:44,000 Primero vamos a darle el nombre. 379 00:18:44,000 --> 00:18:46,000 AddItem. Ese sería el nombre. 380 00:18:46,000 --> 00:18:48,000 Añadir ítem al pedido. 381 00:18:48,000 --> 00:18:50,000 ¿Qué parámetro necesitaría este método? 382 00:18:52,000 --> 00:18:54,000 Un objeto ítem añadir. 383 00:18:56,000 --> 00:18:58,000 Necesitaría este método. 384 00:18:58,000 --> 00:19:00,000 Este método 385 00:19:00,000 --> 00:19:02,000 aparte de ser público 386 00:19:02,000 --> 00:19:04,000 para poder ser llamado desde fuera 387 00:19:04,000 --> 00:19:06,000 del paquete entidades. 388 00:19:06,000 --> 00:19:08,000 Este método 389 00:19:08,000 --> 00:19:10,000 me tiene que devolver algo. 390 00:19:12,000 --> 00:19:14,000 No, no me estáis diciendo. 391 00:19:14,000 --> 00:19:16,000 No, porque el resultado 392 00:19:16,000 --> 00:19:18,000 añadir el ítem ya se queda reflejado aquí. 393 00:19:18,000 --> 00:19:20,000 En este array. 394 00:19:20,000 --> 00:19:22,000 No me tiene que devolver nada. 395 00:19:22,000 --> 00:19:24,000 Ya se queda reflejado ahí. 396 00:19:24,000 --> 00:19:26,000 Yo aquí pongo un void. 397 00:19:26,000 --> 00:19:28,000 ¿Vale? 398 00:19:32,000 --> 00:19:34,000 Entonces, este método 399 00:19:34,000 --> 00:19:36,000 me va a ser muy útil para añadir ítems al pedido. 400 00:19:36,000 --> 00:19:38,000 Vale. 401 00:19:38,000 --> 00:19:40,000 Venga, pues 402 00:19:42,000 --> 00:19:44,000 hacedlo ahora vosotros. 403 00:19:44,000 --> 00:19:46,000 Hacedlo ahora. 404 00:19:46,000 --> 00:19:48,000 A ver si antes del requerido nos da tiempo a 405 00:19:48,000 --> 00:19:50,000 dejarlo aquí puesto.