Saltar navegación

Activa JavaScript para disfrutar de los vídeos de la Mediateca.

Clase 19-03-24 - 1 - 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 3 de abril de 2024 por Raquel G.

10 visualizaciones

Descargar la transcripción

Bueno, pues esa es una descripción muy habitual en la mayoría de las situaciones que uno tiene que gestionar en la vida real, ¿no? Tiene que gestionar una serie de entidades que son cosas y además hacen cosas, son y hacen, como estos elfos, que son criaturas místicas, pero además tienen poderes, ejercen poderes. 00:00:01
entonces, como resultado del análisis 00:00:24
de una situación, nosotros podemos llegar a esta conclusión 00:00:27
mis empleados, mis facturas, mis no sé qué 00:00:30
son esto, son esto 00:00:33
y además hacen todas estas cosas 00:00:35
entonces yo tengo que hacer ahora todo mi diseño de clases 00:00:38
para hacer ahí una foto bonita de toda esa realidad 00:00:40
de tal forma que me quede ya una aplicación 00:00:44
pues manejable y fácilmente ampliable 00:00:47
porque la foto está bien hecha 00:00:51
entonces puedo ampliarla bien 00:00:53
bueno, pues esa es la idea, cuando uno se ha dado cuenta 00:00:54
de que esas entidades que va a manejar 00:00:57
son cosas y además hacen cosas 00:00:58
pues entonces habrá relación de herencia 00:01:00
de yo soy esto 00:01:02
pues heredo de esto, entonces me hago 00:01:05
una super clase de la que heredan 00:01:07
todas esas entidades que he visto 00:01:08
que son algo, me hago una super clase 00:01:11
y seguramente eso me ayude 00:01:13
me ayude en mi aplicación 00:01:14
y luego además como hacen 00:01:17
cosas, ejercen un comportamiento 00:01:19
pues 00:01:21
Eso se suele recoger en interfaces 00:01:22
Interfaces que recogen el comportamiento a través del método 00:01:25
Entonces, esas entidades serán cosas 00:01:28
O lo que es lo mismo, heredarán 00:01:31
Y además harán cosas 00:01:32
O lo que es lo mismo, implementarán interfaces 00:01:34
Y pueden hacer las dos cosas 00:01:37
Dentro de mi jerarquía, yo heredo de esto porque soy eso 00:01:38
Y además implemento esta interfaz porque me comporto de esa manera 00:01:43
Pues bueno, este ejercicio era eso 00:01:48
En resumido 00:01:51
Los dragones, elfos y hipogrifos 00:01:53
Pues son criaturas místicas 00:01:56
Y tienen poderes 00:01:57
Entonces como son criaturas místicas 00:01:59
Pues una clase criatura mística 00:02:01
Que luego habría que decidir si es abstracto o no 00:02:03
Depende de lo que me interese 00:02:05
Y luego una interfaz 00:02:07
Que es poder místico 00:02:09
Porque eso se refiere ya a 00:02:11
Ejercer, hacer cosas 00:02:13
En este caso activar los poderes o lo que fuera 00:02:15
Pues venga 00:02:17
Entonces 00:02:19
aquí ya el diseño como nos lo daban 00:02:20
pautado, pues había poco que pensar 00:02:23
primero la interfaz 00:02:25
con el método 00:02:27
pues ya está, entonces 00:02:28
ah bueno, pues todo 00:02:31
vale, pues la interfaz 00:02:38
entonces la interfaz ya sabéis que solamente puede tener 00:02:50
o variables constantes 00:02:53
porque son variables que uno 00:02:55
identifica en la aplicación que le interesan 00:02:57
porque las usan un montón de clases 00:02:58
pues el sitio más recogidito, ahí más apañado 00:03:00
para ponerlo es en la interfaz 00:03:03
una variable public static final 00:03:04
del tipo que sea 00:03:06
entonces en las interfaces veréis muchas veces que hay 00:03:07
public static final 00:03:11
número pi, lo que sea, porque son 00:03:12
constantes, valores constantes 00:03:14
que usan muchas clases 00:03:17
pues los meto ahí todos 00:03:19
eso puede tener una interfaz, luego además que puede tener 00:03:20
que es lo que tiene 00:03:22
métodos vacíos que 00:03:24
recogen actuaciones 00:03:26
que tienen 00:03:29
que implementar la gente que implementa la interfaz 00:03:30
En este caso, la única actuación que había era la de activar poder. 00:03:33
Recordad que son públicos por definición, no hay que ponerlo. 00:03:40
Esta era esta interfaz, ya está, no tiene más. 00:03:45
Luego, entonces, las criaturas esas, aparte de implementar esto, 00:03:50
son criaturas místicas. 00:03:55
Entonces, como todas son criaturas místicas, 00:03:59
pues tiene sentido hacer esa clase, esa superclase. 00:04:01
¿Qué me dice aquí? 00:04:04
esta clase abstracta 00:04:05
que ya me dicen directamente que sea abstracta 00:04:07
pues venga, esta clase abstracta 00:04:10
hago una nueva clase 00:04:14
y ahora 00:04:19
esta clase 00:04:27
tiene que implementar esta otra 00:04:30
entonces 00:04:33
¿qué implicaciones tiene esta relación de implementación? 00:04:36
la implicación que tiene es 00:04:41
que estamos diciendo todos los que sean 00:04:43
criaturas místicas, todos 00:04:45
sea dragón, elfo, sea quien sea 00:04:47
todos tienen que tener poderes 00:04:49
es lo que estamos diciendo, todos 00:04:52
si quisiéramos que 00:04:53
solo tuvieran poderes los elfos 00:04:56
y los dragones no 00:04:57
pues entonces no haríamos la relación de implementación aquí 00:04:58
la haríamos directamente 00:05:02
el elfo implementa el poder místico 00:05:03
y el dragón no, pero aquí no la haríamos 00:05:05
porque si la hacemos aquí 00:05:07
todo el que herede de criatura 00:05:09
mística, todo el que herede 00:05:11
a través de esa relación de herencia 00:05:13
va a tener que implementar poder místico 00:05:15
porque éste lo implementa 00:05:17
entonces, aquí 00:05:19
haciendo esta relación de implementación decimos 00:05:21
oye, todo el que herede de aquí 00:05:22
a través de esta relación de herencia 00:05:24
tiene que implementar ésta obligatoriamente 00:05:26
entonces todas las criaturas místicas 00:05:29
todas van a tener 00:05:31
un poder 00:05:32
¿eso es lo que queremos? 00:05:34
sí, pues estupendo, ¿no es lo que queremos? 00:05:36
pues hay que cambiar el diseño 00:05:38
vale, entonces como criatura mística 00:05:39
implementa el poder místico 00:05:42
ya el compilador no lo está diciendo, me lo está diciendo 00:05:43
oye, si implementas esto 00:05:45
tienes que obligatoriamente 00:05:46
darle cuerpo a este método 00:05:49
y si no se lo das 00:05:51
te quedas con el vacío 00:05:53
y si te quedas con el vacío 00:05:56
no te queda más remedio que ser abstracto 00:05:57
vale, entonces en nuestro caso 00:05:59
ya nos habían dicho que esta clase 00:06:01
fuera abstracta 00:06:03
entonces como ya nos han dicho que esta clase 00:06:04
fuera abstracta, ya no tenemos ninguno 00:06:07
obligación, ninguna 00:06:09
de implementar este método 00:06:10
¿vale? ninguna 00:06:13
porque criatura mística lo tiene dentro 00:06:16
pero lo tiene vacío también 00:06:19
y no pasa nada porque lo tenga vacío 00:06:21
porque es abstracta, no pasa nada porque lo tenga vacío 00:06:23
si esto lo quitamos 00:06:26
no puede quedarse así 00:06:28
tiene que darle un cuerpo 00:06:31
al activar poder 00:06:33
claro, aquí el tema es que la criatura 00:06:35
mística no sabe cómo activar su poder todavía. 00:06:37
Ya lo sabrá la heredera. 00:06:40
Entonces, como no sabe, pues aquí la 00:06:41
solución es dejarla como 00:06:43
abstracta. Aquí es la solución. 00:06:45
Uno en un diseño 00:06:49
de estos podría decir, vale, la criatura 00:06:49
mística todavía no sabe cómo activar 00:06:51
su poder. Todavía no sabe cómo hacer este 00:06:53
método. No sabe todavía. 00:06:55
Pero yo tengo que sobrescribirlo. 00:06:57
Bueno, no pasa nada. Lo sobrescribo 00:06:59
porque es que estoy obligada 00:07:01
a sobrescribirlo y lo dejo 00:07:03
así. Ah, activar poder. 00:07:07
vale, uno en este juego de diseño 00:07:12
del que estamos hablando 00:07:26
que no os perdáis 00:07:27
forma parte de la programación 00:07:29
en un porcentaje mucho más elevado que el teclea 00:07:31
pues en este juego de diseño 00:07:33
uno podría 00:07:35
porque me sigue poniendo esto 00:07:36
no lo he escrito bien 00:07:41
ah, claro 00:07:46
que se me había puesto el public, vale 00:07:51
vale, porque yo aquí no pongo 00:07:53
el public porque ya digo que por defecto siempre 00:07:58
lo son, entonces aquí no hace falta en la 00:08:00
interfaz, pero cuando lo sobrescribes 00:08:02
cuando lo sobrescribes 00:08:05
la clase en la que lo sobrescribes 00:08:06
ya no es una interfaz 00:08:08
entonces en esa hay que poner el modificador 00:08:09
que sea, el que tú quieras 00:08:12
y este método es un modificador en public 00:08:13
aunque yo me lo haya ahorrado en interfaz 00:08:16
bueno, pues entonces en este juego de diseño 00:08:18
del que hablamos uno podría decir 00:08:20
vale, como implementas poder místico 00:08:22
yo tengo que sobrescribir sí o sí 00:08:24
pero ojo, estoy al nivel 00:08:26
de la jerarquía alto, criatura mística 00:08:28
Todavía no puedo activar el poder, todavía no puedo, pero me obliga a sobreescribirlo. Bueno, pues lo dejo así en blanco. Uno podría pensar que esta es una solución de diseño y hombre, lo es, pero es mala. ¿Por qué es mala? Porque ahora yo me pongo a hacer criaturas que hereden de esta. El dragón, el elfo, el hipogrifo, el quien sea. Me pongo a hacer criaturas que hereden de esta. 00:08:30
Como esta ya tiene este método hecho, aunque sea vacío, las clases herederas ya heredan esa versión y el compilador no me va a obligar a sobreescribirlo. 00:08:54
No me va a obligar, me va a decir, tú ya estás heredando una versión, quédate con esa o sobreescribe. 00:09:08
Entonces lo normal es que uno sobreescriba, porque cada criatura tenga ya su poder concreto y sobreescriba. 00:09:15
Pero si uno está alelado y se le olvida sobrescribir, deja a una criatura sin poder y la deja con este. Entonces es mucho más peligroso, ¿vale? Es mucho más peligroso porque te arriesgas a que todo lo que herede de aquí, todo lo que herede, a alguno se te olvide y le dejes ahí sin poder. 00:09:20
pues no, entonces no es una buena solución 00:09:38
la mejor solución es 00:09:41
oye, que criatura mística 00:09:43
todavía no está en condiciones 00:09:45
de activar su poder porque no sabe 00:09:46
si es elfo, si es pepito, si es juanito 00:09:48
pues entonces 00:09:50
yo no sobrescribo el método todavía 00:09:52
me quedo con la versión vacía 00:09:54
pero a cambio 00:09:57
digo, pues soy abstracta 00:09:59
y no pasa nada por decir que uno es abstracto 00:10:01
lo único que pasa 00:10:05
por decir que uno es abstracto 00:10:07
¿qué es? ¿qué implicación tiene que esa clase 00:10:08
sea abstracta? respecto a no serla 00:10:11
¿cuál es la única que tiene? 00:10:13
que alguien me diga algo 00:10:17
la única diferencia que hay entre una clase abstracta 00:10:18
y otra, ¿no? ¿cuál es? 00:10:23
afecto práctico 00:10:25
de lo que... 00:10:26
¿puedes llamar método de la clase abstracta? 00:10:28
la única diferencia 00:10:34
que no puedes crear objetos 00:10:35
es la única diferencia 00:10:38
que de una clase abstracta 00:10:41
no se pueden instanciar objetos 00:10:42
yo no puedo hacer un new criatura mística 00:10:44
nunca voy a poder hacer 00:10:47
un new criatura mística 00:10:49
nunca, porque es abstracta 00:10:50
si yo le quito el abstract 00:10:52
entonces 00:10:55
tendré que sobreescribir el método 00:10:57
activar poder 00:10:58
si podré hacer un new criatura mística 00:10:59
claro, la pregunta es 00:11:02
yo necesito que haya criaturas místicas genéricas 00:11:04
necesito que existan 00:11:07
pues no, en mi aplicación no hay criaturas místicas genéricas 00:11:08
o hay o dragones o elfos 00:11:11
o la otra cosa 00:11:13
hay eso 00:11:14
yo nunca voy a tener que hacer un new criatura mística 00:11:15
solamente voy a hacer un new dragón, un new elfo 00:11:18
un new no sé cuántos, unicornio, eso 00:11:21
pues entonces está abstracta 00:11:22
y siendo abstracta 00:11:25
hasta protegemos más la aplicación 00:11:27
porque evitemos que alguien instancie 00:11:29
algo que el mío que va a hacer va a ser molestar 00:11:31
bueno, pues este 00:11:33
diseño es mucho mejor que 00:11:35
las otras alternativas, que digo, que es no ponerla 00:11:37
abstracta, crearlo un método en blanco vacío 00:11:39
por las razones que estoy diciendo 00:11:41
Vale 00:11:43
Bueno, pues entonces 00:11:45
Seguimos 00:11:47
¿Qué más cosas? 00:11:51
¿Qué más cosas tenía la criatura mística? 00:11:54
Implementa el poder místico y patatín 00:12:02
Las clases abstractas 00:12:04
A diferencia de las interfaces 00:12:06
Pueden tener atributos 00:12:07
Lo que les dé la gana 00:12:08
Constructores, lo que quieran 00:12:10
Los constructores diréis 00:12:12
De nuevo, ¿y para qué me valen? 00:12:15
Si no puedes instanciar 00:12:16
valen para ser usados desde las clases herederas 00:12:17
mediante el súper, ¿verdad? 00:12:22
Era para eso, para un niño que valían. 00:12:24
Bueno, pues la criatura mística tiene nombre y edad 00:12:26
y un método abstracto de escribir criatura. 00:12:29
¿Vale? 00:12:33
Entonces, eso es un método abstracto, 00:12:34
con lo cual lo vamos a dejar sin cuerpo. 00:12:37
Lo que decía aquí es que este método está pensado para eso, 00:12:40
pero luego lo tendrán que sobreescribir las clases herederas. 00:12:43
Pues venga, todo el que quiera ser criatura mística 00:12:47
Pues tiene que tener su nombre y su edad 00:12:51
Hemos dicho, ¿no? Tiene que tener su nombre y su edad 00:13:03
Entonces, como hemos elegido que sean privados 00:13:09
Le ponemos Get y Set, si no son privados, pues no hace falta 00:13:14
Pero bueno, como habitualmente trabajamos así 00:13:17
Pues así lo dejamos 00:13:22
vale, y luego hemos dicho que además de todo esto 00:13:25
un método abstracto 00:13:28
un método abstracto, recordad que es un método sin cuerpo 00:13:30
que describe, vale, pues este es el método vacío 00:13:34
vale, y ahora ya tenemos las clases concretas 00:13:55
de las que ya que sí que se pueden crear objetos 00:14:01
que son tres, que cada uno añade una propiedad suya 00:14:03
pues venga, el dragón, el dragón tiene su nombre, su edad 00:14:07
Y aparte añade, pues vamos a ponerle el color 00:14:15
¿Vale? Añade el color 00:14:18
Se le podría hacer un constructor 00:14:25
O trabajar 00:14:27
Lo que haga falta 00:14:29
Entonces 00:14:32
El dragón es una criatura mística 00:14:37
Entonces como es una criatura mística 00:14:40
Pues entonces tiene que heredar 00:14:43
De criatura mística 00:14:44
Porque lo es 00:14:46
Es una relación de herencia 00:14:48
¿Vale? 00:14:50
entonces desde el momento en que 00:14:50
yo digo que es una criatura mística 00:14:53
pues entonces 00:14:55
empiezan los compromisos 00:14:56
empiezan los compromisos que son 00:14:58
¿eres criatura mística? pues lo siento 00:15:01
este método tienes que darle cuerpo 00:15:03
el describir criatura 00:15:05
y no solo eso 00:15:07
como a través de criatura mística 00:15:09
estamos implementando el otro 00:15:11
poder místico, pues también hay que implementar 00:15:13
el otro método 00:15:16
el activar poder, entonces en dragón 00:15:17
hay que implementar los dos 00:15:19
estamos obligados a implementar los dos 00:15:20
el que hereda de criatura mística 00:15:22
pero sin cuerpo 00:15:25
y el que 00:15:26
hereda 00:15:29
de poder místico 00:15:31
también sin cuerpo 00:15:32
está claro, ¿no? 00:15:33
la criatura mística tiene dentro 00:15:37
tiene dentro 00:15:39
heredado 00:15:41
el del poder místico, lo tiene dentro, heredado sin cuerpo 00:15:43
y lo puede tener sin cuerpo porque es abstracta 00:15:46
si no, no podría 00:15:48
Bueno, pues entonces 00:15:49
Vamos a decirle, venga, pues ala 00:15:51
Vamos a implementar los dos 00:15:53
Ala, estos son los dos 00:15:54
Y ahora aquí ya, pues uno pone lo que le dé la gana 00:15:58
Activo 00:16:01
Poder 00:16:11
Dragón 00:16:12
Vale 00:16:13
Activo poder del dragón 00:16:15
Y aquí, pues 00:16:17
Pues muestro la criatura 00:16:21
Lo que sea 00:16:24
Venga, pues nada 00:16:28
Get nombre 00:16:29
Sin espacios 00:16:36
Y sin nada 00:16:39
Get edad 00:16:39
Y get color 00:16:42
Así a lo bestia 00:16:47
Vale, a ver 00:16:48
Y el dragón ya se ha acabado 00:16:51
Y los otros dos pues igual 00:16:54
A ver, aquí 00:16:57
Aquí algunos habéis hecho 00:16:58
Alguna cosa un poco rara 00:17:00
A ver 00:17:01
Cuando habéis activado el poder 00:17:04
imagino que el proceso mental 00:17:06
que habéis seguido es 00:17:10
este método 00:17:11
como yo he hecho un system out solamente 00:17:13
en este caso yo he hecho un system out 00:17:15
println solamente 00:17:18
y no he tirado de las propiedades del dragón 00:17:19
pero podría haberlo hecho 00:17:21
podría haberlo hecho 00:17:22
pero bueno 00:17:23
algunos pues habéis elegido 00:17:26
una implementación de activar poder 00:17:29
que no tira de las propiedades del dragón 00:17:31
muestra un mensaje genérico 00:17:34
muestra un mensaje genérico 00:17:36
entonces en ese caso concreto 00:17:37
que es un caso concreto de todos los posibles 00:17:38
en ese caso concreto 00:17:40
pues yo entiendo que lo que ha pasado 00:17:42
es que lo habéis mirado y habéis dicho 00:17:44
uy, este método que acabo yo de escribir aquí 00:17:46
resulta que no depende 00:17:48
de las propiedades de la clase 00:17:51
eso por definición es un método estático 00:17:52
¿verdad? no depende de las propiedades 00:17:55
entonces según ese proceso mental 00:17:57
decir uy, como no depende de la clase 00:18:00
pues voy a decirlo 00:18:01
avisando con estático 00:18:05
entonces, ¿qué pasa si ponéis aquí el estático? 00:18:06
pues que ya no estáis sobrescribiendo 00:18:09
el método de arriba, estáis haciendo otro 00:18:11
porque el método de poder místico 00:18:13
no es estático, es este 00:18:15
entonces, cuando os ha salido aquí el error 00:18:16
lo que los ofrece 00:18:19
una de las cosas que os ofrece es 00:18:22
pues hace estático este 00:18:27
hace estático 00:18:29
y así los has hecho iguales 00:18:31
los he hecho iguales 00:18:34
entonces uno puede decir, vale, pues lo cambio 00:18:36
y lo hace estático 00:18:38
pero claro, por un lado 00:18:40
esta no es la solución, la solución es 00:18:42
que la criatura dragón 00:18:44
implemente ese método exactamente 00:18:46
que lo implemente, entonces 00:18:48
implementarlo significa conservar la cabecera tal cual 00:18:49
si cambiáis la cabecera 00:18:52
estáis haciendo 00:18:54
otro método, no estáis implementando ese 00:18:56
y este no se puede cambiar 00:18:58
eso por un lado, vale 00:19:00
entonces 00:19:02
Entonces, ¿qué pasa? Ahora ya parte. Si uno, ahora ya, lo siguiente que digo es, ¿en una interfaz no puede haber métodos estáticos? Sí, claro que puede haber, como a mí se me ha puesto rojo, ¿no puede haber métodos estáticos? Sí puede haber métodos estáticos en una interfaz, puede haberlos. 00:19:03
pero si los hay 00:19:22
no se pueden dejar en blanco 00:19:23
¿vale? 00:19:26
antes no se podía, pero a partir de cierta versión 00:19:28
se permitió que las interfaces incorporaran 00:19:31
métodos astáticos 00:19:32
pero que se les pusiera cuerpo 00:19:33
entonces esos métodos eran pues para hacer 00:19:35
funcionalidades igual como las variables constantes 00:19:38
que se pueden poner aquí 00:19:40
pues hay una variable constante que va a usar mucha gente 00:19:41
pues la pongo aquí en la interfaz 00:19:44
como static final y le llamo 00:19:46
con el nombre de la clase, fodermístico.patatino 00:19:48
patapín, vale, pues podría 00:19:50
ocurrir, hay alguna función 00:19:53
concreta, una función que no dependa 00:19:55
de nada, una función 00:19:57
matemática, cualquier cosa 00:19:59
que vaya a usar mucha gente 00:20:00
vale, pues se puede meter 00:20:02
en una interfaz, en un método estático 00:20:05
y los métodos estáticos 00:20:07
de las interfaces, obligatoriamente 00:20:09
tienen que tener un cuerpo 00:20:11
con lo cual este errorcito 00:20:13
rojo, solo se me va a quitar 00:20:15
si hago esto 00:20:17
pero claro, esta es una cadena de cosas 00:20:19
que habéis hecho 00:20:21
que son cambios que pierden el sentido 00:20:22
aquí, o sea, esto no es un método estático 00:20:25
con un cuerpo vacío 00:20:27
esto es un método de activar poder 00:20:28
que 00:20:30
la idea es que lo sobrescriba cada una 00:20:32
de las herederas, y cada una como le dé la gana 00:20:35
cada una como le dé la gana 00:20:37
y esa sobrescritura 00:20:39
en algunos casos puede, que no depende 00:20:40
de propiedades de la clase 00:20:43
pero en otros casos puede que sí 00:20:44
Entonces no tengo que dar por sentado 00:20:46
Que esto va a ser siempre estático 00:20:48
No tengo que darlo por sentado 00:20:49
¿Vale? 00:20:51
Bueno, pues entonces 00:20:54
Esto viene pues de esta cadena 00:20:55
De haber puesto esto aquí 00:20:58
Esto no lo puedo poner 00:20:59
Estoy implementando un método que no tiene el static 00:21:01
Pues no puedo poner el static 00:21:03
Porque entonces lo tengo que cambiar aquí 00:21:04
Y si lo cambio ya ese método ha desaparecido 00:21:07
Y esto aparte tiene un peligro 00:21:09
Si lo cambiamos y le ponemos cuerpo 00:21:13
efectivamente ya las clases que implementan 00:21:17
ya no están obligadas a sobre escribirlo 00:21:20
entonces la gran ventaja 00:21:22
de las interfaces que es 00:21:24
forzar, forzar 00:21:25
a las clases que implementan, forzar a implementar 00:21:27
un método, oye tú implementa esto 00:21:30
porque lo va a necesitar la aplicación, implementalo 00:21:31
pues ese forzado 00:21:34
lo he quitado, desde el momento en que 00:21:35
doy un cuerpo a un método, ya no forza a nadie 00:21:38
iré a mi vacío, se acabó 00:21:40
¿vale? 00:21:41
bueno entonces aprovechamos 00:21:45
aquí porque hay cosas de interfaces que no hemos contado 00:21:46
es que no da tiempo a todo, aprovechamos aquí 00:21:48
para decir que 00:21:50
las interfaces pueden tener métodos estáticos 00:21:51
pueden tenerlos, no hay problema 00:21:54
en ese caso hay que darles un contenido 00:21:55
no los puedo dejar vacíos 00:21:57
y el uso de ponernos 00:22:00
métodos estáticos ahí es meter ahí unas funcionalidades 00:22:02
pues hacer cosas concretas 00:22:04
útiles, unas utilidades 00:22:06
que a lo mejor va a usar la aplicación 00:22:07
entonces yo las meto en una interfaz 00:22:10
y las puedo llamar con el nombre de interfaz 00:22:11
podermístico.activarpoder y ya está 00:22:13
no las llamo asociadas a ningún objeto 00:22:15
entonces bueno 00:22:17
para eso pueden ser útiles esos métodos 00:22:19
para meter aquí unas funcionalidades 00:22:21
concretas para poder llamarlas desde cualquier 00:22:23
sitio con el nombre de la interfaz 00:22:25
igual que las public static 00:22:27
final variables 00:22:29
que ponemos aquí, pues constantes 00:22:31
que yo pueda a lo mejor llamar desde 00:22:33
cualquier sitio porque son útiles 00:22:35
bueno pues entonces 00:22:37
si desactivamos 00:22:40
este static de aquí pues entonces 00:22:41
esto ya 00:22:43
Lo puedo quitar 00:22:44
Y esto ya fuera 00:22:46
Ya se queda esto así 00:22:50
Bueno, pues el dragón y el resto 00:22:54
Serán parecidos, entonces voy a hacer un copia y pega 00:22:57
Y ya está 00:22:59
Dragón, este va a ser el elfo 00:23:00
Y este va a ser este 00:23:09
Entonces 00:23:18
El elfo, pues, ala 00:23:19
El color 00:23:23
No le cambio nada 00:23:25
Ya está 00:23:27
Este es el elfo y el unicornio 00:23:28
Pues lo mismo 00:23:31
Bueno 00:23:31
Cambio el mensajito y ya está 00:23:34
¡Hala! Pues ya están las 00:23:37
Ups 00:23:54
Ya están las tres clases 00:23:55
Estas de aquí 00:23:58
¿Vale? 00:24:01
Y ahora ya un array con cuatro 00:24:09
Mostrar descripción de todas 00:24:11
Y solo de... Pues ya está 00:24:14
Ahora ya hacemos un main 00:24:16
Bueno, pues array de cuatro de ellas 00:24:18
Como todas heredan 00:24:34
De criatura mística 00:24:36
Pues la raíz será de esto, obviamente 00:24:38
Una raíz de esto 00:24:40
Y ahí puede caer cualquier cosa 00:24:44
Que lo herede, cualquiera 00:24:46
Como queremos solo cuatro 00:24:47
¿Vale? 00:24:53
Uy, ala 00:24:56
Cuatro queremos, hemos dicho pues 00:25:21
Dos dragones 00:25:24
Al menos uno de cada 00:25:25
¿No? Decía 00:25:27
Al menos uno de cada 00:25:28
Pues nada, en criaturas cero 00:25:32
Pues podemos meter 00:25:42
Cualquiera de las tres 00:25:43
Ah, ya está el array 00:25:45
Y ahora, de nuevo, hay que recorrer el array 00:26:25
Hay que recorrer el array para hacer lo siguiente 00:26:30
¿Qué hay que hacer? 00:26:33
Describir cualquiera de ellas 00:26:35
Bueno, no le he puesto valores, los he dejado por defecto, por rapidez 00:26:36
Pues nada, hombre, habla que hay que recorrer el array 00:26:39
Entonces cada uno ya lo recorre como quiere 00:26:42
Como en este caso es para mostrar solo 00:26:44
Pues si uno es vago 00:26:45
Lo puede recorrer así 00:26:47
para cada criatura mística 00:26:48
que esté en mi array de criaturas 00:26:52
¿qué hago yo con cada una de ellas? 00:26:54
pues con todas ellas 00:26:58
voy a describirlo 00:26:59
entonces afortunadamente 00:27:01
como describir criatura está aquí 00:27:03
está aquí 00:27:05
aunque esté vacío, está ahí 00:27:07
lo puedo llamar 00:27:09
para el array 00:27:12
el array está declarado como criatura mística 00:27:13
entonces puedo llamar a cualquier método de criatura mística 00:27:16
lo puedo llamar desde ahí 00:27:18
vale, que ocurre 00:27:20
que luego ya a la hora de ejecutarse 00:27:22
el método que se va a ejecutar 00:27:24
es la versión que esté en cada subclase 00:27:25
esa es la versión 00:27:29
que se va a ejecutar, la de la subclase 00:27:30
pero es necesario 00:27:32
que esté aquí, ahí tiene que estar 00:27:34
sí o sí, porque si no 00:27:36
no puedo llamarlo 00:27:38
para una variable que está declarada de esta manera 00:27:39
no puedo 00:27:42
vale, y que otra cosa tenemos que hacer con 00:27:43
los bichos estos 00:27:46
Pues solo de algunos de ellos 00:27:48
Solo de algunos de ellos 00:27:52
Activar el poder 00:27:53
Solo de algunos de ellos 00:27:55
¿De cuáles? 00:27:56
De los que sean elfos 00:27:57
¿Cómo podemos saber si uno es elfo o no es elfo? 00:27:59
Pues solo tenemos una manera 00:28:02
Si esta criatura 00:28:03
Se instanció 00:28:05
Como elfo 00:28:07
Solo en ese caso 00:28:10
Pues ya está 00:28:11
Y no necesito hacer un casting 00:28:15
A elfo ni nada 00:28:22
Porque activar poder 00:28:23
activar poder 00:28:24
está en criatura mística 00:28:26
a través de poder místico 00:28:28
está ahí, no necesito hacer ningún casting ni nada 00:28:30
vale, entonces si yo ejecuto eso 00:28:32
bueno, me van a salir los valores por defecto 00:28:37
que son null para los nombres y todo eso 00:28:39
pero bueno, es lo de menos 00:28:41
esta es 00:28:43
la descripción del dragón 00:28:55
esta es la descripción del elfo 00:28:57
este es el poder del elfo 00:28:59
la descripción del unicornio 00:29:00
y la descripción del dragón, otra vez 00:29:03
Como no le he puesto valores en las propiedades 00:29:05
Pues son valores por defecto, pero 00:29:08
Nos da igual 00:29:09
Vale, pues ya está 00:29:10
Pues este 00:29:13
Si no me he equivocado 00:29:15
Es esto de aquí 00:29:16
¿Vale? Bueno 00:29:18
¿Ninguna pregunta de este ejercicio? 00:29:26
Subido por:
Raquel G.
Licencia:
Todos los derechos reservados
Visualizaciones:
10
Fecha:
3 de abril de 2024 - 18:40
Visibilidad:
Público
Centro:
IES ROSA CHACEL
Duración:
29′ 32″
Relación de aspecto:
1.78:1
Resolución:
1920x1080 píxeles
Tamaño:
136.41 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid