Repaso herencia y Ejemplo Clase Abstracta - 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:
Vale, voy a grabar este ejercicio, ¿vale?
00:00:00
Mientras lo hacemos, porque por petición vuestra, ¿vale?
00:00:03
Hasta si es un ejercicio, lo grabamos, ¿vale?
00:00:06
Luego si queréis lo miráis, si no, no.
00:00:08
Vale, entonces, vosotros ayer o para hoy
00:00:12
deberíais haber intentado razonar un poco sobre empleado.
00:00:14
Era muy sencillo, no tenía nada especial, ¿vale?
00:00:18
En vez de corregir esto, vamos a hacer uno nuevo, ¿vale?
00:00:22
Y luego así pillamos esto como base para entender también otras cosas, ¿vale?
00:00:25
Entonces, creamos una clase que se llama figura geométrica, ¿vale?
00:00:33
Esto representa una figura geométrica general, ¿sí?
00:00:38
Una cosa bastante general, bastante genérica, ¿vale?
00:00:42
Los atributos de esta figura son un nombre y cuántos lados tiene, ¿sí?
00:00:47
Utilizar constructores para iniciar.
00:00:54
Utilizar estos atributos, ¿sí?
00:00:55
Entonces, empezamos por ahí.
00:00:58
Me creo una nueva clase que sea figura geométrica.
00:01:02
¿Sí? ¿Ven ahí? Sí.
00:01:18
Figura geométrica tiene string nombre.
00:01:21
Tiene int número lados.
00:01:25
Tiene un constructor.
00:01:32
Que pillará un nombre y un número lados.
00:01:40
Y no dice punto nombre.
00:01:47
Es igual al nombre.
00:01:55
Y es punto número lados.
00:02:02
Es igual al número lados.
00:02:06
Y esta es la base.
00:02:12
No tiene mucho más.
00:02:14
¿Sí?
00:02:16
Entonces, crear una clase triángulo que herede de la clase figura geométrica.
00:02:19
¿Vale?
00:02:25
Y añada los atributos lado uno, lado dos, lado tres.
00:02:27
Utilizar constructores para inicializar los atributos heredados y el nuevo atributo.
00:02:31
¿Vale?
00:02:38
Entonces, crea una nueva clase.
00:02:38
Esta clase es la clase triángulo.
00:02:44
¿Vale?
00:02:48
Y ahora hago que este triángulo extenda figura.
00:02:49
Figura.
00:02:53
Geométrica.
00:02:55
Entonces, los nuevos atributos que tiene son int lado uno, int lado dos, int lado tres.
00:03:04
Fijaos que me da un error.
00:03:18
¿Qué error será esto?
00:03:21
Constructor.
00:03:24
¿Vale?
00:03:25
Porque este constructor por defecto utiliza el constructor por defecto.
00:03:25
El constructor por defecto usa super por defecto como primera línea.
00:03:30
Y como me voy a figura geométrica y aquí no hay un constructor sin parámetros, se enfada.
00:03:38
¿Vale?
00:03:45
O sea, esto se cambiará en el momento en que hago public triángulo.
00:03:46
Triángulo.
00:03:51
String nombre.
00:03:52
Int número lados.
00:03:57
Int lado uno.
00:04:03
Int lado dos.
00:04:05
Int lado tres.
00:04:12
Y aquí le digo super.
00:04:14
De nombre.
00:04:22
Número lados.
00:04:24
O sea, uso el constructor de mi superclase para crearme un objeto de tipo figura geométrica usando el constructor apropiado.
00:04:27
Esto me crea la parte de este objeto que es extendida, que es heredada desde figura geométrica.
00:04:37
Y a partir de allí voy construyendo, voy implementando, voy inicializando los...
00:04:44
...los atributos que son propios de esta clase.
00:04:51
Entonces, dis.lado1 es igual a L1.
00:04:56
Dis.lado2 es igual a L2.
00:05:03
Dis.lado3 es igual a L3.
00:05:07
¿Cómo?
00:05:10
¿Cómo?
00:05:15
Dis.lado2 es igual a L4.
00:05:21
Dis.lado2 es igual a L5.
00:05:23
¿Cómo?
00:05:24
¿Cómo?
00:05:25
Dis.lado3 es igual a L6.
00:05:25
Dis.lado4 es igual a L9.
00:05:26
Dis.lado5 es igual a L10.
00:05:27
Dis.lado8 es igual a L10.
00:05:28
Dis.lado9 es igual a L11.
00:05:28
Dis.lado9 es igual a L12.
00:05:30
Sí.
00:05:30
Así, casi mejor, porque sí he habido de hacer un triángulo del ciclo de lados.
00:05:30
¿Sí?
00:05:37
Como el triángulo tendrá siempre tres lados, pues entonces lo que voy a hacer es efectivamente no pedir como parte del constructor cuántos lados tienes.
00:05:37
Ya lo sé.
00:05:50
¿Vale? Ese es un atributo que tengo que rellenar
00:05:50
Porque alguien lo tiene, pero sé siempre que dentro de un triángulo
00:05:55
Este será el valor de 3, ¿correcto?
00:05:58
¿Sí?
00:06:01
Por ahora me pedía esto, ¿vale?
00:06:09
Antes de seguir adelante
00:06:13
Ah, no, lo hace por aquí
00:06:15
Ya que estamos
00:06:17
Pongamos un main para probar estas cosas, ¿vale?
00:06:21
Para hacer public static void main
00:06:25
Eso no será el main de mi aplicación, ¿vale?
00:06:30
Es solo un main rápido para ver qué puedo hacer con estas dos cosas
00:06:40
¿Qué puedo hacer con estas dos cosas?
00:06:44
Puedo crear una función
00:06:46
Una figura geométrica
00:06:47
Ok, es igual a new figura geométrica
00:06:48
De, no sé
00:06:59
Pentágono
00:07:04
Coma 5
00:07:07
¿Vale?
00:07:10
Puedo crear un triángulo
00:07:14
Triángulo
00:07:17
Que es igual a new
00:07:18
Triángulo
00:07:26
De
00:07:28
Triuno
00:07:31
Coma
00:07:33
3, 4, 5
00:07:36
¿Sí?
00:07:39
Y puedo crear una figura geométrica
00:07:43
Que sea un triángulo
00:07:47
¿Sí?
00:07:53
¿Sí?
00:08:10
Esta es una de las propiedades de la herencia, ¿vale?
00:08:13
Un triángulo es una figura geométrica
00:08:16
Una figura geométrica
00:08:17
Entonces yo puedo
00:08:18
Ahora
00:08:19
Esta cosa de aquí
00:08:21
No es exactamente igual a crear un triángulo
00:08:25
¿Vale?
00:08:30
Hagamos dos ejemplos
00:08:32
Por ejemplo, si en figura geométrica pongo
00:08:35
Public
00:08:38
Void
00:08:39
Describir
00:08:42
¿Vale?
00:08:45
Y aquí pongo si eso
00:08:47
Soy una figura
00:08:50
De
00:08:53
Número lados
00:08:54
Lados
00:08:59
Dos puntos
00:09:04
Más nombre
00:09:07
¿Vale?
00:09:09
Y pongamos otra cosa que sea
00:09:12
Public
00:09:17
Void
00:09:20
Como me llamo
00:09:22
Bueno, no me hace falta
00:09:25
No me hace falta
00:09:27
Bueno, a ver
00:09:27
Public
00:09:31
Void
00:09:33
Como me llamo
00:09:34
Mi nombre
00:09:37
¿Vale?
00:09:43
Que lo que hace es
00:09:46
Si yo soy
00:09:47
Más nombre
00:09:50
¿Vale?
00:09:53
Dos métodos
00:09:54
Uno es describir
00:09:55
Y uno es mi nombre
00:09:56
¿Sí?
00:09:57
En el triángulo
00:10:00
Pongo
00:10:02
Public
00:10:04
Void
00:10:07
Describir
00:10:07
Que dice algo como
00:10:09
Super
00:10:14
Super
00:10:15
Super
00:10:16
Super punto de escribir
00:10:17
Y luego dice
00:10:20
Fiso
00:10:26
Mis
00:10:28
Lados son
00:10:36
Más L1
00:10:38
Más L1
00:10:42
Más L1
00:10:42
Más L1
00:10:42
Más L1
00:10:42
Más L1
00:10:42
Más L1
00:10:42
Más L1
00:10:43
Más L2
00:10:46
Más lado
00:10:49
Más
00:10:50
Lado 3
00:10:56
¿Vale?
00:11:00
Son métodos sencillos
00:11:01
Y aquí pongo
00:11:03
Public
00:11:06
Void
00:11:07
Public
00:11:10
Void
00:11:12
Public
00:11:14
Void
00:11:16
Esto era el primer para esta hoja
00:11:22
¿Vale?
00:11:29
Lolay
00:11:33
Poca
00:11:37
Perfect
00:11:40
Itu
00:11:45
He creado cuatro métodos. Si os fijáis hay una diferencia, ¿vale? Describir es un método que es sobrescrito en triángulo. O sea, el mismo método con la misma firma tanto en figura geométrica como triángulo.
00:11:46
Eso quiere decir que el método se ha sobrescrito. Mientras que luego hay un método que está solo en figura geométrica y un método que está solo en triángulo. ¿Vale? ¿Para qué me sirve esto?
00:12:06
Yo he creado aquí tres cosas. Primero es una figura geométrica. Si yo pregunto fg. aquí me aparece lo que puedo hacer con figura geométrica.
00:12:20
Y si os fijáis yo puedo...
00:12:33
Describir y puedo llamar mi nombre. Porque soy un figura geométrica.
00:12:36
¿Sí?
00:12:41
fg.mi nombre.
00:12:47
Piso.
00:12:55
Figura geométrica.
00:12:59
¿Sí?
00:13:03
¿Vale? ¿Qué puedo hacer con un triángulo?
00:13:06
Triángulo.
00:13:11
Vamos a verlo. Si yo ahora hago t.
00:13:14
Me dice que puedo hacer.
00:13:17
Si os fijáis puedo llamar nombre.
00:13:20
Perdón, puedo llamar describir.
00:13:22
Puedo llamar el método triángulo.
00:13:25
Y también puedo llamar mi nombre.
00:13:28
¿Vale?
00:13:30
¿Se aclaró eso?
00:13:33
O sea, misa.
00:13:35
Tengo que escribir.
00:13:36
T.mi nombre.
00:13:40
T.metodo.triángulo.
00:13:43
Porque al ser triángulo tengo los míos.
00:13:49
Que son describir y metriángulo.
00:13:52
Y tengo también lo que he heredado de mi padre.
00:13:56
¿Sí?
00:13:59
Duda.
00:14:01
¿De quién es este describir?
00:14:03
De la clase.
00:14:06
Triángulo.
00:14:11
Y este describir aquí.
00:14:14
Figura geométrica.
00:14:18
Y hasta aquí.
00:14:23
Más o menos.
00:14:25
La tercera cosa que tenemos que ver es.
00:14:26
Triángulo.
00:14:34
Triángulo en variable figura geométrica.
00:14:35
Es decir, esta cosa de aquí.
00:14:45
He creado un triángulo.
00:14:48
Pero lo he metido dentro de una referencia figura geométrica.
00:14:50
¿Vale?
00:14:54
¿Qué me espero aquí?
00:14:55
Está en la descripción.
00:14:57
Se llama esto.
00:15:01
Fg2.
00:15:03
Fg2.descripción está así.
00:15:04
Describir.
00:15:08
Vale.
00:15:09
Sí.
00:15:10
Puedo hacer mi nombre.
00:15:11
Sí.
00:15:16
Puedo hacer metriángulo.
00:15:17
Triángulo.
00:15:20
Triángulo.
00:15:20
Ahí.
00:15:26
Oye, este es un triángulo.
00:15:34
Entonces no entiendo.
00:15:42
¿Cómo es posible que si esta es una instancia de triángulo no pueda llamar métodos de triángulo?
00:15:44
Porque al haberlo puesto dentro de una variable de tipo figura geométrica.
00:15:49
Pues los métodos y los atributos que puedo llamar y que puedo utilizar.
00:15:58
Son los definidos.
00:16:03
Son los atributos de figura geométrica.
00:16:03
Entonces aquí.
00:16:05
No puedo.
00:16:09
Perdón que este es Fg2.
00:16:11
No puedo.
00:16:14
Usar Fg2.metriángulo.
00:16:17
¿Sí?
00:16:24
Porque Fg2 en realidad es una figura geométrica.
00:16:26
Y razonando de esta forma.
00:16:30
Entonces.
00:16:33
Cuando yo estoy llamando.
00:16:33
Este describir.
00:16:35
¿Qué estoy llamando?
00:16:36
Hola.
00:16:41
No.
00:16:47
Atriángulo.
00:16:48
¿Sí?
00:16:51
Porque la lógica.
00:16:52
Por lo que hemos dicho.
00:16:54
Si no lo estás pillando.
00:16:55
Si estás tratando como una figura geométrica.
00:16:57
Pues deberías utilizar la figura geométrica.
00:16:58
Pero aquí.
00:17:01
y entra y subentra como funciona la herencia dentro de Java, ¿vale?
00:17:02
Y a la hora de llamar el método sobrescrito, porque este es un método sobrescrito,
00:17:08
pues él se dará cuenta que lo está llamando no sobre una instancia,
00:17:14
sobre un objeto de tipo figura geométrica, sino el objeto que está dentro es en realidad de tipo triángulo.
00:17:19
Entonces, de forma automática, él va a utilizar el método más específico para esta instancia.
00:17:25
Entonces, en este caso, estaría utilizando el triángulo.
00:17:35
Yo no veo los métodos propios de triángulo porque mi referencia no me lo permite,
00:17:39
pero aquellos métodos que existen en el padre y que han sido sobrescritos en el hijo,
00:17:47
o veracruzados,
00:17:55
o que se rinden, pues esos métodos uso el del triángulo en vez que el de la figura geométrica.
00:17:55
La grabación con el taladro vendrá fenomenal.
00:18:06
Ahora entonces, figura geométrica usa la de figura geométrica y dice su nombre.
00:18:11
El triángulo usa su método.
00:18:20
Estas dos líneas son la llamada a su padre y luego el extra que hemos añadido nosotros para el triángulo.
00:18:25
Y esto en vez es siempre mi nombre llamado desde arriba.
00:18:37
Y este de aquí es el método propio de triángulo.
00:18:42
Este que es el triángulo en la variable figura geométrica,
00:18:46
veis que cuando llamo el de escribir,
00:18:50
pues me está usando el de triángulo, no el de figura geométrica.
00:18:54
¿Dudas?
00:19:01
Pregunta.
00:19:05
¿Y podría yo a través de esta variable utilizar el met-triángulo?
00:19:09
¿Y podría yo a través de esta variable utilizar el met-triángulo?
00:19:21
¿Y podría yo a través de esta variable utilizar el met-triángulo?
00:19:23
¿Como?
00:19:23
Haciendo lo que se llama un downcasting.
00:19:27
Haciendo lo que se llama un downcasting.
00:19:30
Haciendo un downcasting.
00:19:37
Klausé.
00:19:50
¿Veis?
00:19:52
¿Qué ahora está? ¿Qué le estoy diciendo? Le estoy diciendo, oye, variable FG2, tú no eres ya, o sea, trátame FG2 no como si fuera una figura geométrica, sino como un triángulo.
00:19:53
Vale, fenomenal. A este punto podré acceder a los métodos del triángulo, como por ejemplo, método triángulo.
00:20:10
Vale, ¿cuál es el problema? Que esto conlleva un riesgo, porque esto me funciona perfectamente, y si hago, a ver, triángulo de FG punto método triángulo,
00:20:17
¿no? No es una cosa. Y él, a tiempo de compilación, me dice, muy bien, ¿vale?
00:20:35
¿Vale?
00:20:46
¿Vale?
00:20:46
¿Vale?
00:20:46
¿Vale?
00:20:46
¿Vale?
00:20:46
¿Vale?
00:20:46
¿Vale?
00:20:46
¿Vale?
00:20:46
¿Vale?
00:20:46
¿Vale?
00:20:46
¿Vale?
00:20:47
¿Vale?
00:20:47
¿Vale?
00:20:47
¿Vale?
00:20:47
¿Vale?
00:20:47
¿Vale?
00:20:47
¿Vale?
00:20:50
¿Vale?
00:20:50
¿Vale?
00:20:50
¿Vale?
00:20:50
¿Vale?
00:20:50
¿Vale?
00:20:50
¿Vale?
00:20:50
Explota.
00:20:51
Porque aquí ha funcionado, porque cuando yo he hecho un casting explícito de esta referencia a triángulo, ella contenía un triángulo, y entonces ha podido hacer este método de aquí.
00:20:52
Sin embargo, cuando he hecho un casting explícito de esto a triángulo, en realidad esto no contiene un triángulo, contiene una figura.
00:21:09
geométrica, y por lo tanto
00:21:17
cuando llamo este método aquí
00:21:18
pues no lo podría hacer, de hecho
00:21:20
explota ya aquí, porque
00:21:22
con lo que sale
00:21:24
es una class cast exception
00:21:26
un error, una excepción
00:21:29
de casting de la clase
00:21:31
me dice que
00:21:33
la clase figura geométrica
00:21:35
no puede ser
00:21:37
cambiada
00:21:39
puedes hacer un cast a la figura geométrica
00:21:41
en triangle
00:21:43
si
00:21:44
como evito
00:21:47
esto
00:21:49
como puedo evitar
00:21:50
esto
00:21:57
preguntándome antes
00:21:57
si lo que yo quiero
00:22:00
castear, es casteable o no
00:22:02
en el sentido de
00:22:05
si
00:22:07
fg2
00:22:08
instanche
00:22:10
off
00:22:13
triángulo
00:22:13
entonces
00:22:15
if
00:22:18
fg
00:22:22
instanche off
00:22:24
triángulo
00:22:26
entonces
00:22:28
else
00:22:33
el primero no me lo va a hacer
00:22:34
siso
00:22:39
no
00:22:40
puede
00:22:43
hacerlo
00:22:43
esto no se ejecuta
00:22:48
si
00:23:00
no ves
00:23:02
es un problema
00:23:04
y lo lanzamos
00:23:06
y cuando se hace un problema
00:23:12
y cuando se hace un problema
00:23:13
Cuando lo hago sobre fg2, pues me lo puede hacer tranquilamente, lo hace y llama el método, porque este if ha devuelto true, fg2 que es una variable de tipo figura geométrica,
00:23:13
pero contiene una instancia de triángulo, entonces este es true, y entonces luego lo llama y ningún problema, sin embargo fg no contiene una instancia de triángulo,
00:23:36
entonces cuando pregunto esto, esto me da false, entonces no ejecuto este de aquí, entonces me ahorro la excepción y me voy a escribir esto.
00:23:48
¿Qué no puedo hacer?
00:23:58
¿Dudas?
00:24:03
¿Preguntas?
00:24:05
¿Queda claro esto?
00:24:07
Vale.
00:24:12
Vamos a ver, ¿qué estamos haciendo aquí?
00:24:25
¿Ejercicio o aprendiendo Java?
00:24:29
¿Estamos haciendo ejercicios o estamos aprendiendo Java?
00:24:31
Ejercicios son para que vosotros entendáis cómo funciona Java y que luego lo podáis utilizar.
00:24:36
El ejercicio ahora a lo mejor no te lo pide, pero a lo mejor está escondido en algunas cosas que te está pidiendo, y de todas formas tú lo que tienes que aprender es qué puedes hacer para que luego en un futuro sepas qué quiere decir,
00:24:42
si estás sobreescribiendo el método, si no lo estás sobreescribiendo, si tienes un array de figuras geométricas, cómo acceder a ellas, y si sabes que una figura geométrica es un triángulo,
00:24:57
¿Cómo podría tratarlo como triángulo no obstante tenga una referencia como figura geométrica?...
00:25:06
Pues todas estas son cosas que luego se usan en Java, los ejercicios.
00:25:12
Pues habrá ejercicios más avanzados en donde te pide hacer esto.
00:25:17
Pero, ¡estamos empezando!
00:25:20
La idea es que vosotros repaséis, no sé si aquí manejador figuras creas un objeto de figuras geométricas.
00:25:22
Entonces, eso luego lo vamos a hacer, solo que como os he dicho ya, vas a tener que aprender cómo hacer ejercicios para que lo sea.
00:25:31
Pues, entonces, vamos a leer el valor de losthy.com.ar.
00:25:34
Vamos a leer el valor de losthy.com.ar.
00:25:35
Vamos a leer el valor de losthy.com.ar.
00:25:35
Vamos a leer el valor de losthy.com.ar.
00:25:35
Vamos a leer el valor de losthy.com.ar.
00:25:35
Como os he dicho, lo que vamos a hacer es repasar mientras estamos haciendo este ejercicio.
00:25:35
Y ya que estamos, pues estamos razonando sobre ello.
00:25:40
¿Vale?
00:25:44
Este main es extra, lo he puesto yo, para ver qué se puede hacer hasta ahora con estas tres cosas.
00:25:45
Tenemos figura geométrica y tenemos triángulo.
00:25:53
Pues, ¿qué se puede hacer con ello?
00:25:56
¿Vale?
00:25:58
Vale.
00:26:01
Siguiendo con el ejercicio.
00:26:01
Nueva clase, ¿vale?
00:26:06
La clase cuadrado.
00:26:07
Que hereda de la clase de figura geométrica, ¿vale?
00:26:08
Añade atributo lado y subconstructo.
00:26:13
Venga.
00:26:16
Vamos a hacer cuadrado.
00:26:21
Derecho.
00:26:29
Nueva clase.
00:26:31
Cuadrado.
00:26:31
Extends.
00:26:35
La figura geométrica.
00:26:40
Y ponemos intelado.
00:26:46
Public cuadrado.
00:26:50
String nombre.
00:26:56
Intelado.
00:26:59
Super.
00:27:01
Super.
00:27:05
Nombre cuatro.
00:27:08
Dies punto lado.
00:27:12
Es igual a la.
00:27:15
Sí.
00:27:23
Sí.
00:27:28
Esta sería cuadrado
00:27:28
Lo que se puede hacer con triángulo
00:27:32
O sea, una cosa parecida a esta
00:27:35
Se podría hacer con cuadrado
00:27:36
Pero no lo voy a hacer por ahora
00:27:37
Porque ya hemos visto más o menos
00:27:39
Lo que se puede hacer
00:27:41
Vamos a ver
00:27:42
La clase círculo
00:27:49
Misma cosa, ¿vale?
00:27:50
Hereda de la clase figura geométrica
00:27:52
Y añade un atributo radio
00:27:54
Fizar constructores
00:27:55
¿Vale? Muy parecida
00:27:57
Vamos a hacer esta también
00:27:58
Y yo cuadrado
00:28:00
Control C, Control V
00:28:06
Lo llamo círculo
00:28:08
Y ahora tengo círculo
00:28:09
Donde en vez que lado se llama radio
00:28:14
En vez que lado se llama radio
00:28:17
En vez que lado se llama radio
00:28:19
Pregunta
00:28:22
¿Cuánto?
00:28:27
¿Cuántos lados le damos al círculo?
00:28:27
No sé
00:28:38
Únicamente creo que serían infinitos
00:28:39
Pero como infinitos no lo podemos poner
00:28:41
Ponemos un número
00:28:43
Que no es válido
00:28:45
Que se yo
00:28:48
¿Vale?
00:28:49
Número negativo
00:28:51
Asumimos que un número negativo
00:28:52
Quiere decir infinito
00:28:54
Podemos poner cero
00:28:55
¿Vale?
00:28:57
Pero un punto técnicamente
00:28:57
Quiere decir cero lados
00:28:59
Entonces
00:29:00
No sé si queremos utilizar puntos
00:29:03
Como figuras geométricas
00:29:07
Aquí
00:29:09
Complejo
00:29:10
¿Vale?
00:29:12
Entonces
00:29:14
Ahora vamos a hacer manejador figuras
00:29:15
¿Vale?
00:29:17
Que contiene un objeto de figura
00:29:17
O una red de objetos
00:29:18
Figuras geométricas
00:29:20
Y tengo un modo para calcular
00:29:21
El perímetro total
00:29:22
De todas las figuras
00:29:23
De la red
00:29:24
Vale
00:29:27
Vamos a figuras geométricas
00:29:29
O sea
00:29:31
Manejador figuras
00:29:32
Manejador figuras
00:29:33
Manejador figuras
00:29:42
Tiene un array de figuras geométricas
00:29:49
Figuras
00:29:51
Figuras geométricas
00:29:53
Intentaré
00:29:57
Array
00:30:01
Figuras
00:30:02
Cuando creo un
00:30:04
Manejador
00:30:11
Public
00:30:15
Manejador figuras
00:30:16
Le pasaré un
00:30:19
Figura geométrica
00:30:22
Array
00:30:26
Figuras
00:30:27
Figuras
00:30:29
Y diré que
00:30:29
Dis.figuras
00:30:34
Es igual a figuras
00:30:36
Vale
00:30:41
Entonces de alguna forma
00:30:47
Me han dado todas las figuras
00:30:49
¿Vale?
00:30:50
A lo mejor luego haremos
00:30:51
Otro constructor
00:30:52
Que no me da nada
00:30:54
Y que en automático
00:30:56
Me crea unas cuantas figuras
00:30:56
Allí dentro
00:30:58
¿Vale?
00:30:59
Y ahora
00:31:00
Lo que tengo que hacer
00:31:01
Es calcularme
00:31:03
El perímetro de todas las figuras geométricas
00:31:05
¿Vale?
00:31:07
Lo que va a ser complejo
00:31:09
¿Cómo lo hago?
00:31:13
¿Cómo lo hago?
00:31:15
¿Cómo lo hago?
00:31:17
¿Cómo lo hago?
00:31:19
¿Cómo lo hago?
00:31:21
¿Cómo lo hago?
00:31:23
¿Cómo lo hago?
00:31:25
¿Cómo?
00:31:26
¿Cómo?
00:31:28
No lo sé
00:31:29
Decime vosotros
00:31:32
¿Cómo hago esto?
00:31:34
Tengo que calcular
00:31:37
El perímetro
00:31:39
Total de todas las figuras
00:31:41
Puedo hacerlo utilizando las figuras
00:31:43
Figuras geométricas
00:31:46
O sea, figuras geométricas
00:31:48
¿Tiene algo que me permitiría
00:31:50
Calcular su perímetro?
00:31:52
Sí
00:31:54
¿Cómo?
00:31:55
El número de lados
00:31:57
¿Eh?
00:31:58
El número de lados
00:31:59
Vale
00:32:00
Te digo que tiene cuatro lados
00:32:01
¿Cuál es su perímetro?
00:32:02
Por su lado
00:32:03
Por su lado cuatro
00:32:04
¿Dónde está el lado?
00:32:05
Pero no lo tienes ahí
00:32:06
El número de lados
00:32:07
No
00:32:08
Ah, vale
00:32:09
Vale, vale
00:32:10
Lo he entendido de otra forma
00:32:11
Vale
00:32:12
¿Sí?
00:32:13
Vale, vale
00:32:14
O sea, que aquí yo tengo cuántos lados tiene
00:32:15
Pero no tengo el valor de cada lado
00:32:16
Entonces difícilmente puedo calcular su perímetro
00:32:18
¿Sí?
00:32:21
Entonces tengo que
00:32:23
Buscar algo
00:32:25
¿Cómo lo hago?
00:32:27
Vamos a hacerlo de dos formas
00:32:34
¿Sí?
00:32:36
Forma C
00:32:38
public int
00:32:42
Asumamos que sean todos enteros, ¿eh?
00:32:45
Calcula perímetro
00:32:48
Int res es igual a cero
00:32:53
Return res
00:32:55
Vale
00:32:56
Ahora tengo que hacer por cada una de las figuras que está aquí
00:32:57
Calcularme
00:32:59
Su
00:33:00
Su perímetro
00:33:01
¿Cómo lo hago?
00:33:02
Pues for
00:33:03
Ok
00:33:04
For
00:33:05
Ehm
00:33:06
Int
00:33:07
i es igual a cero
00:33:08
Y
00:33:09
Y
00:33:10
Y
00:33:11
Y
00:33:12
Y
00:33:13
Y
00:33:14
Y
00:33:15
Y
00:33:16
Y
00:33:17
Y
00:33:18
Y
00:33:19
Y
00:33:20
Y
00:33:21
I
00:33:22
t
00:33:23
I
00:33:24
i
00:33:25
Menor que figuras punto lenguito
00:33:26
I
00:33:28
Menor que figuras punto lenguito
00:33:29
I
00:33:30
Menor que figuras punto leng completo
00:33:31
Y más más
00:33:32
Que hago
00:33:34
Ehm
00:33:35
Ehm
00:33:36
Ehm
00:33:37
Que hago
00:33:40
ف
00:33:47
F
00:33:48
Ф
00:33:49
F
00:33:50
Figura geométrica X es igual a figuras de Y.
00:33:51
Pillo la primera figura.
00:34:03
Si X es la instancia de un triángulo,
00:34:04
si el primero, si esta figura que ha pillado es un triángulo,
00:34:26
entonces, res es igual, no, más igual, le sumo,
00:34:34
¿cómo hago a sumarle los tres lados?
00:34:43
¿Cómo hago a sumarle los tres lados?
00:34:45
Da un casting a triángulo de X punto lado 1.
00:34:52
Más, da un casting de triángulo, lado 2.
00:35:04
Más, da un casting de triángulo, lado 3.
00:35:14
Estoy preguntando, si esta de aquí es un triángulo,
00:35:20
pues entonces ningún problema, trátalo como un triángulo,
00:35:24
puedes ceder a sus lados y los vas sumando y te estás calculando el perímetro.
00:35:27
¿Sí?
00:35:33
Acción 2.
00:35:34
Si es un cuadrado,
00:35:40
pues entonces,
00:35:49
trátalo como un cuadrado,
00:35:51
saca el lado y multiplícalo por 4.
00:35:55
Es decir, que si X es una instancia de cuadrado,
00:36:04
pues entonces podrás tratarlo como un cuadrado
00:36:12
y hacer lado por 4, que los añades al resultado.
00:36:14
Es un cuadrado, me calculo el perímetro de un cuadrado.
00:36:20
¿Sí?
00:36:27
Si X es instancia de círculo,
00:36:27
supongo que el perímetro de un círculo sea su circunferencia.
00:36:34
La vez más igual círculo de X punto radio.
00:36:41
Circunferencia, ¿cómo se calcula circunferencia?
00:36:55
Circunferencia, ¿cómo se calcula circunferencia?
00:37:03
Circunferencia, ¿cómo se calcula circunferencia?
00:37:03
Circunferencia, ¿cómo se calcula circunferencia?
00:37:03
Dos piedras.
00:37:06
Por 2, por...
00:37:09
Efectivamente, más punto pi.
00:37:11
Ahora cuidado, nosotros hemos hecho que todo esto es un entero.
00:37:20
Esto no será un entero.
00:37:25
Entonces, a lo mejor toca...
00:37:27
Tengo que hacer así
00:37:33
Esto debería funcionar
00:37:45
Vale, entonces
00:37:49
Ahora con esto
00:37:52
En principio me debería calcular
00:37:54
El perímetro
00:37:56
Vamos a hacer una prueba
00:37:57
Public
00:38:00
Manejador
00:38:02
Figuras
00:38:03
De nada
00:38:05
Y me va a crear un array de 3 figuras
00:38:07
Por ejemplo
00:38:12
Figuras es igual
00:38:13
A new
00:38:16
Figura
00:38:17
Geométrica
00:38:21
De 3
00:38:24
Figuras
00:38:25
De u de 0
00:38:30
Es igual
00:38:32
A new
00:38:33
Triángulo
00:38:35
3,2
00:38:36
3,4,5
00:38:40
Figuras
00:38:43
De 1
00:38:48
Es igual a new
00:38:49
Cuadrado
00:38:51
Cuad
00:38:53
Coma
00:38:56
2
00:38:59
Y figuras
00:39:00
De 2
00:39:04
Es igual a new
00:39:05
Círculo
00:39:08
Cir
00:39:10
Coma
00:39:12
1
00:39:14
Nota
00:39:15
Perímetro total
00:39:19
Cuanto debería ser
00:39:22
23,14
00:39:30
Y otras cositas
00:39:41
Me espero que si funciona
00:39:49
Esto es lo que me debería dar
00:39:53
Justo
00:39:54
Vamos a probar
00:39:56
Vamos a probar
00:39:59
Vamos a probar
00:39:59
Vamos a probar
00:39:59
Vamos a probar
00:39:59
Vamos a probar
00:39:59
Vamos a probar
00:39:59
Vamos a probar
00:39:59
Vamos a probar
00:39:59
Vamos a probar
00:40:00
Vamos a probar
00:40:00
Vamos a probar
00:40:00
Vamos a probar
00:40:00
Entonces ahora me hago aquí
00:40:01
Un método
00:40:02
Un main
00:40:04
Para probar esto
00:40:04
Public
00:40:05
Static
00:40:07
Void
00:40:08
Main
00:40:09
Ring
00:40:09
Args
00:40:11
Donde digo
00:40:12
Ehm
00:40:18
Manejador
00:40:20
Figura
00:40:21
Mf
00:40:22
Es igual a
00:40:26
New
00:40:27
Manejador
00:40:27
Figura
00:40:29
Figuras
00:40:29
Sin darle nada
00:40:32
Esto me debería haber creado en figuras
00:40:34
Estas figuras de aquí
00:40:36
Y ahora pongo
00:40:38
Doble
00:40:40
Resultado
00:40:41
O perímetro
00:40:44
Perímetro total
00:40:45
Es igual a
00:40:48
Calcula perímetro
00:40:51
O sea, mf.calcula perímetro
00:40:54
Si, eso
00:41:00
Perímetro total
00:41:04
Dos puntos
00:41:08
Si
00:41:17
He creado un objeto
00:41:17
Manejador figura
00:41:18
Con esto me he creado estas figuras de aquí
00:41:19
Luego
00:41:22
Llamo el método
00:41:23
Calcula perímetro
00:41:24
Sobre este manejador
00:41:26
Fuerza de figuras
00:41:27
Me debería hacer
00:41:28
Esta cosa de aquí
00:41:29
Si todo ha ido bien
00:41:30
Al final
00:41:31
Me debería dar
00:41:32
Este número más o menos
00:41:33
Espero
00:41:35
No lo sé
00:41:35
Lanzo
00:41:36
Veintiséis
00:41:39
Me he equivocado
00:41:41
Veintiséis
00:41:42
Nueve
00:41:45
Diez, once, doce
00:41:49
Dos por cuatro, ocho
00:41:50
Veintiséis
00:41:52
Veinte
00:41:53
Y esto debería ser tres coma catorce
00:41:53
Ah, no, porque
00:41:56
Perdón, perdón
00:41:59
Es el doble
00:42:01
Seis coma
00:42:01
Veintiocho
00:42:03
Sí
00:42:04
Y entonces sí
00:42:05
Bueno, le hacemos
00:42:07
Así
00:42:08
Ahora sí
00:42:10
Este es un entero
00:42:12
No lo puedo poner
00:42:14
Vale, bien
00:42:15
Entonces sí, veintiséis es correcto, ¿vale?
00:42:17
Me he equivocado yo
00:42:20
Veintiséis coma
00:42:21
Veintiocho
00:42:23
Eso sí
00:42:24
Y de hecho
00:42:26
Veintiséis coma veintiocho
00:42:28
¿Sí?
00:42:30
O sea que esto funciona
00:42:32
Bonito
00:42:33
Os gusta
00:42:35
Es elegante
00:42:37
¿Qué problema le veis?
00:42:38
O sí
00:42:44
¿Por qué?
00:42:45
El problema que tiene este señor
00:42:50
Es que no es nada
00:42:53
Flexible
00:42:54
En el sentido
00:42:56
Esto trabaja con
00:42:57
Triángulo, cuadrado y círculo
00:42:58
Si ahora he añadido
00:43:00
Otra cosa
00:43:01
Otro
00:43:03
Objeto
00:43:04
Que no herede de ninguno de estos
00:43:06
Triángulo, cuadrado y círculo
00:43:08
Porque si no a lo mejor me funcionaría
00:43:10
Si hago triángulo, isócele
00:43:11
Pues será siempre un triángulo
00:43:13
Y me valdrá
00:43:15
Pero
00:43:15
Entonces
00:43:17
Sería un problema
00:43:19
Si yo añado
00:43:20
Pentágono
00:43:21
¿Veis?
00:43:22
Aquí
00:43:23
O rectángulo
00:43:23
Pues debería volver a este método
00:43:24
Y añadir aquí
00:43:27
El rectángulo
00:43:28
Si ahora hago pentágono
00:43:29
Pues añado pentágono
00:43:30
Y esto no es elegante
00:43:32
De cara a que
00:43:34
Me limita
00:43:35
En las posibilidades
00:43:36
De rellenar las figuras geométricas
00:43:37
Si ahora de repente
00:43:40
He hecho hasta doce lados
00:43:41
Un dodecaedro
00:43:43
¿Cómo se llama?
00:43:44
No es un dodecaedro
00:43:46
Un dodecagono
00:43:47
Y de repente
00:43:48
Quiero hacer trece lados
00:43:49
Pues no lo puedo hacer
00:43:51
Porque en mi programa
00:43:52
Solo me calculo el perímetro
00:43:52
Hasta figuras de doce lados
00:43:54
Entonces
00:43:55
¿Cómo podría hacer
00:43:57
Para resolver este problema?
00:43:59
¿Arrey?
00:44:08
¿Oberrey?
00:44:10
Vale
00:44:10
Porque
00:44:11
Opción número uno
00:44:12
¿Vale?
00:44:15
Paso número uno
00:44:15
Yo digo
00:44:16
Vale
00:44:17
Cada triángulo
00:44:17
Cuadrado
00:44:18
Círculo
00:44:21
Lejano
00:44:21
Y aquí pongo un metodito
00:44:22
Para calcular su propio perímetro
00:44:24
¿Vale?
00:44:26
Entonces aquí pongo
00:44:27
Public
00:44:28
Calcula perímetro
00:44:29
Ah perdón
00:44:31
Double
00:44:32
Y lo que hago es
00:44:33
Return
00:44:34
Lado uno
00:44:35
Más
00:44:36
Lado dos
00:44:37
Más
00:44:38
Lado tres
00:44:39
¿Si?
00:44:40
¿Si?
00:44:41
¿Si?
00:44:42
¿Si?
00:44:43
¿Si?
00:44:44
¿Si?
00:44:45
¿Si?
00:44:46
¿Si?
00:44:47
¿Si?
00:44:48
¿Si?
00:44:49
¿Si?
00:44:50
¿Si?
00:44:51
En el cuadrado
00:44:52
Le pongo
00:44:55
Calcula perímetro
00:44:57
Que lo que hace es
00:44:59
Lado
00:45:01
Por cuatro
00:45:01
En círculo
00:45:03
Le pongo
00:45:07
Calcula perímetro
00:45:09
Que es
00:45:10
Radio
00:45:12
Por dos
00:45:12
Por
00:45:14
Más punto pi
00:45:16
Encanto
00:45:22
¿Si?
00:45:23
¿Si?
00:45:24
Entonces
00:45:25
Si hago sólo esto
00:45:27
Mi
00:45:29
Calcula perímetro
00:45:30
Se transformó un poquito
00:45:32
¿Vale?
00:45:36
Ahora ya no lo tengo
00:45:39
Que calcular aquí
00:45:41
¿Vale?
00:45:41
Sería una cosa
00:45:43
Como esta de aquí
00:45:44
Si es un triángulo
00:45:46
Lo voy a calcular
00:45:49
Y lo voy a calcular
00:45:50
¿Vale?
00:45:51
Y lo voy a calcular
00:45:51
Y lo voy a calcular
00:45:51
Bien
00:45:51
Muy bien
00:45:51
Añádele
00:45:52
Cálcula perímetro
00:45:55
Si es un cuadrado
00:45:56
Haz cálcula perímetro
00:46:00
Si es este otro
00:46:04
Cálcula perímetro
00:46:07
Esto es una pizca mejor
00:46:11
Con respecto al anterior
00:46:16
Porque aquí no es que tengo
00:46:17
Que cada vez que añado una
00:46:20
Una nueva figura
00:46:21
Irme a calcular como se hace
00:46:23
Pues la figura ya sabe calcularse
00:46:25
Lo que estoy haciendo es llamar cálcula perímetro
00:46:27
Sobre cada una de las figuras
00:46:30
Pero aún no me ha solucionado el problema de antes
00:46:32
¿Vale?
00:46:34
Tengo igualmente que cada figura
00:46:35
Saber si es un triángulo hace esto
00:46:37
Si es un cuadrado hace esto
00:46:39
Si es un círculo hace esto
00:46:40
¿Vale?
00:46:41
Y no lo quiero hacer
00:46:42
Entonces aquí
00:46:44
Utilizo lo que hemos visto como
00:46:45
Figura geométrica
00:46:51
¿Vale?
00:46:52
Perfecto
00:46:53
Entonces
00:46:54
Lo que voy a hacer es decir
00:46:54
Vale
00:46:56
Me creo el método cálcula perímetro
00:46:57
Aquí
00:47:00
Y la pregunta es
00:47:04
¿Qué devuelve?
00:47:09
Pasamos un momento esto
00:47:21
¿Vale?
00:47:23
Yo tengo figura geométrica
00:47:24
Que tiene su cálcula perímetro
00:47:26
Que devuelve cero
00:47:27
No se puede hacer
00:47:29
O menos uno
00:47:30
Para estar seguro
00:47:31
Que bueno, cero
00:47:32
Porque así no me molesta la suma
00:47:33
Asumamos que esto me guste
00:47:35
Que no me gusta
00:47:38
Pero asumamos que esto me guste
00:47:39
¿Vale?
00:47:41
¿Cómo se cambia este de aquí?
00:47:41
Es decir
00:47:43
¿Cómo sale
00:47:44
Cálcula perímetro 3?
00:47:45
¿Qué hago aquí?
00:47:51
3 más igual
00:48:04
Figura de ahí
00:48:06
Punto
00:48:08
Cálcula perímetro
00:48:09
¿Vale?
00:48:10
Mira que bonito
00:48:18
¿Vale?
00:48:20
Esto ya es más elegante
00:48:21
Que ahora yo lo llamo directamente
00:48:22
Sobre el figura geométrica
00:48:26
Y nosotros sabemos
00:48:29
Que él me usará
00:48:30
El método sobrescrito
00:48:33
Más concreto de la instancia que tengo
00:48:35
Entonces si este de aquí
00:48:38
En realidad es un triángulo
00:48:41
Me llamará cálcula perímetro del triángulo
00:48:42
Si esto aquí en realidad es cuadrado
00:48:44
Me llamará el de cuadrado
00:48:47
Si este de aquí en realidad es cuadrado
00:48:49
Es un círculo
00:48:51
Me llamará el de círculo
00:48:51
Y cada uno está especificado para su
00:48:52
Su propio
00:48:54
Perímetro
00:48:56
Entonces si yo ahora hago
00:48:57
Lo mismo que antes
00:49:00
O sea
00:49:04
Si hizo
00:49:05
MF
00:49:07
Punto
00:49:12
Cálcula perímetro 3
00:49:13
El resultado
00:49:15
Es el mismo
00:49:18
Pero ahora
00:49:21
La cosa interesante
00:49:24
Que ya no dependo del tipo de
00:49:26
Instancias que tengo allí dentro
00:49:28
Ahora puedo crearme un
00:49:31
Pentágono
00:49:32
Que hereda desde
00:49:35
El figura geométrica
00:49:38
Y insertarlo en este array de aquí
00:49:39
Y no tengo problemas
00:49:41
¿Lo veis?
00:49:43
Es una cosa interesante
00:49:46
Es muy bonito esto
00:49:47
¿Si?
00:49:48
Puedo hacerme un array
00:49:51
De objetos
00:49:53
Muy abstractos
00:49:55
Y luego tratarlos
00:49:57
Como cada uno de ellos
00:49:59
Como tiene que ser tratado
00:50:01
Me queda
00:50:02
Esta cosa aquí
00:50:05
Este es feo
00:50:07
Este es feo porque no es verdad
00:50:09
Que una figura
00:50:14
Geométrica de cuatro lados
00:50:15
Tiene perímetro cero siempre
00:50:18
En vez de que
00:50:19
Eso es lo que me está diciendo
00:50:21
Y aquí
00:50:22
Una cosa que no hemos visto todavía
00:50:25
Pero veremos
00:50:27
Hoy o el viernes
00:50:28
Que es
00:50:30
En realidad
00:50:31
Figura geométrica
00:50:32
Es algo de verdad
00:50:33
Tiene sentido crear una figura geométrica
00:50:36
La figura geométrica es un concepto
00:50:39
Pero es muy abstracto
00:50:46
Es muy genérico
00:50:47
Es un concepto
00:50:49
Es un concepto
00:50:50
Es un concepto
00:50:50
De oye mira si
00:50:51
Tú eres una figura geométrica
00:50:52
Pero luego hasta que tú no me digas
00:50:54
Si eres un cuadrado, un rectángulo o un triángulo
00:50:56
Yo puedo hacer muy poco contigo
00:50:59
Sé que eres una figura geométrica
00:51:01
Sin duda
00:51:02
Pero no puedo hacer mucho contigo
00:51:02
¿Vale?
00:51:07
Entonces existe un concepto en Java
00:51:08
Que son las clases abstractas
00:51:10
Una clase abstracta es una clase
00:51:13
Que no está completamente
00:51:16
Definida
00:51:19
Que tiene algunas cosas definidas
00:51:20
Y algunas no
00:51:23
Algunas se quedan abstractas
00:51:24
Con esto yo estoy diciendo
00:51:27
Que esta clase no es una clase real
00:51:34
No se pueden crear
00:51:37
Instancias de figura geométrica
00:51:38
No puede hacer
00:51:41
Ni una figura geométrica
00:51:43
¿Si?
00:51:44
Esto se queda
00:51:49
A la hora de crear una figura geométrica
00:51:50
Lo que quiere decir que
00:51:50
Aquí casi todo está hecho
00:51:53
¿Vale?
00:51:55
Pero habrá algunos métodos
00:51:56
Algunas cosas aquí dentro
00:51:58
Que yo te digo que existen
00:52:00
Pero no te la implemento
00:52:03
En particular
00:52:07
Calcula perímetro
00:52:08
Esto me está diciendo
00:52:13
Calcula perímetro
00:52:19
Y aquí está el método de la clase geométrica
00:52:20
Es un método
00:52:20
Existe
00:52:22
Cualquier clase
00:52:23
Que herede de mí
00:52:27
Y no sea abstracta
00:52:29
Necesariamente
00:52:30
Tiene que implementar este método
00:52:32
Es como si estoy delegando
00:52:34
La implementación de este método
00:52:37
No a mí
00:52:38
Sino a una de mis subclases
00:52:39
Cuando tú haces una subclase concreta
00:52:41
Una subclase que no es abstracta
00:52:44
Pues esa subclase tendrá que implementar
00:52:46
Su calcula perímetro
00:52:48
Pero yo como yo
00:52:49
Pero yo como figura geométrica lo tengo.
00:52:50
Está aquí.
00:52:52
Entonces, lo que hemos visto del...
00:52:54
De esto, del...
00:52:56
Del overriding...
00:53:00
Me sigue funcionando.
00:53:02
¿Sí?
00:53:05
Sin embargo...
00:53:07
No me...
00:53:09
No me fuerza a mí a rellenar esto con datos que no son reales.
00:53:09
Porque aquí, ¿cómo calculo el pedimento de una figura que no sé qué figura es?
00:53:15
¿Me explico?
00:53:20
¿Entendéis dónde va...
00:53:22
Dónde van los tiros?
00:53:23
Vale.
00:53:26
Y entonces...
00:53:27
Ahora me sale un problema aquí.
00:53:29
¿Dónde me sale un problema?
00:53:31
¿Os acordáis que aquí yo creaba una figura geométrica como new figura geométrica?
00:53:32
Esto ya no lo puedo hacer.
00:53:38
Esto ya no es posible.
00:53:40
No se puede instanciar una clase abstracta.
00:53:41
El problema que sale aquí es...
00:53:46
Que no se instancie...
00:53:48
El tipo figura geométrica, que es un tipo abstracto, no se puede implementar.
00:53:50
Por lo tanto, esto no lo puedo hacer.
00:53:58
¿Y qué implica que esto no?
00:54:03
Esto no.
00:54:05
Y...
00:54:07
Esto.
00:54:08
¿Vale?
00:54:18
Pero ahora, manejador de figuras, lo lanzo y sigue funcionándome perfectamente.
00:54:20
¿Vale?
00:54:28
Esta es la solución más elegante a un problema como este de aquí.
00:54:29
¿Vale?
00:54:34
Fijaos que una clase abstracta junta dos cosas.
00:54:35
Junta...
00:54:42
Algunos métodos constructores y cosas por el estilo que son concretos.
00:54:42
Este método de aquí existe y está implementado.
00:54:47
Y no es...
00:54:49
Es abstracto.
00:54:50
Con otros métodos que te dicen existen, pero todavía no lo ha implementado.
00:54:52
Lo implementarán mis hijos, mis subclases, que no sean abstractas.
00:54:58
Cuidado, yo puedo tener una clase abstracta y una clase que herede de esa clase abstracta y sea abstracta también.
00:55:03
¿Sí?
00:55:12
Pero, en general, entonces, esta clase abstracta podría añadir nuevos métodos abstractos.
00:55:15
Y no implementar los métodos abstractos de mi superclase.
00:55:20
Pero en cuanto llegue a una clase que sea concreta, que no sea abstracta,
00:55:25
pues esta tendrá que implementar todos los métodos abstractos que lleva arrastrándose desde todas las clases abstractas en su jerarquía de herencia.
00:55:30
¿Se entiende?
00:55:40
¿Dudas?
00:55:42
Entonces...
00:55:45
Entonces...
00:55:46
Después...
00:55:47
Esta sería clase de manejador de cuadrados que tiene una forma para calcular el área total de todos los cuadrados.
00:55:50
¿Vale?
00:55:59
Y una clase de manejador de círculos que es el área total de todos los círculos.
00:56:00
¿Sí?
00:56:07
Fijaos que los triángulos no, porque los tengo base por altura.
00:56:08
No sé si con tres lados...
00:56:10
¿Con solo los tres lados puedo calcular la área de un triángulo?
00:56:13
No lo sé.
00:56:17
¿Hay una fórmula?
00:56:20
No lo sé.
00:56:22
¿Vale?
00:56:23
En vez de crear clases, pues a lo mejor lo podemos hacer dentro de manejador figuras.
00:56:24
¿Vale?
00:56:29
Entonces quiero un método que lo que me haga es calcularme el área total de los cuadrados.
00:56:30
¿Sí?
00:56:40
¿Cómo lo hago?
00:56:43
¿Cómo lo hago?
00:56:44
Public, doble, calcula, área, cuadrados.
00:56:50
¿Cómo lo hago?
00:57:02
¿Cómo?
00:57:10
¿Nueva clase?
00:57:10
Nueva clase, sí.
00:57:14
Pero he dicho, da igual, tanto es una nueva clase que tiene solo esto.
00:57:15
Porque si va a ser una nueva clase, va a ser una nueva clase.
00:57:19
Porque si hago una nueva clase, tengo que volver a rehacer esto.
00:57:20
Entonces, en paso.
00:57:23
Además, si hago una nueva clase solo para cuadrados, es más fácil, porque me hago una red de cuadrados.
00:57:29
Entonces, en vez de...
00:57:34
Yo quiero utilizar una red de figuras.
00:57:35
¿Cómo lo hago?
00:57:39
¿Cómo lo hago?
00:57:39
Por.
00:57:50
Figura geométrica X, dos puntos, figuras.
00:58:00
Sí.
00:58:10
X instanche of cuadrados.
00:58:13
Por.
00:58:17
Y yo quiero sumar solo los cuadrados.
00:58:17
Entonces, ahora sí que tengo que comprobar que sean cuadrados.
00:58:22
Entonces, rest es igual a X punto calcula área.
00:58:24
¿Qué es esto?
00:58:36
¿Qué es esto?
00:58:37
No.
00:58:41
l
00:58:47
Este de aquí devuelve lado por lado.
00:58:49
Fijaos.
00:58:58
Esto no me funciona, ¿por qué no funciona?
00:59:00
Falta el down casting.
00:59:05
Falta el down casting.
00:59:10
Vale.
00:59:12
Cuadrado.
00:59:12
Cuadrado.
00:59:15
Cuadrado.
00:59:16
Cuadrado.
00:59:16
Cuadrado.
00:59:16
Cuadrado.
00:59:16
Cuadrado.
00:59:16
Cuadrado.
00:59:17
Cuadrado.
00:59:17
Cuadrado.
00:59:17
Cuadrado.
00:59:17
Y esto ya me funciona
00:59:17
El del círculo sería exactamente igual
00:59:25
Solo que aquí pone círculo, aquí pone círculo
00:59:28
Pregunta, ¿puedo hacer lo mismo que he hecho aquí para calcular el área de todas las figuras?
00:59:32
En principio sí
00:59:41
El problema es que por como lo he planteado
00:59:45
Si pongo aquí otro abstracto que sea calcula área
00:59:48
Cuadrado me funciona
00:59:56
Círculo
01:00:04
Pincleto de cuadro
01:00:11
Más punto pi por radio
01:00:13
Por radio
01:00:20
Este es el área
01:00:21
No acuerdo nunca
01:00:24
Pero el problema es el triángulo
01:00:26
¿Cómo se calcula el área del triángulo dado sus lados?
01:00:32
Mira
01:00:41
Calcular área triángulo
01:00:42
¿Eh?
01:00:50
Pero no tengo ni la base ni la altura
01:00:55
Dados sus lados
01:00:58
¿Qué es?
01:01:04
Creo que necesito tener
01:01:08
Los ángulos
01:01:11
Si no tengo los ángulos
01:01:14
Mira a mí que hago poco o nada
01:01:20
Por favor estoy cuidando
01:01:42
Fórmula de Rohn
01:01:48
¿Es la fórmula de Rohn?
01:01:49
Creo
01:01:55
Fórmula
01:01:55
Formula de Rohn
01:01:59
¿avi?
01:02:02
Fórmula de Rohn
01:02:02
¿El ángel de la Galandría permite calcular el área desde un triángulo a partir de la longitud de un ángulo previsto para que se fin Gates?
01:02:05
¿Se puede calcular el ángulo?
01:02:09
De la longitud de los tres lados A, B y C.
01:02:10
Esta cosa de aquí.
01:02:25
Sin problemas.
01:02:29
Vale, la implementáis vosotros.
01:02:32
¿Sí?
01:02:35
Se puede, ¿vale?
01:02:40
Entonces lo hacéis vosotros.
01:02:47
Que la matemática sé que os gusta.
01:02:50
Uno.
01:02:53
¿Sí?
01:02:55
Si yo consigo implementar aquí la fórmula de Rohn, ¿vale?
01:02:55
Pues entonces ya este de aquí no necesita preguntarme si es un cuadrado o no.
01:03:03
Puedo calcular la radiación.
01:03:09
De todos.
01:03:10
Poniendo aquí esa.
01:03:11
Ahora, acordaos que el enunciado dice cálculame el área de todos los cuadrados.
01:03:12
Entonces esto sigo haciéndolo.
01:03:16
Lo que me soluciona es esto.
01:03:18
O sea, perdón.
01:03:22
Si es un cuadrado, hace X calcular.
01:03:25
Que en realidad lo está haciendo sobre figura geométrica.
01:03:28
Pero como es un cuadrado lo está utilizando el sobrescrito.
01:03:31
¿Sí?
01:03:36
No tengo que hacer downcasting explícito.
01:03:37
¿Dudas?
01:03:40
Y ya está.
01:03:44
- Subido por:
- Stefano C.
- Licencia:
- Reconocimiento - No comercial - Compartir igual
- Visualizaciones:
- 11
- Fecha:
- 7 de febrero de 2024 - 11:15
- Visibilidad:
- Clave
- Centro:
- IES ROSA CHACEL
- Duración:
- 1h′ 03′ 50″
- Relación de aspecto:
- 4:3 Hasta 2009 fue el estándar utilizado en la televisión PAL; muchas pantallas de ordenador y televisores usan este estándar, erróneamente llamado cuadrado, cuando en la realidad es rectangular o wide.
- Resolución:
- 960x720 píxeles
- Tamaño:
- 313.82 MBytes