1
00:00:00,180 --> 00:00:00,720
Bienvenidos.

2
00:00:00,750 --> 00:00:04,120
Continuamos con la clase genericas, así como tenemos los métodos genérico.

3
00:00:04,140 --> 00:00:08,990
También podemos implementar una clase completa con tipo genérico, es decir, con atributos de esta

4
00:00:09,000 --> 00:00:13,170
clases, que maneje un tipo flexible que pueda hacer de cualquier cosa.

5
00:00:13,410 --> 00:00:14,220
De qué tipo?

6
00:00:14,310 --> 00:00:20,820
Pero recuerden, también se puede limitar o acortar a un cierto tipo de una clase, un límite superior.

7
00:00:20,880 --> 00:00:26,670
Por ejemplo, una interfaz, una clase abstracta o clase padre, tal como vimos con el stent.

8
00:00:26,940 --> 00:00:33,930
Vamos a ver un ejemplo de transporte con un camión que puede llevar, guardar y transportar varios tipos

9
00:00:33,930 --> 00:00:34,380
de objetos.

10
00:00:34,500 --> 00:00:41,640
Por ejemplo, automóviles, maquinaria pesada, pero también animales, por ejemplo, transportar caballos.

11
00:00:41,850 --> 00:00:43,620
Entonces vamos a cerrar lo que tenemos.

12
00:00:44,040 --> 00:00:46,650
Cerramos estas dos clases y nos vamos a ir acá.

13
00:00:46,800 --> 00:00:48,330
Vamos a crear un nuevo pacato.

14
00:00:49,800 --> 00:00:51,180
Lo íbamos a nombrar muy parecido.

15
00:00:51,330 --> 00:01:00,420
Generics, pero que las generics class o clase genérica, en el fondo nuestro ejemplo perfecto.

16
00:01:00,510 --> 00:01:01,790
Ahí tenemos el pacato.

17
00:01:03,020 --> 00:01:06,860
Primero vamos a crear la clase, una clase camión

18
00:01:09,680 --> 00:01:10,340
y camión.

19
00:01:11,570 --> 00:01:15,740
Va a tener un atributo objetos del tipo lista.

20
00:01:15,890 --> 00:01:16,620
Un array list.

21
00:01:17,020 --> 00:01:19,550
Entonces private list.

22
00:01:20,750 --> 00:01:21,380
Objetos.

23
00:01:21,800 --> 00:01:22,340
Perfecto.

24
00:01:22,460 --> 00:01:22,910
List.

25
00:01:23,060 --> 00:01:23,900
Lo importamos.

26
00:01:24,630 --> 00:01:24,770
Bien.

27
00:01:24,860 --> 00:01:30,130
Vamos a partir primero de la forma sin utilizar genéricos para que veamos la diferencia.

28
00:01:30,290 --> 00:01:36,500
Y cuánto cambia entre utilizar una clase que no use genéricos y una clase con genéricos.

29
00:01:37,100 --> 00:01:44,990
También va a tener un máximo elementos private int máximo, es decir, la cantidad máxima elemento a

30
00:01:44,990 --> 00:01:45,590
transportar.

31
00:01:46,280 --> 00:01:46,490
Bien.

32
00:01:46,580 --> 00:01:47,410
El constructor.

33
00:01:47,570 --> 00:01:48,500
Como siempre.

34
00:01:52,250 --> 00:01:54,800
El máximo o solamente el máximo?

35
00:01:56,120 --> 00:01:59,120
Y faltaría también inicializar objetos por acá.

36
00:01:59,240 --> 00:01:59,880
Dis.

37
00:02:00,020 --> 00:02:00,770
Punto.

38
00:02:00,800 --> 00:02:04,160
Objetos new array.

39
00:02:04,190 --> 00:02:04,580
Listo.

40
00:02:07,220 --> 00:02:07,970
De momento, simple.

41
00:02:07,980 --> 00:02:08,390
Se fijan.

42
00:02:08,480 --> 00:02:10,400
No estamos utilizando nada de genérico.

43
00:02:11,170 --> 00:02:19,220
Vamos a tener el método add a objeto o simplemente le colocamos como puede ser cualquier tipo.

44
00:02:19,400 --> 00:02:27,650
Y vamos a pasar un tipo genérico objeto por ahora, cualquier tipo object objeto perfecto y lo vamos

45
00:02:27,650 --> 00:02:28,100
a guardar.

46
00:02:28,310 --> 00:02:31,280
Entonces, con dichos objetos.

47
00:02:31,520 --> 00:02:34,220
Punto add y guardamos objetos.

48
00:02:36,670 --> 00:02:37,970
Bien, vamos a validar.

49
00:02:38,170 --> 00:02:40,510
Recordemos que solamente tenemos un máximo elemento.

50
00:02:40,720 --> 00:02:44,110
Entonces con un if vamos a la cantidad que tiene.

51
00:02:44,440 --> 00:02:45,730
Punto 6.

52
00:02:45,850 --> 00:02:46,930
Recuerden que list.

53
00:02:47,050 --> 00:02:51,520
Bueno, después lo vamos a hablar en detalle, pero Liz tiene el método 6 para saber la canti elementos

54
00:02:51,640 --> 00:02:52,390
de la lista.

55
00:02:52,990 --> 00:02:54,010
Entonces por acá.

56
00:02:54,100 --> 00:02:54,670
6.

57
00:02:54,880 --> 00:02:58,540
Entonces si es menor o igual al máximo a Max.

58
00:02:58,570 --> 00:02:59,200
Perfecto.

59
00:02:59,830 --> 00:03:01,750
Podemos seguir guardando objetos.

60
00:03:03,550 --> 00:03:04,480
De lo contrario.

61
00:03:04,580 --> 00:03:04,900
Bueno.

62
00:03:05,170 --> 00:03:06,190
Se llenó el camión.

63
00:03:06,280 --> 00:03:08,380
Entonces podríamos lanzar una excepción.

64
00:03:08,950 --> 00:03:09,400
Entonces.

65
00:03:09,400 --> 00:03:12,880
From New un ranting exception.

66
00:03:17,100 --> 00:03:21,960
No hay más espacio, pasamos un mensaje de error personalizado por el constructor.

67
00:03:22,120 --> 00:03:23,160
Bueno, manejo error.

68
00:03:23,280 --> 00:03:24,540
De todas formas, después vamos a ver.

69
00:03:24,900 --> 00:03:30,480
Acá estamos lanzando con Frodo un objeto decepción, que es un objeto especial que es lánzale.

70
00:03:30,690 --> 00:03:36,150
Es decir, todo objeto para manejar errores del tipo septón tiene que ser lánzale y también se puede

71
00:03:36,150 --> 00:03:37,380
manejar con el trait catch.

72
00:03:37,560 --> 00:03:40,680
Después vamos a ver, por ahora alojamos así para manejar errores.

73
00:03:40,800 --> 00:03:45,570
La idea que el camión también sea y te dable que podamos recorrer los elementos, entonces podremos

74
00:03:45,570 --> 00:03:47,220
implementar una interfaz en camión.

75
00:03:47,350 --> 00:03:53,730
Acá sería otra forma porque también podríamos retornar objetos y los objetos, que es una lista la podemos

76
00:03:53,730 --> 00:04:00,120
iterar, pero acá vamos a ver algo nuevo, distinto que también después con el API de colección de Yaba

77
00:04:00,240 --> 00:04:04,530
lo vamos a profundizar más, lo vamos a aterrizar, pero ahora solamente lo vamos a ver.

78
00:04:04,710 --> 00:04:07,470
Entonces vamos a implementar la interfaz y te diable.

79
00:04:09,480 --> 00:04:14,690
Entonces cualquier objeto que implemente esta interfaz se puede iterar, puede pasar por un forillo

80
00:04:14,880 --> 00:04:19,470
entonces y derable bien, lo dejamos de esa forma llega.

81
00:04:19,470 --> 00:04:23,810
Como es una interfaz, nos pide implementar un método y te datos.

82
00:04:25,870 --> 00:04:27,700
Y te datos oh, qué?

83
00:04:30,190 --> 00:04:35,710
Entonces este método es obligación de la interfaz y acá la implementación súper simple, porque el atributo

84
00:04:35,710 --> 00:04:38,830
objetos de tipo list tiene el método y teratoma.

85
00:04:39,070 --> 00:04:42,160
De hecho, el list también implementa la interfaz literal.

86
00:04:43,550 --> 00:04:46,460
Entonces, objetos o objetos?

87
00:04:47,360 --> 00:04:50,780
Punto y te datos y listo.

88
00:04:51,080 --> 00:04:55,070
Acá tenemos simplemente Hermeto y ahí tenemos el camión.

89
00:04:55,250 --> 00:05:02,000
Algo simple vamos a tener más clases, por ejemplo, por acá automóvil.

90
00:05:04,900 --> 00:05:07,750
Pero lo vamos a mantener simple, solamente con la marca.

91
00:05:07,810 --> 00:05:09,760
Por ejemplo, Privat

92
00:05:12,790 --> 00:05:15,100
Privat, la marca nada más.

93
00:05:15,800 --> 00:05:18,670
Si para el ejemplo bien un constructor.

94
00:05:21,630 --> 00:05:24,630
Con la marca y los métodos de transceptor.

95
00:05:29,310 --> 00:05:29,730
Listo.

96
00:05:29,970 --> 00:05:31,350
De hecho, sed marca.

97
00:05:31,440 --> 00:05:32,610
No sería necesario.

98
00:05:32,700 --> 00:05:35,580
De que lo vamos a pasar solamente con el constructor, pero el sí.

99
00:05:35,760 --> 00:05:39,660
Entonces implementamos el guía de marca y el constructor listo.

100
00:05:40,020 --> 00:05:41,850
Vamos a tener también maquinaria.

101
00:05:45,040 --> 00:05:47,020
Lo mismo un atributo simple

102
00:05:50,470 --> 00:05:51,310
con el tipo.

103
00:05:51,460 --> 00:05:57,280
Por ejemplo, si una grúa, horquillas o bulldozer, un cargadores excavadora, perforadora.

104
00:05:57,370 --> 00:05:59,980
En fin, un tipo igual podría tener muchos atributos.

105
00:06:00,040 --> 00:06:02,110
Para simplificar, vamos a sacar uno solo.

106
00:06:02,320 --> 00:06:05,650
Sé que lo importante ver los genéricos en clases.

107
00:06:06,190 --> 00:06:08,170
Bien gué transceptor constructor.

108
00:06:09,920 --> 00:06:11,120
Para pasar el tipo.

109
00:06:12,320 --> 00:06:13,640
Y el jet?

110
00:06:19,430 --> 00:06:20,750
Vamos a tener otra clase.

111
00:06:22,940 --> 00:06:24,380
Animal, por ejemplo.

112
00:06:27,430 --> 00:06:28,000
Privat

113
00:06:30,580 --> 00:06:31,210
nombre

114
00:06:35,200 --> 00:06:37,900
y el tipo bueno, me pregunta mi familia.

115
00:06:37,990 --> 00:06:38,410
En fin.

116
00:06:38,650 --> 00:06:45,640
Por ejemplo, el tipo caballo y nombre, algún nombre de ese caballo constructor.

117
00:06:48,550 --> 00:06:50,190
Que pase ambos, ok.

118
00:06:51,910 --> 00:06:52,510
Y Lockett?

119
00:06:56,080 --> 00:06:57,040
Lo nyet de ambos.

120
00:06:57,370 --> 00:07:01,510
Me falto el otro generad guet, del tipo también.

121
00:07:01,690 --> 00:07:03,880
Perfecto, ya tenemos temporera.

122
00:07:03,880 --> 00:07:06,130
Quedamos hasta acá y la siguiente clase.

123
00:07:06,160 --> 00:07:11,800
Continuamos con la clase ejemplo, con el método Main para poner en funcionamiento estos objetos, para

124
00:07:11,800 --> 00:07:17,650
que interactúen y que tengamos un camión de automóviles, otro de maquinaria pesada y otro camión para

125
00:07:17,650 --> 00:07:20,530
transportar animales y ver cómo se comportan los tipos.

126
00:07:20,680 --> 00:07:21,310
Nada más.

127
00:07:21,370 --> 00:07:22,120
Nos vemos.
