1 00:00:00,000 --> 00:00:07,019 Vamos a ver, vamos a completar por tanto este ejercicio que va a ser repasar lo mismo de siempre, 2 00:00:08,279 --> 00:00:12,400 para arrancar ya con este que nos permitirá introducir clases abstractas. 3 00:00:13,279 --> 00:00:17,039 Y ya acabaríamos con herencia, pero nos seguiría pidiendo el cuerpo algo más 4 00:00:17,039 --> 00:00:19,399 porque se nos quedaría corto, que serán las interfaces. 5 00:00:20,699 --> 00:00:26,600 Vale, pues entonces, ahora tenemos ya empleado, gerente y departamento. 6 00:00:26,600 --> 00:00:28,780 y ahora vamos a ampliar la 7 00:00:28,780 --> 00:00:30,339 aplicación 8 00:00:30,339 --> 00:00:33,439 para que pueda haber varios departamentos 9 00:00:33,439 --> 00:00:35,020 si hay varios departamentos 10 00:00:35,020 --> 00:00:37,179 entonces aparece ya de forma natural el concepto 11 00:00:37,179 --> 00:00:39,079 de una empresa que los engloba 12 00:00:39,079 --> 00:00:41,259 y es la clase que habéis hecho 13 00:00:41,259 --> 00:00:43,219 bueno pues la clase 14 00:00:43,219 --> 00:00:45,000 que habéis hecho es 15 00:00:45,000 --> 00:00:46,380 esta que tiene 16 00:00:46,380 --> 00:00:48,359 la propiedad nombre 17 00:00:48,359 --> 00:00:49,500 ¿verdad? 18 00:00:51,259 --> 00:00:52,920 y la propiedad 19 00:00:52,920 --> 00:00:54,640 a raíz de departamentos 20 00:00:54,640 --> 00:01:02,060 A ver, no 21 00:01:02,060 --> 00:01:05,480 Aquí no tendría sentido que fuera static 22 00:01:05,480 --> 00:01:10,900 Lo que sí que tendría sentido 23 00:01:10,900 --> 00:01:11,900 Es que luego 24 00:01:11,900 --> 00:01:14,079 Que tú en un main 25 00:01:14,079 --> 00:01:16,140 Cuando ya vas a trabajar con una empresa 26 00:01:16,140 --> 00:01:18,400 Y declaras ya tu empresa 27 00:01:18,400 --> 00:01:20,420 Pues que a lo mejor hicieras esto 28 00:01:20,420 --> 00:01:28,359 Por ejemplo, esto sí 29 00:01:28,359 --> 00:01:30,060 Porque entonces tú me puedes decir 30 00:01:30,060 --> 00:01:33,340 oye, mi aplicación va a trabajar 31 00:01:33,340 --> 00:01:34,920 solo con una empresa 32 00:01:34,920 --> 00:01:37,640 entonces si solo va a trabajar 33 00:01:37,640 --> 00:01:38,620 con una empresa 34 00:01:38,620 --> 00:01:40,719 pues en todo caso 35 00:01:40,719 --> 00:01:42,340 esta variable 36 00:01:42,340 --> 00:01:44,340 podrías hacerla estática 37 00:01:44,340 --> 00:01:46,379 porque solo vas a trabajar con una empresa 38 00:01:46,379 --> 00:01:49,879 pero la propiedad 39 00:01:49,879 --> 00:01:51,239 nombre de empresa 40 00:01:51,239 --> 00:01:52,819 no tiene sentido que sea estática 41 00:01:52,819 --> 00:01:54,040 porque 42 00:01:54,040 --> 00:01:56,659 si hay varias empresas 43 00:01:56,659 --> 00:01:58,120 cada una tendrá su nombre 44 00:01:58,120 --> 00:02:00,980 si yo le pongo a este el modificador 45 00:02:00,980 --> 00:02:02,959 static, el mensaje 46 00:02:02,959 --> 00:02:04,400 que estoy transmitiendo es 47 00:02:04,400 --> 00:02:06,939 todas las empresas del universo se van 48 00:02:06,939 --> 00:02:07,640 a llamar igual 49 00:02:07,640 --> 00:02:11,259 ese mensaje es cierto, es falso 50 00:02:11,259 --> 00:02:12,900 todas las 51 00:02:12,900 --> 00:02:14,819 empresas del universo es imposible que se llamen igual 52 00:02:14,819 --> 00:02:15,840 no tiene ningún sentido 53 00:02:15,840 --> 00:02:18,879 pues es el mensaje que transmito cuando pongo aquí un static 54 00:02:18,879 --> 00:02:20,919 con lo cual ese static ahí no tiene 55 00:02:20,919 --> 00:02:22,960 sentido, entonces quiero 56 00:02:22,960 --> 00:02:24,719 que os vaya 57 00:02:24,719 --> 00:02:26,780 llegando cada vez más que lo más 58 00:02:26,780 --> 00:02:28,080 importante del desarrollo 59 00:02:28,080 --> 00:02:30,719 es hacer buenos diseños 60 00:02:30,719 --> 00:02:32,560 en realidad, no que 61 00:02:32,560 --> 00:02:34,699 aprendáis de carrerilla cosas relacionadas 62 00:02:34,699 --> 00:02:36,599 con la sintaxis, si pongo un 63 00:02:36,599 --> 00:02:38,639 static lo puedo llamar con el nombre de la clase 64 00:02:38,639 --> 00:02:40,219 si pongo no sé qué, cuestiones 65 00:02:40,219 --> 00:02:42,219 prácticas de sintaxis 66 00:02:42,219 --> 00:02:44,379 hay que conocerlas, por supuesto 67 00:02:44,379 --> 00:02:46,699 pero solo con esas no programamos 68 00:02:46,699 --> 00:02:47,379 y hacemos nada 69 00:02:47,379 --> 00:02:50,620 con esas podemos 70 00:02:50,620 --> 00:02:52,759 escribir código 71 00:02:52,759 --> 00:02:54,699 sintácticamente 72 00:02:54,699 --> 00:02:56,479 correcto, pero no tendría ningún 73 00:02:56,479 --> 00:02:58,580 sentido, ¿vale? tú tienes un montón de palabras 74 00:02:58,580 --> 00:03:00,080 las tiras 75 00:03:00,080 --> 00:03:02,479 al azar y las unes siguiendo las reglas 76 00:03:02,479 --> 00:03:04,580 de la sintaxis y te puedes 77 00:03:04,580 --> 00:03:06,139 salir un texto que no 78 00:03:06,139 --> 00:03:07,659 tiene ningún significado 79 00:03:07,659 --> 00:03:10,379 la mesa comió patatas fritas 80 00:03:10,379 --> 00:03:11,840 y me voy a pasear mañana 81 00:03:11,840 --> 00:03:14,639 no te sirve para nada ese texto 82 00:03:14,639 --> 00:03:16,360 y es un texto 83 00:03:16,360 --> 00:03:17,539 perfectamente válido 84 00:03:17,539 --> 00:03:20,400 si te sirve escribir el Quijote, por ejemplo 85 00:03:20,400 --> 00:03:22,819 ¿vale? pues entonces 86 00:03:22,819 --> 00:03:24,620 tú pones aquí static 87 00:03:24,620 --> 00:03:26,240 ¿vale? 88 00:03:26,240 --> 00:03:28,479 muy bien, como solo vas a tener una empresa 89 00:03:28,479 --> 00:03:30,620 te da igual que esa empresa 90 00:03:30,620 --> 00:03:32,479 el nombre que tenga de repente 91 00:03:32,479 --> 00:03:34,460 se haya convertido en el nombre para todas 92 00:03:34,460 --> 00:03:36,259 las del universo, como solo tienes una 93 00:03:36,259 --> 00:03:38,259 te da igual, pero eso no tiene ningún sentido 94 00:03:38,259 --> 00:03:39,780 no tiene ningún sentido 95 00:03:39,780 --> 00:03:44,479 luego, si quito el static 96 00:03:44,479 --> 00:03:46,659 significa, si yo tengo varios 97 00:03:46,659 --> 00:03:48,439 objetos empresa en mi aplicación 98 00:03:48,439 --> 00:03:50,259 puede que los tenga, puede que no 99 00:03:50,259 --> 00:03:52,280 pero si tengo varios objetos empresa 100 00:03:52,280 --> 00:03:54,400 cada uno tendrá su propio 101 00:03:54,400 --> 00:03:55,879 nombre y eso si tiene sentido 102 00:03:55,879 --> 00:03:58,020 ¿vale? bueno pues 103 00:03:58,020 --> 00:04:00,319 la clase empresa que habréis hecho 104 00:04:00,319 --> 00:04:01,759 tendrá su propiedad nombre 105 00:04:01,759 --> 00:04:03,680 y su conjunto de departamentos 106 00:04:03,680 --> 00:04:06,400 como cualquier 107 00:04:06,400 --> 00:04:08,340 bin que es, recordad que 108 00:04:08,340 --> 00:04:10,620 estos son los que se llaman los objetos bin en general 109 00:04:10,620 --> 00:04:13,860 para que no se os vayan olvidando terminologías 110 00:04:13,860 --> 00:04:16,420 pero luego se os van olvidando cosas 111 00:04:16,420 --> 00:04:17,939 uy, split, eso no lo hemos mencionado nunca 112 00:04:17,939 --> 00:04:19,300 claro que lo hemos mencionado 113 00:04:19,300 --> 00:04:20,740 bueno, pues 114 00:04:20,740 --> 00:04:24,139 vale, esta clase como buena clase 115 00:04:24,139 --> 00:04:25,939 de entidad que representa entidad 116 00:04:25,939 --> 00:04:27,660 que se le suele llamar bin 117 00:04:27,660 --> 00:04:29,540 en terminología de desarrollo 118 00:04:29,540 --> 00:04:31,740 ¿vale? pues tendrá 119 00:04:31,740 --> 00:04:34,079 sus constructores, sus getter y sus setter 120 00:04:34,079 --> 00:04:35,319 vale 121 00:04:35,319 --> 00:04:37,879 aquí he hecho un constructor solo con 122 00:04:37,879 --> 00:04:40,060 el nombre porque es muy útil 123 00:04:40,060 --> 00:04:42,220 en clases, entidades 124 00:04:42,220 --> 00:04:44,000 que tienen propiedades 125 00:04:44,000 --> 00:04:45,379 que son a raíz 126 00:04:45,379 --> 00:04:47,699 que haya constructores 127 00:04:47,699 --> 00:04:50,100 para inicializar solo las que no son a raíz 128 00:04:50,100 --> 00:04:51,800 porque luego ya 129 00:04:51,800 --> 00:04:53,839 los elementos de la raíz ya se irán metiendo 130 00:04:53,839 --> 00:04:55,720 luego después en métodos ¿vale? ya se irán 131 00:04:55,720 --> 00:04:58,839 transmitiendo después, vale, pues entonces he hecho un constructor 132 00:04:58,839 --> 00:05:01,699 que recibe el nombre, inicializa nombre y ya está 133 00:05:01,699 --> 00:05:06,000 departamento ya se iniciará, se inicia el solo con un array vacío 134 00:05:06,000 --> 00:05:08,259 y luego he hecho los get y los set 135 00:05:08,259 --> 00:05:12,579 y tengo mi objeto empresa 136 00:05:12,579 --> 00:05:16,759 vale, me dice algo más aquí de la clase empresa 137 00:05:16,759 --> 00:05:21,500 me dice, oye, a esa clase empresa, añádele un método 138 00:05:21,500 --> 00:05:24,279 que calcule el salario de la empresa 139 00:05:24,279 --> 00:05:27,720 vale, entonces ese método 140 00:05:27,720 --> 00:05:29,720 calcular el salario total de la empresa 141 00:05:29,720 --> 00:05:31,779 como es un método que afecta 142 00:05:31,779 --> 00:05:33,779 a una empresa, lo metemos en esta clase 143 00:05:33,779 --> 00:05:34,839 que es donde tiene que ir 144 00:05:34,839 --> 00:05:37,759 y por ejemplo lo podemos colocar aquí abajo 145 00:05:37,759 --> 00:05:39,740 le damos un nombrecito 146 00:05:39,740 --> 00:05:42,319 decidimos que va a devolver 147 00:05:42,319 --> 00:05:43,920 como va a calcular un sueldo 148 00:05:43,920 --> 00:05:45,800 total, pues devuelve un double 149 00:05:45,800 --> 00:05:48,060 y ahora ya nos ponemos a programarlo 150 00:05:48,060 --> 00:05:50,040 como hemos programado hace 3 meses 151 00:05:50,040 --> 00:05:51,459 vale 152 00:05:51,459 --> 00:05:53,879 el sueldo total de la empresa, ¿cuál va a ser? 153 00:05:54,279 --> 00:05:56,100 el sueldo de todos 154 00:05:56,100 --> 00:05:57,459 sus departamentos. 155 00:05:59,120 --> 00:06:00,120 ¿Vale? Yo es que lo que pasa es que 156 00:06:00,120 --> 00:06:02,379 tengo que subir y bajar, pero intentaré hacerlo despacito. 157 00:06:04,899 --> 00:06:05,600 No, a ver, 158 00:06:05,680 --> 00:06:07,100 todavía no copiéis nada porque estamos pensando. 159 00:06:07,399 --> 00:06:09,680 De hecho, esto... No, no, esto está borrado. 160 00:06:09,759 --> 00:06:10,199 Esto no existe. 161 00:06:10,860 --> 00:06:12,279 Lo he borrado. ¿Vale? 162 00:06:13,600 --> 00:06:15,420 Lo siento, ya no hay nada. Vale, entonces, 163 00:06:16,000 --> 00:06:17,399 vamos a hacer este método. Repito, 164 00:06:17,399 --> 00:06:18,839 esta es programación de hace dos meses. 165 00:06:20,040 --> 00:06:21,319 ¿Vale? El sueldo 166 00:06:21,319 --> 00:06:23,500 total, ¿cuál va a ser? Una suma de sueldos. 167 00:06:24,360 --> 00:06:25,480 Luego va a ser una suma 168 00:06:25,480 --> 00:06:27,439 acumulativa, estupendo, una suma 169 00:06:27,439 --> 00:06:29,759 acumulativa, pues mi variable acumuladora 170 00:06:29,759 --> 00:06:31,399 que empieza a cero 171 00:06:31,399 --> 00:06:33,579 vale, los integrantes 172 00:06:33,579 --> 00:06:35,379 de la suma, ¿de dónde me van a salir? 173 00:06:36,620 --> 00:06:37,839 ¿es el sueldo 174 00:06:37,839 --> 00:06:39,579 o que pagan los departamentos de la 175 00:06:39,579 --> 00:06:41,540 empresa? bueno, los departamentos 176 00:06:41,540 --> 00:06:43,459 de la empresa están aquí en esta variable, están 177 00:06:43,459 --> 00:06:45,459 aquí, pues tendré que ir 178 00:06:45,459 --> 00:06:47,560 departamento por departamento 179 00:06:47,560 --> 00:06:49,439 y cogiendo de cada departamento 180 00:06:49,439 --> 00:06:51,600 el sueldo que paga ese departamento 181 00:06:51,600 --> 00:06:52,459 para sumarlo 182 00:06:52,459 --> 00:06:54,079 vale, pues entonces 183 00:06:54,079 --> 00:06:56,959 el bucle mío, para ir obteniendo 184 00:06:56,959 --> 00:06:58,800 los sumandos del sueldo 185 00:06:58,800 --> 00:07:00,740 total, el bucle mío tendrá 186 00:07:00,740 --> 00:07:01,560 que iterar por aquí 187 00:07:01,560 --> 00:07:05,000 venga, pues mi bucle tendrá que iterar 188 00:07:05,000 --> 00:07:06,779 por aquí, como vamos 189 00:07:06,779 --> 00:07:08,660 a consultar solo, pues podemos hacer un 190 00:07:08,660 --> 00:07:09,899 for each que es más rápido 191 00:07:09,899 --> 00:07:11,680 departamento de 192 00:07:11,680 --> 00:07:14,579 en departamentos 193 00:07:14,579 --> 00:07:16,879 ahora, ¿qué hacemos 194 00:07:16,879 --> 00:07:18,300 con cada uno de los departamentos? 195 00:07:19,180 --> 00:07:20,660 pues tendríamos que sumarle 196 00:07:20,660 --> 00:07:22,800 a mi variable acumuladora suma 197 00:07:22,800 --> 00:07:24,579 tendríamos que sumarle 198 00:07:24,579 --> 00:07:26,639 el sueldo que paga este 199 00:07:26,639 --> 00:07:28,500 departamento, para así incluir todos 200 00:07:28,500 --> 00:07:30,939 vale, el sueldo 201 00:07:30,939 --> 00:07:32,120 que paga este departamento 202 00:07:32,120 --> 00:07:34,620 a su vez es el sueldo 203 00:07:34,620 --> 00:07:35,519 de cada empleado 204 00:07:35,519 --> 00:07:39,040 porque departamento 205 00:07:39,040 --> 00:07:41,019 que tiene, tiene un montón de empleados 206 00:07:41,019 --> 00:07:42,680 y cada 207 00:07:42,680 --> 00:07:44,459 empleado, este ya 208 00:07:44,459 --> 00:07:45,920 sí que tendrá cada uno 209 00:07:45,920 --> 00:07:48,160 su salario 210 00:07:48,160 --> 00:07:50,160 pero claro 211 00:07:50,160 --> 00:07:52,379 no nos hace falta meternos 212 00:07:52,379 --> 00:07:54,519 en cada departamento y a su vez 213 00:07:54,519 --> 00:07:56,639 ir sumando el sueldo de cada empleado 214 00:07:56,639 --> 00:07:58,100 porque en la clase 215 00:07:58,100 --> 00:08:00,259 departamento ya hemos hecho un 216 00:08:00,259 --> 00:08:00,620 método 217 00:08:00,620 --> 00:08:04,439 ¿vale? si yo me voy a la clase departamento 218 00:08:04,439 --> 00:08:06,360 efectivamente tenemos un método aquí 219 00:08:06,360 --> 00:08:10,279 que me va sumando el sueldo de todos 220 00:08:10,279 --> 00:08:12,180 los empleados, que fue el que hicimos el otro día 221 00:08:12,180 --> 00:08:14,300 entonces este método 222 00:08:14,300 --> 00:08:16,379 si lo llama un objeto 223 00:08:16,379 --> 00:08:18,259 departamento, que es donde 224 00:08:18,259 --> 00:08:19,879 está declarado el método, ¿vale? 225 00:08:19,920 --> 00:08:21,620 Está declarado en la clase departamento. 226 00:08:22,740 --> 00:08:25,500 Pues si a este método lo llamo un objeto departamento, 227 00:08:25,660 --> 00:08:28,620 irá empleado por empleado, tal y como hicimos el otro día, 228 00:08:29,259 --> 00:08:31,879 y me va a construir el sueldo total de todos los empleados 229 00:08:31,879 --> 00:08:32,539 y me lo va a devolver. 230 00:08:33,759 --> 00:08:35,820 Luego me puedo aprovechar de este método 231 00:08:35,820 --> 00:08:37,519 que está en la clase departamento 232 00:08:37,519 --> 00:08:43,919 y llamarlo desde aquí e incorporarlo. 233 00:08:44,360 --> 00:08:45,980 La variable no se llama departamento, 234 00:08:46,179 --> 00:08:50,519 sino de dos, se llama así, ¿vale? 235 00:08:50,659 --> 00:08:52,980 pues ya está, ya tengo la suma hecha 236 00:08:52,980 --> 00:08:54,759 voy sumando sobre la variable suma 237 00:08:54,759 --> 00:08:56,799 todos y cada uno de los sueldos 238 00:08:56,799 --> 00:08:58,620 de todos y cada uno de los departamentos 239 00:08:58,620 --> 00:09:00,120 que forman parte de la empresa 240 00:09:00,120 --> 00:09:03,100 y la devuelvo 241 00:09:03,100 --> 00:09:07,240 ala, pues este método ya está 242 00:09:07,240 --> 00:09:09,580 el método que nos calcula 243 00:09:09,580 --> 00:09:11,240 todo el sueldo que paga la empresa 244 00:09:11,240 --> 00:09:13,960 a todos los empleados 245 00:09:13,960 --> 00:09:15,259 de todos sus departamentos 246 00:09:15,259 --> 00:09:18,830 entonces siempre nos apoyamos 247 00:09:18,830 --> 00:09:20,129 para hacer unos métodos 248 00:09:20,129 --> 00:09:22,549 en los métodos de otras clases 249 00:09:22,549 --> 00:09:24,629 claro, no podemos reprogramarlo 250 00:09:24,629 --> 00:09:25,649 todo una y otra vez 251 00:09:25,649 --> 00:09:27,649 bueno 252 00:09:27,649 --> 00:09:30,350 claro 253 00:09:30,350 --> 00:09:32,110 ahora lo que tendríamos que haber hecho 254 00:09:32,110 --> 00:09:34,250 si no tuviéramos ese método y pasáramos del método 255 00:09:34,250 --> 00:09:36,549 pues tendríamos que haber hecho aquí un foran y dado 256 00:09:36,549 --> 00:09:38,129 en el que hubiéramos ido 257 00:09:38,129 --> 00:09:39,649 departamento, perdón 258 00:09:39,649 --> 00:09:41,669 empleado por empleado 259 00:09:41,669 --> 00:09:45,649 de cada departamento de 260 00:09:45,649 --> 00:09:47,669 de cada 261 00:09:47,669 --> 00:09:49,590 perdón, de cada conjunto de empleados 262 00:09:49,590 --> 00:09:51,450 y ahora aquí 263 00:09:51,450 --> 00:09:52,750 ir sumándole 264 00:09:52,750 --> 00:09:57,100 a este 265 00:09:57,100 --> 00:10:00,019 pues el salario 266 00:10:00,019 --> 00:10:00,840 de este empleado 267 00:10:00,840 --> 00:10:03,779 y eso sin distinguir si es 268 00:10:03,779 --> 00:10:05,700 gerente o no, es decir 269 00:10:05,700 --> 00:10:07,259 me tendría que haber metido en 270 00:10:07,259 --> 00:10:10,139 el array de empleados de cada departamento 271 00:10:10,139 --> 00:10:11,700 de, y para cada 272 00:10:11,700 --> 00:10:13,399 empleado ir uno por uno a la suma 273 00:10:13,399 --> 00:10:15,100 pero no me hace falta 274 00:10:15,100 --> 00:10:17,700 hacer esto, porque ya tengo aquí 275 00:10:17,700 --> 00:10:19,620 un método que ya se 276 00:10:19,620 --> 00:10:21,460 mete él en el array de empleados del 277 00:10:21,460 --> 00:10:22,360 departamento de 278 00:10:22,360 --> 00:10:24,820 y me obtiene 279 00:10:24,820 --> 00:10:26,940 la suma total, pues yo esa suma 280 00:10:26,940 --> 00:10:28,759 total de todos los sueldos 281 00:10:28,759 --> 00:10:30,960 de todos los empleados que están dentro de D 282 00:10:30,960 --> 00:10:32,860 se la sumo a esta variable 283 00:10:32,860 --> 00:10:35,320 y así voy sumando para cada departamento 284 00:10:35,320 --> 00:10:36,980 bla bla bla, cuando este for termina 285 00:10:36,980 --> 00:10:37,659 ya lo tengo 286 00:10:37,659 --> 00:10:40,440 luego todo esto de aquí no nos hace falta 287 00:10:40,440 --> 00:10:45,759 vale, entonces siempre nos tenemos que apoyar 288 00:10:45,759 --> 00:10:47,799 en los métodos 289 00:10:47,799 --> 00:10:49,019 que ya están hechos en las clases 290 00:10:49,019 --> 00:10:51,240 si no, nos harán cosas 291 00:10:51,240 --> 00:10:52,539 inmanejables 292 00:10:52,539 --> 00:10:56,159 vale, bueno pues ahora ya simplemente 293 00:10:56,159 --> 00:10:57,740 dice aquí que hagamos un main 294 00:10:57,740 --> 00:11:00,059 pues vamos a hacer 295 00:11:00,059 --> 00:11:01,620 vamos a completar el main y ya está 296 00:11:01,620 --> 00:11:04,059 ah bueno no, tenemos que hacer 297 00:11:04,059 --> 00:11:05,779 la empleado temporal, vale 298 00:11:05,779 --> 00:11:08,220 ahora nuestra aplicación se ha 299 00:11:08,220 --> 00:11:10,100 ampliado y nos han 300 00:11:10,100 --> 00:11:11,840 dicho, oye además de gestión de empleados 301 00:11:11,840 --> 00:11:13,039 normales y gerentes 302 00:11:13,039 --> 00:11:16,399 necesito que gestiones empleados temporales 303 00:11:16,399 --> 00:11:18,139 de los que tienen solamente 304 00:11:18,139 --> 00:11:19,620 de los que tienen una fecha de fin 305 00:11:19,620 --> 00:11:21,840 entonces la fecha de fin 306 00:11:21,840 --> 00:11:23,460 de contrato no la puedo incluir 307 00:11:23,460 --> 00:11:25,740 ni en empleado ni en gerente 308 00:11:25,740 --> 00:11:27,299 porque ellos no tienen fecha de fin 309 00:11:27,299 --> 00:11:28,799 solo tienen los empleados temporales 310 00:11:28,799 --> 00:11:31,460 entonces me aparece automáticamente otra entidad 311 00:11:31,460 --> 00:11:33,940 para trabajar con estos 312 00:11:33,940 --> 00:11:36,000 empleados temporales 313 00:11:36,000 --> 00:11:37,559 pues entonces tenemos que crear 314 00:11:37,559 --> 00:11:38,379 esa clase adicional 315 00:11:38,379 --> 00:11:39,740 pues no pasa nada 316 00:11:39,740 --> 00:11:41,720 la creamos 317 00:11:41,720 --> 00:11:44,000 nos vamos a nuestro paquete otra vez 318 00:11:44,000 --> 00:11:44,460 new 319 00:11:44,460 --> 00:11:48,159 y hacemos nuestra clase 320 00:11:48,159 --> 00:11:49,000 empleado 321 00:11:49,000 --> 00:11:50,320 temporal 322 00:11:50,320 --> 00:11:54,629 y aquí es donde 323 00:11:54,629 --> 00:11:57,490 al integrar, al agregar una nueva 324 00:11:57,490 --> 00:11:59,610 entidad, miramos a ver 325 00:11:59,610 --> 00:12:01,350 si tiene sentido que se meta en nuestra 326 00:12:01,350 --> 00:12:02,649 jerarquía de herencia 327 00:12:02,649 --> 00:12:05,350 porque si se puede meter 328 00:12:05,350 --> 00:12:07,429 en nuestra jerarquía, nos va 329 00:12:07,429 --> 00:12:09,470 a facilitar la reutilización de código que ya 330 00:12:09,470 --> 00:12:10,789 tengamos hecho y muchas cosas 331 00:12:10,789 --> 00:12:12,529 entonces nos hacemos preguntas 332 00:12:12,529 --> 00:12:15,769 ¿un empleado temporal es un departamento? 333 00:12:15,769 --> 00:12:17,929 pues no, no tiene sentido que le dé departamento 334 00:12:17,929 --> 00:12:19,830 ¿un empleado temporal es una 335 00:12:19,830 --> 00:12:20,529 empresa? no 336 00:12:20,529 --> 00:12:22,889 un empleado temporal 337 00:12:22,889 --> 00:12:25,090 es un empleado 338 00:12:25,090 --> 00:12:26,710 ah sí, un empleado temporal 339 00:12:26,710 --> 00:12:28,909 es un empleado, lo que pasa es que añade 340 00:12:28,909 --> 00:12:30,129 además la fecha de fin 341 00:12:30,129 --> 00:12:32,250 pues entonces yo ahora 342 00:12:32,250 --> 00:12:33,990 digo, ojo 343 00:12:33,990 --> 00:12:36,090 lo meto en la jerarquía 344 00:12:36,090 --> 00:12:38,750 empleado temporal, estens 345 00:12:38,750 --> 00:12:40,049 empleado 346 00:12:40,049 --> 00:12:42,309 con lo cual un empleado temporal 347 00:12:42,309 --> 00:12:45,070 automáticamente, sin que nosotros lo hagamos 348 00:12:45,070 --> 00:12:46,190 tiene ya 349 00:12:46,190 --> 00:12:48,690 su nombre, su salario 350 00:12:48,690 --> 00:12:49,889 y su fecha de contratación 351 00:12:49,889 --> 00:12:53,509 pero el temporal además de esto 352 00:12:53,509 --> 00:12:55,029 que hereda de empleado 353 00:12:55,029 --> 00:12:57,110 además de esto añade una fecha de 354 00:12:57,110 --> 00:12:58,529 fin de contrato 355 00:12:58,529 --> 00:13:00,149 añade una fecha de fin 356 00:13:00,149 --> 00:13:02,809 pues vamos a ponerle esa única 357 00:13:02,809 --> 00:13:04,889 propiedad que añade 358 00:13:04,889 --> 00:13:06,710 que es 359 00:13:06,710 --> 00:13:11,320 la fecha de fin 360 00:13:11,320 --> 00:13:14,279 como es una fecha, un objeto date 361 00:13:14,279 --> 00:13:15,720 pues venga 362 00:13:15,720 --> 00:13:17,879 la propia java útil nos vale 363 00:13:17,879 --> 00:13:20,080 entonces 364 00:13:20,080 --> 00:13:22,360 los get y los set de las propiedades 365 00:13:22,360 --> 00:13:23,720 anteriores están heredadas, 366 00:13:24,340 --> 00:13:25,779 los constructores nos heredan, 367 00:13:26,399 --> 00:13:28,019 luego vamos a hacer uno específico 368 00:13:28,019 --> 00:13:30,740 como hacíamos los constructores 369 00:13:30,740 --> 00:13:32,059 ahora ya, con los super. 370 00:13:32,620 --> 00:13:34,399 Pues nos vamos a hacer un constructor 371 00:13:34,399 --> 00:13:40,490 empleado 372 00:13:40,490 --> 00:13:41,169 temporal. 373 00:13:43,330 --> 00:13:44,710 Y este constructor 374 00:13:44,710 --> 00:13:46,590 va a recibir los cuatro 375 00:13:46,590 --> 00:13:47,789 parámetros que tiene empleado. 376 00:13:48,190 --> 00:13:50,529 Empleado temporal, aunque yo no los vea 377 00:13:50,529 --> 00:13:52,669 con mis ojos, empleado temporal 378 00:13:52,669 --> 00:13:54,710 tiene cuatro propiedades. Tiene estas tres, 379 00:13:54,710 --> 00:13:56,669 Nombre, salario, fecha de contratación 380 00:13:56,669 --> 00:13:58,549 Y fecha de fin, tiene cuatro 381 00:13:58,549 --> 00:14:00,830 Aunque yo no las vea, pues entonces hay que pasarle las cuatro 382 00:14:00,830 --> 00:14:04,350 Que son el nombre 383 00:14:04,350 --> 00:14:06,250 Del empleado 384 00:14:06,250 --> 00:14:10,179 Era nombre o era 385 00:14:10,179 --> 00:14:11,159 Si era nombre 386 00:14:11,159 --> 00:14:14,500 El salario o sueldo 387 00:14:14,500 --> 00:14:16,980 La fecha 388 00:14:16,980 --> 00:14:19,899 De contrato, ¿no? 389 00:14:19,899 --> 00:14:22,720 Y la fecha de fin 390 00:14:22,720 --> 00:14:26,840 ¿Vale? 391 00:14:26,899 --> 00:14:27,700 Porque esas son 392 00:14:27,700 --> 00:14:30,559 las cuatro propiedades que tiene empleado temporal 393 00:14:30,559 --> 00:14:32,340 luego vamos a inicializarlo 394 00:14:32,340 --> 00:14:34,460 vale, entonces yo ahora podría ir una por una 395 00:14:34,460 --> 00:14:36,360 dis.nombre igual a nombre 396 00:14:36,360 --> 00:14:37,980 dis.salario igual a salario 397 00:14:37,980 --> 00:14:40,019 podría, ¿verdad? hacer esto 398 00:14:40,019 --> 00:14:40,320 dis. 399 00:14:46,509 --> 00:14:48,509 ah, no, tendría que hacer como está heredada 400 00:14:48,509 --> 00:14:49,889 pero 401 00:14:49,889 --> 00:14:52,889 recordad que los 402 00:14:52,889 --> 00:14:55,009 constructores de clases heredadas 403 00:14:55,009 --> 00:14:57,210 se suelen 404 00:14:57,210 --> 00:14:58,889 hacer llamando 405 00:14:58,889 --> 00:15:00,870 al constructor de la superclase 406 00:15:00,870 --> 00:15:03,629 Es decir, ¿cuál es la superclase de empleado temporal? 407 00:15:03,889 --> 00:15:04,330 Empleado. 408 00:15:05,269 --> 00:15:09,370 Empleado tiene ya un constructor al que si yo le paso las tres primeras cosas, 409 00:15:09,590 --> 00:15:12,330 que es este, ya me hace esta inicialización. 410 00:15:12,730 --> 00:15:14,250 Si yo le paso las tres primeras cosas. 411 00:15:15,289 --> 00:15:18,110 Vale, pues entonces vamos a llamar al constructor de arriba, 412 00:15:19,029 --> 00:15:21,269 pasándole las tres primeras propiedades 413 00:15:21,269 --> 00:15:23,409 y luego ya inicializamos la que nos falta. 414 00:15:23,909 --> 00:15:26,769 ¿Vale? Que es lo que vimos el otro día. 415 00:15:27,309 --> 00:15:28,909 ¿Cómo se llama el constructor de arriba? 416 00:15:28,909 --> 00:15:30,230 así 417 00:15:30,230 --> 00:15:32,570 constructor de arriba 418 00:15:32,570 --> 00:15:33,309 que te paso 419 00:15:33,309 --> 00:15:35,750 estas tres cositas primeras 420 00:15:35,750 --> 00:15:38,309 que me han pasado a mi 421 00:15:38,309 --> 00:15:40,210 a mi me han pasado estos tres parámetros 422 00:15:40,210 --> 00:15:44,789 me han pasado 423 00:15:44,789 --> 00:15:45,870 estos tres parámetros 424 00:15:45,870 --> 00:15:48,710 me los han pasado 425 00:15:48,710 --> 00:15:50,730 aquí, nombre, salario, fecha 426 00:15:50,730 --> 00:15:52,970 de contrato, pues estos tres parámetros 427 00:15:52,970 --> 00:15:54,289 te los paso yo a ti 428 00:15:54,289 --> 00:15:56,769 constructor de arriba, te paso estos tres parámetros 429 00:15:56,769 --> 00:15:58,529 a ti y ahora ya 430 00:15:58,529 --> 00:16:00,809 el constructor de arriba los coge 431 00:16:00,809 --> 00:16:02,169 y los usa para 432 00:16:02,169 --> 00:16:03,950 inicializar estas propiedades 433 00:16:03,950 --> 00:16:10,559 vale, lo que pasa es que 434 00:16:10,559 --> 00:16:12,419 nos ha quedado una propiedad sin inicializar 435 00:16:12,419 --> 00:16:14,600 que es esta, porque esta el constructor de arriba 436 00:16:14,600 --> 00:16:16,600 no sabe ni que existe lógicamente y no la puede 437 00:16:16,600 --> 00:16:18,679 ni recibir siquiera, el constructor 438 00:16:18,679 --> 00:16:20,460 de arriba recibe solo tres propiedades 439 00:16:20,460 --> 00:16:21,740 bueno pues este 440 00:16:21,740 --> 00:16:24,039 último parámetro de aquí 441 00:16:24,039 --> 00:16:26,620 ese ya si que vamos a usarlo 442 00:16:26,620 --> 00:16:29,480 para 443 00:16:29,480 --> 00:16:34,220 inicializar la propiedad 444 00:16:34,220 --> 00:16:34,980 que nos falta 445 00:16:34,980 --> 00:16:40,000 ya tenemos un constructor 446 00:16:40,000 --> 00:16:42,539 con parámetros 447 00:16:42,539 --> 00:16:44,559 lo normal es hacer uno sin parámetros 448 00:16:44,559 --> 00:16:45,240 get y set 449 00:16:45,240 --> 00:16:48,519 dejamos el constructor sin parámetros 450 00:16:48,519 --> 00:16:50,960 vamos a añadir el get y set de lo que nos falta 451 00:16:50,960 --> 00:16:53,019 nos falta 452 00:16:53,019 --> 00:16:54,899 el get y set de fecha fin 453 00:16:54,899 --> 00:16:59,220 porque los get y set de las otras tres propiedades 454 00:16:59,220 --> 00:17:00,220 ya los hemos heredado 455 00:17:00,220 --> 00:17:03,340 bueno pues empleado temporal 456 00:17:03,340 --> 00:17:05,940 ya está, heredaría de empleado y se acabó 457 00:17:05,940 --> 00:17:06,220 dime 458 00:17:06,220 --> 00:17:11,539 si pones fecha contratación 459 00:17:11,539 --> 00:17:12,319 ¿dónde? no entiendo 460 00:17:12,319 --> 00:17:13,279 en el súper 461 00:17:13,279 --> 00:17:14,799 si pones fecha contratación 462 00:17:14,799 --> 00:17:17,180 no me da error, pero si lo pongo me da error 463 00:17:17,180 --> 00:17:19,359 pues será que no tienes un constructor 464 00:17:19,359 --> 00:17:21,119 arriba que reciba los tres parámetros 465 00:17:21,119 --> 00:17:23,140 y 466 00:17:23,140 --> 00:17:25,079 será que no es del mismo tipo 467 00:17:25,079 --> 00:17:27,299 a ver 468 00:17:27,299 --> 00:17:29,500 tú tienes que entender lo que estás haciendo, estás llamando al constructor 469 00:17:29,500 --> 00:17:31,380 de arriba, si lo estás llamando 470 00:17:31,380 --> 00:17:33,599 pasándole los tres parámetros que el constructor 471 00:17:33,599 --> 00:17:35,700 de arriba necesita, no te tienes por qué dar ningún error 472 00:17:35,700 --> 00:17:38,859 o que sea de otro tipo 473 00:17:38,859 --> 00:17:55,700 claro, con lo cual su constructor no tiene esto 474 00:17:55,700 --> 00:17:58,119 entonces si tu constructor no tiene esto 475 00:17:58,119 --> 00:17:59,759 pues es normal que 476 00:17:59,759 --> 00:18:01,200 no lo puedas llamar con eso 477 00:18:01,200 --> 00:18:04,400 Vale 478 00:18:04,400 --> 00:18:06,799 Bueno, pues empleado temporal 479 00:18:06,799 --> 00:18:08,680 Ya se ha metido en la jerarquía y es esto 480 00:18:08,680 --> 00:18:10,559 Entonces 481 00:18:10,559 --> 00:18:12,920 El haberlo metido 482 00:18:12,920 --> 00:18:13,740 En la jerarquía 483 00:18:13,740 --> 00:18:15,359 Haciendo un extends 484 00:18:15,359 --> 00:18:18,839 Le facilita a la aplicación las cosas 485 00:18:18,839 --> 00:18:20,960 Facilita el haber incorporado esto 486 00:18:20,960 --> 00:18:23,039 Porque imaginaos que la aplicación 487 00:18:23,039 --> 00:18:24,480 Ya estaba funcionando como antes 488 00:18:24,480 --> 00:18:26,079 Con sus empleados, gerentes 489 00:18:26,079 --> 00:18:27,579 El main de agregar empleado 490 00:18:27,579 --> 00:18:30,319 Y nos dicen, oye, agrega ahora 491 00:18:30,319 --> 00:18:31,900 la posibilidad de que haya empleados temporales 492 00:18:31,900 --> 00:18:34,339 pues nosotros nos olvidamos 493 00:18:34,339 --> 00:18:36,460 de la herencia y hacemos 494 00:18:36,460 --> 00:18:38,079 la clase empleado temporal 495 00:18:38,079 --> 00:18:40,819 la hacemos poniendo aquí todas las propiedades 496 00:18:40,819 --> 00:18:42,339 su nombre, su no sé qué 497 00:18:42,339 --> 00:18:44,460 con lo cual este extens no haría 498 00:18:44,460 --> 00:18:46,119 ninguna falta, porque hemos puesto ahí todo 499 00:18:46,119 --> 00:18:47,200 olvidándonos de la herencia 500 00:18:47,200 --> 00:18:50,660 pues ya está, empleado temporal está perfecta 501 00:18:50,660 --> 00:18:51,720 pero que ocurre 502 00:18:51,720 --> 00:18:54,079 que ahora departamento la hemos liado 503 00:18:54,079 --> 00:18:56,380 porque el departamento 504 00:18:56,380 --> 00:18:58,240 ahora no podría tener 505 00:18:58,240 --> 00:18:59,140 empleados temporales 506 00:18:59,140 --> 00:19:02,220 no podría, porque el departamento 507 00:19:02,220 --> 00:19:03,140 tiene que tener 508 00:19:03,140 --> 00:19:05,359 en su array de empleados 509 00:19:05,359 --> 00:19:07,839 todo lo que quepa en la caja 510 00:19:07,839 --> 00:19:09,940 empleado, y en la caja 511 00:19:09,940 --> 00:19:11,880 empleado cabe gerente porque 512 00:19:11,880 --> 00:19:13,859 hereda de empleado, pero 513 00:19:13,859 --> 00:19:15,579 no cabe algo que no herede de empleado 514 00:19:15,579 --> 00:19:17,319 entonces si yo quisiera 515 00:19:17,319 --> 00:19:19,819 ampliar mi aplicación para que los 516 00:19:19,819 --> 00:19:21,700 departamentos incorporaran empleados 517 00:19:21,700 --> 00:19:23,740 temporales también, que para eso he hecho la 518 00:19:23,740 --> 00:19:25,779 entidad, tendría que hacerme aquí 519 00:19:25,779 --> 00:19:27,720 otro array de, oye 520 00:19:27,720 --> 00:19:29,559 tus empleados temporales cuáles son 521 00:19:29,559 --> 00:19:37,319 y esto es una caca 522 00:19:37,319 --> 00:19:40,099 porque he tenido que retocar esta clase 523 00:19:40,099 --> 00:19:42,099 tendría que retocar 524 00:19:42,099 --> 00:19:43,259 el método sueldo total 525 00:19:43,259 --> 00:19:46,039 porque en el sueldo total tendría que recorrer ahora 526 00:19:46,039 --> 00:19:48,180 este array, el array de aquí 527 00:19:48,180 --> 00:19:50,099 o sea, tendría que hacer un montón 528 00:19:50,099 --> 00:19:52,000 de retocamientos 529 00:19:52,000 --> 00:19:53,839 en todas las clases 530 00:19:53,839 --> 00:19:56,440 para incluir en mi aplicación 531 00:19:56,440 --> 00:19:58,200 el que haya aparecido un empleado 532 00:19:58,200 --> 00:19:59,660 temporal, tendría que 533 00:19:59,660 --> 00:20:01,099 retocar en mil sitios 534 00:20:01,099 --> 00:20:03,960 pero si yo diseño bien 535 00:20:03,960 --> 00:20:05,599 y identifico 536 00:20:05,599 --> 00:20:08,000 ojo, que empleado temporal 537 00:20:08,000 --> 00:20:09,920 es también un empleado 538 00:20:09,920 --> 00:20:11,740 pues si lo 539 00:20:11,740 --> 00:20:13,480 identifico, me hago mi stents 540 00:20:13,480 --> 00:20:15,759 y al hacerme mi stents 541 00:20:15,759 --> 00:20:17,799 en el propio 542 00:20:17,799 --> 00:20:19,519 array de empleados del departamento 543 00:20:19,519 --> 00:20:21,599 en este ya van a caber empleados 544 00:20:21,599 --> 00:20:22,420 temporales también 545 00:20:22,420 --> 00:20:26,079 y no tengo que retocar nada de la clase departamento 546 00:20:26,079 --> 00:20:26,940 nada 547 00:20:26,940 --> 00:20:29,700 porque en este mismo array nos van a caer también 548 00:20:29,700 --> 00:20:31,059 los temporales si nos da la gana 549 00:20:31,059 --> 00:20:32,220 porque heredan de empleado 550 00:20:32,220 --> 00:20:35,940 si no lo hubiéramos hecho 551 00:20:35,940 --> 00:20:37,319 metiéndolo en la jerarquía 552 00:20:37,319 --> 00:20:40,000 y haciéndolo otra vez todo nuevo empleado temporal 553 00:20:40,000 --> 00:20:41,819 nos hemos cargado 554 00:20:41,819 --> 00:20:44,119 de apartamento y tenemos que rehacerlo 555 00:20:44,119 --> 00:20:45,559 metiendo también un array 556 00:20:45,559 --> 00:20:47,559 para empleados temporales, etc. 557 00:20:48,700 --> 00:20:49,220 ¿vale? 558 00:20:51,059 --> 00:20:51,740 perdón 559 00:20:51,740 --> 00:20:54,400 ya está aquí 560 00:20:54,400 --> 00:20:55,900 ¿está bien? 561 00:20:56,900 --> 00:20:57,619 sí 562 00:20:57,619 --> 00:21:00,779 vale, ¿os habéis enterado? 563 00:21:01,059 --> 00:21:05,099 Vale, ¿necesitáis parar un momentín? 564 00:21:06,240 --> 00:21:07,400 Venga, pues paramos