20250121 HerenciaEjemplos_3 - 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:
Vamos a ver, vamos a completar por tanto este ejercicio que va a ser repasar lo mismo de siempre,
00:00:00
para arrancar ya con este que nos permitirá introducir clases abstractas.
00:00:08
Y ya acabaríamos con herencia, pero nos seguiría pidiendo el cuerpo algo más
00:00:13
porque se nos quedaría corto, que serán las interfaces.
00:00:17
Vale, pues entonces, ahora tenemos ya empleado, gerente y departamento.
00:00:20
y ahora vamos a ampliar la
00:00:26
aplicación
00:00:28
para que pueda haber varios departamentos
00:00:30
si hay varios departamentos
00:00:33
entonces aparece ya de forma natural el concepto
00:00:35
de una empresa que los engloba
00:00:37
y es la clase que habéis hecho
00:00:39
bueno pues la clase
00:00:41
que habéis hecho es
00:00:43
esta que tiene
00:00:45
la propiedad nombre
00:00:46
¿verdad?
00:00:48
y la propiedad
00:00:51
a raíz de departamentos
00:00:52
A ver, no
00:00:54
Aquí no tendría sentido que fuera static
00:01:02
Lo que sí que tendría sentido
00:01:05
Es que luego
00:01:10
Que tú en un main
00:01:11
Cuando ya vas a trabajar con una empresa
00:01:14
Y declaras ya tu empresa
00:01:16
Pues que a lo mejor hicieras esto
00:01:18
Por ejemplo, esto sí
00:01:20
Porque entonces tú me puedes decir
00:01:28
oye, mi aplicación va a trabajar
00:01:30
solo con una empresa
00:01:33
entonces si solo va a trabajar
00:01:34
con una empresa
00:01:37
pues en todo caso
00:01:38
esta variable
00:01:40
podrías hacerla estática
00:01:42
porque solo vas a trabajar con una empresa
00:01:44
pero la propiedad
00:01:46
nombre de empresa
00:01:49
no tiene sentido que sea estática
00:01:51
porque
00:01:52
si hay varias empresas
00:01:54
cada una tendrá su nombre
00:01:56
si yo le pongo a este el modificador
00:01:58
static, el mensaje
00:02:00
que estoy transmitiendo es
00:02:02
todas las empresas del universo se van
00:02:04
a llamar igual
00:02:06
ese mensaje es cierto, es falso
00:02:07
todas las
00:02:11
empresas del universo es imposible que se llamen igual
00:02:12
no tiene ningún sentido
00:02:14
pues es el mensaje que transmito cuando pongo aquí un static
00:02:15
con lo cual ese static ahí no tiene
00:02:18
sentido, entonces quiero
00:02:20
que os vaya
00:02:22
llegando cada vez más que lo más
00:02:24
importante del desarrollo
00:02:26
es hacer buenos diseños
00:02:28
en realidad, no que
00:02:30
aprendáis de carrerilla cosas relacionadas
00:02:32
con la sintaxis, si pongo un
00:02:34
static lo puedo llamar con el nombre de la clase
00:02:36
si pongo no sé qué, cuestiones
00:02:38
prácticas de sintaxis
00:02:40
hay que conocerlas, por supuesto
00:02:42
pero solo con esas no programamos
00:02:44
y hacemos nada
00:02:46
con esas podemos
00:02:47
escribir código
00:02:50
sintácticamente
00:02:52
correcto, pero no tendría ningún
00:02:54
sentido, ¿vale? tú tienes un montón de palabras
00:02:56
las tiras
00:02:58
al azar y las unes siguiendo las reglas
00:03:00
de la sintaxis y te puedes
00:03:02
salir un texto que no
00:03:04
tiene ningún significado
00:03:06
la mesa comió patatas fritas
00:03:07
y me voy a pasear mañana
00:03:10
no te sirve para nada ese texto
00:03:11
y es un texto
00:03:14
perfectamente válido
00:03:16
si te sirve escribir el Quijote, por ejemplo
00:03:17
¿vale? pues entonces
00:03:20
tú pones aquí static
00:03:22
¿vale?
00:03:24
muy bien, como solo vas a tener una empresa
00:03:26
te da igual que esa empresa
00:03:28
el nombre que tenga de repente
00:03:30
se haya convertido en el nombre para todas
00:03:32
las del universo, como solo tienes una
00:03:34
te da igual, pero eso no tiene ningún sentido
00:03:36
no tiene ningún sentido
00:03:38
luego, si quito el static
00:03:39
significa, si yo tengo varios
00:03:44
objetos empresa en mi aplicación
00:03:46
puede que los tenga, puede que no
00:03:48
pero si tengo varios objetos empresa
00:03:50
cada uno tendrá su propio
00:03:52
nombre y eso si tiene sentido
00:03:54
¿vale? bueno pues
00:03:55
la clase empresa que habréis hecho
00:03:58
tendrá su propiedad nombre
00:04:00
y su conjunto de departamentos
00:04:01
como cualquier
00:04:03
bin que es, recordad que
00:04:06
estos son los que se llaman los objetos bin en general
00:04:08
para que no se os vayan olvidando terminologías
00:04:10
pero luego se os van olvidando cosas
00:04:13
uy, split, eso no lo hemos mencionado nunca
00:04:16
claro que lo hemos mencionado
00:04:17
bueno, pues
00:04:19
vale, esta clase como buena clase
00:04:20
de entidad que representa entidad
00:04:24
que se le suele llamar bin
00:04:25
en terminología de desarrollo
00:04:27
¿vale? pues tendrá
00:04:29
sus constructores, sus getter y sus setter
00:04:31
vale
00:04:34
aquí he hecho un constructor solo con
00:04:35
el nombre porque es muy útil
00:04:37
en clases, entidades
00:04:40
que tienen propiedades
00:04:42
que son a raíz
00:04:44
que haya constructores
00:04:45
para inicializar solo las que no son a raíz
00:04:47
porque luego ya
00:04:50
los elementos de la raíz ya se irán metiendo
00:04:51
luego después en métodos ¿vale? ya se irán
00:04:53
transmitiendo después, vale, pues entonces he hecho un constructor
00:04:55
que recibe el nombre, inicializa nombre y ya está
00:04:58
departamento ya se iniciará, se inicia el solo con un array vacío
00:05:01
y luego he hecho los get y los set
00:05:06
y tengo mi objeto empresa
00:05:08
vale, me dice algo más aquí de la clase empresa
00:05:12
me dice, oye, a esa clase empresa, añádele un método
00:05:16
que calcule el salario de la empresa
00:05:21
vale, entonces ese método
00:05:24
calcular el salario total de la empresa
00:05:27
como es un método que afecta
00:05:29
a una empresa, lo metemos en esta clase
00:05:31
que es donde tiene que ir
00:05:33
y por ejemplo lo podemos colocar aquí abajo
00:05:34
le damos un nombrecito
00:05:37
decidimos que va a devolver
00:05:39
como va a calcular un sueldo
00:05:42
total, pues devuelve un double
00:05:43
y ahora ya nos ponemos a programarlo
00:05:45
como hemos programado hace 3 meses
00:05:48
vale
00:05:50
el sueldo total de la empresa, ¿cuál va a ser?
00:05:51
el sueldo de todos
00:05:54
sus departamentos.
00:05:56
¿Vale? Yo es que lo que pasa es que
00:05:59
tengo que subir y bajar, pero intentaré hacerlo despacito.
00:06:00
No, a ver,
00:06:04
todavía no copiéis nada porque estamos pensando.
00:06:05
De hecho, esto... No, no, esto está borrado.
00:06:07
Esto no existe.
00:06:09
Lo he borrado. ¿Vale?
00:06:10
Lo siento, ya no hay nada. Vale, entonces,
00:06:13
vamos a hacer este método. Repito,
00:06:16
esta es programación de hace dos meses.
00:06:17
¿Vale? El sueldo
00:06:20
total, ¿cuál va a ser? Una suma de sueldos.
00:06:21
Luego va a ser una suma
00:06:24
acumulativa, estupendo, una suma
00:06:25
acumulativa, pues mi variable acumuladora
00:06:27
que empieza a cero
00:06:29
vale, los integrantes
00:06:31
de la suma, ¿de dónde me van a salir?
00:06:33
¿es el sueldo
00:06:36
o que pagan los departamentos de la
00:06:37
empresa? bueno, los departamentos
00:06:39
de la empresa están aquí en esta variable, están
00:06:41
aquí, pues tendré que ir
00:06:43
departamento por departamento
00:06:45
y cogiendo de cada departamento
00:06:47
el sueldo que paga ese departamento
00:06:49
para sumarlo
00:06:51
vale, pues entonces
00:06:52
el bucle mío, para ir obteniendo
00:06:54
los sumandos del sueldo
00:06:56
total, el bucle mío tendrá
00:06:58
que iterar por aquí
00:07:00
venga, pues mi bucle tendrá que iterar
00:07:01
por aquí, como vamos
00:07:05
a consultar solo, pues podemos hacer un
00:07:06
for each que es más rápido
00:07:08
departamento de
00:07:09
en departamentos
00:07:11
ahora, ¿qué hacemos
00:07:14
con cada uno de los departamentos?
00:07:16
pues tendríamos que sumarle
00:07:19
a mi variable acumuladora suma
00:07:20
tendríamos que sumarle
00:07:22
el sueldo que paga este
00:07:24
departamento, para así incluir todos
00:07:26
vale, el sueldo
00:07:28
que paga este departamento
00:07:30
a su vez es el sueldo
00:07:32
de cada empleado
00:07:34
porque departamento
00:07:35
que tiene, tiene un montón de empleados
00:07:39
y cada
00:07:41
empleado, este ya
00:07:42
sí que tendrá cada uno
00:07:44
su salario
00:07:45
pero claro
00:07:48
no nos hace falta meternos
00:07:50
en cada departamento y a su vez
00:07:52
ir sumando el sueldo de cada empleado
00:07:54
porque en la clase
00:07:56
departamento ya hemos hecho un
00:07:58
método
00:08:00
¿vale? si yo me voy a la clase departamento
00:08:00
efectivamente tenemos un método aquí
00:08:04
que me va sumando el sueldo de todos
00:08:06
los empleados, que fue el que hicimos el otro día
00:08:10
entonces este método
00:08:12
si lo llama un objeto
00:08:14
departamento, que es donde
00:08:16
está declarado el método, ¿vale?
00:08:18
Está declarado en la clase departamento.
00:08:19
Pues si a este método lo llamo un objeto departamento,
00:08:22
irá empleado por empleado, tal y como hicimos el otro día,
00:08:25
y me va a construir el sueldo total de todos los empleados
00:08:29
y me lo va a devolver.
00:08:31
Luego me puedo aprovechar de este método
00:08:33
que está en la clase departamento
00:08:35
y llamarlo desde aquí e incorporarlo.
00:08:37
La variable no se llama departamento,
00:08:44
sino de dos, se llama así, ¿vale?
00:08:46
pues ya está, ya tengo la suma hecha
00:08:50
voy sumando sobre la variable suma
00:08:52
todos y cada uno de los sueldos
00:08:54
de todos y cada uno de los departamentos
00:08:56
que forman parte de la empresa
00:08:58
y la devuelvo
00:09:00
ala, pues este método ya está
00:09:03
el método que nos calcula
00:09:07
todo el sueldo que paga la empresa
00:09:09
a todos los empleados
00:09:11
de todos sus departamentos
00:09:13
entonces siempre nos apoyamos
00:09:15
para hacer unos métodos
00:09:18
en los métodos de otras clases
00:09:20
claro, no podemos reprogramarlo
00:09:22
todo una y otra vez
00:09:24
bueno
00:09:25
claro
00:09:27
ahora lo que tendríamos que haber hecho
00:09:30
si no tuviéramos ese método y pasáramos del método
00:09:32
pues tendríamos que haber hecho aquí un foran y dado
00:09:34
en el que hubiéramos ido
00:09:36
departamento, perdón
00:09:38
empleado por empleado
00:09:39
de cada departamento de
00:09:41
de cada
00:09:45
perdón, de cada conjunto de empleados
00:09:47
y ahora aquí
00:09:49
ir sumándole
00:09:51
a este
00:09:52
pues el salario
00:09:57
de este empleado
00:10:00
y eso sin distinguir si es
00:10:00
gerente o no, es decir
00:10:03
me tendría que haber metido en
00:10:05
el array de empleados de cada departamento
00:10:07
de, y para cada
00:10:10
empleado ir uno por uno a la suma
00:10:11
pero no me hace falta
00:10:13
hacer esto, porque ya tengo aquí
00:10:15
un método que ya se
00:10:17
mete él en el array de empleados del
00:10:19
departamento de
00:10:21
y me obtiene
00:10:22
la suma total, pues yo esa suma
00:10:24
total de todos los sueldos
00:10:26
de todos los empleados que están dentro de D
00:10:28
se la sumo a esta variable
00:10:30
y así voy sumando para cada departamento
00:10:32
bla bla bla, cuando este for termina
00:10:35
ya lo tengo
00:10:36
luego todo esto de aquí no nos hace falta
00:10:37
vale, entonces siempre nos tenemos que apoyar
00:10:40
en los métodos
00:10:45
que ya están hechos en las clases
00:10:47
si no, nos harán cosas
00:10:49
inmanejables
00:10:51
vale, bueno pues ahora ya simplemente
00:10:52
dice aquí que hagamos un main
00:10:56
pues vamos a hacer
00:10:57
vamos a completar el main y ya está
00:11:00
ah bueno no, tenemos que hacer
00:11:01
la empleado temporal, vale
00:11:04
ahora nuestra aplicación se ha
00:11:05
ampliado y nos han
00:11:08
dicho, oye además de gestión de empleados
00:11:10
normales y gerentes
00:11:11
necesito que gestiones empleados temporales
00:11:13
de los que tienen solamente
00:11:16
de los que tienen una fecha de fin
00:11:18
entonces la fecha de fin
00:11:19
de contrato no la puedo incluir
00:11:21
ni en empleado ni en gerente
00:11:23
porque ellos no tienen fecha de fin
00:11:25
solo tienen los empleados temporales
00:11:27
entonces me aparece automáticamente otra entidad
00:11:28
para trabajar con estos
00:11:31
empleados temporales
00:11:33
pues entonces tenemos que crear
00:11:36
esa clase adicional
00:11:37
pues no pasa nada
00:11:38
la creamos
00:11:39
nos vamos a nuestro paquete otra vez
00:11:41
new
00:11:44
y hacemos nuestra clase
00:11:44
empleado
00:11:48
temporal
00:11:49
y aquí es donde
00:11:50
al integrar, al agregar una nueva
00:11:54
entidad, miramos a ver
00:11:57
si tiene sentido que se meta en nuestra
00:11:59
jerarquía de herencia
00:12:01
porque si se puede meter
00:12:02
en nuestra jerarquía, nos va
00:12:05
a facilitar la reutilización de código que ya
00:12:07
tengamos hecho y muchas cosas
00:12:09
entonces nos hacemos preguntas
00:12:10
¿un empleado temporal es un departamento?
00:12:12
pues no, no tiene sentido que le dé departamento
00:12:15
¿un empleado temporal es una
00:12:17
empresa? no
00:12:19
un empleado temporal
00:12:20
es un empleado
00:12:22
ah sí, un empleado temporal
00:12:25
es un empleado, lo que pasa es que añade
00:12:26
además la fecha de fin
00:12:28
pues entonces yo ahora
00:12:30
digo, ojo
00:12:32
lo meto en la jerarquía
00:12:33
empleado temporal, estens
00:12:36
empleado
00:12:38
con lo cual un empleado temporal
00:12:40
automáticamente, sin que nosotros lo hagamos
00:12:42
tiene ya
00:12:45
su nombre, su salario
00:12:46
y su fecha de contratación
00:12:48
pero el temporal además de esto
00:12:49
que hereda de empleado
00:12:53
además de esto añade una fecha de
00:12:55
fin de contrato
00:12:57
añade una fecha de fin
00:12:58
pues vamos a ponerle esa única
00:13:00
propiedad que añade
00:13:02
que es
00:13:04
la fecha de fin
00:13:06
como es una fecha, un objeto date
00:13:11
pues venga
00:13:14
la propia java útil nos vale
00:13:15
entonces
00:13:17
los get y los set de las propiedades
00:13:20
anteriores están heredadas,
00:13:22
los constructores nos heredan,
00:13:24
luego vamos a hacer uno específico
00:13:26
como hacíamos los constructores
00:13:28
ahora ya, con los super.
00:13:30
Pues nos vamos a hacer un constructor
00:13:32
empleado
00:13:34
temporal.
00:13:40
Y este constructor
00:13:43
va a recibir los cuatro
00:13:44
parámetros que tiene empleado.
00:13:46
Empleado temporal, aunque yo no los vea
00:13:48
con mis ojos, empleado temporal
00:13:50
tiene cuatro propiedades. Tiene estas tres,
00:13:52
Nombre, salario, fecha de contratación
00:13:54
Y fecha de fin, tiene cuatro
00:13:56
Aunque yo no las vea, pues entonces hay que pasarle las cuatro
00:13:58
Que son el nombre
00:14:00
Del empleado
00:14:04
Era nombre o era
00:14:06
Si era nombre
00:14:10
El salario o sueldo
00:14:11
La fecha
00:14:14
De contrato, ¿no?
00:14:16
Y la fecha de fin
00:14:19
¿Vale?
00:14:22
Porque esas son
00:14:26
las cuatro propiedades que tiene empleado temporal
00:14:27
luego vamos a inicializarlo
00:14:30
vale, entonces yo ahora podría ir una por una
00:14:32
dis.nombre igual a nombre
00:14:34
dis.salario igual a salario
00:14:36
podría, ¿verdad? hacer esto
00:14:37
dis.
00:14:40
ah, no, tendría que hacer como está heredada
00:14:46
pero
00:14:48
recordad que los
00:14:49
constructores de clases heredadas
00:14:52
se suelen
00:14:55
hacer llamando
00:14:57
al constructor de la superclase
00:14:58
Es decir, ¿cuál es la superclase de empleado temporal?
00:15:00
Empleado.
00:15:03
Empleado tiene ya un constructor al que si yo le paso las tres primeras cosas,
00:15:05
que es este, ya me hace esta inicialización.
00:15:09
Si yo le paso las tres primeras cosas.
00:15:12
Vale, pues entonces vamos a llamar al constructor de arriba,
00:15:15
pasándole las tres primeras propiedades
00:15:19
y luego ya inicializamos la que nos falta.
00:15:21
¿Vale? Que es lo que vimos el otro día.
00:15:23
¿Cómo se llama el constructor de arriba?
00:15:27
así
00:15:28
constructor de arriba
00:15:30
que te paso
00:15:32
estas tres cositas primeras
00:15:33
que me han pasado a mi
00:15:35
a mi me han pasado estos tres parámetros
00:15:38
me han pasado
00:15:40
estos tres parámetros
00:15:44
me los han pasado
00:15:45
aquí, nombre, salario, fecha
00:15:48
de contrato, pues estos tres parámetros
00:15:50
te los paso yo a ti
00:15:52
constructor de arriba, te paso estos tres parámetros
00:15:54
a ti y ahora ya
00:15:56
el constructor de arriba los coge
00:15:58
y los usa para
00:16:00
inicializar estas propiedades
00:16:02
vale, lo que pasa es que
00:16:03
nos ha quedado una propiedad sin inicializar
00:16:10
que es esta, porque esta el constructor de arriba
00:16:12
no sabe ni que existe lógicamente y no la puede
00:16:14
ni recibir siquiera, el constructor
00:16:16
de arriba recibe solo tres propiedades
00:16:18
bueno pues este
00:16:20
último parámetro de aquí
00:16:21
ese ya si que vamos a usarlo
00:16:24
para
00:16:26
inicializar la propiedad
00:16:29
que nos falta
00:16:34
ya tenemos un constructor
00:16:34
con parámetros
00:16:40
lo normal es hacer uno sin parámetros
00:16:42
get y set
00:16:44
dejamos el constructor sin parámetros
00:16:45
vamos a añadir el get y set de lo que nos falta
00:16:48
nos falta
00:16:50
el get y set de fecha fin
00:16:53
porque los get y set de las otras tres propiedades
00:16:54
ya los hemos heredado
00:16:59
bueno pues empleado temporal
00:17:00
ya está, heredaría de empleado y se acabó
00:17:03
dime
00:17:05
si pones fecha contratación
00:17:06
¿dónde? no entiendo
00:17:11
en el súper
00:17:12
si pones fecha contratación
00:17:13
no me da error, pero si lo pongo me da error
00:17:14
pues será que no tienes un constructor
00:17:17
arriba que reciba los tres parámetros
00:17:19
y
00:17:21
será que no es del mismo tipo
00:17:23
a ver
00:17:25
tú tienes que entender lo que estás haciendo, estás llamando al constructor
00:17:27
de arriba, si lo estás llamando
00:17:29
pasándole los tres parámetros que el constructor
00:17:31
de arriba necesita, no te tienes por qué dar ningún error
00:17:33
o que sea de otro tipo
00:17:35
claro, con lo cual su constructor no tiene esto
00:17:38
entonces si tu constructor no tiene esto
00:17:55
pues es normal que
00:17:58
no lo puedas llamar con eso
00:17:59
Vale
00:18:01
Bueno, pues empleado temporal
00:18:04
Ya se ha metido en la jerarquía y es esto
00:18:06
Entonces
00:18:08
El haberlo metido
00:18:10
En la jerarquía
00:18:12
Haciendo un extends
00:18:13
Le facilita a la aplicación las cosas
00:18:15
Facilita el haber incorporado esto
00:18:18
Porque imaginaos que la aplicación
00:18:20
Ya estaba funcionando como antes
00:18:23
Con sus empleados, gerentes
00:18:24
El main de agregar empleado
00:18:26
Y nos dicen, oye, agrega ahora
00:18:27
la posibilidad de que haya empleados temporales
00:18:30
pues nosotros nos olvidamos
00:18:31
de la herencia y hacemos
00:18:34
la clase empleado temporal
00:18:36
la hacemos poniendo aquí todas las propiedades
00:18:38
su nombre, su no sé qué
00:18:40
con lo cual este extens no haría
00:18:42
ninguna falta, porque hemos puesto ahí todo
00:18:44
olvidándonos de la herencia
00:18:46
pues ya está, empleado temporal está perfecta
00:18:47
pero que ocurre
00:18:50
que ahora departamento la hemos liado
00:18:51
porque el departamento
00:18:54
ahora no podría tener
00:18:56
empleados temporales
00:18:58
no podría, porque el departamento
00:18:59
tiene que tener
00:19:02
en su array de empleados
00:19:03
todo lo que quepa en la caja
00:19:05
empleado, y en la caja
00:19:07
empleado cabe gerente porque
00:19:09
hereda de empleado, pero
00:19:11
no cabe algo que no herede de empleado
00:19:13
entonces si yo quisiera
00:19:15
ampliar mi aplicación para que los
00:19:17
departamentos incorporaran empleados
00:19:19
temporales también, que para eso he hecho la
00:19:21
entidad, tendría que hacerme aquí
00:19:23
otro array de, oye
00:19:25
tus empleados temporales cuáles son
00:19:27
y esto es una caca
00:19:29
porque he tenido que retocar esta clase
00:19:37
tendría que retocar
00:19:40
el método sueldo total
00:19:42
porque en el sueldo total tendría que recorrer ahora
00:19:43
este array, el array de aquí
00:19:46
o sea, tendría que hacer un montón
00:19:48
de retocamientos
00:19:50
en todas las clases
00:19:52
para incluir en mi aplicación
00:19:53
el que haya aparecido un empleado
00:19:56
temporal, tendría que
00:19:58
retocar en mil sitios
00:19:59
pero si yo diseño bien
00:20:01
y identifico
00:20:03
ojo, que empleado temporal
00:20:05
es también un empleado
00:20:08
pues si lo
00:20:09
identifico, me hago mi stents
00:20:11
y al hacerme mi stents
00:20:13
en el propio
00:20:15
array de empleados del departamento
00:20:17
en este ya van a caber empleados
00:20:19
temporales también
00:20:21
y no tengo que retocar nada de la clase departamento
00:20:22
nada
00:20:26
porque en este mismo array nos van a caer también
00:20:26
los temporales si nos da la gana
00:20:29
porque heredan de empleado
00:20:31
si no lo hubiéramos hecho
00:20:32
metiéndolo en la jerarquía
00:20:35
y haciéndolo otra vez todo nuevo empleado temporal
00:20:37
nos hemos cargado
00:20:40
de apartamento y tenemos que rehacerlo
00:20:41
metiendo también un array
00:20:44
para empleados temporales, etc.
00:20:45
¿vale?
00:20:48
perdón
00:20:51
ya está aquí
00:20:51
¿está bien?
00:20:54
sí
00:20:56
vale, ¿os habéis enterado?
00:20:57
Vale, ¿necesitáis parar un momentín?
00:21:01
Venga, pues paramos
00:21:06
- 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:
- 10
- Fecha:
- 21 de enero de 2025 - 17:40
- Visibilidad:
- Clave
- Centro:
- IES ROSA CHACEL
- Duración:
- 21′ 07″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 97.81 MBytes