1 00:00:00,000 --> 00:00:06,320 Entonces, todo lo que digáis en esta grabación está pensado para que vosotros le deis autorización. 2 00:00:06,879 --> 00:00:09,960 Vale, entonces, estamos haciendo un ejercicio de herencia. 3 00:00:11,060 --> 00:00:13,640 Estamos viendo este ejercicio aquí, el empleado. 4 00:00:13,859 --> 00:00:20,719 Entonces, en la primera clase que vamos a hacer, la clase empleado, que tiene atributos nombre, salario y fecha de contratación. 5 00:00:20,719 --> 00:00:35,060 vale entonces string nombre doble salario y fecha de contratación 6 00:00:35,060 --> 00:00:39,899 si queréis podemos utilizar local date 7 00:00:39,899 --> 00:00:53,450 fecha contratación local date lo tengo que importar vale aquí el java time 8 00:00:53,450 --> 00:01:00,530 entonces me importa una clase que ya existe en java por lo tanto lo que me 9 00:01:00,530 --> 00:01:07,849 dice además dice tengo que construir a hacer constructores para empleado vale 10 00:01:07,849 --> 00:01:14,609 entonces que constructores le voy a dar empleado por ejemplo public empleado que 11 00:01:14,609 --> 00:01:16,989 reciba string n 12 00:01:16,989 --> 00:01:20,290 doble 13 00:01:20,290 --> 00:01:22,250 d 14 00:01:22,250 --> 00:01:24,849 e local 15 00:01:24,849 --> 00:01:25,530 date 16 00:01:25,530 --> 00:01:28,390 f 17 00:01:28,390 --> 00:01:33,120 o sea lo que estoy haciendo es 18 00:01:33,120 --> 00:01:35,579 darme los tres parámetros y con 19 00:01:35,579 --> 00:01:37,480 esto local date mayúsculo 20 00:01:37,480 --> 00:01:41,859 y con estos parámetros pues los pongo 21 00:01:41,859 --> 00:01:44,040 en los atributos 22 00:01:44,040 --> 00:01:44,719 ¿vale? del 23 00:01:44,719 --> 00:01:47,519 objeto, dis.nombre 24 00:01:47,519 --> 00:01:48,560 es igual a n 25 00:01:48,560 --> 00:01:51,760 dis.salario 26 00:01:51,760 --> 00:01:53,719 es igual a 27 00:01:53,719 --> 00:01:54,280 s 28 00:01:54,280 --> 00:01:59,939 y 29 00:01:59,939 --> 00:02:03,519 dis.fecha 30 00:02:03,519 --> 00:02:05,620 contratación es igual a s 31 00:02:05,620 --> 00:02:07,540 vale, ya está 32 00:02:07,540 --> 00:02:08,479 esto es 33 00:02:08,479 --> 00:02:11,759 básico por ahora 34 00:02:11,759 --> 00:02:13,580 si, puedes hacer 35 00:02:13,580 --> 00:02:14,860 también otros 36 00:02:14,860 --> 00:02:19,840 Constructores 37 00:02:19,840 --> 00:02:21,639 Empleado, por ejemplo un constructor 38 00:02:21,639 --> 00:02:23,099 Donde solo me dan el nombre 39 00:02:23,099 --> 00:02:28,370 Entonces si solo me dan el nombre 40 00:02:28,370 --> 00:02:29,750 Lo que hago es 41 00:02:29,750 --> 00:02:32,550 Dis.n 42 00:02:32,550 --> 00:02:33,370 Es igual a 43 00:02:33,370 --> 00:02:35,349 Dis.nombre es igual a n 44 00:02:35,349 --> 00:02:38,710 Dis.salario 45 00:02:38,710 --> 00:02:40,069 Es igual a 46 00:02:40,069 --> 00:02:42,789 No sé 47 00:02:42,789 --> 00:02:44,229 Mil 48 00:02:44,229 --> 00:02:47,330 Un salario básico 49 00:02:47,330 --> 00:02:49,169 si no me dicen el salario, le doy el salario 50 00:02:49,169 --> 00:02:51,090 mínimo, que no sé cuánto será 51 00:02:51,090 --> 00:02:54,449 y this.fecha 52 00:02:54,449 --> 00:02:56,289 contratación 53 00:02:56,289 --> 00:02:57,550 o le doy null 54 00:02:57,550 --> 00:02:59,530 vale 55 00:02:59,530 --> 00:03:01,009 o intento darle 56 00:03:01,009 --> 00:03:04,110 la fecha de hoy 57 00:03:04,110 --> 00:03:04,689 vale 58 00:03:04,689 --> 00:03:07,330 que no me acuerdo cómo se hace 59 00:03:07,330 --> 00:03:08,250 vamos a buscar 60 00:03:08,250 --> 00:03:11,229 vale, tendré que crear 61 00:03:11,229 --> 00:03:13,090 local date 62 00:03:13,090 --> 00:03:15,229 bueno, puedo hacer así 63 00:03:15,229 --> 00:03:20,590 una opción es 64 00:03:20,590 --> 00:03:23,650 localdate.off 65 00:03:23,650 --> 00:03:25,229 y darle la fecha de hoy 66 00:03:25,229 --> 00:03:27,090 o sea, dará siempre 67 00:03:27,090 --> 00:03:29,069 una fecha concreta 68 00:03:29,069 --> 00:03:31,110 2023 69 00:03:31,110 --> 00:03:33,389 1 70 00:03:33,389 --> 00:03:35,409 y 71 00:03:35,409 --> 00:03:36,330 23 72 00:03:36,330 --> 00:03:41,469 con esto siempre cualquiera que se cree 73 00:03:41,469 --> 00:03:43,689 la fecha de contratación 74 00:03:43,689 --> 00:03:45,710 se dará al 24 de enero 75 00:03:45,710 --> 00:03:47,189 de 2023, siempre 76 00:03:47,189 --> 00:03:49,509 vale, a lo mejor no es 77 00:03:49,509 --> 00:03:51,870 no tiene sentido 78 00:03:51,870 --> 00:03:53,449 si yo me voy aquí 79 00:03:53,449 --> 00:03:55,129 en el 80 00:03:55,129 --> 00:03:57,509 en el array 81 00:03:57,509 --> 00:03:59,210 veis que tenemos un 82 00:03:59,210 --> 00:04:01,530 static local date 83 00:04:01,530 --> 00:04:07,060 esto es lo que devuelve 84 00:04:07,060 --> 00:04:08,860 y este es el método 85 00:04:08,860 --> 00:04:09,840 now 86 00:04:09,840 --> 00:04:12,699 vale, entonces hay un 87 00:04:12,699 --> 00:04:14,460 modo para decir ahora 88 00:04:14,460 --> 00:04:16,339 dame la fecha de ahora 89 00:04:16,339 --> 00:04:19,759 Entonces lo que puedo decirle yo es 90 00:04:19,759 --> 00:04:21,579 Vale, entonces dame 91 00:04:21,579 --> 00:04:26,040 Si no me dices 92 00:04:26,040 --> 00:04:27,240 Cuando 93 00:04:27,240 --> 00:04:29,079 Pues dame la fecha de ahora 94 00:04:29,079 --> 00:04:31,040 Del momento en que se crea el objeto 95 00:04:31,040 --> 00:04:33,420 Esa es la fecha de contratación 96 00:04:33,420 --> 00:04:34,939 ¿Sí? 97 00:04:37,189 --> 00:04:37,629 Vale 98 00:04:37,629 --> 00:04:41,069 Y ya está, yo creo que 99 00:04:41,069 --> 00:04:42,829 O sea, un empleado siempre tendrá un nombre 100 00:04:42,829 --> 00:04:44,589 No voy a crear un empleado sin darle un nombre 101 00:04:44,589 --> 00:04:46,470 Si tengo que crear un empleado sabré quién es 102 00:04:46,470 --> 00:04:48,910 Si sé todo de él, le pongo todo 103 00:04:48,910 --> 00:04:57,129 Si no sé todo de él, le doy un salario básico y lo contrato desde hoy, ¿vale? 104 00:04:58,790 --> 00:05:01,870 Sigamos con lo que pide el ejercicio 105 00:05:01,870 --> 00:05:04,050 El ejercicio sigue con 106 00:05:04,050 --> 00:05:08,269 Vale, crear una clase gerente que herede a la clase empleado 107 00:05:08,269 --> 00:05:10,730 Y añade un nuevo atributo que se llama bonus, ¿vale? 108 00:05:11,769 --> 00:05:15,329 Utilizar constructores para inicializar los atributos, ¿vale? 109 00:05:15,329 --> 00:05:36,529 Entonces, además de un empleado normal, yo tengo un gerente, gerente hereda de alumno. ¿Cómo hago que gerente herede de alumno y de alumno de empleado? 110 00:05:36,529 --> 00:05:39,610 Extend 111 00:05:39,610 --> 00:05:42,370 Empleado 112 00:05:42,370 --> 00:05:51,040 En mayúscula 113 00:05:51,040 --> 00:05:53,420 Entonces ya esto me está diciendo 114 00:05:53,420 --> 00:05:55,879 Que todo lo que está aquí en empleado 115 00:05:55,879 --> 00:05:57,459 Más o menos lo puedo utilizar 116 00:05:57,459 --> 00:05:58,339 Desde gerente 117 00:05:58,339 --> 00:06:00,399 Entonces 118 00:06:00,399 --> 00:06:03,560 Me dice que tengo que añadir un nuevo 119 00:06:03,560 --> 00:06:05,040 Atributo 120 00:06:05,040 --> 00:06:06,139 Que es el atributo bonus 121 00:06:06,139 --> 00:06:08,319 Supongo que sea un bonus al 122 00:06:08,319 --> 00:06:11,019 al salario 123 00:06:11,019 --> 00:06:11,920 vale, entonces 124 00:06:11,920 --> 00:06:13,519 doble 125 00:06:13,519 --> 00:06:15,540 bonus 126 00:06:15,540 --> 00:06:19,459 y ahora voy a crear 127 00:06:19,459 --> 00:06:21,540 public 128 00:06:21,540 --> 00:06:23,399 gerente 129 00:06:23,399 --> 00:06:36,160 public gerente 130 00:06:36,160 --> 00:06:38,920 si creo un gerente 131 00:06:38,920 --> 00:06:40,579 lo que hago es 132 00:06:40,579 --> 00:06:43,620 poner que su bonus 133 00:06:43,620 --> 00:06:47,660 es igual 134 00:06:47,660 --> 00:06:49,459 Al bonus que me pasen aquí 135 00:06:49,459 --> 00:06:50,740 Doble 136 00:06:50,740 --> 00:06:51,860 B 137 00:06:51,860 --> 00:06:57,230 Realmente si yo creo un gerente 138 00:06:57,230 --> 00:06:59,250 Sé que tiene que tener un bonus 139 00:06:59,250 --> 00:07:01,189 Por lo tanto se lo pondré 140 00:07:01,189 --> 00:07:03,470 Aquí hay algo raro 141 00:07:03,470 --> 00:07:07,589 ¿Por qué se enfada? 142 00:07:10,339 --> 00:07:12,220 Porque aquí sin haber dicho nada 143 00:07:12,220 --> 00:07:13,399 Yo estoy llamando super 144 00:07:13,399 --> 00:07:17,850 Y como este super 145 00:07:17,850 --> 00:07:19,370 No está definido 146 00:07:19,370 --> 00:07:20,449 En empleado 147 00:07:20,449 --> 00:07:23,589 Porque empleado no tiene empleado sin nada 148 00:07:23,589 --> 00:07:25,490 Pues él se me enfada 149 00:07:25,490 --> 00:07:26,930 Y me dice, no lo puedo llamar 150 00:07:26,930 --> 00:07:29,610 No hay un constructor sin nada 151 00:07:29,610 --> 00:07:31,329 Por lo tanto no lo puedo hacer 152 00:07:31,329 --> 00:07:33,990 Fijaos que si yo me voy a empleado 153 00:07:33,990 --> 00:07:36,389 Y le digo, hay un constructor sin nada 154 00:07:36,389 --> 00:07:38,629 Public empleado 155 00:07:38,629 --> 00:07:43,319 Que no hace nada 156 00:07:43,319 --> 00:07:44,560 ¿Vale? 157 00:07:45,120 --> 00:07:46,319 Entonces ahora 158 00:07:46,319 --> 00:07:47,920 Doble 159 00:07:47,920 --> 00:07:50,519 Esto ya no es un problema 160 00:07:50,519 --> 00:07:53,579 Es más, esto ya no es un problema 161 00:07:53,579 --> 00:07:56,100 Da igual ponerlo que no ponerlo 162 00:07:56,100 --> 00:07:57,579 Porque siempre va a utilizar 163 00:07:57,579 --> 00:08:03,680 si uso el constructor por defecto da igual ponerlo que no ponerlo, no ponerlo 164 00:08:03,680 --> 00:08:12,339 es igual a poner super como ahora existe no obstante no haga nada 165 00:08:12,339 --> 00:08:16,519 de hecho este de aquí en realidad tiene una línea de código, que línea de código tiene? 166 00:08:16,519 --> 00:08:32,779 que habría escrito aquí? que haya escrito aquí que no veo? super y quién 167 00:08:32,779 --> 00:08:33,440 es este super 168 00:08:33,440 --> 00:08:35,259 object 169 00:08:35,259 --> 00:08:40,809 en este caso, esto está llamando 170 00:08:40,809 --> 00:08:42,870 el constructor por defecto de arriba 171 00:08:42,870 --> 00:08:44,429 que es este constructor de aquí 172 00:08:44,429 --> 00:08:46,809 que llama el constructor por defecto de arriba 173 00:08:46,809 --> 00:08:48,450 que es el constructor de object 174 00:08:48,450 --> 00:08:51,149 entonces me crea un objeto al que no le añade 175 00:08:51,149 --> 00:08:52,789 nada, porque aquí no le añade nada 176 00:08:52,789 --> 00:08:55,049 al que le añade, le añade este de aquí 177 00:08:55,049 --> 00:08:58,769 bueno, en realidad 178 00:08:58,769 --> 00:09:00,950 aquí si le añade estos tres 179 00:09:00,950 --> 00:09:02,970 pero no lo 180 00:09:02,970 --> 00:09:05,529 Como se dice, no los inicializa 181 00:09:05,529 --> 00:09:09,070 Entonces esto sería feo 182 00:09:09,070 --> 00:09:11,450 Pero yo esto no lo quiero 183 00:09:11,450 --> 00:09:12,990 Hemos dicho porque un empleado como mínimo 184 00:09:12,990 --> 00:09:14,029 Tiene que tener un nombre 185 00:09:14,029 --> 00:09:16,950 Entonces esto se enfada 186 00:09:16,950 --> 00:09:18,330 A menos que yo no diga 187 00:09:18,330 --> 00:09:20,529 Cuando creo un nombre, un gerente 188 00:09:20,529 --> 00:09:22,549 Como mínimo tendrá que tener un nombre 189 00:09:22,549 --> 00:09:26,929 Y su sueldo 190 00:09:26,929 --> 00:09:28,230 Su bonus 191 00:09:28,230 --> 00:09:31,049 Entonces aquí lo que llamo es 192 00:09:31,049 --> 00:09:32,389 SuperDN 193 00:09:32,389 --> 00:09:34,250 Que eso si existe 194 00:09:34,250 --> 00:09:36,509 Estoy llamando el constructor 195 00:09:36,509 --> 00:09:38,889 De mi superclase 196 00:09:38,889 --> 00:09:40,529 Que reciba solo 197 00:09:40,529 --> 00:09:41,909 Nombre 198 00:09:41,909 --> 00:09:44,309 Estoy llamando este constructor de aquí 199 00:09:44,309 --> 00:09:46,970 Se ejecuta este constructor de aquí 200 00:09:46,970 --> 00:09:49,110 Bueno, aquí se ejecuta el constructor 201 00:09:49,110 --> 00:09:51,230 De object, luego se ejecuta 202 00:09:51,230 --> 00:09:52,169 Este código de aquí 203 00:09:52,169 --> 00:09:54,850 Luego volvemos aquí y ejecutamos también 204 00:09:54,850 --> 00:09:56,029 Este código de aquí 205 00:09:56,029 --> 00:09:59,649 Y también 206 00:09:59,649 --> 00:10:02,690 Tengo otro 207 00:10:02,690 --> 00:10:04,350 Otro constructor 208 00:10:04,350 --> 00:10:05,490 Public 209 00:10:05,490 --> 00:10:07,129 Diferente 210 00:10:07,129 --> 00:10:09,350 Que pilla todo 211 00:10:09,350 --> 00:10:11,409 String n 212 00:10:11,409 --> 00:10:14,450 Que era 213 00:10:14,450 --> 00:10:16,629 Doble s 214 00:10:16,629 --> 00:10:18,730 Local 215 00:10:18,730 --> 00:10:20,970 Date 216 00:10:20,970 --> 00:10:23,070 D 217 00:10:23,070 --> 00:10:25,409 Coma doble 218 00:10:25,409 --> 00:10:26,769 B 219 00:10:26,769 --> 00:10:30,830 Y lo que hace este señor 220 00:10:30,830 --> 00:10:32,929 Es 221 00:10:32,929 --> 00:10:34,649 Super 222 00:10:34,649 --> 00:10:36,429 De que 223 00:10:36,429 --> 00:10:45,389 N, S y F 224 00:10:45,389 --> 00:10:46,990 Lo he llamado F o lo he llamado L 225 00:10:46,990 --> 00:10:52,799 Llama el super 226 00:10:52,799 --> 00:10:54,500 Constructor 227 00:10:54,500 --> 00:10:56,799 Que utiliza 228 00:10:56,799 --> 00:10:58,200 N, S y F 229 00:10:58,200 --> 00:10:59,419 Es decir, esto 230 00:10:59,419 --> 00:11:05,139 Y una vez que haya ejecutado esto 231 00:11:05,139 --> 00:11:06,919 Hace lo que tiene que hacer 232 00:11:06,919 --> 00:11:07,960 Esta clase 233 00:11:07,960 --> 00:11:09,919 O sea, this.bonus 234 00:11:09,919 --> 00:11:11,320 Es igual a B 235 00:11:11,320 --> 00:11:30,730 dudas por qué lo utilizó local de itamaki no lo ha importado entonces tengo 236 00:11:30,730 --> 00:11:37,440 que acordarme de importarlo aquí también si no no sabe dónde la cuenta porque él 237 00:11:37,440 --> 00:11:42,120 buscará local de ita en el package no la encuentro entonces está esta clase no 238 00:11:42,120 --> 00:11:46,259 está definida yo tengo que decirle hoy a mí tienes que importar esta local de 239 00:11:46,259 --> 00:11:48,259 de aquí, la local data del 240 00:11:48,259 --> 00:11:49,740 package java.time 241 00:11:49,740 --> 00:11:53,740 dudas? 242 00:11:57,960 --> 00:11:59,320 vale, y esto también 243 00:11:59,320 --> 00:12:01,360 el gerente está hecho, más o 244 00:12:01,360 --> 00:12:03,299 menos, ¿vale? por como lo pide aquí, veis que son 245 00:12:03,299 --> 00:12:05,559 ejercicios bastante sencillos 246 00:12:05,559 --> 00:12:06,919 para empezar, ¿vale? 247 00:12:08,240 --> 00:12:09,220 voy ahora 248 00:12:09,220 --> 00:12:16,149 porque 249 00:12:16,149 --> 00:12:18,509 quiero dar la posibilidad 250 00:12:18,509 --> 00:12:19,789 a quien crea algo 251 00:12:19,789 --> 00:12:21,289 de tener varias opciones 252 00:12:21,289 --> 00:12:22,990 imagínate que yo 253 00:12:22,990 --> 00:12:25,669 te tengo aquí, te tengo que contratar 254 00:12:25,669 --> 00:12:26,929 te contrato como empleado 255 00:12:26,929 --> 00:12:29,529 y tú has venido de otra empresa 256 00:12:29,529 --> 00:12:31,789 y me has dicho, oye mira, por menos de 1500 euros 257 00:12:31,789 --> 00:12:33,889 no voy, pues yo te hago un contrato 258 00:12:33,889 --> 00:12:35,730 con 1500 euros y te contrato 259 00:12:35,730 --> 00:12:37,450 desde el final del mes 260 00:12:37,450 --> 00:12:39,590 ¿vale? entonces tengo que utilizar 261 00:12:39,590 --> 00:12:40,629 esto 262 00:12:40,629 --> 00:12:43,269 para poder hacerlo 263 00:12:43,269 --> 00:12:45,750 sin embargo, si yo sé que 264 00:12:45,750 --> 00:12:47,970 tú te incorporas hoy, es tu primer trabajo 265 00:12:47,970 --> 00:12:49,570 y entonces ganas el mínimo 266 00:12:49,570 --> 00:12:51,870 y cosas por el estilo, pues puedo utilizar esto 267 00:12:51,870 --> 00:12:54,549 O si simplemente yo soy de recursos humanos 268 00:12:54,549 --> 00:12:55,710 Pero no me han dicho 269 00:12:55,710 --> 00:12:56,549 Me han dicho el nombre 270 00:12:56,549 --> 00:12:57,629 Pero todavía no me han dicho 271 00:12:57,629 --> 00:13:00,429 Las características de tu contrato 272 00:13:00,429 --> 00:13:02,169 Pues entonces uso este de aquí 273 00:13:02,169 --> 00:13:04,350 Que te crea en la base de datos 274 00:13:04,350 --> 00:13:06,470 Y luego ya, pues, veremos que hago 275 00:13:06,470 --> 00:13:07,629 ¿Sí? 276 00:13:09,250 --> 00:13:10,950 O sea, el constructor 277 00:13:10,950 --> 00:13:13,610 Es una forma 278 00:13:13,610 --> 00:13:14,710 Dar varios constructores 279 00:13:14,710 --> 00:13:16,049 Es una forma que tienes tú 280 00:13:16,049 --> 00:13:18,090 Para dar flexibilidad 281 00:13:18,090 --> 00:13:20,450 Cuando se crea un 282 00:13:20,450 --> 00:13:23,070 Un objeto 283 00:13:23,070 --> 00:13:25,750 Dar flexibilidad a quien lo está creando 284 00:13:25,750 --> 00:13:27,669 Para crearlo de distintas formas 285 00:13:27,669 --> 00:13:29,289 Mírate por ejemplo 286 00:13:29,289 --> 00:13:31,730 El API Java de String 287 00:13:31,730 --> 00:13:34,309 String 288 00:13:34,309 --> 00:13:37,210 Tiene todos estos constructores de aquí 289 00:13:37,210 --> 00:13:39,230 Todos estos son constructores 290 00:13:39,230 --> 00:13:40,490 Tú puedes construir 291 00:13:40,490 --> 00:13:43,590 Un String sin nada 292 00:13:43,590 --> 00:13:45,210 Le puedes pasar 293 00:13:45,210 --> 00:13:47,590 Un array de byte que él considera 294 00:13:47,590 --> 00:13:49,909 Cada byte lo interpretará como un carácter 295 00:13:49,909 --> 00:13:51,590 y lo utilizará como una cosa 296 00:13:51,590 --> 00:13:54,210 un array de bytes 297 00:13:54,210 --> 00:13:56,370 pero diciéndole cual es el 298 00:13:56,370 --> 00:13:57,149 el chart set 299 00:13:57,149 --> 00:14:00,070 el conjunto de caracteres que estás 300 00:14:00,070 --> 00:14:02,450 utilizando, le puedes decir 301 00:14:02,450 --> 00:14:04,049 un byte en 302 00:14:04,049 --> 00:14:05,230 ascii y luego 303 00:14:05,230 --> 00:14:08,090 este es deprecated 304 00:14:08,090 --> 00:14:10,450 para afuera, o sea, hay distintas 305 00:14:10,450 --> 00:14:11,710 formas de crear una 306 00:14:11,710 --> 00:14:14,350 string, vale, y porque hay todas estas 307 00:14:14,350 --> 00:14:16,070 porque hay en algunos casos 308 00:14:16,070 --> 00:14:17,889 en que esto te puede ser útil, por ejemplo 309 00:14:17,889 --> 00:14:20,710 Si tú estás leyendo desde un fichero 310 00:14:20,710 --> 00:14:22,870 Y la forma con que lo estás leyendo 311 00:14:22,870 --> 00:14:23,889 Es de byte en byte 312 00:14:23,889 --> 00:14:25,490 Y sabes que es un fichero de texto 313 00:14:25,490 --> 00:14:27,470 Cuando has leído todos los bytes 314 00:14:27,470 --> 00:14:28,870 En un array de bytes 315 00:14:28,870 --> 00:14:31,090 Pues se lo pasas a un 316 00:14:31,090 --> 00:14:32,649 Constructor de string que 317 00:14:32,649 --> 00:14:34,830 Interprete estos bytes como 318 00:14:34,830 --> 00:14:36,950 Carácteres y ya tienes tu string leída 319 00:14:36,950 --> 00:14:39,129 Vale, ya lo veremos cuando 320 00:14:39,129 --> 00:14:41,110 Haremos acceso a ficheros 321 00:14:41,110 --> 00:14:43,690 Vale 322 00:14:43,690 --> 00:14:46,370 Entonces, siga adelante 323 00:14:46,370 --> 00:14:48,429 La tercera pasa 324 00:14:48,429 --> 00:14:51,149 El punto 3 y 4 325 00:14:51,149 --> 00:14:53,049 Son menos, tienen menos a que ver con 326 00:14:53,049 --> 00:14:54,669 Herencia, vale, pero 327 00:14:54,669 --> 00:14:57,210 Nosotros haremos alguna cosa para ver que 328 00:14:57,210 --> 00:14:59,389 Que algo tenga que ver, vale 329 00:14:59,389 --> 00:15:01,389 Entonces voy a crear 330 00:15:01,389 --> 00:15:03,750 La tercera que es departamento 331 00:15:03,750 --> 00:15:08,669 Creo una clase 332 00:15:08,669 --> 00:15:10,049 Departamento 333 00:15:10,750 --> 00:15:16,210 ¿Qué hace la clase departamento? 334 00:15:17,330 --> 00:15:18,450 Contiene un array 335 00:15:18,450 --> 00:15:20,610 De objetos empleados, vale 336 00:15:20,610 --> 00:15:24,230 Y tiene un modo para calcular el salario total del departamento 337 00:15:24,230 --> 00:15:25,730 Vale, vamos a ver 338 00:15:25,730 --> 00:15:27,230 ¿Cómo lo hacemos esto? 339 00:15:30,259 --> 00:15:33,220 Un array de empleados 340 00:15:33,220 --> 00:15:33,659 ¿Vale? 341 00:15:33,759 --> 00:15:35,840 Entonces, empleado 342 00:15:35,840 --> 00:15:38,039 Array 343 00:15:38,039 --> 00:15:39,779 Empleados 344 00:15:39,779 --> 00:15:44,720 Estos son los empleados de este departamento 345 00:15:44,720 --> 00:15:46,740 ¿Sí? 346 00:15:47,139 --> 00:15:48,860 ¿Cómo creo un departamento? 347 00:15:57,059 --> 00:15:58,200 ¿Cómo creo un departamento? 348 00:15:59,340 --> 00:16:00,220 ¿Qué tengo que hacer? 349 00:16:00,759 --> 00:16:02,440 Constructor 350 00:16:02,440 --> 00:16:04,100 ¿Cómo creamos este constructor? 351 00:16:04,379 --> 00:16:05,980 Primer constructor, public 352 00:16:05,980 --> 00:16:07,700 Departamento 353 00:16:07,700 --> 00:16:10,980 ¿Qué recibe? 354 00:16:17,169 --> 00:16:18,009 Empleado 355 00:16:18,009 --> 00:16:23,509 Si me pasas un array de empleado 356 00:16:23,509 --> 00:16:24,610 Que ya has creado tú 357 00:16:24,610 --> 00:16:27,409 Yo simplemente lo que voy a hacer 358 00:16:27,409 --> 00:16:28,190 Es que 359 00:16:28,190 --> 00:16:30,289 Empleados 360 00:16:30,289 --> 00:16:32,049 Dis.empleados 361 00:16:32,049 --> 00:16:37,639 Es igual a lo que me ha pasado 362 00:16:37,639 --> 00:16:40,940 Quiero usar 363 00:16:40,940 --> 00:16:42,259 Otros constructores 364 00:16:42,259 --> 00:16:45,220 Quiero hacer un departamento vacío 365 00:16:45,220 --> 00:16:50,779 Otra opción 366 00:16:50,779 --> 00:16:52,840 Podría ser que yo crea un departamento vacío 367 00:16:52,840 --> 00:16:55,000 Y luego empiezo a rellenarlo 368 00:16:55,000 --> 00:16:55,919 Añadiendo 369 00:16:55,919 --> 00:16:58,419 Empleados 370 00:16:58,419 --> 00:17:03,690 Es esto 371 00:17:03,690 --> 00:17:07,230 El departamento tiene 372 00:17:07,230 --> 00:17:08,930 Una red de empleados 373 00:17:08,930 --> 00:17:11,190 Y me pasas una red de empleados 374 00:17:11,190 --> 00:17:12,769 Y yo lo pongo allí 375 00:17:12,769 --> 00:17:14,009 ¿Vale? 376 00:17:14,450 --> 00:17:16,670 Otra opción sería que me pasas 377 00:17:16,670 --> 00:17:18,490 Un alumno 378 00:17:18,490 --> 00:17:20,109 Un empleado solo 379 00:17:20,109 --> 00:17:21,670 Un objeto empleado 380 00:17:21,670 --> 00:17:23,470 Para decir que para hacer un departamento 381 00:17:23,470 --> 00:17:25,190 Necesita al menos un empleado 382 00:17:25,190 --> 00:17:26,690 Si el departamento no tiene empleados 383 00:17:26,690 --> 00:17:27,710 No lo puedo construir 384 00:17:27,710 --> 00:17:32,130 Y yo creo un array con solo ese empleado ahí dentro 385 00:17:32,130 --> 00:17:33,650 Así, ¿eh? 386 00:17:33,650 --> 00:17:35,970 Para public 387 00:17:35,970 --> 00:17:39,849 Departamento 388 00:17:39,849 --> 00:17:42,849 me pasas 389 00:17:42,849 --> 00:17:44,910 solo un empleado 390 00:17:44,910 --> 00:17:45,349 e 391 00:17:45,349 --> 00:17:48,829 y yo lo que hago 392 00:17:48,829 --> 00:17:51,369 es que this.empleado 393 00:17:51,369 --> 00:17:54,890 es igual 394 00:17:54,890 --> 00:17:59,549 a new 395 00:17:59,549 --> 00:18:02,029 empleado 396 00:18:02,029 --> 00:18:03,690 de uno 397 00:18:03,690 --> 00:18:06,069 me crea un array 398 00:18:06,069 --> 00:18:07,029 de una posición 399 00:18:07,029 --> 00:18:09,029 y 400 00:18:09,029 --> 00:18:10,950 empleados 401 00:18:10,950 --> 00:18:13,210 De 0 402 00:18:13,210 --> 00:18:14,289 Es igual a 403 00:18:14,289 --> 00:18:19,480 Entonces hay dos formas 404 00:18:19,480 --> 00:18:21,480 De crear un departamento 405 00:18:21,480 --> 00:18:23,880 O me pasas la lista de los empleados 406 00:18:23,880 --> 00:18:24,680 En un array 407 00:18:24,680 --> 00:18:27,819 O me pasas el primer empleado 408 00:18:27,819 --> 00:18:28,799 De ese departamento 409 00:18:28,799 --> 00:18:31,180 Y yo ya lo pongo ahí dentro 410 00:18:31,180 --> 00:18:34,319 Ya veremos que hacemos 411 00:18:34,319 --> 00:18:37,099 ¿Sí? 412 00:18:38,299 --> 00:18:38,940 ¿Dudas? 413 00:18:42,680 --> 00:18:43,319 ¿Dudas? 414 00:18:43,319 --> 00:18:50,349 Esto no hereda de nadie 415 00:18:50,349 --> 00:18:52,349 En realidad hereda de alguien 416 00:18:52,349 --> 00:18:52,869 ¿De qué hereda? 417 00:18:55,779 --> 00:18:55,980 ¿Cómo? 418 00:18:56,339 --> 00:18:57,059 No 419 00:18:57,059 --> 00:19:04,539 ¿Por qué departamento debería heredar de empleado? 420 00:19:04,700 --> 00:19:06,200 ¿Departamento es un empleado? 421 00:19:08,039 --> 00:19:09,400 Por lo tanto no hereda 422 00:19:09,400 --> 00:19:10,900 ¿Vale? 423 00:19:10,980 --> 00:19:12,519 Acordaos que cuando heredáis 424 00:19:12,519 --> 00:19:13,880 Le estáis dando una 425 00:19:13,880 --> 00:19:17,079 Relación de is a 426 00:19:17,079 --> 00:19:17,740 Es un 427 00:19:17,740 --> 00:19:20,740 Entonces si yo hago departamento está en de empleado 428 00:19:20,740 --> 00:19:22,799 Estoy diciendo que el departamento es un empleado 429 00:19:22,799 --> 00:19:23,640 ¿No es verdad? 430 00:19:25,579 --> 00:19:25,779 ¿Sí? 431 00:19:26,680 --> 00:19:28,400 Por lo tanto, esto no hereda de nada 432 00:19:28,400 --> 00:19:29,839 Y en automático hereda de obvio 433 00:19:29,839 --> 00:19:32,599 Sí, vale 434 00:19:32,599 --> 00:19:34,480 Entonces, tened en cuenta también que 435 00:19:34,480 --> 00:19:36,500 Aquí dentro tengo empleado, ¿vale? 436 00:19:36,980 --> 00:19:38,940 Puedo poner empleado y aquí le paso un empleado 437 00:19:38,940 --> 00:19:41,240 En realidad, aquí le puedo pasar 438 00:19:41,240 --> 00:19:42,819 O un empleado, o 439 00:19:42,819 --> 00:19:49,559 No se oigo 440 00:19:49,559 --> 00:19:51,220 O un 441 00:19:51,220 --> 00:19:54,400 Pero puedo pasarle o un empleado 442 00:19:54,400 --> 00:19:55,640 O un array de empleados 443 00:19:55,640 --> 00:19:58,119 O un gerente 444 00:19:58,119 --> 00:19:58,880 O un array de 445 00:19:58,880 --> 00:20:01,299 Gerentes 446 00:20:01,299 --> 00:20:04,220 O un array mezclado de gerentes empleados 447 00:20:04,220 --> 00:20:06,740 ¿Vale? Ahora ya veremos que le pasamos 448 00:20:06,740 --> 00:20:07,980 ¿Sí? 449 00:20:09,819 --> 00:20:10,460 Entonces 450 00:20:10,460 --> 00:20:11,700 Ahora me dice 451 00:20:11,700 --> 00:20:13,579 Sigo con lo básico 452 00:20:13,579 --> 00:20:15,279 Luego después lo mejoramos si queremos 453 00:20:15,279 --> 00:20:16,420 Me dice 454 00:20:16,420 --> 00:20:20,279 Tengo un método para calcular 455 00:20:20,279 --> 00:20:22,720 el salario total del departamento 456 00:20:22,720 --> 00:20:24,220 entonces 457 00:20:24,220 --> 00:20:25,640 public 458 00:20:25,640 --> 00:20:28,420 doble 459 00:20:28,420 --> 00:20:30,920 salario 460 00:20:30,920 --> 00:20:31,880 dept 461 00:20:31,880 --> 00:20:36,250 como calculo 462 00:20:36,250 --> 00:20:41,710 doble 463 00:20:41,710 --> 00:20:43,630 salario 464 00:20:43,630 --> 00:20:44,490 departamento 465 00:20:44,490 --> 00:20:47,170 return 466 00:20:47,170 --> 00:20:49,269 salario departamento 467 00:20:49,269 --> 00:20:53,279 como calculo 468 00:20:53,279 --> 00:20:54,619 el salario del departamento 469 00:20:54,619 --> 00:20:58,680 con un for 470 00:20:58,680 --> 00:21:04,940 int i es igual a 0 471 00:21:04,940 --> 00:21:08,500 i menor que que 472 00:21:08,500 --> 00:21:13,160 empleados.lang 473 00:21:13,160 --> 00:21:16,200 justo 474 00:21:16,200 --> 00:21:20,460 voy recorriendo esto 475 00:21:20,460 --> 00:21:24,559 independientemente que tenga miles o tenga uno 476 00:21:24,559 --> 00:21:27,480 pues lo que voy a hacer es intentar así 477 00:21:27,480 --> 00:21:28,599 pregunta para vosotros 478 00:21:28,599 --> 00:21:30,539 ¿podría ser que esto sea nul? 479 00:21:30,539 --> 00:21:41,599 Podría ser que empleado sea null 480 00:21:41,599 --> 00:21:44,380 ¿Cuándo? 481 00:21:48,599 --> 00:21:50,279 Si yo aquí le paso null 482 00:21:50,279 --> 00:21:52,099 Pues eso será null 483 00:21:52,099 --> 00:21:55,039 Si yo cuando lo creo 484 00:21:55,039 --> 00:21:56,019 Lo creo con 485 00:21:56,019 --> 00:21:58,759 Departamento de 486 00:21:58,759 --> 00:22:00,900 Es igual a 487 00:22:00,900 --> 00:22:03,460 New departamento 488 00:22:03,460 --> 00:22:05,319 De null 489 00:22:05,319 --> 00:22:11,920 Esto me lo crea 490 00:22:11,920 --> 00:22:19,769 Quiero que pueda ser así 491 00:22:19,769 --> 00:22:25,269 Pues entonces podría ser que cuando uno me pasa 492 00:22:25,269 --> 00:22:26,710 Aquí podría pasar 493 00:22:26,710 --> 00:22:29,170 Cuidado 494 00:22:29,170 --> 00:22:32,309 Empleados no sería null 495 00:22:32,309 --> 00:22:35,869 Podría ser que el empleado dentro de empleados sea null 496 00:22:35,869 --> 00:22:37,109 Si me pasa null aquí 497 00:22:37,109 --> 00:22:43,329 Si yo quiero evitar estas cosas puedo comprobarlo aquí dentro 498 00:22:43,329 --> 00:22:46,970 Por ejemplo, hagamos que si me pasan un null aquí 499 00:22:46,970 --> 00:22:48,769 Hago algo, ¿vale? 500 00:22:48,769 --> 00:22:50,470 Entonces la pregunta es 501 00:22:50,470 --> 00:22:51,410 If 502 00:22:51,410 --> 00:22:53,710 E 503 00:22:53,710 --> 00:22:55,470 Es not null 504 00:22:55,470 --> 00:22:58,369 Entonces 505 00:22:58,369 --> 00:23:00,549 No tengo problemas 506 00:23:00,549 --> 00:23:02,950 Y si no 507 00:23:02,950 --> 00:23:08,690 Me han pasado null 508 00:23:08,690 --> 00:23:10,349 Entonces que hago con empleados 509 00:23:10,349 --> 00:23:14,799 Y como creo 510 00:23:14,799 --> 00:23:27,690 Que hago 511 00:23:27,690 --> 00:23:30,819 Yo 512 00:23:30,819 --> 00:23:33,400 Empleado 513 00:23:33,400 --> 00:23:35,759 Array 514 00:23:35,759 --> 00:23:42,099 Os gusta así 515 00:23:42,099 --> 00:23:46,980 Creo una posición vacía 516 00:23:46,980 --> 00:23:50,529 Con dentro que 517 00:23:50,529 --> 00:23:58,000 Y por ejemplo 518 00:23:58,000 --> 00:23:59,440 Si vosotros quisierais saber 519 00:23:59,440 --> 00:24:01,440 Cuantos empleados hay en este departamento 520 00:24:01,440 --> 00:24:02,000 Que haríais 521 00:24:02,000 --> 00:24:22,319 Yo se me lo pillaría así 522 00:24:22,319 --> 00:24:32,140 Técnicamente me has dado nul 523 00:24:32,140 --> 00:24:34,220 Entonces me estás diciendo que no hay 524 00:24:34,220 --> 00:24:35,980 No hay ningún 525 00:24:35,980 --> 00:24:38,660 Empleado 526 00:24:38,660 --> 00:24:40,259 Vale, entonces yo te creo 527 00:24:40,259 --> 00:24:41,859 Una red de empleados con cero 528 00:24:41,859 --> 00:24:44,099 Y si esto me funciona 529 00:24:44,099 --> 00:24:45,359 Ahora cuantos 530 00:24:45,359 --> 00:24:48,480 Como hago para saber cuantos empleados hay 531 00:24:48,480 --> 00:24:52,769 Empleados.length 532 00:24:52,769 --> 00:24:57,390 Claramente por algún lado tendré que tener 533 00:24:57,390 --> 00:24:59,250 Un método add que me añada 534 00:24:59,250 --> 00:25:01,269 Empleado, pero eso de 535 00:25:01,269 --> 00:25:03,569 Añadir elementos a un array 536 00:25:03,569 --> 00:25:04,509 Ya lo hemos hecho 537 00:25:04,509 --> 00:25:06,730 Hemos hecho el viernes pasado 538 00:25:06,730 --> 00:25:09,329 Entonces, por ahora 539 00:25:09,329 --> 00:25:10,970 Dejamos así, veamos si no explota 540 00:25:10,970 --> 00:25:12,829 Aquí hacemos algo parecido 541 00:25:12,829 --> 00:25:14,930 Es decir, perdón, aquí 542 00:25:14,930 --> 00:25:17,529 Si me pasan un empleado E 543 00:25:17,529 --> 00:25:18,490 Que no es null 544 00:25:18,490 --> 00:25:19,730 Vale, fenomenal 545 00:25:19,730 --> 00:25:22,930 If E is not null 546 00:25:22,930 --> 00:25:25,069 Hace esto 547 00:25:25,069 --> 00:25:26,450 Y estamos todos felices 548 00:25:26,450 --> 00:25:28,329 Y si no 549 00:25:28,329 --> 00:25:43,549 Pues si me has creado un departamento 550 00:25:43,549 --> 00:25:44,349 Que no es nada 551 00:25:44,349 --> 00:25:45,690 Y yo admito esto 552 00:25:45,690 --> 00:25:46,930 Pues hago lo mismo 553 00:25:46,930 --> 00:25:50,269 Como me has pasado un empleado 554 00:25:50,269 --> 00:25:50,930 Que no existe 555 00:25:50,930 --> 00:25:53,809 Pues igualmente creo el departamento 556 00:25:53,809 --> 00:25:54,569 Con su 557 00:25:54,569 --> 00:25:58,910 Array de empleados 558 00:25:58,910 --> 00:26:01,329 Pero el array de empleados no tiene nada dentro 559 00:26:01,329 --> 00:26:03,109 Porque al fin y al cabo me ha pasado null 560 00:26:03,109 --> 00:26:04,230 No me ha pasado un empleado 561 00:26:04,230 --> 00:26:06,150 Me ha pasado una cosa vacía 562 00:26:06,150 --> 00:26:09,130 Entonces aquí os estoy admitiendo 563 00:26:09,130 --> 00:26:10,630 La posibilidad de que haya 564 00:26:10,630 --> 00:26:12,430 Departamentos vacíos 565 00:26:12,430 --> 00:26:14,789 A lo mejor hay departamentos 566 00:26:14,789 --> 00:26:16,250 Que son sólo 567 00:26:16,250 --> 00:26:19,289 Para la organización 568 00:26:19,289 --> 00:26:21,049 De mi empresa 569 00:26:21,049 --> 00:26:22,809 Que son útiles que los tenga allí 570 00:26:22,809 --> 00:26:23,930 Para que cuando le hago 571 00:26:23,930 --> 00:26:27,009 No sé, calculo el presupuesto 572 00:26:27,009 --> 00:26:28,789 Cosa por estilo, si tengo que asignar 573 00:26:28,789 --> 00:26:30,269 Dinero a ellos también 574 00:26:30,269 --> 00:26:32,150 Pero que no tienen empleados 575 00:26:32,150 --> 00:26:33,430 Concretamente allí dentro 576 00:26:33,430 --> 00:26:36,250 A lo mejor son externalizados 577 00:26:36,250 --> 00:26:37,849 Y por lo tanto no son empleados míos 578 00:26:37,849 --> 00:26:39,109 Pero existe el departamento 579 00:26:39,109 --> 00:26:44,329 Estoy dando como programador 580 00:26:44,329 --> 00:26:45,950 Esta posibilidad, si no quiero 581 00:26:45,950 --> 00:26:47,869 Darla, pues tengo que hacer algo aquí 582 00:26:47,869 --> 00:26:58,049 Entonces, ahora 583 00:26:58,049 --> 00:27:00,130 Como he hecho esta cosa de aquí 584 00:27:00,130 --> 00:27:02,269 Puede ser que esto sea null 585 00:27:02,269 --> 00:27:04,450 Ahora ya no 586 00:27:04,450 --> 00:27:06,529 Pase lo que pase 587 00:27:06,529 --> 00:27:07,569 Siempre lo he 588 00:27:07,569 --> 00:27:09,849 Estanciado a un nuevo array 589 00:27:09,849 --> 00:27:11,930 O me lo han pasado ellos 590 00:27:11,930 --> 00:27:13,910 Aquí me lo han pasado ellos 591 00:27:13,910 --> 00:27:15,750 Y no es null, por lo tanto está bien 592 00:27:15,750 --> 00:27:18,269 Aquí me lo han pasado ellos 593 00:27:18,269 --> 00:27:19,130 Pero es null 594 00:27:19,130 --> 00:27:20,509 Y lo he creado yo 595 00:27:20,509 --> 00:27:23,849 Aquí me han pasado solo un empleado 596 00:27:23,849 --> 00:27:25,009 Y lo he creado yo 597 00:27:25,009 --> 00:27:26,529 Y lo he metido el empleado dentro 598 00:27:26,529 --> 00:27:28,589 Y aquí me han pasado un empleado 599 00:27:28,589 --> 00:27:29,849 Pero el empleado es null 600 00:27:29,849 --> 00:27:31,569 Y yo he creado el empleado 601 00:27:31,569 --> 00:27:33,650 Entonces, en cualquier caso 602 00:27:33,650 --> 00:27:34,970 Si yo creo un departamento 603 00:27:34,970 --> 00:27:37,269 Empleados no es null 604 00:27:37,269 --> 00:27:39,289 Es algo 605 00:27:39,289 --> 00:27:40,289 ¿Vale? 606 00:27:40,470 --> 00:27:42,730 Por lo tanto lo puedo utilizar tranquilamente 607 00:27:42,730 --> 00:27:43,470 Sin problemas 608 00:27:43,470 --> 00:27:46,890 Sin tener miedo a que esto explote 609 00:27:46,890 --> 00:27:49,349 ¿Sí? 610 00:27:49,630 --> 00:27:50,130 Cuidado 611 00:27:50,130 --> 00:27:51,789 Si no fuera así 612 00:27:51,789 --> 00:27:53,869 Y empleados podría ser null 613 00:27:53,869 --> 00:27:56,109 Pues aquí quizás debería hacerme un 614 00:27:56,109 --> 00:27:57,950 If empleados 615 00:27:57,950 --> 00:28:00,029 No es null 616 00:28:00,029 --> 00:28:03,650 Entonces 617 00:28:03,650 --> 00:28:05,589 Haz lo que sea, porque si yo 618 00:28:05,589 --> 00:28:06,829 Intento hacer, por ejemplo 619 00:28:06,829 --> 00:28:08,890 Empleados.length 620 00:28:08,890 --> 00:28:11,269 Y empleados es null, ¿qué pasa? 621 00:28:12,730 --> 00:28:14,390 Null pointer exception 622 00:28:14,390 --> 00:28:17,029 Vale 623 00:28:17,029 --> 00:28:19,670 Sigo, y más más 624 00:28:19,670 --> 00:28:22,480 Entonces 625 00:28:22,480 --> 00:28:24,019 Esto me está 626 00:28:24,019 --> 00:28:26,660 Cuidado, y si este señor de aquí 627 00:28:26,660 --> 00:28:28,819 Es esto 628 00:28:28,819 --> 00:28:30,859 ¿Qué pasa en este for? 629 00:28:32,599 --> 00:28:33,660 Que ni empieza 630 00:28:33,660 --> 00:28:35,720 Vale, pone i igual a cero 631 00:28:35,720 --> 00:28:38,079 Y cero no es menor que cero 632 00:28:38,079 --> 00:28:41,859 Y por lo tanto es falso, por lo tanto es niento 633 00:28:41,859 --> 00:28:44,779 ¿Sí? 634 00:28:45,000 --> 00:28:48,700 Y entonces devolvería que este departamento me costa cero 635 00:28:48,700 --> 00:28:51,950 ¿Sí? 636 00:28:53,630 --> 00:28:54,190 Vale 637 00:28:54,190 --> 00:28:57,839 Entonces, ¿qué hago ahora? 638 00:28:57,839 --> 00:29:07,200 Sd 639 00:29:07,200 --> 00:29:08,839 Es igual a qué 640 00:29:08,839 --> 00:29:11,220 Sd igual a más 641 00:29:11,220 --> 00:29:12,720 O más igual, vale 642 00:29:12,720 --> 00:29:14,740 Esto es igual a decir más igual 643 00:29:14,740 --> 00:29:16,460 A 644 00:29:16,460 --> 00:29:20,539 Empleados 645 00:29:20,539 --> 00:29:22,339 De ahí 646 00:29:22,339 --> 00:29:23,599 Punto 647 00:29:23,599 --> 00:29:24,900 Salar 648 00:29:24,900 --> 00:29:30,970 Y habría que añadir otra cosa 649 00:29:30,970 --> 00:29:31,450 Que 650 00:29:31,450 --> 00:29:34,430 Si fuera gerente 651 00:29:34,430 --> 00:29:36,029 Y 652 00:29:36,029 --> 00:29:38,650 If, a ver, estamos todos de acuerdo 653 00:29:38,650 --> 00:29:40,049 Esto es 654 00:29:40,049 --> 00:29:42,869 Más igual quiere decir 655 00:29:42,869 --> 00:29:45,490 SD es igual a SD más 656 00:29:45,490 --> 00:29:46,589 ¿Vale? 657 00:29:46,730 --> 00:29:48,089 Es la forma más rápida de escribir 658 00:29:48,089 --> 00:29:50,650 Empleados de i.salario 659 00:29:50,650 --> 00:29:52,890 Vete al empleado que estamos mirando ahora 660 00:29:52,890 --> 00:29:54,569 Cede a su salario y píllalo 661 00:29:54,569 --> 00:29:56,670 Si yo esto fuera privado por alguna razón 662 00:29:56,670 --> 00:29:58,150 Pues pondría aquí getSalario 663 00:29:58,150 --> 00:30:01,150 O algo que me pueda dar su salario 664 00:30:01,150 --> 00:30:01,490 ¿Vale? 665 00:30:01,869 --> 00:30:04,829 Podría esconder todo esto 666 00:30:04,829 --> 00:30:06,869 en un método de 667 00:30:06,869 --> 00:30:08,990 dame tu coste 668 00:30:08,990 --> 00:30:11,109 ¿vale? y hacer que aquí simplemente 669 00:30:11,109 --> 00:30:12,970 escribe el salario, mientras en gerente 670 00:30:12,970 --> 00:30:14,410 escribe el salario más el bonus 671 00:30:14,410 --> 00:30:16,849 y entonces evitaría 672 00:30:16,849 --> 00:30:18,950 de hacer cosas raras aquí 673 00:30:18,950 --> 00:30:20,869 ¿vale? si queréis lo hacemos antes desde aquí 674 00:30:20,869 --> 00:30:21,990 y luego lo hacemos desde allá 675 00:30:21,990 --> 00:30:23,670 ¿eh? entonces 676 00:30:23,670 --> 00:30:26,829 esto ha asomado 677 00:30:26,829 --> 00:30:28,470 el salario de todos ¿vale? pero 678 00:30:28,470 --> 00:30:31,269 ahora hay algunos empleados especiales 679 00:30:31,269 --> 00:30:32,710 que además de 680 00:30:32,710 --> 00:30:34,710 costarme el salario me costan el bonus 681 00:30:34,710 --> 00:30:37,609 Entonces, ¿cómo lo hago este aquí? 682 00:30:37,710 --> 00:30:39,190 ¿Cómo hago desde aquí a saber si 683 00:30:39,190 --> 00:30:41,009 Este empleado que estoy mirando 684 00:30:41,009 --> 00:30:42,190 Que es un empleado 685 00:30:42,190 --> 00:30:44,569 Es un gerente 686 00:30:44,569 --> 00:30:48,950 Si 687 00:30:48,950 --> 00:30:56,980 Empleados 688 00:30:56,980 --> 00:30:58,299 De ahí 689 00:30:58,299 --> 00:31:00,180 Si el que estoy mirando ahora 690 00:31:00,180 --> 00:31:01,980 Estoy siempre en el mismo ciclo de for 691 00:31:01,980 --> 00:31:07,430 Instanche of 692 00:31:07,430 --> 00:31:11,269 Gerente 693 00:31:11,269 --> 00:31:14,029 Instan 694 00:31:14,029 --> 00:31:23,289 Si el elemento que estoy mirando ahora es también una instancia de gerente 695 00:31:23,289 --> 00:31:24,710 Entonces esto sería true 696 00:31:24,710 --> 00:31:29,190 Entonces quiere decir que yo puedo intentar 697 00:31:29,190 --> 00:31:32,990 Que yo lo puedo tratar como gerente e intentar acceder a su bonus 698 00:31:32,990 --> 00:31:33,589 ¿Cómo lo hago? 699 00:31:34,750 --> 00:31:35,589 SD más igual 700 00:31:35,589 --> 00:31:40,250 SD más igual, vuelvo a sumar a SD al sueldo total 701 00:31:40,250 --> 00:31:40,470 ¿Qué? 702 00:31:42,470 --> 00:31:43,470 ¿El bonus? 703 00:31:43,809 --> 00:31:44,809 Sí, ¿cómo lo hago? 704 00:31:46,109 --> 00:31:47,829 empleados 705 00:31:47,829 --> 00:31:50,490 de ahí, punto, bonus 706 00:31:50,490 --> 00:32:04,079 cuidado, pero no lo está haciendo 707 00:32:04,079 --> 00:32:06,279 está dando un error, te está diciendo 708 00:32:06,279 --> 00:32:08,099 oye, mira, que no lo puedo resolver 709 00:32:08,099 --> 00:32:09,740 si yo me voy a empleado 710 00:32:09,740 --> 00:32:12,279 y ese es un empleado, aquí no hay de ningún lado 711 00:32:12,279 --> 00:32:13,200 el bonus 712 00:32:13,200 --> 00:32:17,529 tú me estás diciendo que es un empleado 713 00:32:17,529 --> 00:32:18,789 ese empleado es un empleado 714 00:32:18,789 --> 00:32:20,089 este es un empleado 715 00:32:20,089 --> 00:32:23,329 Es como se lo digo 716 00:32:23,329 --> 00:32:24,369 Que lo trate como gerente 717 00:32:24,369 --> 00:32:35,009 Píllame este señor 718 00:32:35,009 --> 00:32:37,930 Tráctamelo como un gerente 719 00:32:37,930 --> 00:32:39,569 Y accede 720 00:32:39,569 --> 00:32:40,710 A su bonus 721 00:32:40,710 --> 00:32:42,589 ¿Esto lo puede hacer? 722 00:32:44,430 --> 00:32:45,950 ¿Qué es que me permite 723 00:32:45,950 --> 00:32:46,529 Hacer esto? 724 00:32:47,109 --> 00:32:51,940 El hecho es que haya comprobado que 725 00:32:51,940 --> 00:32:55,279 Él es un gerente 726 00:32:55,279 --> 00:32:57,240 Cuidado que si lo hago 727 00:32:57,240 --> 00:32:58,779 Directamente sin esto 728 00:32:58,779 --> 00:33:03,029 Esto me lo trata bien 729 00:33:03,029 --> 00:33:04,490 me dice, sí, sí, no hay errores 730 00:33:04,490 --> 00:33:07,549 pero la primera vez que intente calcularlo 731 00:33:07,549 --> 00:33:09,369 y el elemento que está aquí dentro 732 00:33:09,369 --> 00:33:11,210 no es un gerente, sino es un 733 00:33:11,210 --> 00:33:13,390 empleado, va a explotar 734 00:33:13,390 --> 00:33:15,130 no a tiempo de 735 00:33:15,130 --> 00:33:17,190 compilación, porque a tiempo de compilación 736 00:33:17,190 --> 00:33:19,130 esta es una cosa que puede hacer, sino a 737 00:33:19,130 --> 00:33:20,470 tiempo de ejecución 738 00:33:20,470 --> 00:33:23,190 ¿vale? cuando lo 739 00:33:23,190 --> 00:33:25,089 ejecuto, llega un momento en que 740 00:33:25,089 --> 00:33:27,130 este empleado lo intento tratar como un 741 00:33:27,130 --> 00:33:28,789 gerente y no es un gerente 742 00:33:28,789 --> 00:33:31,130 y me explota, ahora lo vamos 743 00:33:31,130 --> 00:33:32,710 a ver, lo vamos a hacer 744 00:33:32,710 --> 00:33:33,690 Y vemos que pasa 745 00:33:33,690 --> 00:33:34,170 ¿Vale? 746 00:33:36,769 --> 00:33:37,369 Ok 747 00:33:37,369 --> 00:33:40,990 Esta es una forma de hacerlo 748 00:33:40,990 --> 00:33:42,230 ¿Vale? 749 00:33:42,829 --> 00:33:43,849 Por ahora lo dejamos así 750 00:33:43,849 --> 00:33:44,710 Y luego, bueno 751 00:33:44,710 --> 00:33:48,049 Hagamos la versión 2 752 00:33:48,049 --> 00:33:49,690 Return SD 753 00:33:49,690 --> 00:33:51,369 Creamos 754 00:33:51,369 --> 00:33:56,700 Sí, creamos otro método 755 00:33:56,700 --> 00:33:57,400 Para no 756 00:33:57,400 --> 00:33:59,980 Imaginémonos que tengo 757 00:33:59,980 --> 00:34:01,420 Salario departamento 2 758 00:34:01,420 --> 00:34:03,279 Otra forma de calcularlo 759 00:34:03,279 --> 00:34:03,940 ¿Vale? 760 00:34:03,940 --> 00:34:08,039 Y quiero que en vez de hacer estas cosas por aquí 761 00:34:08,039 --> 00:34:12,800 Lo que voy a modificar es empleado y gerente 762 00:34:12,800 --> 00:34:15,440 Entonces me voy a empleado y le digo 763 00:34:15,440 --> 00:34:21,219 Mira empleado, tú tienes public doble coste 764 00:34:21,219 --> 00:34:27,059 Que me calcula cuánto costa este empleado 765 00:34:27,059 --> 00:34:31,679 Como eres un empleado, return salario 766 00:34:31,679 --> 00:34:40,719 Ahora, cuando voy a gerente 767 00:34:40,719 --> 00:34:46,940 Gerente ya ha importado este método de aquí 768 00:34:46,940 --> 00:34:47,559 Ya lo tiene 769 00:34:47,559 --> 00:34:50,800 Pero lo que puedo hacer yo es 770 00:34:50,800 --> 00:34:51,380 Oye 771 00:34:51,380 --> 00:34:55,829 Hagamos una cosa interesante 772 00:34:55,829 --> 00:35:00,489 Sobrescribamoslo 773 00:35:00,489 --> 00:35:05,010 Entonces, cuando tú lo llamas 774 00:35:05,010 --> 00:35:06,110 Sobre un empleado 775 00:35:06,110 --> 00:35:08,309 Será esto, mas si lo llamas 776 00:35:08,309 --> 00:35:09,389 Sobre un gerente 777 00:35:09,389 --> 00:35:10,510 Será 778 00:35:10,510 --> 00:35:14,989 Esto 779 00:35:14,989 --> 00:35:21,280 Mi coste no es solo el salario 780 00:35:21,280 --> 00:35:22,619 Es bonus más salario 781 00:35:22,619 --> 00:35:27,340 Podría ser 782 00:35:27,340 --> 00:35:32,969 Esto 783 00:35:32,969 --> 00:35:41,429 Mi coste es el bonus sumado a 784 00:35:41,429 --> 00:35:43,489 Lo que sea el coste 785 00:35:43,489 --> 00:35:44,929 Porque pongamos que 786 00:35:44,929 --> 00:35:47,789 Si su sueldo es 1000 pero a mi no me costa 1000 787 00:35:47,789 --> 00:35:49,329 A mi como empresario 788 00:35:49,329 --> 00:35:50,550 Me costa más de 1000 789 00:35:50,550 --> 00:35:53,630 A mi me costa 1000 por 790 00:35:53,630 --> 00:35:56,210 1.5 791 00:35:56,210 --> 00:35:59,329 No lo sé 792 00:35:59,329 --> 00:36:00,730 Esto preguntárselo a Foll 793 00:36:00,730 --> 00:36:02,769 ¿Vale? 794 00:36:02,869 --> 00:36:03,309 ¿Cuánto? 795 00:36:04,510 --> 00:36:08,070 ¿Hace falta poner el supercoste? 796 00:36:08,110 --> 00:36:09,389 ¿No podría poner más salario? 797 00:36:09,889 --> 00:36:10,869 Sí, sí, sí 798 00:36:10,869 --> 00:36:12,110 Lo que he hecho antes 799 00:36:12,110 --> 00:36:13,369 Pero cuidado 800 00:36:13,369 --> 00:36:14,030 Que si 801 00:36:14,030 --> 00:36:16,250 Si este método de aquí 802 00:36:16,250 --> 00:36:17,610 En vez de retorno salario 803 00:36:17,610 --> 00:36:19,150 Hace 1400 cosas 804 00:36:19,150 --> 00:36:20,489 Y calcula la nómina 805 00:36:20,489 --> 00:36:22,090 Y le añade la cosa así 806 00:36:22,090 --> 00:36:23,449 Pues ahora todo este código 807 00:36:23,449 --> 00:36:24,630 Lo tienes que poner al otro lado 808 00:36:24,630 --> 00:36:25,570 En vez de tú 809 00:36:25,570 --> 00:36:26,730 Ya lo tienes 810 00:36:26,730 --> 00:36:27,230 Le dices 811 00:36:27,230 --> 00:36:29,409 Oye, mira, hazte los cálculos 812 00:36:29,409 --> 00:36:31,110 Que hace que esta es materia de fall 813 00:36:31,110 --> 00:36:33,429 Para saber cuánto cuesta un empleado 814 00:36:33,429 --> 00:36:34,929 Y a eso le sumas el bonus 815 00:36:34,929 --> 00:36:39,739 Más todos los cálculos 816 00:36:39,739 --> 00:36:41,440 Sobre el bonus que se podrían hacer aquí 817 00:36:41,440 --> 00:36:43,460 ¿Vale? ¿Me entendéis lo que quiero decir? 818 00:36:44,099 --> 00:36:44,960 O sea, si yo hago así 819 00:36:44,960 --> 00:36:47,280 A mí me funciona porque 820 00:36:47,280 --> 00:36:49,019 Esta es una extrema simplificación 821 00:36:49,019 --> 00:36:51,260 Porque este método de aquí 822 00:36:51,260 --> 00:36:52,860 Al fin y al cabo tiene solo salario 823 00:36:52,860 --> 00:36:55,400 ¿Vale? Entonces, ¿qué me importa a mí 824 00:36:55,400 --> 00:36:57,480 Escribirlo otra vez aquí? 825 00:36:57,480 --> 00:37:00,019 Pero vosotros habéis hecho ya la práctica 826 00:37:00,019 --> 00:37:01,000 De calcular la nómina 827 00:37:01,000 --> 00:37:04,019 Haréis 828 00:37:04,019 --> 00:37:05,119 Y no es así 829 00:37:05,119 --> 00:37:07,300 ¿Vale? No se calcula así 830 00:37:07,300 --> 00:37:09,500 Mil euros, va, mil, ahí, ya está 831 00:37:09,500 --> 00:37:11,639 ¿Vale? Entonces aquí 832 00:37:11,639 --> 00:37:13,780 Hay un algoritmo que te calcula 833 00:37:13,780 --> 00:37:15,059 Para seguir de su salario 834 00:37:15,059 --> 00:37:17,960 El precio, cuánto paga la empresa 835 00:37:17,960 --> 00:37:20,199 La prestación, no sé qué, no sé cuánto 836 00:37:20,199 --> 00:37:22,260 ¿Vale? Entonces si lo ha hecho ya todo aquí 837 00:37:22,260 --> 00:37:24,099 Que simula en este fantástico 838 00:37:24,099 --> 00:37:25,159 1.5 839 00:37:25,159 --> 00:37:28,099 Pues entonces, aquí lo que puede hacer 840 00:37:28,099 --> 00:37:30,360 Es simplemente utilizar eso 841 00:37:30,360 --> 00:37:32,199 Vete a mi padre 842 00:37:32,199 --> 00:37:33,820 Utiliza el coste de mi padre 843 00:37:33,820 --> 00:37:36,159 Sacará lo que sea y luego le añado 844 00:37:36,159 --> 00:37:38,320 El bonus actual, el coste aquí 845 00:37:38,320 --> 00:37:40,719 ¿Sí? 846 00:37:41,659 --> 00:37:43,360 ¿Se entiende un poco eso de sobre escribir? 847 00:37:44,239 --> 00:37:44,619 Vale 848 00:37:44,619 --> 00:37:47,880 Entonces, ahora si lo he hecho así 849 00:37:47,880 --> 00:37:49,659 Desde aquí 850 00:37:49,659 --> 00:37:51,679 En la versión 2 851 00:37:51,679 --> 00:37:52,699 ¿Vale? 852 00:37:52,699 --> 00:37:55,559 En vez de hacer esto 853 00:37:55,559 --> 00:37:57,440 Que hacía antes 854 00:37:57,440 --> 00:37:59,639 Lo único que tengo que hacer es 855 00:37:59,639 --> 00:38:09,519 Y además 856 00:38:09,519 --> 00:38:11,619 La cosa bonita es que 857 00:38:11,619 --> 00:38:13,039 Aquí si entra 858 00:38:13,039 --> 00:38:14,119 El 859 00:38:14,119 --> 00:38:16,400 ¿Cómo se llama? 860 00:38:16,400 --> 00:38:18,380 El concepto que 861 00:38:18,380 --> 00:38:20,000 Java se da cuenta 862 00:38:20,000 --> 00:38:22,880 Si tú eres un empleado 863 00:38:22,880 --> 00:38:24,739 O tú eres un gerente 864 00:38:24,739 --> 00:38:26,840 Es esta cosa de aquí 865 00:38:26,840 --> 00:38:27,579 ¿Dónde está? 866 00:38:29,340 --> 00:38:30,019 Esto 867 00:38:30,019 --> 00:38:32,739 ¿Os acordáis? 868 00:38:34,260 --> 00:38:36,559 Que cuando llamo un método 869 00:38:36,559 --> 00:38:40,420 No obstante lo llame sobre personas, sobre alumnos, lo que me da la gana 870 00:38:40,420 --> 00:38:43,900 Lo que voy a utilizar es la instancia 871 00:38:43,900 --> 00:38:46,639 Y va a utilizar el método de esa instancia 872 00:38:46,639 --> 00:38:51,380 Entonces, no obstante yo haya metido todo en un array de empleados 873 00:38:51,380 --> 00:38:57,619 Esta cosa de aquí me funciona con el de empleados en empleados 874 00:38:57,619 --> 00:38:59,760 Y con el de gerente en los gerentes 875 00:38:59,760 --> 00:39:01,679 Lo que cuenta es la instancia que hay 876 00:39:01,679 --> 00:39:03,579 Entonces, fijaos que 877 00:39:03,579 --> 00:39:05,920 Con esta opción de aquí 878 00:39:05,920 --> 00:39:08,920 El diseño 879 00:39:08,920 --> 00:39:11,659 De mi programa 880 00:39:11,659 --> 00:39:13,340 Se simplifica mucho 881 00:39:13,340 --> 00:39:15,280 Tengo 882 00:39:15,280 --> 00:39:17,159 Todo lo que tiene que ver 883 00:39:17,159 --> 00:39:19,519 Con empleado en empleado 884 00:39:19,519 --> 00:39:21,960 Entonces, como se calcula su coste, lo tengo en empleado 885 00:39:21,960 --> 00:39:23,840 Como se calcula el coste del gerente 886 00:39:23,840 --> 00:39:24,860 Lo tengo en gerente 887 00:39:24,860 --> 00:39:26,920 Y aquí, desde fuera 888 00:39:26,920 --> 00:39:28,679 Solo lo único que tengo que hacer 889 00:39:28,679 --> 00:39:30,900 Es calcular su coste 890 00:39:30,900 --> 00:39:34,480 Very nice 891 00:39:34,480 --> 00:39:37,179 ¿Sí? 892 00:39:39,019 --> 00:39:40,599 Pero esto 893 00:39:40,599 --> 00:39:43,519 Oficialmente todavía no lo hemos hecho 894 00:39:43,519 --> 00:39:45,420 ¿Veis? 895 00:39:45,639 --> 00:39:47,119 Os lo estoy metiendo yo allí 896 00:39:47,119 --> 00:39:48,079 De vez en cuando 897 00:39:48,079 --> 00:39:50,519 Para que cuando luego lo haremos la próxima semana 898 00:39:50,519 --> 00:39:52,219 Diréis, ah sí, pero esto lo hemos hecho 899 00:39:52,219 --> 00:39:53,280 Ya lo hemos entendido 900 00:39:53,280 --> 00:39:54,039 ¿Vale? 901 00:39:54,639 --> 00:39:57,380 Pero oficialmente que es esta cosa aquí 902 00:39:57,380 --> 00:39:58,019 Y por qué funciona 903 00:39:58,019 --> 00:39:59,960 No lo hemos todavía dicho 904 00:39:59,960 --> 00:40:00,800 ¿Sí? 905 00:40:00,800 --> 00:40:02,820 Por lo tanto nosotros lo haríamos así 906 00:40:02,820 --> 00:40:09,539 Todavía también se tiene el concepto 907 00:40:09,539 --> 00:40:10,119 De que 908 00:40:10,119 --> 00:40:13,380 Yo tengo la posibilidad de hacer las dos cosas 909 00:40:13,380 --> 00:40:14,000 ¿Vale? 910 00:40:14,059 --> 00:40:16,780 Son decisiones de programación 911 00:40:16,780 --> 00:40:17,719 Que hago yo 912 00:40:17,719 --> 00:40:20,539 Entonces tendré que pensar 913 00:40:20,539 --> 00:40:21,800 Cuál es la opción mejor 914 00:40:21,800 --> 00:40:23,380 Y diseñar la cosa 915 00:40:23,380 --> 00:40:26,420 Está claro que si yo estoy utilizando una clase empleado 916 00:40:26,420 --> 00:40:27,920 Que la ha hecho otro 917 00:40:27,920 --> 00:40:30,800 Departamento 918 00:40:30,800 --> 00:40:32,940 Y el otro departamento esto no me lo ha puesto 919 00:40:32,940 --> 00:40:34,880 Entonces 920 00:40:34,880 --> 00:40:36,340 No puedo utilizar esto 921 00:40:36,340 --> 00:40:38,219 Tengo que utilizar lo que tengo 922 00:40:38,219 --> 00:40:41,039 Otro departamento 923 00:40:41,039 --> 00:40:42,840 A mi me dará un interfaz 924 00:40:42,840 --> 00:40:45,300 Me dará una idea de cual es la clase 925 00:40:45,300 --> 00:40:46,880 Y los métodos que puedo utilizar 926 00:40:46,880 --> 00:40:48,280 Si no hay un método así 927 00:40:48,280 --> 00:40:49,860 No puedo utilizar 928 00:40:49,860 --> 00:40:52,360 Puedo decir, si luego lo harán 929 00:40:52,360 --> 00:40:54,019 Porque ellos están haciendo su trabajo 930 00:40:54,019 --> 00:40:56,440 Tendrás que hacer una reunión con tu jefe 931 00:40:56,440 --> 00:40:57,639 Jefe de proyecto, decirle 932 00:40:57,639 --> 00:40:58,900 Mira, estaría bien esto 933 00:40:58,900 --> 00:41:01,719 Y a lo mejor el jefe de proyecto decide cambiarlo 934 00:41:01,719 --> 00:41:03,840 A lo mejor esta parte aquí de empleado 935 00:41:03,840 --> 00:41:06,500 Es de un programa que ya está funcionando 936 00:41:06,500 --> 00:41:07,400 Y que no se puede tocar 937 00:41:07,400 --> 00:41:09,519 O es un programa del que no tenemos el código 938 00:41:09,519 --> 00:41:11,300 Porque es de otra opción 939 00:41:11,300 --> 00:41:13,360 Tenemos solo el class, no podemos modificarlo 940 00:41:13,360 --> 00:41:16,059 ¿Sí? 941 00:41:17,159 --> 00:41:19,139 Entonces, todo puede ser 942 00:41:19,139 --> 00:41:22,239 Si es todo mío, pues entonces estaría bien 943 00:41:22,239 --> 00:41:23,059 Haberlo hecho así 944 00:41:23,059 --> 00:41:27,670 ¿Dudas? 945 00:41:30,550 --> 00:41:30,929 Gracias.