1
00:00:04,790 --> 00:00:08,380
Bueno y tocó el turno de las interfaces.

2
00:00:08,430 --> 00:00:11,120
Este capítulo va a ser un capítulo largo.

3
00:00:11,190 --> 00:00:15,660
Vamos a dividirlo lo voy a dividir en parte 1 parte 2 Parte 3.

4
00:00:15,660 --> 00:00:22,980
Así sucesivamente porque vamos a ver distintas variantes y vamos sobre todo entender en profundidad

5
00:00:23,490 --> 00:00:25,380
qué son las interfaces.

6
00:00:25,440 --> 00:00:34,440
Existen muchos videos en inglés en español ejemplos en YouTube que nos enseñan que son las interfaces

7
00:00:34,750 --> 00:00:35,410
engo.

8
00:00:35,490 --> 00:00:39,340
Prácticamente todos tienen los mismos ejercicios.

9
00:00:39,420 --> 00:00:46,620
Algunos hablan de geometría otros hablan de animales otros hablan de personas.

10
00:00:46,620 --> 00:00:54,660
Vamos a tratar de hacer en este capítulo un ejemplo mucho más rico y nutrido y sobre todo que no todo

11
00:00:54,660 --> 00:01:01,850
lo bueno de cada uno de esos ejemplos que hay en internet porque son todos muy buenos pero son básicos.

12
00:01:01,860 --> 00:01:04,870
Por eso este capítulo va a ser un capítulo largo.

13
00:01:04,890 --> 00:01:12,300
Primero vamos a explicar que son las interfaces interfaces son la otra pata que tiene que ver con programación

14
00:01:12,300 --> 00:01:19,710
orientada a objetos en GOW interfaces viene de todos los lenguajes de programación que manejan programación

15
00:01:19,710 --> 00:01:28,110
orientada a objetos y así como hemos visto que una clase vueles o una estructura en GOW nos permite

16
00:01:28,440 --> 00:01:33,520
generar una definición de propiedades que van a mantener nuestros objetos.

17
00:01:33,600 --> 00:01:44,520
Las interfaces lo que hacen es definir conductas operaciones comportamiento entonces mientras unas que

18
00:01:44,520 --> 00:01:52,560
son las estructuras nos permiten grabar valores con las interfaces vamos a definir comportamientos si

19
00:01:52,560 --> 00:02:00,090
nos abstenemos un poquito de los lenguajes de programación y lleváramos las interfaces al mundo real

20
00:02:00,360 --> 00:02:08,310
diríamos que por ejemplo los seres humanos tenemos ciertos comportamientos que nos definen como seres

21
00:02:08,310 --> 00:02:09,260
humanos.

22
00:02:09,390 --> 00:02:18,660
Por ejemplo el pensar entonces si creáramos cualquier objeto y dijéramos que ese objeto tiene la capacidad

23
00:02:18,660 --> 00:02:27,950
de pensar estaríamos ya diciendo que ese objeto implementa la interfaz ser humano.

24
00:02:28,080 --> 00:02:29,310
Esto es muy simple.

25
00:02:29,850 --> 00:02:40,740
Entonces lo que es se trata de ver en Goh específicamente es cómo creamos esas interfaces esas esos

26
00:02:40,740 --> 00:02:49,180
métodos esas funciones que van a determinar que un objeto sea de una característica determinada.

27
00:02:49,320 --> 00:02:56,790
Yo puedo tener por ejemplo una estructura llamada perro una estructura llamada Gatto y no tengo nada

28
00:02:56,790 --> 00:03:04,620
que los Suna porque son estructuras diferentes yo no puedo heredar un perro de un gato son son estructuras

29
00:03:04,620 --> 00:03:13,320
diferentes pero puedo implementar en ellos una interfaz que sea del tipo animal y que tengan ciertas

30
00:03:13,530 --> 00:03:21,960
acciones que sean comunes a los perros y los gatos como comer y puedo tener también funciones que devuelvan

31
00:03:21,960 --> 00:03:30,360
valores que sean comunes a los perros y a los gatos como por ejemplo una función que se llame cantidad

32
00:03:30,360 --> 00:03:36,470
de patas y me devuelva la cantidad de patas que tenga cada una de las especies.

33
00:03:36,510 --> 00:03:45,100
Vamos a ver cómo se hace esto en GO Vamos a primero vamos a crear para ir en orden nuestra carpeta Eger

34
00:03:45,130 --> 00:03:56,940
10 vamos a crear Eger 10 dentro de 10 vamos a crear un punto Goh vamos a escribir lo habitual muy bien

35
00:03:56,970 --> 00:04:03,270
ya tenemos lo habitual lo que vamos a hacer ahora es comenzar con las interfaces.

36
00:04:03,270 --> 00:04:10,980
Nosotros hemos visto esto en el ejercicio anterior hemos hecho un tip por ejemplo un nombre de usuario

37
00:04:11,520 --> 00:04:13,410
y le hemos dicho que era un tipo struck.

38
00:04:13,890 --> 00:04:16,380
Bueno ahora vamos a hacer lo mismo.

39
00:04:16,380 --> 00:04:23,500
Va a ser un Taipe va a ser de tipo humano y le vamos a decir que es de tipo interfaz.

40
00:04:23,550 --> 00:04:24,210
Por qué.

41
00:04:24,750 --> 00:04:31,350
Porque ya no va a ser una estructura ahora no vamos a grabar propiedades aquí y que se definen en una

42
00:04:31,350 --> 00:04:33,270
interfaz en una interfase.

43
00:04:33,330 --> 00:04:39,140
Se definen los métodos que vamos a usar para implementar esa interface.

44
00:04:39,240 --> 00:04:47,580
Por ejemplo respirar va a ser una función va a ser un método otro va a hacer pensar qué más hacen los

45
00:04:47,670 --> 00:04:56,970
humanos vamos a hacer comer y vamos a tener una función que nos va a devolver el sexo del humano si

46
00:04:56,970 --> 00:04:59,670
es hombre o mujer muy bien.

47
00:04:59,820 --> 00:05:07,680
Esa es la interfaz que tenemos que implementar en cualquier estructura que nosotros queramos identificar

48
00:05:07,680 --> 00:05:15,450
como humano lo que vamos a hacer ahora es crear otra interfaz de tipo animal y vamos a decir que el

49
00:05:15,450 --> 00:05:23,640
animal puede respirar muy bien y también puede comer fíjense que no estoy incluyendo pensar porque un

50
00:05:23,640 --> 00:05:25,640
animal no puede pensar.

51
00:05:25,830 --> 00:05:35,400
Entonces ahora voy a tener una una función que me va a devolver si es carnívoro Fíjense que yo aquí

52
00:05:35,400 --> 00:05:45,820
no estoy definiendo ni qué parámetros recibe ni nada simplemente esto es como en C++ los digamoslo.

53
00:05:46,020 --> 00:05:53,730
Las declaraciones que hacemos los prototipos que hacemos al comienzo del código para decir qué funciones

54
00:05:53,970 --> 00:06:02,340
y qué métodos va a detener nuestro código aquí vamos a agregar sólo por referencia para que lo veamos

55
00:06:02,430 --> 00:06:05,130
otra interfaz que es de tipo vegetal.

56
00:06:05,160 --> 00:06:12,180
No vamos a hacer nada con éstas simplemente la estamos definiendo iba a tener una iba a tener una función

57
00:06:12,180 --> 00:06:20,130
llamada Clasificación del vegetal clasificación vegetal que va a ser de tipo string muy bien.

58
00:06:20,130 --> 00:06:27,060
Ahora todo lo que se define a partir de ahora voy a tratar de que implemente cualquiera de estas tres

59
00:06:27,060 --> 00:06:28,500
interfaces.

60
00:06:28,500 --> 00:06:38,220
Vamos a crear en este caso vamos a hacer una división aquí vamos a poner humano género humano muy bien

61
00:06:38,980 --> 00:06:45,270
y debajo lo que vamos a hacer es crear un hombre va a ser una estructura en la estructura hombre y le

62
00:06:45,270 --> 00:06:52,980
vamos a la estructura no le podemos definir métodos ni funciones pero lo que vamos a hacer es definir

63
00:06:52,980 --> 00:07:01,710
propiedades así que va a tener una edad que va a ser de tipo entero va a tener una altura que va a ser

64
00:07:02,550 --> 00:07:13,440
tipo flotante 32 va a tener un peso otro flotante de 32 va se va a tener va una propiedad que me va

65
00:07:13,440 --> 00:07:23,190
a indicar si el humano está respirando ahí respirando para saber si está respirando para saber si está

66
00:07:23,190 --> 00:07:32,130
pensando y va a tener una última propiedad que va a ser comiendo por qué.

67
00:07:32,130 --> 00:07:40,260
Porque yo voy a hacer una vamos arriba voy a hacer un método que sea respirar pensar y comer muy bien

68
00:07:41,370 --> 00:07:43,010
que es lo que vamos a hacer ahora.

69
00:07:43,020 --> 00:07:51,690
Ahora vamos a crear a la mujer vamos a crear a una mujer y vamos a decirle que también tiene una edad

70
00:07:51,840 --> 00:07:56,730
vamos a hacer más fácil vamos a copiar y pegar todo está muy bien.

71
00:07:56,760 --> 00:08:04,290
Todo esto lo vamos a luego a ir mejorando le vamos a dar codear todo este código para hacerlo lo más

72
00:08:04,350 --> 00:08:05,750
óptimo posible.

73
00:08:05,760 --> 00:08:12,990
Algunos de ustedes estarán diciendo Por qué repite todo nuevamente si yo puedo hacer una herencia y

74
00:08:12,990 --> 00:08:14,950
que la mujer herede el hombre.

75
00:08:15,060 --> 00:08:22,080
Vamos por partes vamos a ir viendo caso por caso ahora lo que tenemos que hacer para que mi hombre y

76
00:08:22,080 --> 00:08:25,200
mi mujer sean de tipo humano.

77
00:08:25,200 --> 00:08:34,500
Tengo que crear estas cuatro funciones entonces venimos aquí decimos que va a haber una función que

78
00:08:34,500 --> 00:08:40,110
va a estar ligada al hombre que esta función pertenece al hombre.

79
00:08:40,140 --> 00:08:47,520
Estamos referenciando aquí con un puntero a la estructura hombre y le vamos a decir que es respirar

80
00:08:47,540 --> 00:08:49,500
que es lo que va a ser esta función.

81
00:08:49,680 --> 00:08:58,720
Bueno vamos a poner h respirando es igual a Trump qué estamos haciendo con esto cada vez que yo llamo

82
00:08:58,720 --> 00:09:06,080
a la función respirar le va se tiarrón Tru a la propiedad respirando del hombre.

83
00:09:06,390 --> 00:09:10,800
Vamos a copiar esto y vamos a pegarlo cuatro veces.

84
00:09:10,950 --> 00:09:22,470
Aquí teníamos respirar teníamos comer pensar y teníamos sexo sexo me devolvía un stream muy bien a aquí

85
00:09:22,480 --> 00:09:31,350
íbamos a decirle qué comer es igual a otro perdón que comiendo es igual a otro no puede tener el mismo

86
00:09:31,350 --> 00:09:38,440
nombre la propiedad que la función porque me va a dar un error al compilar pensando es igual a cero

87
00:09:39,060 --> 00:09:47,540
y aquí lo que vamos a hacer es vas a ser un retador de qué de hombre muy bien.

88
00:09:47,550 --> 00:09:56,580
Ahora ya tenemos nuestro hombre y el hombre por tener declaradas estas cuatro funciones ya el hombre

89
00:09:56,580 --> 00:10:09,100
está en condiciones de implementar la interfaz humano en uno hace indicar que la estructura hombre implementa

90
00:10:09,400 --> 00:10:17,170
ustedes recuerden que si vienen de dejaba o de otros lenguajes aquí habría que poner que implement y

91
00:10:17,620 --> 00:10:25,830
Líster las interfaces que un objeto estaba implementando una clase implementaba en.

92
00:10:25,840 --> 00:10:34,990
No hace falta Gou detecta qué funciones y métodos tiene una estructura e inmediatamente sabe si está

93
00:10:35,080 --> 00:10:38,420
implementando una interfaz o no.

94
00:10:38,710 --> 00:10:42,080
Ahora para qué nos sirve todo esto por ahora no me dice nada.

95
00:10:42,150 --> 00:10:52,060
Implementar humanos para qué quiero ser un humano bueno yo puedo ahora estoy en condiciones por encima

96
00:10:52,060 --> 00:11:01,810
de mi main de crear una función que en lugar de recibir un hombre de parametro va a recibir la interfaz

97
00:11:01,900 --> 00:11:03,220
humano.

98
00:11:03,220 --> 00:11:12,280
Entonces yo voy a poner yo puedo crear esta función llamada humanos respirando para saber si el humano

99
00:11:12,280 --> 00:11:20,110
está respirando o no. Y fíjense que de parametro yo no le voy a pasar un una estructura hombre le voy

100
00:11:20,110 --> 00:11:27,100
a pasar le voy a pasar una estructura hombre pero le voy a pasar cualquier estructura que implemente

101
00:11:27,100 --> 00:11:32,700
la interfaz humano yo ahora puedo crear aquí debajo.

102
00:11:32,950 --> 00:11:41,960
Vamos a crear la mujer tenemos la mujer como estructura creada pero vamos a crear sus propiedades su

103
00:11:41,970 --> 00:11:43,350
función es perdón.

104
00:11:43,970 --> 00:11:52,450
Bueno ya tengo toda la mujer cambiada aquí tendría que reemplazar la h por una M y aquí vamos a retornar

105
00:11:53,790 --> 00:12:04,820
que es una mujer muy bien cómo va a funcionar esto aquí yo voy a poner que voy a llamar a respirar que

106
00:12:04,940 --> 00:12:15,060
es una función y voy a hacer un FME que va a decir vamos a colocar aquí soy un o una porque puedo recibir

107
00:12:15,070 --> 00:12:25,240
un hombre o una mujer por ciento ese y ya estoy respirando vamos a colocarle un Barreneche muy bien

108
00:12:25,320 --> 00:12:34,090
y qué es lo que vamos a darle vamos a darle sexo por sexo porque la función sexual es la que me va a

109
00:12:34,090 --> 00:12:41,610
devolver la palabra hombre o la palabra mujer entonces aquí va a decir soy un hombre y ya estoy respirando.

110
00:12:41,680 --> 00:12:49,240
Soy una mujer y ya estoy respirando pero yo aquí no hago mención en ningún momento a un objeto de tipo

111
00:12:49,240 --> 00:12:56,080
hombre ni a un objeto de tipo mujer simplemente lo que voy a hacer es moverle un humano y aquí vamos

112
00:12:56,080 --> 00:13:03,610
a querer a Pedro que es su nombre yo hombre y ahora vamos a ser humanos.

113
00:13:03,610 --> 00:13:12,490
Respirar respirando y le voy a mandar Pedro fijense aquí hay algo que no se entiende por qué yo aquí

114
00:13:12,490 --> 00:13:19,670
estoy recibiendo un objeto de tipo humano pero aquí estoy mandando un objeto de tipo hombre en definitiva

115
00:13:19,680 --> 00:13:26,140
abstendría quedarme error porque son objetos diferentes pero como humano como hombre ha implementado

116
00:13:26,140 --> 00:13:33,190
la interfaz humano no me va a dar error y va a funcionar de manera perfecta y aquí yo voy a crear a

117
00:13:33,190 --> 00:13:41,680
María y le voy a decir que es una mujer y voy a llamar a humanos respirando y voy a pasar a María.

118
00:13:41,950 --> 00:13:50,740
Vamos a grabar esto vamos a ir a nuestra carpeta vamos a hacer un GOW Rann de Maine apuntó y vemos que

119
00:13:50,740 --> 00:13:55,210
el resultado es soy un hombre y ya estoy respirando.

120
00:13:55,210 --> 00:14:04,300
Soy una mujer y ya estoy respirando en la misma función me ha tomado cualquiera de los dos objetos como

121
00:14:04,300 --> 00:14:12,910
válidos porque lo que me permite hacer la interfaz es normalizar objetos que no tienen ninguna unión

122
00:14:12,910 --> 00:14:17,690
entre sí que los permite clasificar dentro de un mismo tipo.

123
00:14:18,160 --> 00:14:24,970
Entonces yo tengo que el hombre y la mujer pertenecen al tipo humano y esto es lo maravilloso de las

124
00:14:24,970 --> 00:14:26,110
interfaces.

125
00:14:26,170 --> 00:14:33,400
Yo tengo un tipo humano bueno y vamos a ver la segunda variante vamos a ver la segunda variante de las

126
00:14:33,400 --> 00:14:34,480
interfaces.

127
00:14:34,480 --> 00:14:42,430
Vamos a empezar a coordinar un poco todo esto que tenemos todas estas definiciones de la mujer y estas

128
00:14:42,490 --> 00:14:49,840
definiciones realmente están de más estamos repitiendo código no estamos cumpliendo con las normas que

129
00:14:49,840 --> 00:14:51,120
tenemos que cumplir.

130
00:14:51,160 --> 00:14:57,550
Entonces lo que vamos a hacer y como hemos visto en el capítulo anterior con las estructuras vamos a

131
00:14:57,550 --> 00:15:06,730
quitar esto y vamos a heredar en la mujer todas las definiciones del con solo colocar el nombre de la

132
00:15:06,730 --> 00:15:14,500
estructura hombre ya vamos a estar heredando las mismas propiedades y lo que vamos a hacer es quitar

133
00:15:14,920 --> 00:15:25,150
todo esto y vamos a hacer una variante vamos a agregar aquí una propiedad más que es que sombre va a

134
00:15:25,150 --> 00:15:27,040
ser booleana por qué.

135
00:15:27,040 --> 00:15:34,530
Porque ahora voy a tener que hablar de hombre no solo como masculino sino como genérico un nombre.

136
00:15:34,600 --> 00:15:41,170
Cuando hablamos de hombre hablamos del hombre y la mujer muy bien entonces ahora al agregarle esta propiedad

137
00:15:41,170 --> 00:15:48,220
yo voy a poder saber si es un hombre varón o es una mujer qué vamos a hacer aquí en Sexo en sexo.

138
00:15:48,220 --> 00:15:56,790
Vamos a cambiar esto no vamos a retornar directamente un valor literal sino que vamos a colocar ONIF

139
00:15:58,760 --> 00:16:04,920
vamos a colocar ONIF si H.B es hombre es igual a Trump.

140
00:16:05,360 --> 00:16:12,800
Entonces va a devolver hombre y si no es va a ser un ratón de mujer.

141
00:16:12,800 --> 00:16:20,140
Genial ahí ya tengo mi estructura hombre adaptada para cualquiera de los géneros hombre o mujer.

142
00:16:20,300 --> 00:16:27,800
Muy bien y lo que vamos a hacer es ahora ejecutar esto y teóricamente tendría que comportarse de la

143
00:16:27,800 --> 00:16:29,170
misma manera.

144
00:16:29,570 --> 00:16:32,230
Mujer mujer qué pasó ahí está.

145
00:16:32,260 --> 00:16:35,360
Porque en ningún momento le movi si era hombre o mujer.

146
00:16:35,360 --> 00:16:43,610
Voy a tener que hacer una variante voy a tener que decir que Pedro es hombre igual a otro y voy a tener

147
00:16:43,610 --> 00:16:51,890
que decir que María María no voy a tener que decir nada porque en realidad al iniciar el objeto se va

148
00:16:51,890 --> 00:16:57,170
a poner en Fool's y ya voy a tener que María es una mujer y ya tengo.

149
00:16:57,170 --> 00:17:00,140
Soy un hombre y ya estoy respirando.

150
00:17:00,170 --> 00:17:02,730
Soy una mujer y ya estoy respirando.

151
00:17:03,050 --> 00:17:10,200
Fíjense que ahora estoy usando las mismas funciones que soy usé para el hombre.

152
00:17:10,220 --> 00:17:17,210
Las estoy usando para la mujer y a pesar de no tenerlas definidas en la mujer me sigue reconociendo

153
00:17:17,210 --> 00:17:19,320
a la mujer como un humano.

154
00:17:19,320 --> 00:17:20,160
Por qué.

155
00:17:20,170 --> 00:17:26,570
Porque yo he heredado lo mismo que he definido para el hombre en el objeto mujer.

156
00:17:26,570 --> 00:17:33,890
Vamos a ver el tercer caso es lo que vamos a hacer ahora es salir del mundo de los humanos y nos vamos

157
00:17:33,890 --> 00:17:36,320
a ir al mundo de los perros.

158
00:17:36,440 --> 00:17:43,880
Vamos a colocar aquí de los animales no de los perros o los perros pero me me traicionó el inconsciente

159
00:17:43,880 --> 00:17:48,920
porque el primer objeto que vamos a crear es precisamente un perro.

160
00:17:48,920 --> 00:17:57,370
Aquí por ejemplo en lo que es género animal vamos a crear por ejemplo un tipo de perro.

161
00:17:57,410 --> 00:18:03,440
Vamos a crear un perro de acuerdo a como dicen aquí las interfaces.

162
00:18:03,440 --> 00:18:11,480
No yo ya no tengo que crear estas cuatro funciones sino que tengo que crear estas tres muy bien respirar

163
00:18:11,480 --> 00:18:17,310
y comer la vamos a copiar y pegar del hombre porque son las mismas.

164
00:18:17,330 --> 00:18:27,680
Vamos a venir aquí vamos a pegar esto ya lo vamos a modificar vamos a colocar en perro las mismas propiedades

165
00:18:27,740 --> 00:18:33,730
por ejemplo respirando comiendo y ahora vamos a quitar pensando que está ahí en el medio.

166
00:18:33,890 --> 00:18:43,250
Vamos a quitar pensando porque el perro no piensa respirando y comiendo muy bien respirar y comer hacen

167
00:18:43,270 --> 00:18:46,470
que aquí vamos a usar una P.

168
00:18:46,580 --> 00:18:53,770
Y aquí vamos a corregir muy bien nos falta solamente vamos a agregar una propiedad más.

169
00:18:53,770 --> 00:19:06,200
Si por ejemplo si es carnívoro va a ser tipo Juliana y vamos a agregar la última función que nos falta.

170
00:19:06,200 --> 00:19:15,440
Vamos a ir a nuestra interfaz para ver qué es si es carnívoro carnívoro PUCE si es carnívoro.

171
00:19:15,440 --> 00:19:17,760
Vamos a corregir esto.

172
00:19:18,800 --> 00:19:27,180
Si es carnívoro y aquí vamos a precisamente para eso hemos creado esta propiedad carnívoro verdad.

173
00:19:27,210 --> 00:19:29,310
Vamos a crear FOMC.

174
00:19:29,340 --> 00:19:36,750
Vamos a decirle que es una instancia de perro.

175
00:19:36,750 --> 00:19:45,990
Ahora si está correctamente es carnívoro si es carnívoro y aquí lo que vamos a hacer en esta función

176
00:19:46,590 --> 00:19:49,370
esta función devolvía un booleano.

177
00:19:49,440 --> 00:19:55,260
Vamos a hacer un ratón ni más ni menos que de la propiedad carnívoro.

178
00:19:55,260 --> 00:20:03,720
Aquí tenemos definido ya nuestro perro el perro por ahora implementa la interfaz animal respirar comer

179
00:20:03,780 --> 00:20:05,730
y es carnívoro muy bien.

180
00:20:05,730 --> 00:20:10,180
Ahora vamos a crear una función así como hicimos con el humano.

181
00:20:10,260 --> 00:20:15,900
Vamos a crear una función que en realidad va a recibir un animal.

182
00:20:15,900 --> 00:20:23,850
No va a recibir un perro va a recibir un animal de parametro animales respirar es una función y lo que

183
00:20:23,850 --> 00:20:33,570
vamos a hacer aquí es vamos a ejecutar la función respirar la función respirar como vemos aquí lo que

184
00:20:33,570 --> 00:20:41,880
hace es E.T.A una propiedad en Tru y ahora voy a poder hacer un FME que va a decir

185
00:20:44,820 --> 00:20:48,390
soy un animal y estoy respirando.

186
00:20:48,390 --> 00:20:50,330
Qué es lo que vamos a hacer ahora.

187
00:20:50,340 --> 00:20:58,140
Ahora voy a crear una nueva función que me va a permitir saber si un animal es carnívoro.

188
00:20:58,140 --> 00:21:01,770
Recuerden que tenemos aquí una propiedad que es carnívoro.

189
00:21:01,800 --> 00:21:10,350
Tenemos una función que me permite sestear me permite devolver si es carnívoro o no. Y lo que vamos

190
00:21:10,350 --> 00:21:13,780
a hacer ahora es dentro de esta opción.

191
00:21:13,800 --> 00:21:14,930
Vamos a hacer Univ.

192
00:21:14,940 --> 00:21:19,300
Por ejemplo voy a preguntar si es carnívoros igualad Tru.

193
00:21:19,350 --> 00:21:21,460
Voy a retornar un 1.

194
00:21:21,650 --> 00:21:23,810
Y si no voy a retornar un cero.

195
00:21:23,820 --> 00:21:30,840
Qué es lo que hace esto me va a ir incrementando un valor cada animal que yo le pase me va a ir sumando

196
00:21:30,840 --> 00:21:37,530
uno a una variable lo vamos a ver en nuestro Moine nuestro mail lo vamos a hacer Nahr le vamos a quitar

197
00:21:37,530 --> 00:21:44,050
todo esto vamos a poner total carnívoros que es igual a uno.

198
00:21:44,430 --> 00:21:52,500
La voy a realizar la voy a inicializar porque nunca la inicial y sé voy a decir que Dogo es un nuevo

199
00:21:52,500 --> 00:21:53,520
perro.

200
00:21:53,760 --> 00:21:57,640
Es un nuevo objeto de tipo perro y Dogo.

201
00:21:58,140 --> 00:22:02,660
Le voy a aceptar una de las propiedades le voy a decir que es carnívoro.

202
00:22:02,910 --> 00:22:07,940
Es igual a Trump porque realmente es carnívoro.

203
00:22:07,940 --> 00:22:14,170
Y ahora voy a ejecutar animales respirar y le voy a pasar todo.

204
00:22:14,190 --> 00:22:16,800
Aquí ocurre lo mismo que con los humanos.

205
00:22:16,850 --> 00:22:24,870
A qué voy a decir que total carnívoro es igual a más animales carnívoros que es una función a la cual

206
00:22:24,870 --> 00:22:26,660
le voy a pasar Dogo.

207
00:22:26,790 --> 00:22:31,620
Esto es lo que va a hacer es incrementar el valor que tenga total carnívoros.

208
00:22:31,620 --> 00:22:38,780
El resultado va a ser un uno o un cero si mi animal no es carnívoro le va a sumar cero.

209
00:22:38,970 --> 00:22:41,710
Es decir que no va a incrementar.

210
00:22:42,780 --> 00:22:44,100
Y ahora por último

211
00:22:47,640 --> 00:22:58,410
vamos a hacer un printed Fdez total carnívoros vamos a hacer un por ciento y vamos a mostrar la variable

212
00:22:59,160 --> 00:23:03,420
carnívoros muy qué es lo que va a hacer esto esto va.

213
00:23:03,460 --> 00:23:07,630
Nosotros tenemos aquí dos funciones de tipo animal.

214
00:23:07,630 --> 00:23:14,140
Aquí no importa si lo que le mueve es un perro un gato un conejo va a funcionar para cada uno de los

215
00:23:14,410 --> 00:23:19,850
objetos que yo creé y que implementen estas tres funciones.

216
00:23:19,930 --> 00:23:26,410
Si ahora creo un conejo y le creo estas tres funciones ese conejo se convierte en un animal si cree

217
00:23:26,410 --> 00:23:32,920
un gato y le creo estas tres funciones aunque no tenga las mismas propiedades puede tener más propiedades

218
00:23:32,920 --> 00:23:34,210
o menos propiedades.

219
00:23:34,210 --> 00:23:41,290
Ese gato se va a convertir en un animal y voy a tener una sola función para procesar cualquier tipo

220
00:23:41,290 --> 00:23:42,350
de animal.

221
00:23:42,490 --> 00:23:52,180
Eso es lo que estamos viendo que son las interfaces las interfaces me permiten agrupar en un tipo determinado

222
00:23:52,390 --> 00:23:59,980
de comportamiento a muchos objetos que no tienen relación entre sí no importa si se heredó uno del otro

223
00:24:00,580 --> 00:24:04,150
o simplemente los definí de manera separada.

224
00:24:04,150 --> 00:24:09,760
Yo ahora heredé a la mujer del hombre pero podría haber creado a la mujer por un lado con sus propiedades

225
00:24:09,760 --> 00:24:16,810
y sus funciones y al hombre con sus propiedades y sus funciones y aún así teniendo las mismas propiedades

226
00:24:17,050 --> 00:24:24,550
y teniendo las mismas funciones paragón o para cualquier sistema de lenguaje y programación son objetos

227
00:24:24,550 --> 00:24:32,440
totalmente separados y no hay ninguna relación entre sí lo que me permite las interfaces es relacionar

228
00:24:32,800 --> 00:24:39,460
objetos del mismo tipo y esto me permite crear un verdadero polimorfismo.

229
00:24:39,490 --> 00:24:47,380
Aquí estamos viendo polimorfismo cómo ante una definición que es de tipo humano puedo se puede usarla

230
00:24:47,530 --> 00:24:54,850
en diferentes formas de vida diferentes formas por un lado tengo un hombre por el otro lado tengo una

231
00:24:54,850 --> 00:25:03,730
mujer son tipos diferentes pero que confluyen en un tipo más abarcativo y que está por encima de ellos

232
00:25:04,000 --> 00:25:13,090
que es la raza humana muy bien por qué engo y esto es lo que vamos a ver en el siguiente.

233
00:25:13,190 --> 00:25:20,710
La siguiente sección de este mismo capítulo o sea en la sección número 4 lo que permite Go es que un

234
00:25:20,710 --> 00:25:24,940
solo tipo pertenezca a varios tipos más.

235
00:25:24,940 --> 00:25:27,870
Esto es algo que no se podía hacer en otros lenguajes.

236
00:25:27,940 --> 00:25:37,750
Si un hombre pertenece a los humanos no puede pertenecer a otro grupo y lo que vamos a ver ahora primero

237
00:25:37,750 --> 00:25:43,040
vamos a ejecutar esto para que vean cómo resultó lo que acabamos de hacer.

238
00:25:43,180 --> 00:25:52,270
Dogo que me pasó un perro que viene arrastrando de un error a perdón me faltó devolver un entero a la

239
00:25:52,270 --> 00:25:56,470
función porque si estoy haciendo el retorno tiene que devolver algo la función.

240
00:25:56,470 --> 00:25:58,960
Vamos a grabar y vamos a ejecutar.

241
00:25:58,970 --> 00:26:03,270
Bueno soy un animal y estoy respirando eso nos aparece aquí.

242
00:26:03,310 --> 00:26:09,820
Yo ya estoy mandando un dogo que es una raza de perros para que no lo conoce un Douglas una raza de

243
00:26:09,820 --> 00:26:10,550
perro.

244
00:26:10,600 --> 00:26:18,610
Estoy mandando un perro a una función que recibe un animal no sabes si lo que viene es un perro un gato

245
00:26:18,610 --> 00:26:25,360
o un canario recibe un animal y trabaja con esa con ese animal y devuelve esto.

246
00:26:25,360 --> 00:26:32,410
Soy un animal y estoy respirando y luego fíjense que a pesar de que yo Septién cero la variable total

247
00:26:32,410 --> 00:26:40,660
carnívoros al enviarle una propiedad donde ya fue aceptada como Tru animales carnívoros ya eso me devuelve

248
00:26:40,660 --> 00:26:46,360
un 1 porque es carnívoro es igual a otro y voy incrementando una variable.

249
00:26:46,480 --> 00:26:50,050
Por eso aquí dice total carnívoros uno muy bien.

250
00:26:50,050 --> 00:26:58,900
Vamos a ver el cuarto ejemplo bueno y estamos aquí en la cuarta y última parte de esto que es una clase

251
00:26:58,990 --> 00:27:02,550
interesante muy interesante sobre interfases.

252
00:27:02,740 --> 00:27:11,440
Vamos a implementar una nueva interfaz que está por encima del humano del animal y del vegetal que es

253
00:27:11,530 --> 00:27:13,890
la que es el ser vivo.

254
00:27:13,990 --> 00:27:22,690
Es una interfase y vamos a colocar en este ejemplo que estamos haciendo ahora simplemente una función

255
00:27:22,780 --> 00:27:26,820
que me va a devolver un Juliano si ese ser vivo está vivo o no.

256
00:27:26,920 --> 00:27:35,650
Qué significa esto que si yo lo humano le coloco la misma función y al animal lo mismo tanto el humano

257
00:27:35,680 --> 00:27:43,120
como el animal van a pertenecer a esta nueva interfase el hombre no va a dejar nunca de ser hombre el

258
00:27:43,120 --> 00:27:45,360
hombre tampoco va a dejar de ser humano.

259
00:27:45,460 --> 00:27:50,510
Y ahora al hombre se le añade que el hombre pasa a ser un ser vivo.

260
00:27:50,620 --> 00:27:56,800
Entonces voy a poder trabajar con el hombre independientemente con sus propiedades como hemos hecho

261
00:27:57,330 --> 00:28:05,150
en nuestro ejemplo inicial donde al hombre le movíamos un valor en sus propiedades a su vez podemos

262
00:28:05,150 --> 00:28:11,450
trabajar del hombre como un humano podemos ejecutar sus funciones y ahora vamos a saber cómo trabajar

263
00:28:11,750 --> 00:28:13,940
con el hombre como un ser vivo.

264
00:28:13,940 --> 00:28:17,430
Vamos a venir a nuestro inicio de Maine.

265
00:28:17,570 --> 00:28:20,220
Aquí vamos a separar un poquito.

266
00:28:20,390 --> 00:28:28,760
Vamos a hacer esta división para que el código se entienda y lo que vamos a hacer ahora es una función

267
00:28:29,110 --> 00:28:32,270
en el hombre la vamos a primero vamos a crear.

268
00:28:32,300 --> 00:28:38,380
Me faltó aquí la función en el hombre la función está vivo.

269
00:28:38,380 --> 00:28:41,780
Si no no va a implementar ser vivo.

270
00:28:41,780 --> 00:28:52,490
Vamos a colocarlas como de costumbre hombre y las funciones está vivo y esto me devolvían booleano y

271
00:28:52,490 --> 00:28:55,390
esto me retornaba H.B.

272
00:28:55,460 --> 00:28:58,760
Está vivo no está vivo es la función.

273
00:28:58,790 --> 00:29:07,070
Voy a tener perdón perdón voy a tener que crear una propiedad nueva que vivo ahora voy y voy a retornar

274
00:29:07,070 --> 00:29:08,660
eso ese valor.

275
00:29:08,690 --> 00:29:11,960
Ahora con el animal voy a tener que hacer lo mismo.

276
00:29:12,500 --> 00:29:20,900
Vamos a copiar esto vamos a ser perro vamos a decirle que el perro también está vivo.

277
00:29:20,900 --> 00:29:28,520
Si yo tuviera gato tuviera tendría que hacer lo mismo con cualquier animal que yo defina voy a tener

278
00:29:28,520 --> 00:29:35,390
que hacer lo mismo muy bien al haber hecho esto tanto el perro como el hombre y cuando hablo de hombre

279
00:29:35,510 --> 00:29:40,860
me refiero al hombre y a la mujer están implementando la interfaz.

280
00:29:40,940 --> 00:29:42,080
Ser vivo.

281
00:29:42,140 --> 00:29:48,590
Además de implementar humano están implementando Cervi entonces vamos al comienzo de nuestro Main vamos

282
00:29:48,590 --> 00:30:00,770
a crear una función llamada estoy vivo que va a recibir un ser vivo la interfaz ser vivo y lo que va

283
00:30:00,770 --> 00:30:08,600
a hacer es devolverme un Juliano y esto va a retornar ni más ni menos que el resultado de la función

284
00:30:08,690 --> 00:30:15,700
está vivo esta función que hemos creado que a su vez nos retorna con una propiedad.

285
00:30:15,740 --> 00:30:23,780
Cuando yo entré en esta función que lo que hace es procesar cualquier ser vivo ahora nosotros tuvimos

286
00:30:23,780 --> 00:30:30,050
una función que es humano respirando que me recibí a cualquier humano.

287
00:30:30,050 --> 00:30:36,830
Esto es una interfase humano podía ser un hombre o podía ser una mujer yo aquí no puedo enviar un perro

288
00:30:37,280 --> 00:30:39,710
porque el perro es otra interfaz.

289
00:30:39,890 --> 00:30:47,690
En cambio yo aquí en ésta que estoy vivo voy a poder enviar a un hombre una mujer y un perro fíjense

290
00:30:47,930 --> 00:30:55,280
lo potente que es Gou y cada vez se asemeja más a la vida real algo que en el resto de los lenguajes

291
00:30:55,280 --> 00:30:57,800
de programación no han podido llegar.

292
00:30:57,890 --> 00:31:04,890
Habíamos visto que podíamos en las clases en Java ensillar ni hablar de C++.

293
00:31:04,940 --> 00:31:12,320
Podríamos implementar interfaces pero de manera unitaria no podríamos decir que un objeto pertenecía

294
00:31:12,320 --> 00:31:15,430
a varias interfaces distintas.

295
00:31:15,530 --> 00:31:24,110
Vamos ahora a nuestro ejemplo total carnívoros tenemos nuestro Dogo ahora tendremos que decirle además

296
00:31:24,110 --> 00:31:32,750
de que es carnívoro que el dogo está vivo y le vamos a decir al dogo yo no sé si en el perro me parece

297
00:31:32,750 --> 00:31:36,110
que no. El perro Negre no he agregado vivo.

298
00:31:36,110 --> 00:31:40,070
De hecho Gould no me lo trajo como ayuda.

299
00:31:40,100 --> 00:31:43,820
Ahí me di cuenta me había olvidado de definir la propiedad.

300
00:31:43,820 --> 00:31:45,760
Vivo en perro.

301
00:31:45,800 --> 00:31:49,850
Nosotros tenemos que Dogo muy bien que está vivo.

302
00:31:49,940 --> 00:31:52,050
Animales respirar.

303
00:31:52,100 --> 00:31:54,610
Le mando todo muy bien.

304
00:31:54,610 --> 00:31:58,010
El resto está perfecto y ahora aquí debajo.

305
00:31:58,010 --> 00:31:59,030
Lo que voy a hacer

306
00:32:02,440 --> 00:32:03,640
agregaron.

307
00:32:03,740 --> 00:32:12,320
Vamos a Akiha colocaron barra invertida n para que haya un salto de línea si no se me va a juntar todo

308
00:32:13,110 --> 00:32:18,090
y aquí es igual a por ciento.

309
00:32:18,790 --> 00:32:20,900
Y qué le vamos a pasar de parametro.

310
00:32:20,900 --> 00:32:25,630
Estoy vivo Dogo y estoy vivo.

311
00:32:25,640 --> 00:32:28,880
Es esta función que recibe un ser vivo.

312
00:32:29,390 --> 00:32:31,240
Y ahora estoy salteando.

313
00:32:31,250 --> 00:32:36,350
No estoy enviando Dogo allá a la implementación de perro.

314
00:32:36,350 --> 00:32:38,830
Estoy enviando Dogo directamente a ser vivo.

315
00:32:38,830 --> 00:32:46,700
Estoy salteando la implementación de la interfaz perro y estoy yendo directamente a una nueva interfaz.

316
00:32:46,730 --> 00:32:54,620
Vamos a grabar y esto que estoy haciendo así en dos dimensiones lo podría hacer en infinitas dimensiones.

317
00:32:54,650 --> 00:33:05,090
Podría ser que un objeto implemente muchísimos tipos diferentes de interfaz y sería algo descomunal

318
00:33:05,270 --> 00:33:06,100
descomunal.

319
00:33:06,110 --> 00:33:11,920
Realmente vamos aquí que pasó hay algo que no le gustó Inferno.

320
00:33:12,200 --> 00:33:15,850
Vamos a nuestra terminal.

321
00:33:16,340 --> 00:33:24,560
Debajo de todo y vamos a hacer un nuestro Barrán qué es lo que nos va a mostrar ahora tendría que mostrar.

322
00:33:24,560 --> 00:33:30,990
Soy un animal y estoy respirando total carnívoros 1 y estoy vivo es igual a Tru.

323
00:33:31,070 --> 00:33:35,090
Ya apareció la función estoy vivo.

324
00:33:35,090 --> 00:33:42,290
Ya me retornó el valor de esta vivo de la propiedad de la función está vivo hizo toda la cadenita hasta

325
00:33:42,290 --> 00:33:47,880
llegar a las propiedades del perro y esto es algo maravilloso.

326
00:33:47,880 --> 00:33:50,600
Esto espero que lo hayan comprendido.

327
00:33:50,690 --> 00:33:56,870
No hay ningún ejemplo en Internet que sea con toda esta complejidad que les he dado espero que lo hayan

328
00:33:56,870 --> 00:33:58,130
comprendido.

329
00:33:58,130 --> 00:34:00,170
Espero no haberlos aburrido.

330
00:34:00,470 --> 00:34:06,170
Perdón porque se hizo largo pero la verdad que prefiero que ustedes pierdan más minutos pero que lo

331
00:34:06,170 --> 00:34:14,270
comprendan y no como a veces pasa que no comprendemos algo que tendría que ser comprendido y que hay

332
00:34:14,420 --> 00:34:17,270
ejemplos muy básicos en internet.

333
00:34:17,270 --> 00:34:21,890
Nos vemos en el próximo capítulo y seguimos aprendiendo del lenguaje.
