1
00:00:00,150 --> 00:00:00,840
Bienvenidos.

2
00:00:00,900 --> 00:00:03,170
Continuamos con las clases abstractas en Yaba.

3
00:00:03,240 --> 00:00:04,830
Bien, pero creo que es una clase abstracta.

4
00:00:04,930 --> 00:00:08,880
Bueno, hay que partir de una clase abstracta, está hecha para herencia.

5
00:00:09,000 --> 00:00:14,850
Representa siempre una clase padre de la cual tenemos que extender, pero no cualquier clase padre,

6
00:00:14,850 --> 00:00:21,100
sino más bien representa un concepto muy genérico en nuestra aplicación, un concepto abstracto.

7
00:00:21,210 --> 00:00:22,470
Bueno, de ahí viene el nombre.

8
00:00:22,620 --> 00:00:29,550
Por lo tanto, es tan conceptual que no se debería crear una instancia de esta clase, sino las instancias

9
00:00:29,670 --> 00:00:35,220
se crean a partir de la clase concreta o la clase cija que entienden de esta clase abstracta.

10
00:00:35,470 --> 00:00:35,660
Bien.

11
00:00:35,880 --> 00:00:39,900
Otro tema importante es que una clase abstracta debe tener un método, que también son abstractos.

12
00:00:40,170 --> 00:00:44,550
Esto quiere decir métodos que no tienen una implementación específica.

13
00:00:44,700 --> 00:00:50,000
No, porque se podría implementar de diferente forma según la clase hija, según la clase concreta,

14
00:00:50,130 --> 00:00:53,940
similar a las or critura, muy parecido, pero sin implementar.

15
00:00:54,030 --> 00:01:00,840
Entonces cada hija va a sobrescribir este método con una implementación única y particular de cada una.

16
00:01:01,060 --> 00:01:02,560
Bien, entonces veamos el concepto.

17
00:01:02,850 --> 00:01:08,310
Entonces, cuando tenemos una jerarquía de clases donde algún método está presente en toda la jerarquía,

18
00:01:08,400 --> 00:01:10,110
es decir, en todas las clases hijas.

19
00:01:10,290 --> 00:01:13,680
Pero cada una de estas clases la implementa de forma distinta.

20
00:01:13,860 --> 00:01:17,610
Es decir, si tiene que redefinir este método completamente desde cero.

21
00:01:17,700 --> 00:01:23,910
En cada implementación, en cada clase hija concreta, se utiliza el modificador abstracto en la declaración

22
00:01:23,910 --> 00:01:24,420
de la clase.

23
00:01:24,570 --> 00:01:31,500
Es decir, arriba en el public class, por ejemplo, se coloca el abstract esta palabra clave.

24
00:01:31,620 --> 00:01:36,540
Entonces, de esa forma aclarame que es una clase abstracta y una clase abstracta podría contener métodos

25
00:01:36,540 --> 00:01:37,030
abstractos.

26
00:01:37,170 --> 00:01:42,130
Es decir, estos métodos que están sin implementar y que la tienen que implementar la clase cija como

27
00:01:42,130 --> 00:01:43,920
un contrato de la jerarquía.

28
00:01:44,130 --> 00:01:49,680
Entonces una clase atracti está diseñada para ser siempre una superclase, una clase padre y no se puede

29
00:01:49,680 --> 00:01:50,610
crear una instancia.

30
00:01:50,620 --> 00:01:54,060
No se puede ejemplarizar con el New York en la vida real.

31
00:01:54,150 --> 00:01:56,430
Por ejemplo, el concepto de comida.

32
00:01:56,580 --> 00:01:59,370
Nunca decimos que hoy día comí comida.

33
00:01:59,400 --> 00:02:01,890
No siempre nos referimos a algo concreto.

34
00:02:01,950 --> 00:02:05,490
Por ejemplo, hoy día me comí un pan, hoy día comí arroz.

35
00:02:05,600 --> 00:02:07,550
Un chocolate, se fijan.

36
00:02:07,680 --> 00:02:08,700
Pero cosa concreta.

37
00:02:08,820 --> 00:02:14,580
Igual cuando vamos por la calle y pasa un automóvil, un vehículo, por ejemplo, por lo general siempre

38
00:02:14,580 --> 00:02:16,140
hicimos algo particular.

39
00:02:16,150 --> 00:02:22,080
Mira, ahí pasó, no sé, un Ferrari, pero es poco común decir que mira, mira ese vehículo.

40
00:02:22,200 --> 00:02:26,430
No siempre nos referimos a algo más concreto y en nuestras aplicaciones pasa lo mismo.

41
00:02:26,610 --> 00:02:32,940
Representamos modelo por un tema de diseño, de jerarquía, de clase como un agente abstracto, como

42
00:02:32,940 --> 00:02:33,660
un concepto.

43
00:02:33,810 --> 00:02:38,520
Y a partir de este concepto abstracto presentamos un diseño, es decir, métodos que tienen que implementar

44
00:02:38,580 --> 00:02:41,190
y están presente en todas las clases hijas.

45
00:02:41,340 --> 00:02:42,570
Veamos algunos ejemplos.

46
00:02:42,800 --> 00:02:47,490
Bueno, el ejemplo que estamos trabajando persona con atributos Heidy Nombre, apellido, email, fecha

47
00:02:47,490 --> 00:02:52,590
registro una clase padre abstracta que representa un concepto nuestra aplicación, pero algo genérico.

48
00:02:52,680 --> 00:02:57,900
Es decir, en ninguna parte vamos a crear una instancia de persona, no nos la podemos ejemplificar,

49
00:02:57,990 --> 00:03:04,200
más bien lo que vamos a crear y vamos a trabajar con clase más concreta que hereden de la clase persona

50
00:03:04,290 --> 00:03:09,060
y podría tener métodos en común para cualquier tipo persona, ya sea un cliente, sea un profesor,

51
00:03:09,150 --> 00:03:10,260
sea un alumno.

52
00:03:10,350 --> 00:03:15,690
Es decir, todos se tienen que registrar, modificar, eliminar de alguna forma similar o distinta,

53
00:03:15,750 --> 00:03:21,480
por ejemplo, persistiendo o almacenando no solamente los atributos en común, sino también los atributos

54
00:03:21,480 --> 00:03:26,970
propios de cada uno de estos tipos concreto y además en diferentes tabla de la base auto, por ejemplo.

55
00:03:27,150 --> 00:03:32,160
Es decir, podría variar la implementación de tu método, pero si tienes que estar presente en toda

56
00:03:32,160 --> 00:03:33,780
la clase cija es como un contrato.

57
00:03:33,930 --> 00:03:40,230
De hecho, cuando heredamos de una clase padre que es abstracta, estamos obligado a implementar estos

58
00:03:40,230 --> 00:03:42,600
métodos por contrato y como sintaxis.

59
00:03:42,600 --> 00:03:48,810
En Java, una clase abstracta se define con el modificador abstracto en la declaración de la clase donde

60
00:03:48,810 --> 00:03:52,170
va el nombre, por ejemplo APTRA public class se fijan.

61
00:03:52,230 --> 00:03:57,090
De esa forma se define una clase abstracta y una clase abstracta podría tener métodos abstracto que

62
00:03:57,090 --> 00:04:02,100
también lleva su modificador abstracta y son métodos que no tienen implementación, es decir, que no

63
00:04:02,100 --> 00:04:05,430
tiene cuerpo, no tiene llave, simplemente es una firma.

64
00:04:05,430 --> 00:04:09,930
El método o declaración del método y finaliza con los paréntesis y punto y coma.

65
00:04:10,020 --> 00:04:14,820
La implementación la llave la tienen que implementar la clase concretas, las clases hijas.

66
00:04:14,940 --> 00:04:20,490
Pero también una clase abstracta puede tener métodos con implementación y también métodos sin implementación,

67
00:04:20,610 --> 00:04:25,950
o incluso una clase abstracta podría no tener métodos abstracto y solamente se define como abstracta

68
00:04:26,010 --> 00:04:28,470
por un tema de diseño, por un tema de concepto.

69
00:04:28,530 --> 00:04:33,520
Pero si cuando una clase al menos tiene un método abstracto, la clase tiene que ser abstracta.

70
00:04:33,750 --> 00:04:38,820
Veamos otro ejemplo elemento formulario bueno, cuando trabajamos en HTML en una aplicación web.

71
00:04:39,030 --> 00:04:42,840
Bueno, si no han visto HTML, no se preocupen, solamente algo conceptual.

72
00:04:42,960 --> 00:04:49,740
Por ejemplo, trabajamos con input o con entradas del tipo texto, pero también del tipo password para

73
00:04:49,740 --> 00:04:51,180
ocultar el contenido.

74
00:04:51,330 --> 00:04:55,620
También litas seleccionable o combobox se boxes, radio putón.

75
00:04:55,710 --> 00:04:59,550
En fin, son varios tipos de elemento y también textarea para colocar.

76
00:04:59,700 --> 00:05:01,620
Un gran contenido de texto.

77
00:05:01,780 --> 00:05:07,320
Entonces cada uno de esto tiene distinta forma, pero tienen en común todos son elementos, formularios.

78
00:05:07,470 --> 00:05:13,620
Además, tienen un tipo, tienen un valor y un nombre del campo, pero cada uno se va a renderizar o

79
00:05:13,620 --> 00:05:15,810
dibujar en el HTML de forma distinta.

80
00:05:16,000 --> 00:05:16,770
Entonces, claro.

81
00:05:16,860 --> 00:05:25,560
Por ejemplo, el elemento del tipo select o del tipo check boxes, o del tipo input text o del tipo

82
00:05:25,650 --> 00:05:26,640
radio putón.

83
00:05:26,790 --> 00:05:31,230
En fin, si tienes que dibujar con su propia implementación, entonces no es algo que se pueda reutilizar

84
00:05:31,230 --> 00:05:34,800
del padre, porque siempre se van a dibujar de forma distinta.

85
00:05:34,920 --> 00:05:36,600
El método tiene que ser abstracto.

86
00:05:36,840 --> 00:05:40,530
Otro ejemplo figura geométrica, un círculo cuadrado, un triángulo.

87
00:05:40,680 --> 00:05:42,090
A todo se le calcula el área.

88
00:05:42,170 --> 00:05:47,280
Todos tienen perímetro y todos se pueden dibujar en la pantalla, pero cada uno lo puede hacer de forma

89
00:05:47,280 --> 00:05:47,790
distinta.

90
00:05:47,850 --> 00:05:53,100
Se fijan, pero todos tienen algo en común que son figuras geométricas y son parte de una jerarquía

91
00:05:53,100 --> 00:05:53,520
de clase.

92
00:05:53,700 --> 00:05:59,490
Otro ejemplo también mamiferos podría tener atributos en común, por ejemplo, el hábitat, el peso,

93
00:05:59,580 --> 00:06:00,330
el color.

94
00:06:00,450 --> 00:06:02,760
Nombre científico bueno y mucho más.

95
00:06:02,880 --> 00:06:04,320
La altura, el largo.

96
00:06:04,440 --> 00:06:04,770
En fin.

97
00:06:04,860 --> 00:06:07,140
Pero todo tiene comportamiento en común.

98
00:06:07,230 --> 00:06:09,060
Por ejemplo, hace ruido.

99
00:06:09,150 --> 00:06:11,790
Comer, dormir, moverse, correr.

100
00:06:11,940 --> 00:06:12,360
En fin.

101
00:06:12,510 --> 00:06:14,280
Pero cada uno lo implementa de forma distinta.

102
00:06:14,370 --> 00:06:16,290
Algunos mamíferos son mucho más lento.

103
00:06:16,350 --> 00:06:17,730
Otros son mucho más rápido.

104
00:06:17,820 --> 00:06:20,940
La forma de comer es distinta y lo que comen es diferente.

105
00:06:21,150 --> 00:06:23,610
La forma de hacer ruido, comunicarse es diferente.

106
00:06:23,760 --> 00:06:26,580
Algunos rugen, otros gruñen, otros ladran.

107
00:06:26,670 --> 00:06:28,760
En fin, hay distintas formas de mamífero.

108
00:06:28,820 --> 00:06:36,030
Bueno, hay beret, tipo de felinos caninos y entre los felinos tenemos varios tipos también o implementaciones

109
00:06:36,030 --> 00:06:38,580
concreta como el león, el tigre.

110
00:06:38,640 --> 00:06:45,810
Pero también tenemos los gatos que son mascotas, gatos salvajes o silvestres como el lince canino,

111
00:06:46,110 --> 00:06:48,990
perro, lobo, zorro y así.

112
00:06:49,230 --> 00:06:54,840
Bueno, y al final eso es la herencia con clases abstracta puede representar algo abstracto y puede

113
00:06:54,840 --> 00:06:59,940
reunir varias implementaciones concreta que realizan el mismo comportamiento, los mismos métodos,

114
00:07:00,000 --> 00:07:01,440
pero cada uno de forma distinta.

115
00:07:01,600 --> 00:07:03,800
Bien, nos vemos en la siguiente clase.
