Herencia de Objetos (Version en Video)
-
0:01 - 0:03Volvimos con nuestro programa que crea Winstons
-
0:03 - 0:08pero he agregado un nuevo tipo de objeto "Hopper" porque Hopper se sentía un poco
-
0:08 - 0:12solo. Así ahora defino "Hopper" de la misma forma que defino "Winston", tu sabes,
-
0:12 - 0:16empezando con la función constructora y tomando las mismas propiedades y después "dibujar"
-
0:16 - 0:20y después "hablar" y después agrego otro método llamado
-
0:20 - 0:24"Hooray" porque a los "Hoppers" les gusta celebrar y a los "Winstons" nó.
-
0:24 - 0:28Ahora, abajo de la función he creado
-
0:28 - 0:312 nuevos objetos "Hopper": el pequeño Hopper y el grán Hopper
-
0:31 - 0:35y los dibujo y llamo la función "talk" (hablar) en uno y "Hooray" en el otro.
-
0:35 - 0:38Eso es excelente.
-
0:38 - 0:40Ahora, si vemos éste codigo aquí arriba
-
0:40 - 0:42notarás algo interesante. Es que
-
0:42 - 0:52el código para l "Hopper" es muy similar al codigo para "Winston". Particularmente el constructor. No sé si recuerdas pero ésa es basicamente el mismo código del constructor de "Winston"
-
0:52 - 1:01Y después la función "talk" (hablar) es igual al "talk" del Winston.
-
1:01 - 1:04y ambos tienen función "draw" (dibujar).
-
1:04 - 1:08así que hay muchas cosas en común acerca de estos dos tipos de objetos
-
1:08 - 1:11y tiene sentido porque sabes que Hopper y Winston son 2 tipos de objeto muy similares
-
1:11 - 1:15en nuestro mundo. Si lo consideras, sabes, el mundo real
-
1:15 - 1:20fuera de la computadora muchos objetos comparten similaridades
-
1:20 - 1:21con otros tipos de objetos.
-
1:21 - 1:24Como en el reino animal. Todos los animales
-
1:24 - 1:27son simliares en algunas formas. Y después tenemos diferentes tipos de animales
-
1:27 - 1:32como los humanos. Y los humanos comparten esas similarides
-
1:32 - 1:34pero tambien tienen sos propias similaridades únicas.
-
1:34 - 1:36Así que podríamos decir que
-
1:36 - 1:39un animal es un tipo de objeto del cual el tipo de objeto "humano" hereda funcionalidad.
-
1:39 - 1:47No empezamos de cero, sino agregamos a la funcionalidad que ya tenemos de ser un animal.
-
1:47 - 1:49como todos los animales que hacen ruido.
-
1:49 - 1:51pero los humanos tambien tienen lenguaje
-
1:51 - 1:55Así que este tipo de herencia de objetos
-
1:55 - 1:57es realmente útil en la programación también.
-
1:57 - 2:00y podemos crear una cadena de herencia de objetos en nuestro Javascript
-
2:00 - 2:03Así para hacer esto cuando piensas en
-
2:03 - 2:04lo que comparten nuestros objetos.
-
2:04 - 2:07Y se te ocurre un nombre para ella.
-
2:07 - 2:09porque vamos a crear un nuevo tipo de objeto
-
2:09 - 2:11que representa el objeto base
-
2:11 - 2:12así que llamémoslo "Creature" (criatura)
-
2:12 - 2:14ambos son criaturas
-
2:14 - 2:18Así que decimos "var creature =" y ahora necesitamos nuestra función constructora.
-
2:18 - 2:22Vamos y simplemente copiemos la del "Hopper" que igual a la de "Winston"
-
2:22 - 2:24Está bien
-
2:24 - 2:27y despues... vamos
-
2:27 - 2:28ahora quiero...
-
2:28 - 2:30¿Qué queremos ahora?
-
2:30 - 2:32Talvez queremos agregar la función de arriba
-
2:32 - 2:39y solo copiamos la de "Hopper". Pero por supuesto que necesitamos tenerla en el prototipo de la "Creature" en vez de eso.
-
2:39 - 2:42OK, excelente.
-
2:42 - 2:45ahora tenemos el tipo de objeto "creature" (criatura).
-
2:45 - 2:48Pero necesitamos decirle a "Hopper" que debería
-
2:48 - 2:51basar su funcionalidad según "Creature".
-
2:51 - 2:51Podemos hacer eso escribiendo ésta línea
-
2:54 - 2:59y diremos "Hopper.prototype"
-
2:59 - 3:02es igual a "object.create"
-
3:02 - 3:05"creature.prototype"
-
3:05 - 3:14Lo que hace esta linea es decirle a Javascript que base la funcionalidad del prototipo de "Hopper" en la del prototipo de "Creature".
-
3:14 - 3:22y eso significa que cada vez que busque una función en "Hopper", buscara el prototipo de Hopper
-
3:22 - 3:26primero, pero si no lo encuentra entonces buscara en el prototipo de "Creature".
-
3:26 - 3:29Y eso es lo que llamamos una cadena de prototipos.
-
3:29 - 3:34Ahora, una vez que hemos hecho esto deberíamos de poder borrar la funcion "talk"
-
3:34 - 3:36en "Hopper"
-
3:36 - 3:38Porque ya existe en "Creature".
-
3:38 - 3:40He está mas arriba en la cadena del prototipo.
-
3:40 - 3:43Listo?
-
3:43 - 3:44¡Funcionó!
-
3:44 - 3:47Y funciona porque encuentra la función en el prototipo de "Creature".
-
3:47 - 3:51Intentémoslo borrándolo en "Winston" también.
-
3:51 - 3:58OK. No funcionó porque dice que no tiene método "talk".
-
3:58 - 4:01¿Porqué es eso? Bueno, tenemos nuestro constructor "Winston"
-
4:01 - 4:04y "draw" y eliminamos el "talk".
-
4:04 - 4:08Bueno, notarás que se nos olvidó decirle al prototipo de "Winston" decirle que se base
-
4:08 - 4:09en el prototipo de "Creature".
-
4:09 - 4:11Necesitamos esa línea muy importante
-
4:11 - 4:13"Winston.prototype=object.create"
-
4:13 - 4:15"creature.prototype."
-
4:15 - 4:19:)
-
4:19 - 4:20Y notamos algo importante.
-
4:20 - 4:26Tengo ésta línea después de la función constructora pero antes de agregar cualquier otra cosa
-
4:26 - 4:29al prototipo constructor.
-
4:29 - 4:29Eso es algo que usualmente quieres hacer.
-
4:29 - 4:31Debes decírselo justo
-
4:31 - 4:34cuando empiezas inmediatamente. esto es en lo que se basará tu prototipo inicial
-
4:34 - 4:37Pero después seguimos agregando mas cosas a su prototipo
-
4:37 - 4:42Porque podría habar algo que es único a los "Winstons" o "Hoppers"
-
4:42 - 4:44que no está en los "Creatures".
-
4:44 - 4:45Y es muy bueno que también puedes definir eso.
-
4:45 - 4:50Esta bien. Ahora, si miramos esto, todavía hay código repetido
-
4:50 - 4:52el código constructor.
-
4:52 - 4:53¿Verdad? Lo tenemos 3 veces.
-
4:53 - 4:57¿Podríamos borrarlo?
-
4:57 - 4:58Intentémoslo.
-
4:58 - 5:04OK. MMM... no parece haber funcionado.
-
5:04 - 5:07Porque nuestro "Hopper" salió en el rincón superior izquierdo y parece habérsele olvidado lo demás.
-
5:07 - 5:15Ésto es porque Javascript no asume que quieres el mismo constructor aún si quieres basar el prototipo de allí.
-
5:15 - 5:19Te permite definir tu propio constructor para éstos objetos.
-
5:19 - 5:24Pero también te da una forma fácil de llamar un constructor de un objeto.
-
5:24 - 5:29La forma en que haremos esto es
-
5:29 - 5:35escribiendo "Creature.call, this, [apodo], [edad], x, y"
-
5:35 - 5:41Ahora, lo que esto hace (Nota que funciono. ¡Sí!) Y lo que hizo es que
-
5:41 - 5:44ahora esta llamando la funcion "Creature", su función constructora
-
5:44 - 5:50Está llamando la función pero esta pasando y diciendo: "OK, debes llamar este constructor como si..
-
5:50 - 5:54...estuviera siendo llamada del objeto 'Hopper'"
-
5:54 - 5:57y como si está siendo llamado con éstos argumentos.
-
5:57 - 5:59Éstos son los argumentos con los que se llamó "Hopper"
-
5:59 - 6:04Y eso acabará ejecutando el código como si estuviera allí mismo.
-
6:04 - 6:05Que es lo que queremos. Y funcionó.
-
6:05 - 6:10y podemos proceder y hacer
-
6:10 - 6:12una copia de ésta línea en el constructor
-
6:12 - 6:14de "Winston" también.
-
6:14 - 6:17Y funciona. :D
-
6:17 - 6:25Esta bien. Miremos esto. Hemos encapsulado todas nuestras propiedades compartidas y funcionalidades en un solo objeto base, "Creature".
-
6:25 - 6:28Y hemos hecho 2 tipos de objeto que extienden el objeto base.
-
6:28 - 6:31Heredan la funcionalidad pero agregan la propia suya también.
-
6:31 - 6:36Y lo excelente es que podemos cambiar la funcionalidad compartida en un solo lugar
-
6:36 - 6:40Como si quisiéramos cambiar la edad de nuevo podríamos agregar el texto "years old" (años de edad).
-
6:40 - 6:44Ahora todos dicen "years old" al final.
-
6:44 - 6:50O Podríamos la función "talk" y decir "woo". Y Ahora los "Winstons" y "Hoppers" dirían "sup".
-
6:50 - 6:57Ahora que has visto como crear tipos de objetos y heredar de otros tipos
-
6:57 - 7:01puedes empezar a pensar en como esto podría ser útil en tus dibujos y animaciones y simulaciones y juegos.
-
7:01 - 7:05Por ejemplo, talvez tienes un juego y tienes diferentes personaejs en el.
-
7:05 - 7:08y todos pueden correr pero solo algunos pueden saltar
-
7:08 - 7:12ese el el perfecto lugar para los tipos de objetos y algo de herencia.
-
7:12 - 7:16Pero apuesto a que puedes pensar en más formas de hacerlo al igual.
- Title:
- Herencia de Objetos (Version en Video)
- Description:
-
This is just a screen grab of our interactive coding talk-through, prepared to make captioning and translation easier. It is better to watch our talk-throughs here:
https://www.khanacademy.org/cs/programming/ - Video Language:
- English
- Duration:
- 07:17
rafaelulloav edited Spanish subtitles for Object Inheritance (Video Version) | ||
rafaelulloav edited Spanish subtitles for Object Inheritance (Video Version) |