Saltar navegación

20250121 Herencia_ClasesAbstractas_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 21 de enero de 2025 por Raquel G.

8 visualizaciones

Descargar la transcripción

vale pues reconectemos 00:00:00
en que estábamos 00:00:03
que nos habíamos dado cuenta de 00:00:05
que nunca íbamos a instanciar 00:00:08
figuras geométricas 00:00:10
pero el método perímetro tiene que estar 00:00:11
el método perímetro 00:00:14
tiene que estar aquí 00:00:16
porque como el método perímetro 00:00:17
no esté aquí 00:00:20
el compilador no me deja seguir 00:00:21
vale 00:00:24
vale 00:00:24
el método perímetro tiene que estar 00:00:26
Pero como no tiene sentido implementar ahí nada, abstracto. 00:00:29
Luego la clase se vuelve abstracta. 00:00:34
¿Es un problema? 00:00:36
Es un problema si quisiéramos instanciar figuras geométricas en mi aplicación. 00:00:38
¿Vamos a querer instanciar figuras geométricas en la aplicación? 00:00:43
No, pues entonces no es un problema. 00:00:46
Luego, figura geométrica nos sirve como una especie de plantilla, 00:00:49
porque no se van a crear objetos de ella. 00:00:53
de plantilla que nos dice 00:00:55
oye, las figuras geométricas van a tener 00:00:58
nombre, número de lados 00:01:00
estos métodos, además nos ofrece 00:01:01
constructores como este 00:01:04
y diríais, ¿qué sentido tiene un constructor 00:01:05
en una clase de la que nunca se van a instanciar 00:01:08
objetos? 00:01:10
Pues el único sentido que tiene 00:01:11
es facilitarnos la construcción 00:01:13
de los constructores de las 00:01:16
subclases pudiendo 00:01:18
llamar yo al super 00:01:20
porque con el super llama al constructor 00:01:21
de la superclase 00:01:24
luego ese constructor no la voy a usar 00:01:25
para instanciar objetos 00:01:27
figura geométrica 00:01:29
pero lo estoy llamando desde aquí abajo 00:01:30
cuando instanciar haya triángulos 00:01:32
luego me está ayudando para construir 00:01:34
código más fácil 00:01:37
¿vale? y sobre todo he ganado 00:01:38
lo siguiente 00:01:41
esto sí que es lo bueno y lo que he ganado 00:01:41
no sólo que ya 00:01:45
prohíbo que alguien por error 00:01:47
instancie una figura geométrica 00:01:49
ya por error 00:01:51
nadie lo va a poder instanciar en la aplicación 00:01:52
Porque es abstracta, sino lo siguiente 00:01:54
Ah, la aplicación se amplía 00:01:56
Y ahora ya resulta que 00:01:58
Ah, vamos a empezar a trabajar con pentágonos 00:02:00
Venga, pues vamos a meter un pentágono 00:02:02
Ala 00:02:04
Vamos a meter un pentágono 00:02:13
Como un pentágono 00:02:17
Es una figura geométrica 00:02:18
Pues lo haríamos heredar de figura geométrica 00:02:20
¿Vale? 00:02:23
Vamos a hacerle el constructor 00:02:26
Antes que nada 00:02:27
Para que 00:02:28
el error del constructor no nos lo dé 00:02:30
venga, tiene el constructor 00:02:36
como no le he puesto propiedades adicionales 00:02:39
el constructor lo único que haría 00:02:42
sería llamarle la superclase y ya está 00:02:44
yo aquí le pondría 00:02:46
las propiedades de pentágono que serían el lado 00:02:47
o los cinco lados 00:02:50
si es un pentágono irregular 00:02:52
yo qué sé, aunque el pentágono 00:02:53
siempre es un polígono regular, creo 00:02:56
por definir 00:02:58
porque si no sería un polígono de cinco lados 00:02:58
Sí, pero que tú puedes construir un pentágono 00:03:02
Irregular, ¿verdad? 00:03:06
O sea, físicamente puedes, igual que un triángulo 00:03:08
Puedes construir un triángulo irregular 00:03:10
Pero creo que pentágono se refiere a que tengan los mismos lados 00:03:11
Si no, diríamos un polígono 00:03:14
¿No? Me imagino 00:03:16
Polígono de cinco lados, diríamos 00:03:17
Bueno, da igual, a lo que vamos 00:03:20
Y esto es lo que ya he ganado 00:03:22
Que esto sí que es lo mejor del mundo 00:03:24
Yo he hecho la clase pentágono 00:03:25
Porque estoy ampliando mi aplicación 00:03:28
Y le digo 00:03:30
cómo va a ser figura geométrica 00:03:32
y se me pone en rojo 00:03:33
y que me dice el compilador 00:03:36
me dice 00:03:38
haz el favor 00:03:39
si tú que te has incorporado 00:03:40
aquí a la pandilla de figuras 00:03:43
si te has incorporado a la pandilla de figuras 00:03:45
quieres ser figura geométrica 00:03:47
lo siento mucho 00:03:49
pero tienes que concretar 00:03:51
lo que es abstracto 00:03:54
todo lo que sea abstracto lo tienes que concretar 00:03:55
antes no 00:03:58
cuando yo había optado por la otra opción 00:04:00
y yo había 00:04:03
dicho, venga, no, perímetro no tengo 00:04:04
ni idea, pero me obligan a hacerlo para que el 00:04:06
compilador se calle, pues hago cualquier cosa 00:04:08
y ya está, y sigo, y no pasa nada porque lo voy a 00:04:10
sobrescribir, pues en este 00:04:12
caso, cuando yo ampliaba 00:04:14
toda mi pandilla de figuras 00:04:17
con el pentágono, hacía 00:04:18
stents y no pasaba nada 00:04:20
¿qué ocurre? que a mí se me olvida 00:04:22
hacer perímetro y cuando luego 00:04:24
alguien desde otra clase, otro 00:04:26
desarrollador, llama 00:04:28
al objeto pentágono 00:04:29
punto perímetro, como a mí se me ha olvidado hacerlo 00:04:31
no pasa nada, toda la aplicación funciona 00:04:33
y todo estupendo, pero va a llamar a este 00:04:35
retun9, y estupendo 00:04:37
el usuario se cree que será 00:04:39
ah, es que será un pentágono 00:04:41
de perímetro 9, pues no es un pentágono de 00:04:43
perímetro 9, lo que pasa es que el que hizo 00:04:45
la clase pentágono no lo sobrescribió 00:04:47
y está estirando el de arriba 00:04:50
bueno, pues con la otra 00:04:51
opción de diseño, al 00:04:53
hacerlo abstracto, decimos 00:04:57
ojo, todo el 00:04:59
que herede de mí, va a tener que 00:05:01
obligatoriamente implementar 00:05:03
esto, porque yo le he dejado 00:05:05
a medias 00:05:07
con el punto y con. 00:05:09
Entonces, tú, pentágono, 00:05:12
que te incorporas a la pandilla de figuras 00:05:14
geométricas y quieres 00:05:15
ser figura geométrica, pues 00:05:17
lo siento, estás obligado. Entonces, ya 00:05:19
si es que yo no era consciente, 00:05:21
el compilador me lo 00:05:24
dice, me dice, ah, espérate, yo estoy hablando 00:05:25
de figura geométrica. Figura geométrica la ha hecho 00:05:27
otro desarrollador que tiene que ver conmigo. 00:05:29
dice, ojo, si quiero entrar a formar 00:05:31
parte de la aplicación 00:05:33
tengo que dar una versión de perímetro 00:05:34
¿vale? pues como estoy 00:05:37
obligado es que no puedo seguir 00:05:39
no puedo seguir hasta que no la sobrescriba 00:05:41
y yo aquí ya la sobrescribo 00:05:43
y ya hago lo que sea, bueno, si el pentágono 00:05:45
tiene su propiedad al lado 00:05:47
pues aquí sería retunlado por 5 00:05:48
y ya está, el override 00:05:57
este lo podemos quitar, recordad que significa 00:06:06
que este método sobrescribe una de las superclases 00:06:07
pero 00:06:10
vale, entonces 00:06:10
ha sido obligatorio 00:06:13
ponerlo, no he podido seguir 00:06:15
porque tenía errores de compilación, si no lo pongo 00:06:16
y esa es la principal ventaja de las clases 00:06:18
abstractas, primero 00:06:22
dar una estructura jerárquica a mis 00:06:24
aplicaciones, unificar todo 00:06:26
lo que comparte 00:06:28
esencia, todo lo que comparte 00:06:30
lo hago heredar de lo mismo y así ya comparten 00:06:33
información común, y eso 00:06:35
permite que puedan entrar en referencias comunes 00:06:36
en arrays comunes, en todo común 00:06:39
porque comparten esa esencia 00:06:40
y luego aparte, si son abstractas 00:06:41
hacen una especie de compromiso 00:06:45
y decir, vale, muy bien 00:06:48
tú vas a heredar de aquí, vas a entrar a formar parte de esto 00:06:51
pues te obligo a que lo hagas 00:06:54
con todas las consecuencias, que es 00:06:57
dándole un cuerpo a perímetro y a todo lo que haya abstracto 00:07:00
que podría haber aquí más métodos abstractos 00:07:03
aquí tendría sentido que hubiera además otro método abstracto 00:07:05
para el área, y lo mismo 00:07:09
todo el que quiera ser figura geométrica 00:07:14
el que hace la aplicación figura geométrica 00:07:18
dice, vale, yo hago la superclase 00:07:21
pero todo el que quiera ser figura geométrica 00:07:22
lo siento, todo el que quiera 00:07:25
tiene que hacer perímetro y área 00:07:27
y ahora ya se empiezan a incorporar los demás 00:07:29
y los demás se van incorporando 00:07:32
y lo primero que hacen según se van incorporando 00:07:34
es, ojo, que me están diciendo 00:07:36
que tengo que incorporar área 00:07:38
pues incorporo área 00:07:39
como veis, triángulo, cuadrado, círculo 00:07:41
se me ha puesto de golpe todo rojo 00:07:45
porque no he sobrescrito en ellas el método ARIA 00:07:46
que acabo de poner aquí 00:07:51
luego la clase abstracta fuerza 00:07:52
fuerza una obligación de que todas las herederas 00:07:55
tienen que darle cuerpo a eso de ahí 00:07:59
y todo esto de nuevo son herramientas 00:08:01
para que los diseños tengan muchísimo más sentido 00:08:05
tengan más significado 00:08:09
se facilite el desarrollo de otras clases 00:08:10
se eviten errores por efectos secundarios 00:08:14
de cosas que uno no se ha dado cuenta 00:08:17
se amplíen las cosas de manera que tenga mucho más sentido 00:08:18
son herramientas que hay que usar correctamente para eso 00:08:21
porque una aplicación se puede hacer de mil formas distintas 00:08:26
buenas y malas 00:08:29
y a lo mejor todas te funcionan exactamente igual 00:08:31
todas te funcionan igual 00:08:34
pero las buenas serán las que estén bien diseñadas 00:08:36
utilizando herencia 00:08:39
y estas cosas que estamos viendo 00:08:40
y las malas, las que tengan mil clases 00:08:42
cada una tirando por libre 00:08:45
en las buenas 00:08:47
podremos incorporar 00:08:50
modificaciones de forma muy sencilla 00:08:52
y muy fácil, en las malas cada cambio 00:08:54
ya será una locura y ya lo estropearé 00:08:55
¿vale? 00:08:57
bueno, pongo aquí este método área comentado 00:09:01
para que no se me rompan todas las clases de abajo 00:09:03
porque me obliga 00:09:05
a sobre escribirlo y ya está 00:09:07
¿vale? 00:09:08
y ahora ya 00:09:12
podríamos seguir y vais a seguir 00:09:14
vale, pues vamos a hacer 00:09:18
ya que tenemos las tres clases 00:09:20
triángulo, cuadrado, círculo 00:09:21
bueno, nos hemos inventado a nosotros 00:09:23
pues vamos a hacer una clase 00:09:26
manejador de figuras 00:09:28
que esta ya es 00:09:29
una clase que representa 00:09:32
un objeto que es el que 00:09:34
va a hacer cosas con las figuras 00:09:36
su propiedad va a ser 00:09:38
una raíz de las figuras que tenga 00:09:40
bueno, pues este es el 00:09:42
manejador de cuadrados 00:09:51
va a heredar de esta 00:09:53
y un main con estas funcionalidades 00:09:54
de aquí 00:09:59
vale, pues este es el trabajo que os queda por hacer a vosotros 00:10:00
junto con el main este de aquí 00:10:03
todo lo atrasado que tengáis 00:10:05
estudiaroslo todo 00:10:07
ver los vídeos 00:10:09
etcétera, etcétera 00:10:10
junto con tomar la decisión 00:10:12
de si queréis seguir 00:10:15
en esto, que espero que sí 00:10:17
Que espero que sí 00:10:19
¿Vale? 00:10:21
Porque si salís sabiendo 00:10:23
Programar y sabiendo Java 00:10:25
Sabéis muchísimo 00:10:27
Sabéis un montón 00:10:29
¿Vale? 00:10:31
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:
8
Fecha:
21 de enero de 2025 - 17:42
Visibilidad:
Clave
Centro:
IES ROSA CHACEL
Duración:
10′ 34″
Relación de aspecto:
1.78:1
Resolución:
1920x1080 píxeles
Tamaño:
48.79 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid