1
00:00:00,180 --> 00:00:01,710
Vamos a crear la clase librio.

2
00:00:01,830 --> 00:00:06,930
Entonces modelo new lleba class libro bien.

3
00:00:08,220 --> 00:00:10,170
Pero el libro bueno no es una hoja.

4
00:00:10,260 --> 00:00:11,490
Por lo tanto, no podemos heredar.

5
00:00:11,580 --> 00:00:13,800
Un libro contiene hojas, así que sería en la página.

6
00:00:13,920 --> 00:00:15,240
Entonces, bueno, eso sería importante.

7
00:00:15,270 --> 00:00:19,650
Podríamos crear, por ejemplo, la clase página para el libro.

8
00:00:20,910 --> 00:00:23,760
Bueno, imagina que un libro puede tener muchas páginas.

9
00:00:24,690 --> 00:00:25,350
Es una hoja.

10
00:00:26,470 --> 00:00:30,570
Ahí dice que si se fijan, entonces implementamos el método imprimir.

11
00:00:32,640 --> 00:00:35,000
Que le dé a imprimir cada página del libro.

12
00:00:35,570 --> 00:00:35,800
Bien.

13
00:00:36,140 --> 00:00:37,040
El constructor.

14
00:00:40,740 --> 00:00:44,130
Y acá se imprime contenido perfecto.

15
00:00:44,820 --> 00:00:51,840
Ahora sí que si volvemos al libro, entonces el libro va a tener una lista de páginas, pero que son

16
00:00:51,840 --> 00:00:56,850
del tipo genérico hoja y lo dejamos siempre como privat.

17
00:00:58,590 --> 00:00:59,520
Vamos a importar.

18
00:01:04,400 --> 00:01:05,900
Pero también tiene un autor

19
00:01:10,640 --> 00:01:17,630
y un nombre o título libro también podría tener un género, por ejemplo, de drama, de acción, de

20
00:01:17,630 --> 00:01:20,210
aventura, de terror, lo que sea.

21
00:01:22,970 --> 00:01:29,420
Y el género pudiera ser incluso un en un un enumerar con las distintas constante los distintos tipos

22
00:01:29,540 --> 00:01:32,420
de posible, con la lista de los géneros que queremos incluir.

23
00:01:32,570 --> 00:01:35,390
Entonces, bueno, podríamos agregar esa enumeras por.

24
00:01:36,970 --> 00:01:45,270
New Yaba Class En un género se fijan y así empezamos a completar nuestro libro

25
00:01:54,940 --> 00:01:56,110
y así lo que queramos.

26
00:01:58,940 --> 00:02:03,040
Bien, y con eso estamos molesto, para qué más vamos a crear el constructor?

27
00:02:05,980 --> 00:02:12,990
Por ejemplo, que pase el autor, el título y el género y la página le agregamos con el método ad hoc.

28
00:02:17,400 --> 00:02:26,690
Va a retornar un tiz para que se pueda encadenar ad página hoja recuerdan que es el tipo hoja o página,

29
00:02:26,730 --> 00:02:28,800
pero mejor que sea lo más genérico posible

30
00:02:33,840 --> 00:02:34,240
página.

31
00:02:34,920 --> 00:02:41,370
Entonces agregamos una página Ratón 10 y allí tenemos el libro.

32
00:02:41,460 --> 00:02:47,520
Entonces faltaría el método imprimir public, pero por ahora no lo estamos escribiendo de ninguna clase

33
00:02:47,700 --> 00:02:48,390
de equilibrio.

34
00:02:48,480 --> 00:02:55,740
No hereda de hoja como lo hace, por ejemplo, el informe que si hereda y los escribe acá no porque

35
00:02:55,740 --> 00:03:02,070
no es una hoja, entonces bueno, vamos a implementar este método string imprimir.

36
00:03:03,030 --> 00:03:03,390
Listo.

37
00:03:03,480 --> 00:03:08,460
Bueno, de hecho, si colocamos solamente modo ejemplo, no necesita que lo haga, se coloco hover right.

38
00:03:08,790 --> 00:03:10,310
Esta anotación marca error.

39
00:03:10,410 --> 00:03:14,040
Se fijan por qué no estamos escribiendo ningún método 3V clase.

40
00:03:18,670 --> 00:03:20,470
El tren Builder se ve,

41
00:03:24,100 --> 00:03:25,120
comenzamos con el título,

42
00:03:28,210 --> 00:03:28,740
se ve.

43
00:03:28,890 --> 00:03:32,410
Punto happen diss título.

44
00:03:38,060 --> 00:03:40,910
Un salto línea, el autor,

45
00:03:47,630 --> 00:03:53,120
un salto línea, bajamos el género

46
00:03:59,780 --> 00:04:03,200
bien y un Ford, un Ford para mostrar la página.

47
00:04:03,290 --> 00:04:06,860
Entonces, por cada página hoja pág.

48
00:04:07,010 --> 00:04:10,850
Página 2, punto 10, punto páginas.

49
00:04:12,320 --> 00:04:13,310
Entonces, por cada una.

50
00:04:13,460 --> 00:04:14,240
Punto.

51
00:04:14,360 --> 00:04:18,700
Append, le agregamos pág. punto imprimir.

52
00:04:18,920 --> 00:04:19,970
Por acá tenemos el método.

53
00:04:21,500 --> 00:04:24,200
Recuerden que cada página también trae método imprimir.

54
00:04:24,290 --> 00:04:29,180
Por acá tenemos página querea de hoja y los Oric vive acá tiene que imprimir.

55
00:04:31,680 --> 00:04:34,410
Bien, qué faltaría un salto línea

56
00:04:37,530 --> 00:04:38,040
y listo.

57
00:04:38,670 --> 00:04:44,040
Y acá un ratón es Trumbull Builder punto 3 trenca.

58
00:04:46,190 --> 00:04:46,360
Ven?

59
00:04:46,460 --> 00:04:48,050
Hoy tenemos el libro.

60
00:04:48,200 --> 00:04:49,730
Podríamos tener ya transceptor.

61
00:04:50,390 --> 00:04:52,670
Entonces nos vamos a ejemplo imprenta.

62
00:04:52,760 --> 00:04:54,950
Vamos a crear un libro debajo de curriculo.

63
00:05:00,440 --> 00:05:01,320
Perfecto.

64
00:05:01,520 --> 00:05:03,020
Iba a tener el autor.

65
00:05:03,200 --> 00:05:05,720
Bueno, va a ser un libro de programación.

66
00:05:05,930 --> 00:05:11,000
El tema de género por acá en género tenemos drama, acción, aventura, terror, ciencia ficción.

67
00:05:11,660 --> 00:05:15,670
Y podríamos agregar, por ejemplo, programación.

68
00:05:16,190 --> 00:05:18,350
Vamos a agregar un libro de patrones diseño.

69
00:05:18,450 --> 00:05:20,450
Entonces, el autor Erich Gamma.

70
00:05:23,990 --> 00:05:27,230
Luego tenemos el título nombre, patrones, diseños,

71
00:05:30,770 --> 00:05:41,060
punto, elementos, vamos a colocar elementos revisables o de la programación orientada objeto perfecto

72
00:05:41,180 --> 00:05:46,620
género, la constante o en un punto programación.

73
00:05:47,150 --> 00:05:50,990
Bien, vamos a bajar acá para que no sea tan extenso.

74
00:05:51,110 --> 00:05:51,980
Bajamos.

75
00:05:53,070 --> 00:05:56,580
Podríamos importar de forma estática género entonces por acá.

76
00:05:58,170 --> 00:05:59,880
Import static.

77
00:06:04,040 --> 00:06:04,850
Género.

78
00:06:04,970 --> 00:06:05,690
Asterisco.

79
00:06:06,620 --> 00:06:06,840
Ven?

80
00:06:07,160 --> 00:06:07,940
Quitamos género.

81
00:06:08,150 --> 00:06:10,850
Entonces sería como una constante propia clase.

82
00:06:11,030 --> 00:06:11,130
Ven.

83
00:06:11,210 --> 00:06:17,480
Vamos a agregar páginas al libro contenido, libro, punto, agregar página.

84
00:06:17,900 --> 00:06:19,640
Bien, pero acá recibe un tipo hoja.

85
00:06:20,300 --> 00:06:28,220
Entonces creó la instancia de página, que al final una página es una hoja porque extiende de acá el

86
00:06:28,220 --> 00:06:29,540
contenido del tipo string.

87
00:06:29,660 --> 00:06:31,690
Por ejemplo, patrón singleton.

88
00:06:36,080 --> 00:06:36,800
Bajamos.

89
00:06:36,820 --> 00:06:37,430
Punto.

90
00:06:37,490 --> 00:06:40,550
Porque podemos encadenar métodos a página.

91
00:06:40,820 --> 00:06:41,480
Otro patrón.

92
00:06:41,570 --> 00:06:43,130
Por ejemplo observador.

93
00:06:45,080 --> 00:06:45,980
New página.

94
00:06:47,630 --> 00:06:48,260
Patrón.

95
00:06:49,370 --> 00:06:50,000
Observador.

96
00:06:52,700 --> 00:06:53,330
Otra más

97
00:06:57,500 --> 00:06:59,930
patrón factory o fábrica.

98
00:07:01,310 --> 00:07:02,330
Una fábrica objeto

99
00:07:07,860 --> 00:07:13,430
podría ser también compositor o composite compositor.

100
00:07:13,460 --> 00:07:15,620
Todo lo que es recursividad.

101
00:07:15,710 --> 00:07:17,750
Árboles, todo se pueden alimentar con composite.

102
00:07:18,740 --> 00:07:19,310
Qué más

103
00:07:21,770 --> 00:07:23,330
fachada o cesad.

104
00:07:23,570 --> 00:07:25,770
Y así podríamos tener muchos patrones.

105
00:07:26,150 --> 00:07:27,290
Pero con esto está bien.

106
00:07:28,730 --> 00:07:36,230
Me faltó agregar a Patrón patrón y acá también patrón singleton, servador, factory, composite, compositor

107
00:07:36,350 --> 00:07:37,370
y fachada.

108
00:07:38,010 --> 00:07:38,780
Y estamos listo.

109
00:07:38,960 --> 00:07:44,090
Ahora veamos qué pasa si quiero imprimir libros, por ejemplo, imprimir libro.

110
00:07:44,270 --> 00:07:50,510
Obviamente marcó un error porque no cumple el contrato, no implementa o no entiende de la clase hoja,

111
00:07:50,540 --> 00:07:51,950
porque en realidad no es una hoja.

112
00:07:52,040 --> 00:07:55,580
Un libro no está diseñado para ser una hoja y no tiene ningún sentido tampoco.

113
00:07:55,640 --> 00:07:58,430
Por lo tanto, la herencia acá, como vimos, no se aplica.

114
00:07:58,520 --> 00:07:59,840
No podemos imprimir el libro.

115
00:08:00,050 --> 00:08:05,630
Entonces justamente la solución sería interfases y que cualquier objeto que se quiera imprimir o quiera

116
00:08:05,630 --> 00:08:10,910
pasar por la impresora independientes están o no relacionados entre sí de forma jerarquía.

117
00:08:11,000 --> 00:08:14,060
Bueno, tienes que implementar esta interfaz y es lo que vamos a hacer ahora.

118
00:08:14,270 --> 00:08:20,420
Entonces vamos a modificar nuestro diseño para que cualquier cosa que pase por impresora sea del tipo

119
00:08:20,510 --> 00:08:22,010
de la interfaz imprimible.

120
00:08:22,220 --> 00:08:27,680
Entonces, modelo, vamos a crear una clase, una interfaz ya class.

121
00:08:27,770 --> 00:08:40,170
Marcamos interfaz imprimible perfecto con el método imprimir no se public del tipo String imprimir.

122
00:08:40,610 --> 00:08:43,850
Recuerden, no tiene cuerpo, no tiene implementación.

123
00:08:44,060 --> 00:08:50,030
Un método de la interfaz tiene que ser siempre público o dificulto eso por ahí ya lo aplique siempre,

124
00:08:50,130 --> 00:08:56,510
ya que una interfaz siempre expone métodos públicos o default para que puedan ser utilizados por la

125
00:08:56,510 --> 00:08:57,200
demás clases.

126
00:08:57,320 --> 00:09:02,460
No tiene sentido una interfaz con un método Privat, por ejemplo, porque no lo vas a poner a los demás

127
00:09:02,480 --> 00:09:03,890
objeto para que lo puedan utilizar.

128
00:09:03,980 --> 00:09:05,180
Queda como encapsulado.

129
00:09:05,270 --> 00:09:05,770
Se fijan?

130
00:09:05,900 --> 00:09:13,060
La idea de interfaz es siempre la interfaz pública y en vez de class utilizamos la palabra clave interface,

131
00:09:13,790 --> 00:09:16,310
pues el public o default dentro del package.

132
00:09:16,730 --> 00:09:17,150
Qué más?

133
00:09:17,240 --> 00:09:18,170
Nombre de clase.

134
00:09:18,270 --> 00:09:18,550
Perdón.

135
00:09:18,620 --> 00:09:19,010
Nombre.

136
00:09:19,010 --> 00:09:19,620
Interfaces.

137
00:09:19,640 --> 00:09:20,810
Comienza con mayúscula.

138
00:09:20,870 --> 00:09:21,890
Palabra compuesta.

139
00:09:21,980 --> 00:09:24,170
La que sigue comienza con mayúscula.

140
00:09:24,290 --> 00:09:29,690
Y así al final es muy parecido a una clase abstracta de que son métodos sin implementar.

141
00:09:29,750 --> 00:09:30,320
Pero bueno.

142
00:09:30,440 --> 00:09:32,600
Es decir, no puede tener ningún método con implementación.

143
00:09:32,660 --> 00:09:35,030
A diferencia de una clase tracta una clase abstracta.

144
00:09:35,030 --> 00:09:36,770
Así puede tener métodos implementados.

145
00:09:36,800 --> 00:09:39,290
También puede tener atributos común y corriente.

146
00:09:39,410 --> 00:09:41,900
Una interfaz no, pero que sí puede tener una interfaz.

147
00:09:41,900 --> 00:09:45,830
Son constantes atributo que sean static y final.

148
00:09:45,920 --> 00:09:47,270
Bueno, después vamos a ser un ejemplo.

149
00:09:47,360 --> 00:09:49,310
Por ahora lo dejamos así, imprimible.

150
00:09:49,400 --> 00:09:50,990
Ahora tengo que modificar nuestro código.

151
00:09:51,380 --> 00:09:52,370
Bueno, qué se va a imprimir?

152
00:09:52,550 --> 00:09:54,470
Bueno, lo primero ahora es modificar.

153
00:09:54,530 --> 00:09:59,090
Ejemplo imprenta la imprenta para que todo pase en imprimir.

154
00:09:59,150 --> 00:10:07,010
Cualquier objeto que pase por acá, sea del tipo de interfaz imprimible, se fijan imprimirla ahora

155
00:10:07,010 --> 00:10:12,320
tomar carrot, porque por el momento ninguna cumple el contrato, ninguna implementa la interfaz.

156
00:10:12,930 --> 00:10:20,750
Está bien, entonces el siguiente paso es modificar informe, libro y curriculo para que sean imprimible

157
00:10:20,810 --> 00:10:21,920
y página también.

158
00:10:23,170 --> 00:10:26,350
Vamos en orden, partamos por curriculo por acá.

159
00:10:26,680 --> 00:10:27,460
Curriculo.

160
00:10:29,700 --> 00:10:36,540
Herida de hoja está perfecto, pero también implemento palabra clave para implementar interfaces y imprimible

161
00:10:37,470 --> 00:10:40,080
y podría implementar más de un interfaz separador coma.

162
00:10:40,470 --> 00:10:43,550
Se fijan a que agregamos el implementas imprimible.

163
00:10:43,770 --> 00:10:45,630
Vayamos a la clase ejemplo.

164
00:10:47,700 --> 00:10:50,250
Currículum de namarca error se puede imprimir.

165
00:10:50,310 --> 00:10:52,680
Cumple contrato, vamos a informe.

166
00:10:57,890 --> 00:11:00,410
Implementé imprimiría también cumple contrato.

167
00:11:01,100 --> 00:11:02,300
Nos vamos a ejemplo.

168
00:11:04,480 --> 00:11:05,880
Y ya no marcarlas, perfecto.

169
00:11:06,570 --> 00:11:12,650
Por ejemplo, informe o curriculum, estas orcs viviendo el imprimir, pero tanto de imprimible, de

170
00:11:12,680 --> 00:11:15,840
interfaz como de hoja, no se cumple el contrato.

171
00:11:16,390 --> 00:11:18,570
Ahora faltaría, por ejemplo, libro.

172
00:11:19,670 --> 00:11:20,390
Libro no es soja.

173
00:11:20,410 --> 00:11:27,100
Por lo tanto no haría nada, solamente implementa Implementas imprimible nada más llega.

174
00:11:27,100 --> 00:11:27,970
Tenemos el método.

175
00:11:28,910 --> 00:11:30,660
Acá vamos a colocar el love right.

176
00:11:34,880 --> 00:11:36,860
Me comió el públic por alguna razón.

177
00:11:36,920 --> 00:11:37,580
Perfecto.

178
00:11:37,700 --> 00:11:38,360
Ahí lo tenemos.

179
00:11:39,110 --> 00:11:42,320
Entonces cumple contrato y faltaría página.

180
00:11:42,770 --> 00:11:43,430
Página.

181
00:11:43,550 --> 00:11:44,300
Idea de hoja.

182
00:11:44,330 --> 00:11:46,310
Pero también se puede imprimir.

183
00:11:46,370 --> 00:11:49,490
También puede pasar por la impresora la idea que se imprime a cada página del libro.

184
00:11:50,360 --> 00:11:54,650
Entonces, simplement imprimible cumple contrato.

185
00:11:55,610 --> 00:11:59,600
Y libro ahora registra hoja se dejan.

186
00:12:00,780 --> 00:12:01,550
Que se imprimen.

187
00:12:02,190 --> 00:12:03,840
Pero hoja del tipo de clase abstracta.

188
00:12:03,930 --> 00:12:05,730
Pero cada página es del tipo hoja.

189
00:12:05,760 --> 00:12:08,970
Pero también es del tipo de su interfaz porque la implementa.

190
00:12:09,670 --> 00:12:13,890
Página puede ser del tipo página, del tipo hoja y del tipo imprimible.

191
00:12:14,040 --> 00:12:16,930
Pero vamos a usar el tipo imprimible, que es el tipo más genérico.

192
00:12:17,370 --> 00:12:20,000
Entonces, en vez de hoja imprimiría.

193
00:12:25,070 --> 00:12:29,270
De acá también los amos del tipo más genérico posible.

194
00:12:30,910 --> 00:12:31,930
Ya tenemos el ejemplo.

195
00:12:34,030 --> 00:12:40,360
Ahora todo se puede imprimir, tanto un currículum como un libro, como un informe o cualquier objeto

196
00:12:40,480 --> 00:12:42,520
independiente se está o no relacionado.

197
00:12:42,610 --> 00:12:45,910
Si cumple con el contrato con interfaz va a poder pasar por la impresora.

198
00:12:46,840 --> 00:12:48,010
Entonces vamos a levantar.

199
00:12:49,070 --> 00:12:52,070
Ya nos falta un detalle importante en libro.

200
00:12:52,580 --> 00:12:56,510
Acá faltó crear la instancia del ArrayList.

201
00:12:56,960 --> 00:13:01,670
Se fijan, claro, porque acá lanzan un po intercepten cuando agregamos página.

202
00:13:02,570 --> 00:13:09,920
Entonces calibro dis punto páginas igual new ArrayList.

203
00:13:10,820 --> 00:13:12,800
No hay que olvidarse de un detalle importante.

204
00:13:13,250 --> 00:13:18,560
Ahora sí que si volvemos a ejemplo y levantamos.

205
00:13:20,780 --> 00:13:28,070
Si tenemos puesto imprime todo, se imprime el currículum, se imprime el informe con el estudio y el

206
00:13:28,070 --> 00:13:28,500
libro.

207
00:13:29,120 --> 00:13:34,670
El título autor, género y la página o contenido del libro.

208
00:13:35,590 --> 00:13:37,450
Todo utilizando interfases.

209
00:13:37,750 --> 00:13:38,320
Nada más.

210
00:13:38,410 --> 00:13:40,040
Nos vemos en la siguiente clase.
