1
00:00:00,150 --> 00:00:00,730
Bienvenidos.

2
00:00:00,750 --> 00:00:05,130
Continuamos con esta segunda parte del ejemplo de clases abstracta con los valedores.

3
00:00:05,310 --> 00:00:11,280
La idea implementar una clase validador abstracta y también su implementación en clases cija y cada

4
00:00:11,280 --> 00:00:13,200
una debe implementar de forma distinta.

5
00:00:13,290 --> 00:00:19,410
El método es válido para que se puedan validar diferentes reglas, diferentes implementaciones.

6
00:00:19,580 --> 00:00:23,010
Bien, vamos a comenzar primero cerrando algunas clases archivos.

7
00:00:23,070 --> 00:00:26,070
Por ejemplo, por ejemplo for lo dejamos.

8
00:00:26,430 --> 00:00:35,550
Vamos a cerrar opción también clic derecho cerrar select form text area input y elemento form.

9
00:00:35,610 --> 00:00:36,300
Lo podemos dejar.

10
00:00:36,360 --> 00:00:39,810
Dejamos elementos for ejemplo for y comenzamos.

11
00:00:40,260 --> 00:00:41,410
Lo primero es crear un package.

12
00:00:42,270 --> 00:00:43,410
Entonces nos vamos acá.

13
00:00:43,890 --> 00:00:45,780
New package.

14
00:00:46,170 --> 00:00:46,490
Entonces.

15
00:00:46,500 --> 00:00:47,460
Dentro de form.

16
00:00:47,610 --> 00:00:52,100
En paralelo a elementos validador.

17
00:00:52,740 --> 00:00:52,950
Bien.

18
00:00:53,040 --> 00:00:55,470
Acá están nuestros componentes de validación.

19
00:00:55,560 --> 00:00:57,990
Vamos a partir primero con la clase abstracta.

20
00:00:58,080 --> 00:00:58,320
Entonces.

21
00:00:58,320 --> 00:01:03,090
Clic derecho new yaba class validador.

22
00:01:04,120 --> 00:01:13,630
Bien, en el package for validador, entonces lo primero es un public o abstract public con un método

23
00:01:13,630 --> 00:01:14,140
público.

24
00:01:14,650 --> 00:01:22,780
Pero el método más importante para validar es válido, es un método abstracto, entonces abstracto va

25
00:01:22,780 --> 00:01:23,770
a retornar un bullían.

26
00:01:26,330 --> 00:01:33,830
Es válido y el valor del tipo string valor, es decir, el valor de campo de cada campo, cada campo

27
00:01:33,830 --> 00:01:34,430
tiene un valor.

28
00:01:34,570 --> 00:01:36,560
Es lo que vamos a validar y listo.

29
00:01:36,680 --> 00:01:42,110
Ahí está nuestro método abstracto, pero también vamos a tener un atributo con el mensaje error.

30
00:01:42,170 --> 00:01:48,220
Para ese valor, por ejemplo, el campo no puede ser vacío, no puede ser nulo el formato, el correo

31
00:01:48,240 --> 00:01:49,640
incorrecto, en fin.

32
00:01:53,930 --> 00:02:00,350
Protected Estric mensaje la idea de que cada clase válida ahora cada validador implemente este mensaje.

33
00:02:00,440 --> 00:02:06,140
Los ortiva con su propio texto, entonces cada clase hija va a tener este atributo idéntico al padre,

34
00:02:06,200 --> 00:02:09,140
igual con su valor y también cología transceptor.

35
00:02:09,290 --> 00:02:13,700
Pero en la clase padre elige transceptor va a ser abstracto en la clase hija.

36
00:02:13,790 --> 00:02:17,600
Se van a implementar para poder obtener y modificar este valor.

37
00:02:18,320 --> 00:02:19,120
El mensaje error.

38
00:02:22,820 --> 00:02:26,000
Entonces voy Zeth mensaje.

39
00:02:36,680 --> 00:02:39,380
Y qué mensaje se fijan?

40
00:02:39,470 --> 00:02:47,150
Una clase súper abstracta con el atributo mensaje protegido y tres métodos abstracto, gué transceptor

41
00:02:47,300 --> 00:02:49,190
y para validar me comenzemos.

42
00:02:49,280 --> 00:02:53,240
Vamos a crear esta clase concreta también en el package validador.

43
00:02:54,550 --> 00:03:01,450
Yaba Klauss no nulo, defecan super simple extend

44
00:03:04,600 --> 00:03:06,280
de validador, listo.

45
00:03:06,310 --> 00:03:06,970
Cómo está?

46
00:03:07,090 --> 00:03:07,800
Enemigo opaca.

47
00:03:08,050 --> 00:03:08,860
No hay que importar.

48
00:03:08,980 --> 00:03:10,750
Solamente tenemos que implementar los métodos.

49
00:03:11,940 --> 00:03:13,110
Se fijan, ok.

50
00:03:15,050 --> 00:03:24,980
Bien, vamos a tener el atributo protector Strength mensajea igual que el padre, pero la diferencia

51
00:03:25,760 --> 00:03:27,350
que va a tener un valor.

52
00:03:32,790 --> 00:03:33,900
El campo no puede ser nulo.

53
00:03:34,110 --> 00:03:35,970
Te fijan acá en el set?

54
00:03:36,090 --> 00:03:36,870
Como siempre.

55
00:03:37,770 --> 00:03:38,520
Punto.

56
00:03:38,620 --> 00:03:43,910
Mensaje igual mensaje lo asigna y acá lo retorna.

57
00:03:45,300 --> 00:03:47,130
Mensaje hay implementado.

58
00:03:47,460 --> 00:03:48,630
Ahora tengo que implementar.

59
00:03:48,720 --> 00:03:51,990
Es válido, pero en realidad es súper fácil, súper simple.

60
00:03:52,560 --> 00:03:53,490
Una expresión plena.

61
00:03:54,730 --> 00:04:02,830
Entonces, paréntesis, si el valor que se pasa por argumento este de acá valor se distinto, nulo y

62
00:04:02,970 --> 00:04:03,290
listo.

63
00:04:03,550 --> 00:04:04,710
Entonces es válido.

64
00:04:04,800 --> 00:04:07,350
Si es distinto null se distinto, null barato, una true.

65
00:04:07,440 --> 00:04:11,490
Por lo tanto es válido si no Barretto en Rafols y va a ser inválido.

66
00:04:11,610 --> 00:04:15,800
Hoy tenemos la primera clase, vamos con la segunda que es requerido validador.

67
00:04:16,460 --> 00:04:17,430
Entonces neuvo.

68
00:04:18,850 --> 00:04:19,660
Yeva class

69
00:04:22,420 --> 00:04:24,420
requerido validador okei.

70
00:04:28,430 --> 00:04:35,590
Validador perfecto, implementemos la clase, el método, los métodos, implementar métodos o.

71
00:04:36,410 --> 00:04:37,130
Lo mismo

72
00:04:42,530 --> 00:04:46,490
mensaje, igual el campo requerido

73
00:04:50,560 --> 00:04:52,340
a casa asigna.

74
00:04:56,640 --> 00:04:57,600
Y acá lo devuelven.

75
00:04:59,800 --> 00:05:04,840
Y acabaríamos bien cuando requerido, al menos tiene que validar también que sea distinto, nulo.

76
00:05:04,930 --> 00:05:08,140
Por lo tanto, va a ser parecido a esto.

77
00:05:08,380 --> 00:05:09,890
Si valor es distinto, nulo.

78
00:05:10,030 --> 00:05:13,270
Por lo tanto es prácticamente lo mismo.

79
00:05:13,360 --> 00:05:14,680
Pero además que tenga un largo.

80
00:05:17,830 --> 00:05:27,190
Entonces con el operador and valor punto link dice que será bueno, primero que es distinto, nulo porque

81
00:05:27,190 --> 00:05:27,880
sea nulo.

82
00:05:28,000 --> 00:05:31,150
Al invocar el link va a lanzar un pulpo interceptor.

83
00:05:31,390 --> 00:05:36,370
Entonces lo primero que sea distinto, nulo y lo segundo, que este estric tenga contenido.

84
00:05:36,520 --> 00:05:40,090
Es decir, hago un texto con un largo mayor que cero.

85
00:05:41,290 --> 00:05:44,860
Se fijan superfácil, ahora, otra alternativa.

86
00:05:44,950 --> 00:05:51,940
Quizá un poco más automática también, simplemente podríamos utilizar el método Is empty o is blank

87
00:05:52,060 --> 00:05:54,310
del string, pero con esto no asegura mortero.

88
00:05:54,490 --> 00:06:00,400
De esta forma, si colocamos valor, punto, esto no es necesario que lo hagan solamente para explicarlo,

89
00:06:00,550 --> 00:06:02,620
mostrarlo, aunque ya lo hemos visto.

90
00:06:02,740 --> 00:06:05,440
Se fijan tenemo is empty y también is blank.

91
00:06:05,590 --> 00:06:11,950
La diferencia que is blank, aparte de validar que no sea vacío, también válida, que no sea un espacio

92
00:06:11,950 --> 00:06:17,200
en blanco, es decir, que no tenga espacio, porque podremos colocar como carácter un espacio simplemente,

93
00:06:17,290 --> 00:06:18,100
pero es un carácter.

94
00:06:18,190 --> 00:06:24,460
Ese carácter espacio, por lo tanto sería sería distinto, vacío, pero un espacio en blanco o espacio

95
00:06:24,460 --> 00:06:29,080
simplemente y el is empty solamente que tenga caracteres, nada más.

96
00:06:29,700 --> 00:06:35,740
Ese es plac un poco más completo porque incluye el iciente, pero tendríamos que preguntarse distinto

97
00:06:35,830 --> 00:06:36,760
se distinto.

98
00:06:37,090 --> 00:06:39,280
Blank o is mt la negación.

99
00:06:39,760 --> 00:06:44,770
Pero bien, voy a dejar este último número valedor.

100
00:06:44,890 --> 00:06:46,150
Es decir, validar que sea un número.

101
00:06:46,690 --> 00:06:51,130
Entonces new lleba class número validador.

102
00:06:55,380 --> 00:07:00,270
Extends Validador bien implementamos.

103
00:07:09,650 --> 00:07:12,530
Mensaje El campo de ser número.

104
00:07:18,170 --> 00:07:24,890
Bien importante que siempre el atributo mensaje sea idéntico a como está definido en el Padre.

105
00:07:24,960 --> 00:07:32,420
ÂQuÃ mensaje tal cual mensaje de tipo string protected ÂQuÃ tan bien protected mensaje?

106
00:07:33,370 --> 00:07:35,070
Y acá también con su valor.

107
00:07:36,160 --> 00:07:36,790
Mismo nombre.

108
00:07:45,830 --> 00:07:47,030
Cómo valíamos acá?

109
00:07:47,210 --> 00:07:51,470
Bueno, contrae y Ketch, como pasa por argumento, un valor string, pero tiene que validar que este

110
00:07:51,470 --> 00:07:54,350
valor del tipo string sea un dígito o sea un número.

111
00:07:54,410 --> 00:07:57,740
Para eso utilizamos integer punto parse int.

112
00:07:57,860 --> 00:08:01,190
Por lo tanto, tratamos de convertir a un entero este string.

113
00:08:01,340 --> 00:08:04,100
Y si es un número, lo va a convertir sin ningún problema.

114
00:08:04,190 --> 00:08:06,830
Pero si es otro carácter, va a lanzar una excepción.

115
00:08:06,890 --> 00:08:11,720
Entonces, con un trait catch podríamos validar y saber si es un número o no?

116
00:08:11,870 --> 00:08:13,160
Entonces con un Troi.

117
00:08:13,250 --> 00:08:15,360
Y si todo sale bien, retornamos un true.

118
00:08:15,530 --> 00:08:18,350
Si falla con el catch retornamos un falso.

119
00:08:18,710 --> 00:08:21,830
Se fijan entonces por acá un try

120
00:08:24,590 --> 00:08:26,840
integer punto parse int.

121
00:08:27,020 --> 00:08:27,860
Pasamos valor.

122
00:08:29,510 --> 00:08:32,780
Solamente tratamos de convertir este valor a un entero.

123
00:08:33,530 --> 00:08:34,520
Si todo sale bien.

124
00:08:34,670 --> 00:08:34,970
Perdón.

125
00:08:35,100 --> 00:08:37,100
Acá Rotondo.

126
00:08:41,430 --> 00:08:41,820
Catch.

127
00:08:43,900 --> 00:08:49,420
Number format es hecha la excepción, si sale mal, retornamos forzo.

128
00:08:50,450 --> 00:08:52,400
Entonces voy a cortar este ratón.

129
00:08:52,580 --> 00:08:53,250
Lo dejamos acá.

130
00:08:56,180 --> 00:08:56,670
Y listo.

131
00:08:56,760 --> 00:09:01,810
Ahí lo tenemos también bastante simple, con un troi catch integer par Saint.

132
00:09:02,010 --> 00:09:07,620
Si todo sale bien, lo convierte a un entero solamente para validar Ratona Mostruo.

133
00:09:07,830 --> 00:09:12,180
Si no es un entero, va a lanzar un rambert format deception y retornemos forzo.

134
00:09:12,450 --> 00:09:18,330
Por lo tanto, no sería válido y eso sería ahora faltaría implementar y Maile validador.

135
00:09:18,420 --> 00:09:22,980
Ya lo dejamos para la siguiente clase y también podría implementar largo validador.

136
00:09:23,100 --> 00:09:28,650
Es decir, que el valor de un campo tenga cierta cantidad de caracteres dentro de un rango, un mínimo

137
00:09:28,650 --> 00:09:29,250
y un máximo.

138
00:09:29,380 --> 00:09:31,470
Bien, continuamos en la siguiente clase.
