1
00:00:00,270 --> 00:00:04,920
Continuamos con la interfases en Yaba, pero es una introducción porque desplomo hacer más en detalle

2
00:00:04,960 --> 00:00:06,600
solamente para este ejemplo.

3
00:00:06,720 --> 00:00:10,860
Así que no voy a entrar mucho en detalle tampoco no explicar tanta profundidad de.

4
00:00:11,400 --> 00:00:17,880
Por ahora solamente lo básico para poder comprender este cambio o mejora que vamos a realizar usando

5
00:00:17,880 --> 00:00:18,450
la interfaz.

6
00:00:18,720 --> 00:00:25,050
Bueno, resumiendo, una interfaz es para un diseño propone un diseño, es decir, que clases implementen

7
00:00:25,050 --> 00:00:28,230
comportamiento y tiene una diferencia con la clase abstracta.

8
00:00:28,360 --> 00:00:31,050
Bueno, ambos pueden tener métodos abstractos.

9
00:00:31,140 --> 00:00:35,760
Una interfaz tiene método abstracto, aunque no se coloca la palabra abstracta, pero son métodos sin

10
00:00:35,760 --> 00:00:40,590
implementar y estos métodos lo tienen que implementar las clases que implementan esta interfaz.

11
00:00:40,710 --> 00:00:43,050
Pero entonces, cuál es la diferencia con una clase abstracta?

12
00:00:43,200 --> 00:00:47,040
Simple, una clase abstracta, además del método del comportamiento.

13
00:00:47,100 --> 00:00:54,600
También le dice a los objetos lo que son, es decir, son elementos formulario, son valedores, es

14
00:00:54,600 --> 00:00:56,580
decir, son parte de una jerarquía de clases.

15
00:00:56,700 --> 00:01:01,380
Pero también dice lo que hacen, qué comportamiento, qué métodos tienen que implementar eso de la clase

16
00:01:01,380 --> 00:01:02,790
abstracta y el que hemos visto.

17
00:01:02,880 --> 00:01:05,220
Pero la interfaces da lo mismo lo que son.

18
00:01:05,340 --> 00:01:11,370
Pueden ser variadores, pueden ser elemento de formulario, puede ser un automóvil, en fin, cualquier

19
00:01:11,370 --> 00:01:16,410
tipo objeto, pero agrupa estos objetos, estos tipos, bajo un mismo comportamiento.

20
00:01:16,530 --> 00:01:19,110
Entonces no hay una relación de parentesco, no hay una relación familiar.

21
00:01:19,110 --> 00:01:24,240
Solamente lo que lo une es lo que hacen el método o el comportamiento que se le conoce como contrato

22
00:01:24,240 --> 00:01:24,990
de implementación.

23
00:01:25,170 --> 00:01:28,150
Por poner un ejemplo bien simple un avión vuela, no?

24
00:01:28,170 --> 00:01:30,480
Cierto, un helicóptero vuela perfecto.

25
00:01:30,570 --> 00:01:32,790
Ambos son vehículos y están relacionados.

26
00:01:32,790 --> 00:01:39,900
Quizá hay un parentesco, pero un murciélago o un ave, una gaviota, un pelícano, un halcón también

27
00:01:39,900 --> 00:01:40,230
vuelan.

28
00:01:40,320 --> 00:01:43,920
Se fijan el mismo comportamiento en el avión, pero son Cosac objeto.

29
00:01:43,920 --> 00:01:45,420
Nada que ver, cosa distinta.

30
00:01:45,600 --> 00:01:49,770
Bueno, a este comportamiento, el método de la interfaz volar.

31
00:01:49,890 --> 00:01:56,130
Entonces un avión implemente el ITER, fabular, implemente el método una gaviota también un pelícano

32
00:01:56,130 --> 00:02:00,270
también un insecto también vuela y son cosas completamente diferentes.

33
00:02:00,390 --> 00:02:02,160
Bueno, sin más vamos a implementarla.

34
00:02:02,880 --> 00:02:08,730
Entonces, para dar un orden en validador, vamos a crear un package para crear esta interfaz para guardarla.

35
00:02:10,080 --> 00:02:13,530
Message Ok, mensaje y acá la interfaz.

36
00:02:15,350 --> 00:02:20,300
En vez de clase colocamos si lleva clase, ya colocamos interface o interfaz.

37
00:02:20,390 --> 00:02:24,100
Le vamos a llamar mensaje formateado.

38
00:02:26,150 --> 00:02:32,630
También vamos a ver que los nombre de interface por lo general terminan en able o en ible formato table

39
00:02:32,690 --> 00:02:37,610
ejecutable porque realiza un comportamiento acción contable comparable.

40
00:02:37,700 --> 00:02:41,660
Si se fija la interfaz de Java comparable para comprar objeto, se fijan.

41
00:02:41,750 --> 00:02:43,160
Nombre comparable.

42
00:02:43,280 --> 00:02:45,020
Acá le vamos a llamar mensaje.

43
00:02:45,620 --> 00:02:47,150
Pero no es que tenga que ser así.

44
00:02:47,240 --> 00:02:53,900
También le pongo locar mensaje, formato o formatear, pero típicamente terminan enable o nible y muchas

45
00:02:53,900 --> 00:02:58,650
veces se le coloca la mayúscula para indicar que es una interfaz y mensaje formatear.

46
00:02:59,820 --> 00:03:02,010
Y mayúscula de interfaz.

47
00:03:02,220 --> 00:03:06,540
Pero bien, no, jamás de esa forma es completamente abstracto.

48
00:03:06,690 --> 00:03:07,920
Métodos sin implementar.

49
00:03:08,070 --> 00:03:15,060
Entonces, la idea que implementa el método GTD, ÂQuÃ mensaje formateado Vitolo de comentar acÃ.

50
00:03:15,210 --> 00:03:18,180
Solamente lo vamos a comentar para que lo vean.

51
00:03:18,810 --> 00:03:19,440
Listo.

52
00:03:19,530 --> 00:03:20,460
Voy a copiar esto.

53
00:03:22,590 --> 00:03:23,310
Lo dejamos acá.

54
00:03:24,720 --> 00:03:30,640
Bien, entonces cualquier clase que implementa esta interfaz tiene que implementar este método.

55
00:03:31,020 --> 00:03:36,600
Public String get mensaje formateado con el parámetro argumento campo.

56
00:03:36,810 --> 00:03:37,410
Esto es lo primero.

57
00:03:37,500 --> 00:03:38,610
No se preocupen este error.

58
00:03:39,390 --> 00:03:43,770
Entonces vámonos a largo validador largo va a implementar esta interfaz.

59
00:03:44,370 --> 00:03:45,690
Entonces acá implemente

60
00:03:48,780 --> 00:03:50,550
mensaje formatear.

61
00:03:50,940 --> 00:03:53,310
Marque un error porque nos dice que tenemos que implementar este método.

62
00:03:53,400 --> 00:03:53,930
Se fijan.

63
00:03:54,450 --> 00:03:59,580
Implementa el método igual que una clase abstracta, es decir, una clase que implementa la interfaz

64
00:03:59,820 --> 00:04:00,630
con métodos.

65
00:04:00,780 --> 00:04:03,390
Esta clase está obligada a implementar el contrato.

66
00:04:03,510 --> 00:04:09,270
Es un contrato que tienen que cumplir para realizar alguna tarea, algún proceso o trabajo que justamente

67
00:04:09,390 --> 00:04:10,710
formatear el mensaje.

68
00:04:12,160 --> 00:04:20,080
Ok, aunque lo tenemos comentado, pero quería explicar que justamente la interfaz obliga a implementar

69
00:04:20,080 --> 00:04:20,650
este método.

70
00:04:21,860 --> 00:04:27,380
Vamos a copiar esto acá, aunque al final da lo mismo, podríamos de comentar de acá.

71
00:04:28,450 --> 00:04:29,580
Colocamos right?

72
00:04:29,980 --> 00:04:32,140
Porque estamos escribiendo y listo.

73
00:04:32,240 --> 00:04:33,130
Y esto lo eliminamos.

74
00:04:33,980 --> 00:04:37,030
DILIGEN Ahí tenemos el método y desaparecen todos los errores.

75
00:04:37,030 --> 00:04:37,510
Se fijan.

76
00:04:37,570 --> 00:04:40,150
Acá tenemos interfaz, mensaje, formato table.

77
00:04:40,540 --> 00:04:46,120
Implementas solamente el largo Valledor porque necesitamos dar un formato más exclusivo con el nombre

78
00:04:46,120 --> 00:04:46,540
campo.

79
00:04:46,780 --> 00:04:49,330
Entonces ahora nos vamos al elemento for.

80
00:04:50,330 --> 00:04:57,410
Y en vez de instance of largo es en tás of de la interfaz, pero como largo validador la implementa,

81
00:04:57,500 --> 00:05:01,400
largo validador va a caer acá y a formatear.

82
00:05:02,630 --> 00:05:05,660
Entonces, de esa forma, desacoplar o desacoplar?

83
00:05:06,320 --> 00:05:08,090
Una implementación concreta acá?

84
00:05:08,360 --> 00:05:10,370
Claro, porque tendremos que tener mucho.

85
00:05:10,460 --> 00:05:17,690
If it off Si tenemos VAR implementaciones o variadores que requieren este método mientras usamos una

86
00:05:17,690 --> 00:05:19,580
interfaz, es un solo if.

87
00:05:19,700 --> 00:05:25,040
Lo dejamos de forma genérica y cada implementación concreta tiene que implementar esta interfaz como

88
00:05:25,040 --> 00:05:25,820
largo validador.

89
00:05:26,060 --> 00:05:29,750
Entonces acá la interfaz mensaje y listo.

90
00:05:30,290 --> 00:05:31,100
Ese todo cambio.

91
00:05:31,700 --> 00:05:37,520
Entonces así podríamos tener varias clases validad horas concreta que implementa la interfaz y se van

92
00:05:37,520 --> 00:05:38,720
a formatear de esta forma.

93
00:05:39,780 --> 00:05:40,470
Vamos a probar.

94
00:05:47,150 --> 00:05:52,670
El campo clave debe tener un mínimo de este carácter y máximo dos se fijan que hay mucho más desacoplar

95
00:05:52,700 --> 00:05:54,200
el código mucho más limpio.

96
00:05:54,290 --> 00:06:00,580
Imagen Eriko no se amarra, no se acopla largo validador a la clase abstracta.

97
00:06:01,400 --> 00:06:09,830
Acá lo peor es acoplar acá también el cast sería de mensaje formatear le había falta cambiar eso de

98
00:06:09,890 --> 00:06:10,490
la interfaz.

99
00:06:11,150 --> 00:06:13,550
Entonces si es instancia de mensaje fórmate.

100
00:06:13,640 --> 00:06:20,270
L Entonces invocamos el método de la interfaz mensaje formateado independiente si la implementa largo

101
00:06:20,270 --> 00:06:21,950
validador o cualquier otra clase.

102
00:06:22,100 --> 00:06:25,790
Esa es la real esencia y característica de la interfaz.

103
00:06:25,880 --> 00:06:32,780
Hace que nuestro código sea mucho más genérico, modificable y desacoplar implementación concreta mucho

104
00:06:32,780 --> 00:06:33,320
más limpio.

105
00:06:33,410 --> 00:06:39,770
Pero bueno, no se preocupen porque igual vamos a ver después más ejemplo de interfaces y más detalle,

106
00:06:39,890 --> 00:06:44,780
como por ejemplo después vamos a ver que una interfaz soporta la implementación múltiple.

107
00:06:45,290 --> 00:06:49,940
Por ejemplo, una clase puede implementar varias interfaces separado por coma.

108
00:06:50,030 --> 00:06:55,790
A diferencia de la herencia, solamente en la herencia con stents puedo heredar de una sola, pero implementar

109
00:06:55,790 --> 00:06:58,610
interface puedo implementar varias separados por coma.

110
00:06:58,970 --> 00:07:00,020
Incluso lo vimos por ahí.

111
00:07:00,440 --> 00:07:08,870
Creo que List o ArrayList ArrayList si nos vemos acá, si nos vamos acá, por ejemplo, hereda siempre

112
00:07:08,870 --> 00:07:09,320
de una.

113
00:07:10,390 --> 00:07:17,260
Implementa List random klo nable se fija en Klo nable termina en Able.

114
00:07:18,260 --> 00:07:24,020
Ser realizable terminan enable y separado por coma, es decir, puede implementar varios interfaces

115
00:07:24,050 --> 00:07:26,120
porque son varios contrato igual que la vida real.

116
00:07:26,210 --> 00:07:31,250
Una persona puede ejercer mucho trabajo y cada trabajo va a ser un método, un comportamiento o una

117
00:07:31,250 --> 00:07:34,640
interfaz, aunque una interfaz tamé puede tener varios métodos asociado.

118
00:07:34,730 --> 00:07:40,430
Es decir, un contrato involucra varios métodos o actividades varié comportamiento que la clase, la

119
00:07:40,430 --> 00:07:41,750
instancia tienen que cumplir.

120
00:07:41,840 --> 00:07:48,050
Al final es comportamiento puro versus la clase abstracta de comportamiento, pero también jerarquía

121
00:07:48,140 --> 00:07:49,610
en lo que son y lo que hacen.

122
00:07:49,700 --> 00:07:52,700
La interfase solamente lo que hacen, no lo que son.

123
00:07:52,790 --> 00:07:57,950
Bueno, parece que me enrolle mucho y expliqué más de la cuenta de que quería, pero otra forma mejor

124
00:07:58,670 --> 00:07:59,500
elemento form.

125
00:08:00,720 --> 00:08:01,080
Perdón.

126
00:08:01,140 --> 00:08:02,250
Nos vamos a ejemplo.

127
00:08:04,450 --> 00:08:05,770
Vamos a colocar el arroba.

128
00:08:09,420 --> 00:08:11,040
Jondo y bueno.

129
00:08:11,160 --> 00:08:11,920
28.

130
00:08:13,810 --> 00:08:15,550
Faltan solamente largos, nada más.

131
00:08:16,420 --> 00:08:19,030
El campo clave de tener mínimo perfecto.

132
00:08:21,320 --> 00:08:23,690
Ya dice que Talitha está todo válido, sin errores.

133
00:08:23,720 --> 00:08:25,660
Bien, continuamos en la siguiente clase.
