Saltar navegación

20250117 HerenciaEjemplos_2 - Contenido educativo

Ajuste de pantalla

El ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:

Subido el 18 de enero de 2025 por Raquel G.

12 visualizaciones

Descargar la transcripción

A ver, venga, seguimos. 00:00:00
Vale, pues entonces 00:00:03
este término ya no suena. 00:00:04
Y se puede usar en otros 00:00:07
contextos, no solo para llamar 00:00:08
al constructor. 00:00:10
Se suele, se puede 00:00:13
usar también 00:00:14
en cualquier momento, por ejemplo, 00:00:15
super, si uno pone 00:00:19
super punto, pues se accede 00:00:20
a todo lo que hay 00:00:23
en la superclase, a 00:00:24
métodos, a... 00:00:26
¿Vale? 00:00:28
Claro, porque es que ya está ahí dentro 00:00:30
Fuera del constructor 00:00:33
¿Dónde? Fuera del constructor 00:00:38
Si estás fuera de cualquier método 00:00:40
Solamente puedes poner propiedades 00:00:42
Uy, ha podido 00:00:43
Poder puedo, nadie me lo ha impedido 00:00:51
Pero, ¿para qué quiero hacer eso? 00:00:53
¿Y para qué? 00:00:56
Bueno, pues a mí me molan otras cosas 00:00:58
no pongo esas cosas 00:01:00
venga 00:01:03
vale, pues seguimos 00:01:03
haciendo la aplicación 00:01:09
vale, bueno, pues seguimos haciendo esta aplicación 00:01:10
a ver si la dejamos media avanzada 00:01:17
para que la acabéis o no con otras 00:01:19
parecidas que están abajo o lo que sea 00:01:21
vale, pues empleado y gerente ya tienen 00:01:23
esa relación, resulta 00:01:25
que ahora 00:01:27
mi aplicación también va a gestionar departamentos 00:01:29
y los departamentos 00:01:31
tienen empleados 00:01:33
pues venga, una clase de departamento 00:01:35
que paz 00:01:37
pues venga 00:01:42
una clase de departamento 00:01:47
que la clase de departamento 00:01:56
porque se caracteriza 00:01:57
por su nombre 00:01:58
y por su array de empleados. 00:02:00
Entonces, al tener un array de empleados 00:02:06
y declararlo así, 00:02:10
resulta que este departamento puede tener 00:02:26
tanto gerentes como empleados normales. 00:02:28
Puede tener de todo. 00:02:31
Podría tener un objeto gerente aparte, 00:02:34
pero ese objeto gerente puede estar aquí metido también en empleados. 00:02:36
No hace falta crear una propiedad aparte gerente. 00:02:40
Puede estar metido en el array de empleados y ¿cómo distinguimos cuál es el empleado de este departamento que es gerente? 00:02:43
Pues recorriendo el array instance of, el que esté instanciado como gerente será el gerente, ¿vale? 00:02:50
No hay que tener un objeto gerente aparte. 00:02:56
Por ejemplo, aunque pongamos esa final, ¿no podría cambiar el tamaño del array? 00:02:59
Esta. 00:03:06
A ver, un array final, lo que pasa es que esto es un objeto. 00:03:08
entonces uno 00:03:11
significaría que la dirección de memoria 00:03:13
no la puedes mover 00:03:15
a ver, poder puedes ponerlo 00:03:16
pero lo que significa es que 00:03:23
ahora ya en esta dirección 00:03:25
de memoria no puedes hacer otra asignación 00:03:27
con new, pero el array puede cambiar 00:03:29
porque 00:03:31
lo que es final es esto 00:03:33
y esto lo que contiene es la dirección 00:03:35
de memoria 00:03:37
y la dirección te lleva a un sitio 00:03:38
Pero eso sí que lo podrías modificar 00:03:40
Lo que no puedes es meterle otro new 00:03:42
Es decir, por ejemplo, si yo pongo aquí un método cualquiera 00:03:44
Claro, estoy pensando 00:03:47
Claro, estoy pensando en voz alta 00:03:48
Vale 00:03:51
Yo podría hacer 00:03:51
Empleados de cero 00:03:53
Igual a 00:03:57
A ver, de rollo 00:04:00
00:04:01
New 00:04:05
Empleado 00:04:07
Y luego a empleados de cero 00:04:09
Darle otro distinto 00:04:12
o sea, volverlo a sobrescribir 00:04:14
¿vale? y no hay ningún 00:04:16
problema, porque lo que es final 00:04:22
es la referencia, lo que entiendo 00:04:24
que no me va a dejar es a empleados 00:04:26
ahora darle otro array distinto 00:04:28
entiendo que 00:04:29
eso no me dejaría 00:04:32
¿ves? 00:04:34
eso no, porque es final 00:04:38
y con esto es con lo único con lo que 00:04:40
estoy moviendo esto, que es la 10 de memoria 00:04:42
pero con esto 00:04:44
pero si hago otro array fuera, un auxiliar 00:04:45
y luego empleados igual auxiliar perfectamente 00:04:47
No, porque lo estás cambiando 00:04:49
Es decir, yo me hago aquí 00:04:51
Estás cambiando la dirección de memoria 00:04:53
Empleado aux 00:04:55
Igual a new 00:04:58
Empleado 00:05:00
Y ahora le digo que a este 00:05:02
Aux 00:05:05
No, porque lo estoy variando 00:05:05
Estoy cambiando 00:05:08
Espérate, ¿qué he hecho yo aquí? 00:05:09
New empleado, cero 00:05:11
¿Ves? 00:05:12
O sea, cualquier cosa que implique 00:05:15
Modificar esta dirección de memoria 00:05:16
venga de donde venga esa modificación 00:05:18
pero la array sí 00:05:20
lo que pasa 00:05:22
claro, es que poner 00:05:22
un objeto cualquiera como final 00:05:26
lo haces tan poco flexible 00:05:28
porque nunca jamás va a moverse la referencia 00:05:30
de sitio, entonces ¿para qué puedes querer hacer eso? 00:05:32
bueno 00:05:38
no, pero está bien 00:05:38
vale, pues todo esto fuera 00:05:41
vale, departamento 00:05:44
¿qué más cosas tiene? 00:05:50
Se puede hacer el constructor y todo eso y un método, bueno, constructor y propiedad de Getter y Setter y un método para calcular el salario total del departamento, ¿vale? 00:05:54
Es decir, lo que cobran todos los empleados, ¿vale? 00:06:05
Entonces, ponéis los Getter y Setter y ahora haced este método, ¿vale? 00:06:11
Haced este método 00:06:18
Vale, sueldo total de los empleados 00:06:19
Del departamento 00:06:33
Entonces, el sueldo total de los empleados 00:06:34
Del departamento es lo que este departamento 00:06:36
Paga a todos los empleados 00:06:38
Vale, pues venga 00:06:40
Haced este método de aquí 00:06:42
A ver 00:06:44
Venga, departamento 00:06:45
Los métodos que hay que hacer 00:06:48
Se hacen los métodos en las clases 00:06:49
Y luego ya el main que los usa, claro, hemos dicho 00:06:51
Agregar empleado 00:06:53
el eterno de toda la vida 00:06:55
que estamos ya hasta ahí 00:06:57
y por eso necesitamos las colecciones como el comer 00:06:59
pero bueno 00:07:01
a ver 00:07:02
como no me estoy haciendo ni puñetero 00:07:04
caso, nadie me dice que esto está 00:07:07
a ver 00:07:09
vale, pues agregar 00:07:11
empleado, a ver 00:07:13
venga 00:07:15
método agregar empleado 00:07:16
de la clase departamento 00:07:19
lo de siempre y de toda la vida 00:07:21
le pasamos un objeto 00:07:23
empleado, hacemos un array nuevo 00:07:25
con una posición más 00:07:27
copiamos lo que había en el viejo en el nuevo 00:07:29
en la extra copiamos 00:07:32
el empleado nuevo 00:07:33
y ahora ya 00:07:35
la propiedad empleados de mi 00:07:36
departamento, esta 00:07:39
queda sustituida por la nueva 00:07:41
¿verdad? 00:07:43
luego agregar empleado 00:07:45
habéis hecho lo de siempre una y otra vez ¿verdad que sí? 00:07:47
bueno 00:07:50
A ver, método 00:07:51
Sueldo total de los empleados 00:07:53
A ver, ¿qué? 00:07:55
¿Lo has hecho bien? 00:07:59
Ah, vale 00:08:02
A ver, yo no digo que esto esté bien, ¿eh? 00:08:03
Me refiero 00:08:04
Sueldo total de los empleados 00:08:05
Este método está en departamento, repito 00:08:08
No perdamos la visión 00:08:10
No, es que departamento no tiene salario 00:08:11
Es departamento 00:08:17
Estoy en la clase departamento 00:08:17
¿Y tienes una propiedad salario 00:08:19
en departamento? 00:08:22
A ver. 00:08:26
Departamento no tiene una propiedad salario. 00:08:32
No, no, no. 00:08:34
Empleados de ahí. 00:08:36
Punto salario. 00:08:40
Claro, que es justo lo que yo he hecho. 00:08:41
¿Qué más me da? 00:08:47
salario 00:08:49
vale, pero porque no habrás puesto 00:08:50
private o protected la propiedad 00:08:54
salario 00:08:56
pero departamento no está 00:08:57
salario 00:09:00
sí, sí, sí 00:09:17
No me estaba dejando 00:09:18
Ya, pero departamento 00:09:19
No está heredada 00:09:23
No es hereda 00:09:25
Entonces 00:09:26
Bueno, da igual, es un problema menor 00:09:27
No nos importa, ya entenderemos por qué 00:09:35
Ahora cuando tengamos tiempo, que son las 34 00:09:37
¿Vale? Pero se queda ahí apuntado 00:09:39
En cualquier caso 00:09:41
Como es feo, para eso están los get y los set 00:09:42
Yo dejo ahí mi get y ya está 00:09:45
¿El empleado en departamento o el empleado? 00:09:47
Silencio, por favor. 00:09:51
Vale, entonces, método 00:09:52
de empleados. Ya sabemos 00:09:54
que tenemos una RAI de empleados 00:09:56
que lo recorremos 00:09:58
y como va a ser una suma 00:10:00
acumulativa, pues ya está. Vamos sumando 00:10:02
sobre la variable suma acumulativa 00:10:04
todos y cada uno de los RAIs del empleado. 00:10:06
Pero, 00:10:09
este método está incompleto. El jefe nos dirá 00:10:10
oye, ¿no? Porque, ¿y si 00:10:12
alguno de los empleados de la RAI, 00:10:14
alguno o algunos es gerente 00:10:16
su sueldo además tiene el bonus 00:10:18
¿vale? entonces 00:10:20
este método no está incluyendo 00:10:22
el bonus de los empleados que sean 00:10:24
gerente 00:10:26
claro, entonces decimos, oye 00:10:27
pues para cada empleado tengo que distinguir 00:10:30
si es gerente o no 00:10:32
solo tengo una manera de distinguir si es gerente o no 00:10:33
cada empleado, que es este 00:10:36
¿vale? 00:10:38
si el empleado en el que 00:10:44
yo estoy en ese momento en el array 00:10:46
es gerente 00:10:47
entonces a la variable acumulativa 00:10:48
sueldo total le tengo que sumar 00:10:52
su salario más 00:10:53
el bonus de ese empleado 00:10:55
¿vale? 00:10:57
a ver aquí 00:11:02
¿vale? entonces 00:11:05
el eclipse que ya es muy listo 00:11:12
me ha hecho 00:11:16
el casting a gerente porque si yo 00:11:17
no hago el casting a gerente me pasa lo de siempre 00:11:19
¿qué? 00:11:21
cuando yo trato de sacar 00:11:23
el bonus de este empleado 00:11:25
el compilador me dice 00:11:27
empleado, de qué clase eres 00:11:29
eres de clase empleado 00:11:32
en empleado no hay get bonus 00:11:33
obviamente no hay get bonus 00:11:35
porque en empleado no hay bonus 00:11:37
pero tú sabes 00:11:38
que este se ha instanciado 00:11:40
como gerente, lo sabes porque esto ha dado true 00:11:43
pues entonces haces el casting 00:11:45
que ya el 00:11:47
haces el casting 00:11:50
Y ahora ya sí, con el casting hecho 00:11:53
Ya puedes acceder al bonus del empleado 00:11:55
Vale, que no, que no está instanciado 00:11:56
Como gerente 00:11:59
Pues entonces es que está instanciado 00:12:00
De la otra manera 00:12:03
Y a sueldo total 00:12:04
Es que son y 37 00:12:06
Pues tranquilidad 00:12:11
Si hay que saltar su labor 00:12:13
Ya, pero es que yo tengo 00:12:14
Clase luego en grado medio 00:12:17
Que 00:12:19
Si se me van todos 00:12:19
Si no llego 00:12:23
Pero, ¿cómo que os habéis perdido? 00:12:24
No os podéis 00:12:33
No os podéis haber perdido 00:12:34
A ver 00:12:36
Pero a ver, ¿el problema cuál es? 00:12:37
Que muevo la pantalla demasiado deprisa 00:12:44
Vale, entonces 00:12:46
si voy más despacio con la 00:12:53
si voy más despacio con la pantalla 00:12:56
lo seguís 00:12:58
vale 00:12:59
hombre, no hagas cambios de repente 00:13:00
rapidísimo a otra clase 00:13:04
yo entiendo 00:13:05
porque en el bonus no me va a hacer 00:13:07
estás aquí 00:13:10
y de repente cambias 00:13:12
a otro sin avisar 00:13:14
ya, lo que pasa es que bueno, que asumo que esto ya lo tenéis 00:13:15
vosotros escrito, porque lo habéis trabajado antes 00:13:18
entonces 00:13:20
Entonces, bueno, este método de sueldo total empleados ahora está medio claro. 00:13:20
Es una variable acumulativa, sueldo total sobre la que vamos acumulando, el sueldo de cada uno de los empleados que hay en el array. 00:13:28
Pero claro, cada uno de los empleados que hay en el array puede haberse creado como gerente o no. 00:13:36
Y si se ha creado como gerente, lo que tenemos que sumar a sueldo total no es solo el salario, sino también su bono. 00:13:42
Y para sacar su bonus 00:13:49
Hay que hacerle el casting a gerente 00:13:51
Porque si no el compilador 00:13:54
No me deja sacar el bonus 00:13:56
Porque el bonus está solo en la clase gerente 00:13:57
Solo en la clase gerente 00:14:00
¿Vale? 00:14:01
Entonces 00:14:03
De todas maneras 00:14:04
Seguramente me reconozcáis 00:14:08
Que si fuerais estudiando al día 00:14:10
Luego al día siguiente 00:14:13
No os perderíais tanto 00:14:15
Porque la gran parte de lo que hago 00:14:15
Es repetir y repetir y repetir 00:14:17
lo vimos una y otra vez, una y otra vez, una y otra vez 00:14:18
ya, me repito 00:14:20
muchísimo, pero 00:14:22
pero mejor 00:14:24
estoy repitiendo todo el rato 00:14:26
bueno, pues entonces 00:14:28
efectivamente 00:14:31
aquí os vais a quedar, porque es que 00:14:31
el siguiente 00:14:34
método, sueldo total 00:14:37
y ahora ya, una vez hecho este 00:14:38
método, tendríamos, bueno no 00:14:40
no os quedáis aquí, estos dos métodos ya están 00:14:42
en la clase departamento, sueldo 00:14:44
total del departamento y agregar 00:14:46
empleado del departamento, esos dos están 00:14:48
y ahora ya vamos a hacer un main 00:14:50
pues yo el main 00:14:52
que luego lo subo 00:14:54
mi main ya trabaja 00:14:56
espera que me he equivocado cuando he dicho que no nos íbamos 00:14:58
no nos íbamos, un momento 00:15:00
un segundín para que veáis el main 00:15:01
porque lo voy a subir y así seguís trabajando 00:15:04
a partir de él, para hacer el ejercicio 00:15:06
¿está bien descrito en el ejercicio? 00:15:08
¿en el nombre del ejercicio? 00:15:10
¿este ejercicio está escrito en algún lado? 00:15:12
sí, en el listado, es este primero 00:15:14
lo que pasa es que este main que yo he hecho 00:15:16
este main me lo he sacado de la manga para hacer las pruebas 00:15:17
vale, entonces este main 00:15:20
instancia 00:15:22
que haya un segundo 00:15:24
ahora ya el main para hacer las pruebas, vamos a trabajar 00:15:25
con un departamento 00:15:28
pues venga, instanciamos un departamento 00:15:29
y le damos su nombre 00:15:32
departamento solo tiene esas propiedades 00:15:33
tiene el 00:15:36
nombre y el array 00:15:37
yo inicialmente le pongo solo el nombre 00:15:39
los empleados se los voy a ir agregando después 00:15:41
vale, pues me hago un departamento 00:15:44
que es este 00:15:46
Y ahora ya me voy a hacer mi bucle. Para las opciones, agregar empleado a este departamento y mostrar sueldo total. Vale. Opción 1, para agregar un empleado, lo primero que le pregunto es, ¿qué tipo de empleado quieres? ¿Un gerente o un empleado normal? Distingo el tipo. Vale. 00:15:47
Aquí voy a guardar el empleado a crear, que será o gerente o normal, ¿vale? En el caso de que el tipo leído sea G, o sea, estoy anidando un switch dentro del case, no pasa nada, en el caso de que sea G, le digo, pues méteme todos los datos del gerente, que son nombre, salario, fecha de contratación y bonos. 00:16:06
Le digo, mételos todos, para hacer yo el new, le digo, mételos todos, nombre, salario, fecha en este formato y bonus. Y ahora me instancio el objeto new gerente con el nombre que él me habrá metido, el salario que él me habrá metido y la fecha, porque la fecha necesita un objeto date, necesita un date. 00:16:31
bueno pues vamos a hacernos un método auxiliar en el main 00:16:53
que a partir de un string 00:16:58
día, mes y año 00:17:02
me devuelvo un objeto date 00:17:03
con esos datos 00:17:05
entonces me echo yo un método 00:17:06
le fecha aquí abajo 00:17:08
le fecha 00:17:10
y aquí ya sí que le pregunto a HRGPT 00:17:12
oye recuérdame el código 00:17:15
y tengo aquí la preguntita hecha 00:17:17
le digo 00:17:19
Oye, ¿me recuerdas el código para leer un objeto date de Java desde la consola? 00:17:20
Y él me lo ha recordado, pero con el escáner y yo ya lo he adaptado a lo mío, porque ya sé lo que quiero y lo que me interesa 00:17:29
Y él me ha dicho, vale, pues te creas un dateformat donde le dices cómo lo tiene que meter 00:17:36
y luego ya pues 00:17:46
lo lees con el escáner 00:17:48
y se acabó, me dice eso y yo he copiado 00:17:51
y pegado quedándome con lo que 00:17:53
me interesa 00:17:55
¿y qué me interesa? 00:17:55
me interesa, me cree un sí 00:17:58
en uno de estos 00:18:01
con este formato de día, mes y año 00:18:02
y ahora ya 00:18:06
llamo a leer cadena, para que meta la cadena 00:18:07
y ahora ya esta cadena 00:18:10
se la paso al método parse 00:18:12
de este y ya tengo 00:18:16
el objeto date, y el objeto date lo devuelvo 00:18:18
vale 00:18:20
entonces ya esta cosa concreta 00:18:22
se la puedo decir a 00:18:24
chat GPT que me la recuerde 00:18:25
y ahora lo que pasa es que 00:18:27
me ha dicho lo de tantas veces 00:18:31
cuida con la excepción, pues la propagamos 00:18:33
y se acabó, y ahora ya tengo un método 00:18:36
le fecha que solicita 00:18:38
una cadena y me la devuelve 00:18:40
en objeto date 00:18:42
pues ahora ya ese método le fecha 00:18:43
es el que yo estoy llamando aquí 00:18:45
para que la fecha 00:18:48
que me introduzca el tío 00:18:50
ya la pase directamente 00:18:52
al constructor 00:18:53
para crear el gerente. 00:18:54
¿Vale? 00:18:56
Y luego ya el bonus. 00:18:57
Y luego en el caso 00:18:59
de que sea empleado, 00:19:00
pues el bonus no lo leo, 00:19:01
leo solamente esto. 00:19:02
Bueno, pues ahora ya 00:19:05
ese empleado creado, 00:19:06
ese empleado 00:19:07
que será uno 00:19:08
o será otro 00:19:09
o será gerente 00:19:10
o será empleado 00:19:11
o uno u otro, 00:19:11
se lo paso al departamento 00:19:13
a través del método 00:19:15
agregar empleado 00:19:16
que he hecho antes. 00:19:16
se lo paso y se acabó 00:19:17
y luego ya la funcionalidad 2 00:19:19
es simplemente 00:19:21
vale, sueldo total, pues llamo al método 00:19:23
sueldo total para mi objeto 00:19:25
y listo 00:19:27
vale 00:19:29
¿a dónde? 00:19:29
vale 00:19:37
Materias:
Programación
Niveles educativos:
▼ Mostrar / ocultar niveles
  • Formación Profesional
    • Ciclo formativo de grado superior
      • Primer Curso
Subido por:
Raquel G.
Licencia:
Todos los derechos reservados
Visualizaciones:
12
Fecha:
18 de enero de 2025 - 14:23
Visibilidad:
Clave
Centro:
IES ROSA CHACEL
Duración:
19′ 42″
Relación de aspecto:
1.78:1
Resolución:
1920x1080 píxeles
Tamaño:
92.66 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid