1
00:00:00,180 --> 00:00:04,470
Bien, comencemos, vamos a cerrar todas las clases y también vamos a cerrar el proyecto.

2
00:00:04,710 --> 00:00:10,770
Cerrar todo, nos vamos a Foil Cloud Project como siempre, y vamos a crear un nuevo proyecto New Project.

3
00:00:11,070 --> 00:00:12,150
Como siempre, yaba.

4
00:00:12,240 --> 00:00:13,050
Siguiente.

5
00:00:14,150 --> 00:00:22,510
Siguiente y ennombre proyecto p o clases abstractas finalizar.

6
00:00:23,420 --> 00:00:26,330
Ven, partimos primero con los pacato acá.

7
00:00:26,630 --> 00:00:31,550
En ese recé vamos a crear un opacados por punto a Guzmán.

8
00:00:32,720 --> 00:00:42,360
En nombre proyecto o clases abstracta punto for de formulario ok.

9
00:00:43,550 --> 00:00:45,690
Bueno, incluso el peor.

10
00:00:45,710 --> 00:00:48,220
Clases abstracta también podrían ser su pacato.

11
00:00:48,260 --> 00:00:54,020
Por ejemplo peó punto, clases abstracta punto en fin o clases punto abstractas.

12
00:00:54,110 --> 00:00:59,180
Pero lo puse todo junto para simplificar, pero como lo quiera manejar bien, vamos a crear otro package

13
00:00:59,420 --> 00:01:00,270
sobre form.

14
00:01:00,380 --> 00:01:04,400
Entonces seleccionamos el package click derecho new package.

15
00:01:05,150 --> 00:01:06,710
Vamos a colocar elementos

16
00:01:09,590 --> 00:01:10,210
perfecto.

17
00:01:10,960 --> 00:01:14,250
Entonces tenemos dos рамках Ford y elementos en Ford.

18
00:01:14,340 --> 00:01:17,190
Vamos a dejar la clase con el método Main y elementos.

19
00:01:17,280 --> 00:01:23,520
Vamos a dejar nuestras clases de formulario que representan campo de formulario cesor estapa catch elementos.

20
00:01:24,540 --> 00:01:28,380
Vamos a crear una nueva clase y vamos a comenzar esta clase abstracta

21
00:01:30,840 --> 00:01:31,680
elemento form.

22
00:01:32,940 --> 00:01:35,820
Entonces lo primero, indicar que es una clase abstracta.

23
00:01:35,940 --> 00:01:42,660
Entonces por acá antes del public ser Anteo o también puede después del public es un modificador, se

24
00:01:42,660 --> 00:01:42,980
fijan.

25
00:01:43,090 --> 00:01:43,620
Da lo mismo.

26
00:01:43,710 --> 00:01:45,330
Puede ir antes tal como está.

27
00:01:45,960 --> 00:01:50,700
O también después del público se fijan exactamente igual.

28
00:01:50,750 --> 00:01:56,640
Pero es mejor antes, porque a la vista queda mejor a una incertidumbre, a una clase abstracta.

29
00:01:57,030 --> 00:02:02,610
Se fijan, entonces mejor la dejamos acá, pero netamente visual.

30
00:02:03,470 --> 00:02:06,420
Bien, entonces una clase abstracta con un método abstracto.

31
00:02:06,540 --> 00:02:12,120
Y lo primero que vamos a definir entonces un public, pero también abstracto, porque un método abstracto

32
00:02:16,020 --> 00:02:23,880
para retornar un string a dibujar html y listo, se fijan punto y coma.

33
00:02:24,000 --> 00:02:25,350
No va con llaves.

34
00:02:25,560 --> 00:02:30,420
Es decir, si colocamos llave sería un error porque estamos indicando que es un método abstracto.

35
00:02:30,480 --> 00:02:33,540
Por ejemplo, si colocamos llave, marca error, se fijan.

36
00:02:34,320 --> 00:02:38,730
Un método abstracto no puede tener un body, un cuerpo, el cuerpo, la implementación la tiene que

37
00:02:38,730 --> 00:02:39,960
tener las clases hijas.

38
00:02:40,350 --> 00:02:41,770
Entonces solamente punto y coma.

39
00:02:42,060 --> 00:02:47,130
Entonces es muy importante solamente para indicar un protocolo de implementación en la jerarquía.

40
00:02:47,190 --> 00:02:54,150
Un diseño, es decir, toda clase hija elemento va a implementar su propia forma de renderizar en el

41
00:02:54,150 --> 00:02:56,880
HTML con sus etiquetas y es lo que vamos a ver.

42
00:02:57,270 --> 00:03:01,200
Otro tema importante que una clase que tiene un método tracta.

43
00:03:01,290 --> 00:03:06,630
Un método abstracto como esta está obligada a hacer una clase abstracta, porque por ejemplo, si quito

44
00:03:06,720 --> 00:03:13,650
en la clase la palabra abstracta marca un error, porque al tener un método abstracto requiere que la

45
00:03:13,650 --> 00:03:16,740
clase sea abstracta siempre.

46
00:03:16,950 --> 00:03:21,840
Pero una clase abstracta podría tener métodos que no ser abstracto, es decir, al revés, se puede

47
00:03:21,930 --> 00:03:23,100
solamente por diseño.

48
00:03:23,220 --> 00:03:28,530
En el fondo, una clase abstracta sin método abstracto evita que se quede instanciar y la podrían utilizar

49
00:03:28,530 --> 00:03:29,580
solamente para Laurencia.

50
00:03:29,670 --> 00:03:36,540
Pero bien, continuemos entonces por acá vamos a tener atributos protected protegido

51
00:03:39,060 --> 00:03:40,360
valor protegido.

52
00:03:40,380 --> 00:03:40,710
Por qué?

53
00:03:40,740 --> 00:03:46,440
Porque la idea de que la clase cija en el método dibujar HTML puede utilizar estos atributos, lo pueda

54
00:03:46,530 --> 00:03:51,930
acceder sin necesidad de implementar el método GET, por ejemplo, ya que lo vamos a utilizar prácticamente

55
00:03:52,110 --> 00:03:53,790
dentro de la clases hijas.

56
00:03:53,900 --> 00:03:59,160
Bueno, y también vamos a requerir el método set valor para poder asignar el valor de defuera un método

57
00:03:59,160 --> 00:03:59,670
público.

58
00:04:04,620 --> 00:04:05,410
El nombre.

59
00:04:05,710 --> 00:04:12,310
Entonces nombre campo y el flor de campo son dos atributos que son en común a cualquier input o elemento

60
00:04:12,310 --> 00:04:13,690
el formulario en HTML.

61
00:04:13,830 --> 00:04:18,720
Bueno, no se preocupen si no han visto nunca HTML, si no han trabajado con aplicaciones web.

62
00:04:18,820 --> 00:04:19,900
En fin, da lo mismo.

63
00:04:20,020 --> 00:04:24,550
Esto es solamente un ejemplo para demostrar el polimorfismo en la herencia.

64
00:04:24,640 --> 00:04:27,340
En clase es abstracta y como simplemente forma distinta.

65
00:04:27,550 --> 00:04:29,770
Ahora es un ejemplo completo de toda forma.

66
00:04:29,830 --> 00:04:35,650
Lo pueden implementar en un proyecto web, por ejemplo en una aplicación web con Java, con Starlet,

67
00:04:35,650 --> 00:04:37,720
con JSP o algún framework.

68
00:04:37,900 --> 00:04:45,550
Los siguientes constructores entonces por acá vamos a crear generar un constructor, entonces acá constructor

69
00:04:45,700 --> 00:04:54,160
primero vacío sin nada y además otro más por acá y genere constructor solamente con el nombre, sin

70
00:04:54,160 --> 00:04:55,270
el valor ok.

71
00:04:55,810 --> 00:04:59,170
Y este de acá elemento form 10.

72
00:05:00,190 --> 00:05:01,870
Es decir, va a llamar a este constructor.

73
00:05:02,270 --> 00:05:08,350
Bueno, después vamos a ocupar este vacío para inicializar los objetos del tipo list, los ArrayList,

74
00:05:08,500 --> 00:05:14,200
los mensajes de error, por ejemplo, la lista con los textos terror y también la lista con los valores

75
00:05:14,440 --> 00:05:15,160
un array list.

76
00:05:15,190 --> 00:05:21,130
Pero después vamos a ver entonces por eso lo dejé creado y acá simplemente lo llamamos para inicializar

77
00:05:21,130 --> 00:05:21,790
estas listas.

78
00:05:22,000 --> 00:05:23,260
Pero por ahora no se preocupen.

79
00:05:23,410 --> 00:05:24,280
Después lo vamos a ver.

80
00:05:24,430 --> 00:05:27,280
Entonces por eso implemente estos dos constructores.

81
00:05:27,760 --> 00:05:32,800
Entonces uno para asignar el nombre de las listas que faltaría el valor.

82
00:05:32,890 --> 00:05:39,700
El valor lo tengo que al final de alguna forma, por ejemplo, con el método set generated buscamos

83
00:05:39,820 --> 00:05:42,720
set solamente set valor.

84
00:05:42,850 --> 00:05:43,360
Nada más.

85
00:05:44,320 --> 00:05:50,020
Entonces el nombre por constructor, el valor vía método set y nada más, porque tanto el valor como

86
00:05:50,020 --> 00:05:53,680
el nombre lo vamos a mostrar en el dibujar html acá.

87
00:05:53,950 --> 00:05:57,880
Por lo tanto, el GET no sería necesario un método público en get no necesario.

88
00:05:57,910 --> 00:06:02,740
Entonces por eso también logi protected sean protegidos no implementarlos, quieten etcétera.

89
00:06:02,830 --> 00:06:04,210
Excepto el set valor.

90
00:06:04,300 --> 00:06:04,870
Nada más.

91
00:06:05,170 --> 00:06:06,790
Es decir, que no sean de acceso público.

92
00:06:06,970 --> 00:06:08,800
Aunque igual depende de nuestro diseño.

93
00:06:08,830 --> 00:06:14,430
Podríamos implementar el ticket para el valor o para nombre, pero no es tan necesario aquí.

94
00:06:14,440 --> 00:06:14,970
Faltaría.

95
00:06:15,040 --> 00:06:18,610
Bueno, faltaría la lista de errores y la lista de valedores.

96
00:06:18,700 --> 00:06:20,380
Pero eso después lo vamos a implementar.

97
00:06:20,680 --> 00:06:21,850
Por ahora quedamos hasta acá.

98
00:06:22,000 --> 00:06:27,880
Ya tenemos nuestra clase Padre abstracta elemento form y continuamos lo siguiente clase creando las

99
00:06:27,880 --> 00:06:33,190
clases hijas valga la redundancia el input form y también el text areas form.

100
00:06:33,280 --> 00:06:33,940
Nos vemos.
