1
00:00:00,180 --> 00:00:00,690
Bienvenidos.

2
00:00:00,720 --> 00:00:02,130
Continuamos con las interfaces.

3
00:00:02,220 --> 00:00:07,770
Vamos a ver el ejemplo de imprenta, así que vamos a cerrar todo, cerrar todo y vamos a cerrar también

4
00:00:07,860 --> 00:00:09,440
el proyecto Cloud Project.

5
00:00:10,290 --> 00:00:13,830
Bien, como siempre, nuevo proyecto, todo por defecto.

6
00:00:13,920 --> 00:00:14,930
Un proyecto de Java.

7
00:00:15,000 --> 00:00:17,280
Siguiente, siguiente.

8
00:00:17,370 --> 00:00:22,650
Y el nombre lo vamos a llamar P o interfases.

9
00:00:22,920 --> 00:00:24,390
Siguiente o Fenech.

10
00:00:25,440 --> 00:00:26,020
Estamos listos?

11
00:00:26,160 --> 00:00:27,150
Entonces, qué continúa?

12
00:00:27,210 --> 00:00:28,170
Bueno, los РАМКАХ.

13
00:00:28,680 --> 00:00:37,470
Entonces por acá, en ese recé como siempre new pacato por punto a Guzmán o el que quieren usar

14
00:00:40,650 --> 00:00:46,460
p o interfases nombre proyecto y le vamos a colocar también otro package imprenta.

15
00:00:47,730 --> 00:00:48,170
Listo.

16
00:00:48,420 --> 00:00:50,490
Ese sería el package base.

17
00:00:51,060 --> 00:00:57,860
Bien, entonces en este pack base imprenta vamos a crear una clase con el método Main, pero la vamos

18
00:00:57,860 --> 00:01:02,820
a dejar creada porque después vamos a implementar la vamos a utilizar con el método Main y continuamos

19
00:01:02,820 --> 00:01:04,350
también con nuestra clases.

20
00:01:04,440 --> 00:01:08,280
Entonces ejemplo imprenta.

21
00:01:13,880 --> 00:01:14,900
Bien, la dejamos ahí.

22
00:01:15,260 --> 00:01:17,900
Vamos a crear otro pacato por acá.

23
00:01:17,990 --> 00:01:23,510
New pacato dentro de imprenta modelo nuestra clase muelo.

24
00:01:24,370 --> 00:01:29,080
Bien, primero vamos a partir con una clase abstracta que le vamos a llamar hoja.

25
00:01:30,470 --> 00:01:35,600
Bueno, la idea de diseñar una aplicación con herencia, clases abstracta, alguna clase queren de hoja.

26
00:01:35,710 --> 00:01:39,500
Bueno, y después vamos a crear otra clase que no sean hojas.

27
00:01:39,590 --> 00:01:41,930
Y ahí es donde entra en juego las interfaces.

28
00:01:42,320 --> 00:01:42,890
Es muy importante.

29
00:01:42,890 --> 00:01:48,560
Concepto Las interfaces reúnen objetos que hacen lo mismo mediante un protocolo implementación.

30
00:01:48,890 --> 00:01:54,200
Entonces, hoja abstracta y listo.

31
00:01:54,530 --> 00:01:56,680
Estábamos implementar un atributo en común.

32
00:01:56,780 --> 00:01:58,880
Cualquier hoja tiene un contenido, un texto

33
00:02:02,300 --> 00:02:15,770
del tipo String contenido un método abstracto público string imprimir desde cualquier hoja se puede

34
00:02:15,770 --> 00:02:16,250
imprimir.

35
00:02:16,460 --> 00:02:19,710
Es el contrato de la clase padre abstracta hoja.

36
00:02:19,820 --> 00:02:20,060
Bien.

37
00:02:20,120 --> 00:02:23,510
También un constructor para poder pasar el contenido.

38
00:02:24,760 --> 00:02:28,000
Generate constructor joke.

39
00:02:28,950 --> 00:02:29,350
Y listo.

40
00:02:29,410 --> 00:02:34,690
Ahí tenemos nuestra clase, podremos implementar el método jet set de contenido en caso de que lo queramos

41
00:02:34,690 --> 00:02:39,940
utilizar, pero para el ejemplo vamos a utilizar el contenido dentro del imprimir cuando se imprima

42
00:02:39,940 --> 00:02:40,270
el objeto.

43
00:02:40,300 --> 00:02:43,240
Por lo tanto, el contenido no sería necesario para este ejemplo.

44
00:02:43,240 --> 00:02:43,930
Pero recuerden.

45
00:02:44,080 --> 00:02:45,640
De todas formas lo pueden implementar.

46
00:02:45,730 --> 00:02:47,440
Todo depende de nuestro diseño.

47
00:02:47,560 --> 00:02:50,710
No hay una única regla de oro que se aplique.

48
00:02:50,710 --> 00:02:53,980
Siempre va a depender el contexto de los requisitos.

49
00:02:54,070 --> 00:02:55,120
Regla de negocio.

50
00:02:55,210 --> 00:02:55,540
En fin.

51
00:02:55,660 --> 00:02:56,410
El diseño.

52
00:02:56,680 --> 00:03:00,370
Vamos a crear una clase hija que debe de hoja.

53
00:03:01,210 --> 00:03:01,660
Entonces.

54
00:03:01,660 --> 00:03:02,170
New.

55
00:03:03,560 --> 00:03:07,220
Le vamos a llamar informe perfecto.

56
00:03:07,730 --> 00:03:12,030
Extend Hoja, recuerdan?

57
00:03:12,200 --> 00:03:13,520
Está bien, es terror.

58
00:03:13,970 --> 00:03:22,010
Entonces, como siempre con clic derecho generate implementar método de la clase padre imprimir bien.

59
00:03:22,370 --> 00:03:24,170
Por qué sigue marcando error por el constructor?

60
00:03:24,260 --> 00:03:27,830
Recuerden que el padre tiene un constructor que pasa el contenido, nada más.

61
00:03:27,840 --> 00:03:30,110
Solamente el contenido no tiene un constructor vacío.

62
00:03:30,410 --> 00:03:33,830
Por lo tanto, informe está obligado a implementar este constructor.

63
00:03:34,370 --> 00:03:38,330
Entonces el derecho y genere constructor.

64
00:03:38,570 --> 00:03:39,650
Ahí lo tenemos, se fijan.

65
00:03:39,860 --> 00:03:41,930
Pero también como tienen contenido.

66
00:03:42,020 --> 00:03:46,160
Que lo hereda de hoja informe también tiene sus propios atributos.

67
00:03:46,190 --> 00:03:49,940
Por ejemplo, el autor del informe y también la persona que lo revisa.

68
00:03:57,800 --> 00:04:00,290
El revisor para este ejemplo del tipo String.

69
00:04:00,470 --> 00:04:08,000
Pero podría ser del tipo usuario, se fijan el usuario autor, el usuario revisor o del tipo rol también

70
00:04:08,120 --> 00:04:12,090
o persona con sus atributos propios, con el nombre lápiz o con el email.

71
00:04:12,170 --> 00:04:12,500
En fin.

72
00:04:12,560 --> 00:04:18,410
Pero para simplificar el ejemplo, para que no sea tan extenso y para poder explicar el tema de interfaces,

73
00:04:18,500 --> 00:04:19,410
lo dejamos como un string.

74
00:04:19,670 --> 00:04:24,770
Para este ejemplo no es necesario que sea del tipo persona, pero sí podría ser perfectamente un tipo

75
00:04:24,770 --> 00:04:31,130
de la clase persona bien, pero también que el autor y revisor se pasen por argumento, ni constructor

76
00:04:31,250 --> 00:04:32,450
lo podamos inicializar.

77
00:04:38,720 --> 00:04:42,840
Entonces lo tenemos y acá lo asignamos con this.

78
00:04:42,860 --> 00:04:43,640
Punto.

79
00:04:43,730 --> 00:04:44,300
Autor.

80
00:04:45,710 --> 00:04:46,160
Autor.

81
00:04:47,870 --> 00:04:52,550
Despuntó revisor, igual revisor.

82
00:04:53,240 --> 00:04:54,150
Ahora qué faltaría.

83
00:04:54,270 --> 00:05:01,760
Bueno, dar vida al metro, imprimir e imprimir el informe con los datos del autor del revisor y su

84
00:05:01,760 --> 00:05:02,330
contenido.

85
00:05:02,900 --> 00:05:03,470
Un string

86
00:05:07,280 --> 00:05:11,390
informe escrito por autor.

87
00:05:12,230 --> 00:05:13,010
Vamos a bajar.

88
00:05:14,480 --> 00:05:15,530
Revisado por.

89
00:05:20,730 --> 00:05:32,730
Revisor un salto de línea n un paquete larch n más el contenido this contenido, pero contenido viene

90
00:05:32,730 --> 00:05:33,510
de la clase padre.

91
00:05:33,600 --> 00:05:38,010
Recuerden que protected entonces estamos reutilizando Enola.

92
00:05:38,280 --> 00:05:41,410
Protégete contenido y acá accedemos.

93
00:05:41,660 --> 00:05:42,510
Es como propia.

94
00:05:42,750 --> 00:05:46,000
Se fijan porque protegida bien y ahí tenemos lo mismo.

95
00:05:46,020 --> 00:05:50,910
También podríamos implementarlo method jet set de autor revisor sin ningún problema.

96
00:05:51,000 --> 00:05:55,740
Pero para el ejemplo, para simplificar, como no lo vamos a utilizar desde afuera, lo vamos a omitir,

97
00:05:55,860 --> 00:05:57,090
pero lo podemos crear.

98
00:05:57,210 --> 00:05:57,870
Qué tranqu.

99
00:05:58,800 --> 00:06:03,210
Solamente estamos utilizando el autor revisor en el método imprimir de la clase abstracta.

100
00:06:03,450 --> 00:06:04,920
Tampoco se preocupen por lo warning.

101
00:06:05,010 --> 00:06:07,890
Acá dice un mensaje el campo utor podría ser final.

102
00:06:07,920 --> 00:06:13,440
Claro, como no tenemos el get y el set recomiento nos dice que podría ser final, pero no para nuestro

103
00:06:13,440 --> 00:06:13,710
caso.

104
00:06:13,710 --> 00:06:14,940
No dejamos de esta forma.

105
00:06:15,300 --> 00:06:18,360
Así que no se preocupen por estos mensajes y estamos listo.

106
00:06:18,450 --> 00:06:22,890
Continuamos la siguiente clase implementando otra clase valga la redundancia.

107
00:06:22,920 --> 00:06:27,260
Curriculo Bueno, y después, por supuesto, tenemos que entrar con la interfaz imprimible.

108
00:06:27,360 --> 00:06:29,320
Continuamos en la siguiente clase.
