20250117 HerenciaEjemplos_2 - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
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
Sí
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