Upload via hfc (batch)
Browse filesUploaded using hfc tool
This view is limited to 50 files because it contains too many changes. 聽 See raw diff
- .gitattributes +15 -0
- subir/Curso Pr谩ctico de C/01-Introducci贸n a C/01-Programaci贸n de Videojuegos con C desde Cero.mp4 +3 -0
- subir/Curso Pr谩ctico de C/01-Introducci贸n a C/01-Programaci贸n de Videojuegos con C desde Cero.vtt +71 -0
- subir/Curso Pr谩ctico de C/01-Introducci贸n a C/01-Resumen.html +0 -0
- subir/Curso Pr谩ctico de C/01-Introducci贸n a C/02-Programaci贸n en C Fundamentos y Aplicaciones Pr谩cticas.mp4 +3 -0
- subir/Curso Pr谩ctico de C/01-Introducci贸n a C/02-Programaci贸n en C Fundamentos y Aplicaciones Pr谩cticas.vtt +80 -0
- subir/Curso Pr谩ctico de C/01-Introducci贸n a C/02-Resumen.html +0 -0
- subir/Curso Pr谩ctico de C/02-Conceptos Generales de C/01-Historia y uso del compilador GCC en programaci贸n.mp4 +3 -0
- subir/Curso Pr谩ctico de C/02-Conceptos Generales de C/01-Historia y uso del compilador GCC en programaci贸n.vtt +71 -0
- subir/Curso Pr谩ctico de C/02-Conceptos Generales de C/01-Resumen.html +0 -0
- subir/Curso Pr谩ctico de C/03-Preparando el entorno de trabajo/01-Instalaci贸n de CodeBlocks en Windows paso a paso.mp4 +3 -0
- subir/Curso Pr谩ctico de C/03-Preparando el entorno de trabajo/01-Instalaci贸n de CodeBlocks en Windows paso a paso.vtt +143 -0
- subir/Curso Pr谩ctico de C/03-Preparando el entorno de trabajo/01-Lecturas recomendadas.txt +2 -0
- subir/Curso Pr谩ctico de C/presentation.mhtml +0 -0
- subir/Curso de Programaci贸n Orientada a Objetos con C/02-Estructuras de datos/02-Creaci贸n y uso de estructuras y punteros en C.vtt +403 -0
- subir/Curso de Programaci贸n Orientada a Objetos con C/02-Estructuras de datos/02-Resumen.html +0 -0
- subir/Curso de Programaci贸n Orientada a Objetos con C/02-Estructuras de datos/03-Resumen.html +0 -0
- subir/Curso de Programaci贸n Orientada a Objetos con C/02-Estructuras de datos/03-Uniones y Enumeraciones en C Gesti贸n Eficiente de Memoria.mp4 +3 -0
- subir/Curso de Programaci贸n Orientada a Objetos con C/02-Estructuras de datos/03-Uniones y Enumeraciones en C Gesti贸n Eficiente de Memoria.vtt +559 -0
- subir/Curso de Programaci贸n Orientada a Objetos con C/03-Introducci贸n a la Programaci贸n Orientada a Objetos/01-Lecturas recomendadas.txt +1 -0
- subir/Curso de Programaci贸n Orientada a Objetos con C/03-Introducci贸n a la Programaci贸n Orientada a Objetos/01-Programaci贸n Orientada a Objetos en C Conceptos B谩sicos.mp4 +3 -0
- subir/Curso de Programaci贸n Orientada a Objetos con C/03-Introducci贸n a la Programaci贸n Orientada a Objetos/01-Programaci贸n Orientada a Objetos en C Conceptos B谩sicos.vtt +307 -0
- subir/Curso de Programaci贸n Orientada a Objetos con C/03-Introducci贸n a la Programaci贸n Orientada a Objetos/01-Resumen.html +0 -0
- subir/Curso de Programaci贸n Orientada a Objetos con C/03-Introducci贸n a la Programaci贸n Orientada a Objetos/02-Programaci贸n Orientada a Objetos Creaci贸n de Clases y Objetos en C.mp4 +3 -0
- subir/Curso de Programaci贸n Orientada a Objetos con C/03-Introducci贸n a la Programaci贸n Orientada a Objetos/02-Programaci贸n Orientada a Objetos Creaci贸n de Clases y Objetos en C.vtt +445 -0
- subir/Curso de Programaci贸n Orientada a Objetos con C/03-Introducci贸n a la Programaci贸n Orientada a Objetos/02-Resumen.html +0 -0
- subir/Curso de Programaci贸n Orientada a Objetos con C/03-Introducci贸n a la Programaci贸n Orientada a Objetos/03-Ciclo de Vida de Objetos en C Constructores y Destructores.mp4 +3 -0
- subir/Curso de Programaci贸n Orientada a Objetos con C/03-Introducci贸n a la Programaci贸n Orientada a Objetos/03-Ciclo de Vida de Objetos en C Constructores y Destructores.vtt +619 -0
- subir/Curso de Programaci贸n Orientada a Objetos con C/03-Introducci贸n a la Programaci贸n Orientada a Objetos/03-Resumen.html +0 -0
- subir/Curso de Programaci贸n Orientada a Objetos con C/04-Principios de la Programaci贸n Orientada a Objetos/01-Encapsulaci贸n de Atributos en C Pr谩cticas Seguras.mp4 +3 -0
- subir/Curso de Programaci贸n Orientada a Objetos con C/04-Principios de la Programaci贸n Orientada a Objetos/01-Lecturas recomendadas.txt +1 -0
- subir/Curso de Programaci贸n Orientada a Objetos con C/04-Principios de la Programaci贸n Orientada a Objetos/01-Resumen.html +0 -0
- subir/Curso de Programaci贸n Orientada a Objetos con C/04-Principios de la Programaci贸n Orientada a Objetos/02-Resumen.html +0 -0
- subir/Curso de Programaci贸n Orientada a Objetos con C/04-Principios de la Programaci贸n Orientada a Objetos/02-Uso del Puntero This en C para Desambiguaci贸n y Autorreferencia.mp4 +3 -0
- subir/Curso de Programaci贸n Orientada a Objetos con C/04-Principios de la Programaci贸n Orientada a Objetos/02-Uso del Puntero This en C para Desambiguaci贸n y Autorreferencia.vtt +589 -0
- subir/Curso de Programaci贸n Orientada a Objetos con C/04-Principios de la Programaci贸n Orientada a Objetos/03-Atributos y M茅todos Est谩ticos en Programaci贸n Orientada a Objetos.mp4 +3 -0
- subir/Curso de Programaci贸n Orientada a Objetos con C/04-Principios de la Programaci贸n Orientada a Objetos/03-Atributos y M茅todos Est谩ticos en Programaci贸n Orientada a Objetos.vtt +448 -0
- subir/Curso de Programaci贸n Orientada a Objetos con C/04-Principios de la Programaci贸n Orientada a Objetos/03-Resumen.html +0 -0
- subir/Curso de Programaci贸n Orientada a Objetos con C/04-Principios de la Programaci贸n Orientada a Objetos/04-Herencia en C Implementaci贸n y Ejemplos Pr谩cticos.mp4 +3 -0
- subir/Curso de Programaci贸n Orientada a Objetos con C/04-Principios de la Programaci贸n Orientada a Objetos/04-Herencia en C Implementaci贸n y Ejemplos Pr谩cticos.vtt +673 -0
- subir/Curso de Programaci贸n Orientada a Objetos con C/04-Principios de la Programaci贸n Orientada a Objetos/04-Resumen.html +0 -0
- subir/Curso de Programaci贸n Orientada a Objetos con C/04-Principios de la Programaci贸n Orientada a Objetos/05-Herencia M煤ltiple en C Implementaci贸n y Ejemplos Pr谩cticos.mp4 +3 -0
- subir/Curso de Programaci贸n Orientada a Objetos con C/04-Principios de la Programaci贸n Orientada a Objetos/05-Herencia M煤ltiple en C Implementaci贸n y Ejemplos Pr谩cticos.vtt +403 -0
- subir/Curso de Programaci贸n Orientada a Objetos con C/04-Principios de la Programaci贸n Orientada a Objetos/05-Resumen.html +0 -0
- subir/Curso de Programaci贸n Orientada a Objetos con C/04-Principios de la Programaci贸n Orientada a Objetos/06-Lecturas recomendadas.txt +1 -0
- subir/Curso de Programaci贸n Orientada a Objetos con C/04-Principios de la Programaci贸n Orientada a Objetos/06-Polimorfismo en Programaci贸n Orientada a Objetos.mp4 +3 -0
- subir/Curso de Programaci贸n Orientada a Objetos con C/04-Principios de la Programaci贸n Orientada a Objetos/06-Polimorfismo en Programaci贸n Orientada a Objetos.vtt +313 -0
- subir/Curso de Programaci贸n Orientada a Objetos con C/04-Principios de la Programaci贸n Orientada a Objetos/06-Resumen.html +0 -0
- subir/Curso de Programaci贸n Orientada a Objetos con C/05-Despedida/01-Evaluaci贸n Final Programaci贸n Orientada a Objetos en C.mp4 +3 -0
- subir/Curso de Programaci贸n Orientada a Objetos con C/05-Despedida/01-Evaluaci贸n Final Programaci贸n Orientada a Objetos en C.vtt +46 -0
.gitattributes
CHANGED
|
@@ -240,3 +240,18 @@ subir/Curso[[:space:]]de[[:space:]]Programaci贸n[[:space:]]Orientada[[:space:]]a
|
|
| 240 |
subir/Curso[[:space:]]de[[:space:]]Programaci贸n[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos[[:space:]]con[[:space:]]C/01-Memoria[[:space:]]din谩mica/03-Uso[[:space:]]de[[:space:]]Punteros[[:space:]]en[[:space:]]C[[:space:]]Variables[[:space:]]y[[:space:]]Memoria[[:space:]]Din谩mica.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 241 |
subir/Curso[[:space:]]de[[:space:]]Programaci贸n[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos[[:space:]]con[[:space:]]C/02-Estructuras[[:space:]]de[[:space:]]datos/01-Estructuras[[:space:]]de[[:space:]]Datos[[:space:]]Personalizadas[[:space:]]en[[:space:]]C.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 242 |
subir/Curso[[:space:]]de[[:space:]]Programaci贸n[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos[[:space:]]con[[:space:]]C/02-Estructuras[[:space:]]de[[:space:]]datos/02-Creaci贸n[[:space:]]y[[:space:]]uso[[:space:]]de[[:space:]]estructuras[[:space:]]y[[:space:]]punteros[[:space:]]en[[:space:]]C.mp4 filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 240 |
subir/Curso[[:space:]]de[[:space:]]Programaci贸n[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos[[:space:]]con[[:space:]]C/01-Memoria[[:space:]]din谩mica/03-Uso[[:space:]]de[[:space:]]Punteros[[:space:]]en[[:space:]]C[[:space:]]Variables[[:space:]]y[[:space:]]Memoria[[:space:]]Din谩mica.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 241 |
subir/Curso[[:space:]]de[[:space:]]Programaci贸n[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos[[:space:]]con[[:space:]]C/02-Estructuras[[:space:]]de[[:space:]]datos/01-Estructuras[[:space:]]de[[:space:]]Datos[[:space:]]Personalizadas[[:space:]]en[[:space:]]C.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 242 |
subir/Curso[[:space:]]de[[:space:]]Programaci贸n[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos[[:space:]]con[[:space:]]C/02-Estructuras[[:space:]]de[[:space:]]datos/02-Creaci贸n[[:space:]]y[[:space:]]uso[[:space:]]de[[:space:]]estructuras[[:space:]]y[[:space:]]punteros[[:space:]]en[[:space:]]C.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 243 |
+
subir/Curso[[:space:]]de[[:space:]]Programaci贸n[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos[[:space:]]con[[:space:]]C/02-Estructuras[[:space:]]de[[:space:]]datos/03-Uniones[[:space:]]y[[:space:]]Enumeraciones[[:space:]]en[[:space:]]C[[:space:]]Gesti贸n[[:space:]]Eficiente[[:space:]]de[[:space:]]Memoria.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 244 |
+
subir/Curso[[:space:]]de[[:space:]]Programaci贸n[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos[[:space:]]con[[:space:]]C/03-Introducci贸n[[:space:]]a[[:space:]]la[[:space:]]Programaci贸n[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos/01-Programaci贸n[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos[[:space:]]en[[:space:]]C[[:space:]]Conceptos[[:space:]]B谩sicos.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 245 |
+
subir/Curso[[:space:]]de[[:space:]]Programaci贸n[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos[[:space:]]con[[:space:]]C/03-Introducci贸n[[:space:]]a[[:space:]]la[[:space:]]Programaci贸n[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos/02-Programaci贸n[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos[[:space:]]Creaci贸n[[:space:]]de[[:space:]]Clases[[:space:]]y[[:space:]]Objetos[[:space:]]en[[:space:]]C.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 246 |
+
subir/Curso[[:space:]]de[[:space:]]Programaci贸n[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos[[:space:]]con[[:space:]]C/03-Introducci贸n[[:space:]]a[[:space:]]la[[:space:]]Programaci贸n[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos/03-Ciclo[[:space:]]de[[:space:]]Vida[[:space:]]de[[:space:]]Objetos[[:space:]]en[[:space:]]C[[:space:]]Constructores[[:space:]]y[[:space:]]Destructores.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 247 |
+
subir/Curso[[:space:]]de[[:space:]]Programaci贸n[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos[[:space:]]con[[:space:]]C/04-Principios[[:space:]]de[[:space:]]la[[:space:]]Programaci贸n[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos/01-Encapsulaci贸n[[:space:]]de[[:space:]]Atributos[[:space:]]en[[:space:]]C[[:space:]]Pr谩cticas[[:space:]]Seguras.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 248 |
+
subir/Curso[[:space:]]de[[:space:]]Programaci贸n[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos[[:space:]]con[[:space:]]C/04-Principios[[:space:]]de[[:space:]]la[[:space:]]Programaci贸n[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos/02-Uso[[:space:]]del[[:space:]]Puntero[[:space:]]This[[:space:]]en[[:space:]]C[[:space:]]para[[:space:]]Desambiguaci贸n[[:space:]]y[[:space:]]Autorreferencia.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 249 |
+
subir/Curso[[:space:]]de[[:space:]]Programaci贸n[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos[[:space:]]con[[:space:]]C/04-Principios[[:space:]]de[[:space:]]la[[:space:]]Programaci贸n[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos/03-Atributos[[:space:]]y[[:space:]]M茅todos[[:space:]]Est谩ticos[[:space:]]en[[:space:]]Programaci贸n[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 250 |
+
subir/Curso[[:space:]]de[[:space:]]Programaci贸n[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos[[:space:]]con[[:space:]]C/04-Principios[[:space:]]de[[:space:]]la[[:space:]]Programaci贸n[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos/04-Herencia[[:space:]]en[[:space:]]C[[:space:]]Implementaci贸n[[:space:]]y[[:space:]]Ejemplos[[:space:]]Pr谩cticos.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 251 |
+
subir/Curso[[:space:]]de[[:space:]]Programaci贸n[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos[[:space:]]con[[:space:]]C/04-Principios[[:space:]]de[[:space:]]la[[:space:]]Programaci贸n[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos/05-Herencia[[:space:]]M煤ltiple[[:space:]]en[[:space:]]C[[:space:]]Implementaci贸n[[:space:]]y[[:space:]]Ejemplos[[:space:]]Pr谩cticos.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 252 |
+
subir/Curso[[:space:]]de[[:space:]]Programaci贸n[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos[[:space:]]con[[:space:]]C/04-Principios[[:space:]]de[[:space:]]la[[:space:]]Programaci贸n[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos/06-Polimorfismo[[:space:]]en[[:space:]]Programaci贸n[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 253 |
+
subir/Curso[[:space:]]de[[:space:]]Programaci贸n[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos[[:space:]]con[[:space:]]C/05-Despedida/01-Evaluaci贸n[[:space:]]Final[[:space:]]Programaci贸n[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos[[:space:]]en[[:space:]]C.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 254 |
+
subir/Curso[[:space:]]Pr谩ctico[[:space:]]de[[:space:]]C/01-Introducci贸n[[:space:]]a[[:space:]]C/01-Programaci贸n[[:space:]]de[[:space:]]Videojuegos[[:space:]]con[[:space:]]C[[:space:]]desde[[:space:]]Cero.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 255 |
+
subir/Curso[[:space:]]Pr谩ctico[[:space:]]de[[:space:]]C/01-Introducci贸n[[:space:]]a[[:space:]]C/02-Programaci贸n[[:space:]]en[[:space:]]C[[:space:]]Fundamentos[[:space:]]y[[:space:]]Aplicaciones[[:space:]]Pr谩cticas.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 256 |
+
subir/Curso[[:space:]]Pr谩ctico[[:space:]]de[[:space:]]C/02-Conceptos[[:space:]]Generales[[:space:]]de[[:space:]]C/01-Historia[[:space:]]y[[:space:]]uso[[:space:]]del[[:space:]]compilador[[:space:]]GCC[[:space:]]en[[:space:]]programaci贸n.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 257 |
+
subir/Curso[[:space:]]Pr谩ctico[[:space:]]de[[:space:]]C/03-Preparando[[:space:]]el[[:space:]]entorno[[:space:]]de[[:space:]]trabajo/01-Instalaci贸n[[:space:]]de[[:space:]]CodeBlocks[[:space:]]en[[:space:]]Windows[[:space:]]paso[[:space:]]a[[:space:]]paso.mp4 filter=lfs diff=lfs merge=lfs -text
|
subir/Curso Pr谩ctico de C/01-Introducci贸n a C/01-Programaci贸n de Videojuegos con C desde Cero.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:62fe5d8e9c5c228b6debb70f5906b618b2d4f0c8d80d86f2c7f19ced72c1ff81
|
| 3 |
+
size 16918611
|
subir/Curso Pr谩ctico de C/01-Introducci贸n a C/01-Programaci贸n de Videojuegos con C desde Cero.vtt
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
WEBVTT
|
| 2 |
+
|
| 3 |
+
00:03.839 --> 00:06.799
|
| 4 |
+
Hola. Como estan? Bien mios. El curso, ese m谩s m谩s de Platzi.
|
| 5 |
+
|
| 6 |
+
00:06.830 --> 00:10.259
|
| 7 |
+
Soy Init Dorado y en este curso vamos a aprender muchas cosas.
|
| 8 |
+
|
| 9 |
+
00:10.289 --> 00:16.079
|
| 10 |
+
Pero antes, qui茅n soy yo y Yago Yo m茅dico. Hacer juegos desde juegos m贸viles hasta juegos para PC
|
| 11 |
+
|
| 12 |
+
-->
|
| 13 |
+
.
|
| 14 |
+
|
| 15 |
+
00:16.109 --> 00:19.149
|
| 16 |
+
Me pueden seguir en arroba En 煤ltil os tienen dudas del curso?
|
| 17 |
+
|
| 18 |
+
00:19.179 --> 00:23.550
|
| 19 |
+
No dude en escribirme. Ah铆 trabaj贸 en un estudio de juegos mexicano llamado Jairo
|
| 20 |
+
|
| 21 |
+
00:23.550 --> 00:26.690
|
| 22 |
+
Wilkins. Hacemos muchos juegos m贸viles. Fue de m谩s.
|
| 23 |
+
|
| 24 |
+
00:26.690 --> 00:31.460
|
| 25 |
+
Por favor, Y tambi茅n. D铆game qu茅 les parece? Es son los juegos He participado en casi todos de ellos
|
| 26 |
+
|
| 27 |
+
00:31.469 --> 00:35.750
|
| 28 |
+
y van desde jugados quinientos de gatitos hasta Tags noches y como miembro a los que les van a gustar
|
| 29 |
+
|
| 30 |
+
-->
|
| 31 |
+
.
|
| 32 |
+
|
| 33 |
+
00:36.240 --> 00:39.649
|
| 34 |
+
Pero bueno, hacemos el curso que vamos a hacer en este curso.
|
| 35 |
+
|
| 36 |
+
00:40.140 --> 00:44.250
|
| 37 |
+
En este curso vamos a aprender los conceptos b谩sicos de se m谩s, m谩s para que ustedes puedan partir
|
| 38 |
+
|
| 39 |
+
00:44.250 --> 00:49.549
|
| 40 |
+
de una manera muy f谩cil. Tambi茅n ver El paradigma de programaci贸n llamado cuarenta Add objetos que
|
| 41 |
+
|
| 42 |
+
00:49.549 --> 00:52.020
|
| 43 |
+
no s茅 si lo ha escuchado antes. No eres muy usado.
|
| 44 |
+
|
| 45 |
+
00:52.049 --> 00:55.909
|
| 46 |
+
Y tambi茅n vamos a ser un videojuego en aqu铆, en la consola, que es un v铆deo.
|
| 47 |
+
|
| 48 |
+
00:55.909 --> 00:59.850
|
| 49 |
+
Problemas que la consola no. As铆 las pel铆culas han visto los Jagger m谩s son la terminal.
|
| 50 |
+
|
| 51 |
+
00:59.939 --> 01:04.609
|
| 52 |
+
Todo ser un juego hay es un laberinto. Tienen cuales ustedes van a moverse, personaje, encontrar
|
| 53 |
+
|
| 54 |
+
01:04.609 --> 01:08.209
|
| 55 |
+
tesoros, ganar, perder. Vamos a las coaliciones, el cargo de los archivos y
|
| 56 |
+
|
| 57 |
+
01:08.209 --> 01:12.090
|
| 58 |
+
todos sus temas complicados. Pero no se preocupen, los vamos a hacerlo de manera muy simple y
|
| 59 |
+
|
| 60 |
+
01:12.090 --> 01:18.120
|
| 61 |
+
muy sencilla. Quien debe Atom al curso T煤, obviamente porque porque se m谩s, m谩s, muy divertido.
|
| 62 |
+
|
| 63 |
+
01:18.129 --> 01:22.349
|
| 64 |
+
Te va a gustar, agrandadas intimidante y nos va a avanzar mucho.
|
| 65 |
+
|
| 66 |
+
01:23.939 --> 01:28.790
|
| 67 |
+
Pero bueno, se m谩s vamos a puede prender s贸lo en un solo v铆deo, as铆 que te invito a que sigamos viendo
|
| 68 |
+
|
| 69 |
+
01:28.790 --> 01:32.150
|
| 70 |
+
los siguientes. Ya hacemos poco a poco aprendiendo este maravilloso lenguaje.
|
| 71 |
+
|
subir/Curso Pr谩ctico de C/01-Introducci贸n a C/01-Resumen.html
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
subir/Curso Pr谩ctico de C/01-Introducci贸n a C/02-Programaci贸n en C Fundamentos y Aplicaciones Pr谩cticas.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:bf5c86b6ac8dcffa8ad2efc9804101cf4d0dbb6f4ba50db83b4f9ca35eb308b4
|
| 3 |
+
size 20657607
|
subir/Curso Pr谩ctico de C/01-Introducci贸n a C/02-Programaci贸n en C Fundamentos y Aplicaciones Pr谩cticas.vtt
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
WEBVTT
|
| 2 |
+
|
| 3 |
+
00:03.640 --> 00:09.859
|
| 4 |
+
que es programar es el proceso de crear algoritmos y sistemas usando lenguajes de programaci贸n para
|
| 5 |
+
|
| 6 |
+
00:09.859 --> 00:13.050
|
| 7 |
+
comunicarnos con las computadoras y poder crear programas.
|
| 8 |
+
|
| 9 |
+
00:13.080 --> 00:16.460
|
| 10 |
+
Que es eso, b谩sicamente ante los ojos de las personas.
|
| 11 |
+
|
| 12 |
+
00:16.489 --> 00:21.129
|
| 13 |
+
Es nuevo, es una varita m谩gica. Con los dem谩s de programaci贸n echamos, hechiza la computadora y nos
|
| 14 |
+
|
| 15 |
+
00:21.129 --> 00:28.289
|
| 16 |
+
obedece. S铆, s铆 lo es. No Este. Tenemos lenguajes de programaci贸n, los cuales nos
|
| 17 |
+
|
| 18 |
+
00:28.289 --> 00:32.990
|
| 19 |
+
permiten comunicarnos para crear archivos binarios y podemos en la computadora.
|
| 20 |
+
|
| 21 |
+
00:33.020 --> 00:40.060
|
| 22 |
+
Vamos a ver con detalle un poquito m谩s adelante eso, pero porque queremos aprenderse m谩s, m谩s Se
|
| 23 |
+
|
| 24 |
+
-->
|
| 25 |
+
,
|
| 26 |
+
|
| 27 |
+
00:40.060 --> 00:46.039
|
| 28 |
+
m谩s, m谩s Es veloz porque su manejo de memoria no tiene una m谩quina virtual ni un recolector de basura
|
| 29 |
+
|
| 30 |
+
-->
|
| 31 |
+
,
|
| 32 |
+
|
| 33 |
+
00:46.070 --> 00:49.420
|
| 34 |
+
a diferencia del Chava y fichar. Y es complejo. Quieres ir?
|
| 35 |
+
|
| 36 |
+
00:49.420 --> 00:55.070
|
| 37 |
+
Que existe una gran del claro ETA de librer铆as implementaciones y es constantemente actualizado por
|
| 38 |
+
|
| 39 |
+
00:55.070 --> 00:58.020
|
| 40 |
+
los creadores y un gran grupo de fans y personas.
|
| 41 |
+
|
| 42 |
+
00:58.049 --> 01:03.600
|
| 43 |
+
Constantemente este crecimiento nunca terminan. S铆, como son algunos de estos juegos o
|
| 44 |
+
|
| 45 |
+
01:03.600 --> 01:07.530
|
| 46 |
+
motores de juegos fueron muchos. Hace m谩s m谩s. Por ejemplo, un real que hizo
|
| 47 |
+
|
| 48 |
+
01:07.530 --> 01:10.540
|
| 49 |
+
for night creaci贸n Engine, Brian, Ching incluso.
|
| 50 |
+
|
| 51 |
+
01:10.569 --> 01:15.780
|
| 52 |
+
Y Unity est谩 basado en se m谩s, m谩s. Ustedes lo saben fichar, pero el compilado de la aplicaci贸n y
|
| 53 |
+
|
| 54 |
+
01:15.780 --> 01:22.459
|
| 55 |
+
Unity est谩 hecho hace m谩s m谩s es usado para aplicaciones que requieren una optimizaci贸n de recursos
|
| 56 |
+
|
| 57 |
+
01:22.469 --> 01:28.129
|
| 58 |
+
y manejo de memoria como prioridad al mismo tiempo de ser escalable, modular, instruido en much铆simas
|
| 59 |
+
|
| 60 |
+
01:28.129 --> 01:33.819
|
| 61 |
+
plataformas, ustedes se van a encargar de manipular la memoria de manualmente, no haber nadie que
|
| 62 |
+
|
| 63 |
+
01:33.819 --> 01:38.370
|
| 64 |
+
no se tenga. Entonces, incluso si lo hacen mal, pueden creaci贸n una computadora o
|
| 65 |
+
|
| 66 |
+
01:38.370 --> 01:41.939
|
| 67 |
+
dejar Next de memoria que eventualmente van a hacer que su programa se trague Pero
|
| 68 |
+
|
| 69 |
+
-->
|
| 70 |
+
.
|
| 71 |
+
|
| 72 |
+
01:41.939 --> 01:46.250
|
| 73 |
+
Esta libertad nos permite ser muy veloces y saber lo que est谩 pasando por detr谩s.
|
| 74 |
+
|
| 75 |
+
01:46.840 --> 01:52.349
|
| 76 |
+
Asi que los invito a abrir este libro de S茅 m谩s m谩s y continuemos aprendiendo los conceptos b谩sicos
|
| 77 |
+
|
| 78 |
+
-->
|
| 79 |
+
.
|
| 80 |
+
|
subir/Curso Pr谩ctico de C/01-Introducci贸n a C/02-Resumen.html
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
subir/Curso Pr谩ctico de C/02-Conceptos Generales de C/01-Historia y uso del compilador GCC en programaci贸n.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:b9ca87d38e3787b1d2b94b85fadb29cc219d5ec44b78b3f0e360b1b855fcc68e
|
| 3 |
+
size 18818997
|
subir/Curso Pr谩ctico de C/02-Conceptos Generales de C/01-Historia y uso del compilador GCC en programaci贸n.vtt
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
WEBVTT
|
| 2 |
+
|
| 3 |
+
00:03.740 --> 00:08.429
|
| 4 |
+
ahora que ya sabes, dicen los m谩s antes de ponerte a programar ni estados ver un poco de la historia
|
| 5 |
+
|
| 6 |
+
-->
|
| 7 |
+
.
|
| 8 |
+
|
| 9 |
+
00:08.429 --> 00:14.339
|
| 10 |
+
Y donde viene? No se帽al贸, como dec铆as a 茅l, pero les ya es un cient铆fico de sistemas que
|
| 11 |
+
|
| 12 |
+
00:14.339 --> 00:17.239
|
| 13 |
+
se encarg贸 de crearse m谩s m谩s durante su carrera.
|
| 14 |
+
|
| 15 |
+
00:17.250 --> 00:21.719
|
| 16 |
+
Cuando estaba estudiando empez贸 con C y lo que hizo fue agarrarlo y transformarlo en
|
| 17 |
+
|
| 18 |
+
00:21.719 --> 00:24.800
|
| 19 |
+
poni茅ndole programaci贸n, alentado objetos. Y lo convirti贸 en salas m谩s.
|
| 20 |
+
|
| 21 |
+
00:24.829 --> 00:28.609
|
| 22 |
+
Incluso su primer proyecto sea base con objetos Que.
|
| 23 |
+
|
| 24 |
+
00:28.609 --> 00:32.729
|
| 25 |
+
Literal es la deficion se los m谩s. Si vemos las diferencias entre los dos es que ese es
|
| 26 |
+
|
| 27 |
+
00:32.729 --> 00:36.799
|
| 28 |
+
un lenguaje Por eso rural. Y se m谩s, m谩s Tienen las mismas capacidades que se pero
|
| 29 |
+
|
| 30 |
+
00:36.799 --> 00:40.350
|
| 31 |
+
tiene soporte para Clancy lento objetos. No te preocupes sobre qu茅 es eso?
|
| 32 |
+
|
| 33 |
+
00:40.350 --> 00:46.070
|
| 34 |
+
Lo vamos a ver con detalle El futuro. Pero bueno, Szifron fue uno de los primeros compiladores temas
|
| 35 |
+
|
| 36 |
+
00:46.070 --> 00:50.119
|
| 37 |
+
m谩s que sali贸 en mil novecientos ochenta y tres, pero que es un compilador.
|
| 38 |
+
|
| 39 |
+
00:50.149 --> 00:55.329
|
| 40 |
+
Un compilador es un traductor que convierte un programa escrito en lenguaje de programaci贸n a
|
| 41 |
+
|
| 42 |
+
00:55.329 --> 00:59.090
|
| 43 |
+
c贸digo Machine Un pocas palabras es T煤 tienes tu c贸digo.
|
| 44 |
+
|
| 45 |
+
00:59.119 --> 01:04.200
|
| 46 |
+
El compilador lo que hace es agarrarlo, traducirlo a ceros y unos y d谩rselo a la m谩quina que
|
| 47 |
+
|
| 48 |
+
01:04.200 --> 01:09.319
|
| 49 |
+
son los binarios. Esto la computadora lo pueden tender y as铆 puedes juntar tu programa El
|
| 50 |
+
|
| 51 |
+
01:09.319 --> 01:13.920
|
| 52 |
+
compilador que vamos Al se llama GC se porque vamos a este compilador porque es Open
|
| 53 |
+
|
| 54 |
+
01:13.920 --> 01:18.040
|
| 55 |
+
sols? Es que decir que hay m煤ltiples programadores diferenciadas del mundo gratuitamente
|
| 56 |
+
|
| 57 |
+
01:18.069 --> 01:25.280
|
| 58 |
+
ayudando al proyecto no tiene ning煤n costo y la parte es p煤blico, es completamente gratis y
|
| 59 |
+
|
| 60 |
+
01:25.280 --> 01:30.560
|
| 61 |
+
aparte nuestro y de que vamos a estar, que es el programa del cual nos permite crear desarrollo este
|
| 62 |
+
|
| 63 |
+
01:30.560 --> 01:36.969
|
| 64 |
+
f谩cilmente de nuestro c贸digo Es cobros, al igual que Jeff, ese es un y de gratuito
|
| 65 |
+
|
| 66 |
+
01:37.000 --> 01:41.760
|
| 67 |
+
que no cuesta nada y no hay ning煤n problema c贸mo usarlo y aparte est谩 siendo utilizado por
|
| 68 |
+
|
| 69 |
+
01:41.760 --> 01:42.989
|
| 70 |
+
diferentes programados del mundo.
|
| 71 |
+
|
subir/Curso Pr谩ctico de C/02-Conceptos Generales de C/01-Resumen.html
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
subir/Curso Pr谩ctico de C/03-Preparando el entorno de trabajo/01-Instalaci贸n de CodeBlocks en Windows paso a paso.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:3af61a3b1a7ea983c46d502815110b2b245ee93f4af725a7e9dbea9fc47b24f9
|
| 3 |
+
size 32360328
|
subir/Curso Pr谩ctico de C/03-Preparando el entorno de trabajo/01-Instalaci贸n de CodeBlocks en Windows paso a paso.vtt
ADDED
|
@@ -0,0 +1,143 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
WEBVTT
|
| 2 |
+
|
| 3 |
+
00:03.439 --> 00:07.639
|
| 4 |
+
Bueno, ahora que ya hab铆amos que vamos a usar destruida, que es el lugar donde va a escribir el c贸digo
|
| 5 |
+
|
| 6 |
+
-->
|
| 7 |
+
,
|
| 8 |
+
|
| 9 |
+
00:07.639 --> 00:12.429
|
| 10 |
+
ponerle play y ejecutar en estos programas Slash m谩s vamos a la computadora para que dice S谩nchez paso
|
| 11 |
+
|
| 12 |
+
00:12.429 --> 00:19.550
|
| 13 |
+
por paso como esta larga Ya estados. Ning煤n lo que van a hacer es escribir como blogs 茅picamente
|
| 14 |
+
|
| 15 |
+
00:20.140 --> 00:24.179
|
| 16 |
+
y el primer link que les va a salir. Todos los puntos tengan mucho cuidado, que no voy a hacer un
|
| 17 |
+
|
| 18 |
+
00:24.179 --> 00:29.649
|
| 19 |
+
Lin que este pirata de la AN click y va a quebrar la p谩gina oficial de cobros.
|
| 20 |
+
|
| 21 |
+
00:30.039 --> 00:34.689
|
| 22 |
+
Aqu铆 dice con blogs es un hombre, es una plataforma Open shorts para hacer ser谩s
|
| 23 |
+
|
| 24 |
+
00:34.689 --> 00:40.240
|
| 25 |
+
m谩s y Ford tracked lo vamos a ver, parece m谩s, m谩s van a Iraq a la parte de arriba donde hice descargas
|
| 26 |
+
|
| 27 |
+
-->
|
| 28 |
+
,
|
| 29 |
+
|
| 30 |
+
00:40.270 --> 00:45.759
|
| 31 |
+
le van a dar clic y van a parar muchas opciones. Puede descargar el c贸digo fuente, que eso ser铆a que
|
| 32 |
+
|
| 33 |
+
00:45.759 --> 00:50.960
|
| 34 |
+
usted quiere evitar, pero ahorita para la clase nos va a decir a esta parte de ac谩 te dice descargar
|
| 35 |
+
|
| 36 |
+
00:50.960 --> 00:56.619
|
| 37 |
+
los binarios, le damos click y nos van a ser muchas opciones dependiendo de su sistema operativo.
|
| 38 |
+
|
| 39 |
+
00:56.630 --> 01:04.340
|
| 40 |
+
Es cual vamos a bajar Hay para Linux tambi茅n hay para Mac pero en mi computadora yo estoy usando buenos
|
| 41 |
+
|
| 42 |
+
-->
|
| 43 |
+
.
|
| 44 |
+
|
| 45 |
+
01:04.370 --> 01:09.439
|
| 46 |
+
No cambia mucho la diferencia entre ambos y, por si acaso, puede dejar un escrito con Life los diferentes
|
| 47 |
+
|
| 48 |
+
01:09.439 --> 01:13.239
|
| 49 |
+
pasos de Windows Mac. Pero bueno, Para este ejemplo.
|
| 50 |
+
|
| 51 |
+
01:13.269 --> 01:19.709
|
| 52 |
+
Vamos cargar la versi贸n de Windows que se llama con los diecisiete doce mil doble once top ex
|
| 53 |
+
|
| 54 |
+
-->
|
| 55 |
+
.
|
| 56 |
+
|
| 57 |
+
01:19.739 --> 01:24.379
|
| 58 |
+
Tengo mucho cuidado cuando descargarlas, otras porque la diferencia enrollado nosotras y esta es que
|
| 59 |
+
|
| 60 |
+
01:24.379 --> 01:27.450
|
| 61 |
+
est谩 ya tiene el compilador instalado y no tienen que ser ning煤n paso.
|
| 62 |
+
|
| 63 |
+
01:27.450 --> 01:30.849
|
| 64 |
+
Esta va a ser le Clica son los foros para bajarlo.
|
| 65 |
+
|
| 66 |
+
01:32.239 --> 01:34.760
|
| 67 |
+
Y cu谩ndo habr谩 les va a pedir que esperen tantito.
|
| 68 |
+
|
| 69 |
+
01:34.790 --> 01:41.219
|
| 70 |
+
Esto es para ver que no SandBox y ya cuando termine de empezar instalaci贸n SSL, el archivo que usted
|
| 71 |
+
|
| 72 |
+
01:41.219 --> 01:48.420
|
| 73 |
+
va en tren que bajar y lo van a guardar i grans. A la magia de la edici贸n ya se termin贸 descargar.
|
| 74 |
+
|
| 75 |
+
01:48.450 --> 01:54.650
|
| 76 |
+
Entonces le pit贸 el bot贸n de ejecutar y se abrir mi ventana.
|
| 77 |
+
|
| 78 |
+
01:55.140 --> 01:57.879
|
| 79 |
+
Voy a pedir permisos. A veces, as铆 tienen no desactivados.
|
| 80 |
+
|
| 81 |
+
01:57.879 --> 02:02.569
|
| 82 |
+
Seguridad les puede pedir premio Estoy computadora y le van a poner que si no se preocupen, no es nada
|
| 83 |
+
|
| 84 |
+
02:02.569 --> 02:07.530
|
| 85 |
+
malo y le va a salir el instalador Hay que les va a salir que bienvenidos al se to 贸ptico blogs usted
|
| 86 |
+
|
| 87 |
+
02:07.530 --> 02:12.110
|
| 88 |
+
le van a poner siguiente les a seguir la displicencia Si la quien a leer con detalle para saber que
|
| 89 |
+
|
| 90 |
+
02:12.110 --> 02:14.310
|
| 91 |
+
nos est谩n vendiendo su alma Al diablo pueden hacerlo?
|
| 92 |
+
|
| 93 |
+
02:14.310 --> 02:17.530
|
| 94 |
+
Si, ning煤n problema. Pero yo no lo voy a hacer porque es una persona muy responsable y
|
| 95 |
+
|
| 96 |
+
02:17.530 --> 02:22.740
|
| 97 |
+
le voy a poner que estoy acuerdo. Me va a seguir todas sus opciones de las cuales yo Git instalar Todas
|
| 98 |
+
|
| 99 |
+
02:22.740 --> 02:27.659
|
| 100 |
+
vienen por de folk Palomeras Pero si quieren checar que es este las suyas est茅n Palomeras, Por favor
|
| 101 |
+
|
| 102 |
+
-->
|
| 103 |
+
,
|
| 104 |
+
|
| 105 |
+
02:27.659 --> 02:30.849
|
| 106 |
+
h谩ganlo luego. A veces depende la computadora sea loca y no lo deja.
|
| 107 |
+
|
| 108 |
+
02:31.240 --> 02:35.909
|
| 109 |
+
Pero bueno, voy a poner siguiente y nada. Pero me va a poner la direcci贸n en la cual yo quiero instalar
|
| 110 |
+
|
| 111 |
+
02:35.909 --> 02:39.460
|
| 112 |
+
mi programa. Me voy a poner la de f煤tbol. Pero ustedes pueden elegir aqu铆 una
|
| 113 |
+
|
| 114 |
+
02:39.460 --> 02:41.939
|
| 115 |
+
espec铆fica en caso de que tengan otro disco duro o algo as铆.
|
| 116 |
+
|
| 117 |
+
02:41.969 --> 02:47.389
|
| 118 |
+
Y le voy a poner Instalar CTO En todos. Nos sale un mont贸n de opciones y est谩 viendo como locomotora
|
| 119 |
+
|
| 120 |
+
02:47.389 --> 02:50.409
|
| 121 |
+
trabaja y otra vez con el poder m谩gico de la direcci贸n.
|
| 122 |
+
|
| 123 |
+
02:50.439 --> 02:54.669
|
| 124 |
+
Mi programa est谩 listo para instalarse. Entonces me va a preguntar Quiero instalarme programa.
|
| 125 |
+
|
| 126 |
+
02:54.699 --> 02:58.750
|
| 127 |
+
Quiero poner mi programa de le decir que s铆 y lo ejecutaron.
|
| 128 |
+
|
| 129 |
+
02:59.139 --> 03:01.530
|
| 130 |
+
Listo? Acaba de instalar su programa Deco. Blogs.
|
| 131 |
+
|
| 132 |
+
03:01.560 --> 03:06.819
|
| 133 |
+
Muy bien, felicidades. O nos ha parecido antes de que termin谩ramos este mensaje, que quiere decir
|
| 134 |
+
|
| 135 |
+
03:06.819 --> 03:10.310
|
| 136 |
+
que nuestro compilador se acuerdan que les ense帽e el dibujo del toro.
|
| 137 |
+
|
| 138 |
+
03:10.340 --> 03:15.629
|
| 139 |
+
Es el GNU Jesse, compa帽ero, Nuestro compiladores temas m谩s est谩 instalado correctamente y
|
| 140 |
+
|
| 141 |
+
03:15.639 --> 03:20.250
|
| 142 |
+
le ponemos o que yo y ahora s铆, ya con eso tenemos instalado con los
|
| 143 |
+
|
subir/Curso Pr谩ctico de C/03-Preparando el entorno de trabajo/01-Lecturas recomendadas.txt
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
http://www.codeblocks.org/
|
| 2 |
+
https://sourceforge.net/projects/codeblocks/files/Binaries/17.12/Windows/codeblocks-17.12mingw-setup.exe/download
|
subir/Curso Pr谩ctico de C/presentation.mhtml
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
subir/Curso de Programaci贸n Orientada a Objetos con C/02-Estructuras de datos/02-Creaci贸n y uso de estructuras y punteros en C.vtt
ADDED
|
@@ -0,0 +1,403 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
WEBVTT
|
| 2 |
+
|
| 3 |
+
00:00:03.199 --> 00:00:05.839
|
| 4 |
+
Vamos a continuar hablando sobre las estructuras de
|
| 5 |
+
|
| 6 |
+
00:00:05.839 --> 00:00:08.080
|
| 7 |
+
datos en C m谩s m谩s Para esto, vamos
|
| 8 |
+
|
| 9 |
+
00:00:08.080 --> 00:00:10.880
|
| 10 |
+
a crear nuestra primera estructura en c贸digo. Vamos
|
| 11 |
+
|
| 12 |
+
00:00:10.880 --> 00:00:13.599
|
| 13 |
+
a comenzar a crear nuestra primera estructura en
|
| 14 |
+
|
| 15 |
+
00:00:13.599 --> 00:00:16.145
|
| 16 |
+
el c贸digo. Esto lo vamos a hacer con
|
| 17 |
+
|
| 18 |
+
00:00:16.145 --> 00:00:18.145
|
| 19 |
+
el ejemplo de la clase anterior, donde est谩bamos
|
| 20 |
+
|
| 21 |
+
00:00:18.145 --> 00:00:21.665
|
| 22 |
+
hablando de c贸mo crear, pues informaci贸n relacionada con
|
| 23 |
+
|
| 24 |
+
00:00:21.665 --> 00:00:24.224
|
| 25 |
+
una persona. Para esto vamos a utilizar la
|
| 26 |
+
|
| 27 |
+
00:00:24.224 --> 00:00:27.220
|
| 28 |
+
palabra reservada de C m谩s m谩s Struct. La
|
| 29 |
+
|
| 30 |
+
00:00:27.220 --> 00:00:31.160
|
| 31 |
+
forma de hacerlo ser铆a generar en nuestro c贸digo
|
| 32 |
+
|
| 33 |
+
00:00:31.619 --> 00:00:34.899
|
| 34 |
+
lo siguiente. Struct el nombre de la estructura
|
| 35 |
+
|
| 36 |
+
00:00:34.899 --> 00:00:36.900
|
| 37 |
+
que vamos a crear. En este caso podemos
|
| 38 |
+
|
| 39 |
+
00:00:36.900 --> 00:00:40.579
|
| 40 |
+
llamarlo persona y a continuaci贸n vamos a abrir
|
| 41 |
+
|
| 42 |
+
00:00:40.579 --> 00:00:42.600
|
| 43 |
+
un par de llaves donde vamos a definir
|
| 44 |
+
|
| 45 |
+
00:00:42.865 --> 00:00:45.265
|
| 46 |
+
las caracter铆sticas o los atributos que va a
|
| 47 |
+
|
| 48 |
+
00:00:45.265 --> 00:00:49.025
|
| 49 |
+
tener cada persona. En este caso, hablamos de
|
| 50 |
+
|
| 51 |
+
00:00:49.025 --> 00:00:52.065
|
| 52 |
+
el nombre y la edad. Como puedes ver,
|
| 53 |
+
|
| 54 |
+
00:00:52.065 --> 00:00:54.465
|
| 55 |
+
yo ya tengo importada mi librer铆a para manejar
|
| 56 |
+
|
| 57 |
+
00:00:54.465 --> 00:00:56.545
|
| 58 |
+
cadenas de texto, as铆 que puedo utilizar el
|
| 59 |
+
|
| 60 |
+
00:00:56.545 --> 00:01:02.680
|
| 61 |
+
tipo string. Entonces, string y el nombre de
|
| 62 |
+
|
| 63 |
+
00:01:02.680 --> 00:01:04.840
|
| 64 |
+
la variable que queremos crear, en este caso,
|
| 65 |
+
|
| 66 |
+
00:01:04.840 --> 00:01:11.415
|
| 67 |
+
el nombre. Terminamos con punto y coma, y
|
| 68 |
+
|
| 69 |
+
00:01:11.415 --> 00:01:14.375
|
| 70 |
+
a continuaci贸n podemos escribir otro dato que necesitemos,
|
| 71 |
+
|
| 72 |
+
00:01:14.375 --> 00:01:16.455
|
| 73 |
+
por ejemplo, la edad de la persona. En
|
| 74 |
+
|
| 75 |
+
00:01:16.455 --> 00:01:23.140
|
| 76 |
+
este caso ser铆a un entero. Como puedes ver,
|
| 77 |
+
|
| 78 |
+
00:01:23.140 --> 00:01:24.740
|
| 79 |
+
no se est谩 marcando un error y es
|
| 80 |
+
|
| 81 |
+
00:01:24.740 --> 00:01:29.299
|
| 82 |
+
porque necesitamos terminar con punto y coma. Ahora
|
| 83 |
+
|
| 84 |
+
00:01:29.299 --> 00:01:31.619
|
| 85 |
+
tenemos nuestra primera estructura de datos creada y
|
| 86 |
+
|
| 87 |
+
00:01:31.619 --> 00:01:34.340
|
| 88 |
+
podemos comenzar a utilizarla como un tipo de
|
| 89 |
+
|
| 90 |
+
00:01:34.340 --> 00:01:37.445
|
| 91 |
+
dato m谩s. Vamos a utilizar nuestra estructura tipo
|
| 92 |
+
|
| 93 |
+
00:01:37.445 --> 00:01:39.685
|
| 94 |
+
persona para crear una variable. La forma de
|
| 95 |
+
|
| 96 |
+
00:01:39.685 --> 00:01:42.564
|
| 97 |
+
hacerlo ser铆a indicando el tipo primero, como con
|
| 98 |
+
|
| 99 |
+
00:01:42.564 --> 00:01:45.604
|
| 100 |
+
todas las variables, as铆 como utilizamos, por ejemplo,
|
| 101 |
+
|
| 102 |
+
00:01:45.604 --> 00:01:48.325
|
| 103 |
+
int, y para crear una variable de tipo
|
| 104 |
+
|
| 105 |
+
00:01:48.325 --> 00:01:52.100
|
| 106 |
+
entero llamada I, podemos utilizar la palabra persona
|
| 107 |
+
|
| 108 |
+
00:01:52.100 --> 00:01:54.759
|
| 109 |
+
que acabamos de definir como un tipo y
|
| 110 |
+
|
| 111 |
+
00:01:56.020 --> 00:01:58.500
|
| 112 |
+
podemos crear una variable para que la utilice.
|
| 113 |
+
|
| 114 |
+
00:01:58.500 --> 00:02:00.200
|
| 115 |
+
En este caso, yo la voy a nombrar
|
| 116 |
+
|
| 117 |
+
00:02:00.259 --> 00:02:04.285
|
| 118 |
+
p. Yo podr铆a terminar la declaraci贸n de mi
|
| 119 |
+
|
| 120 |
+
00:02:04.285 --> 00:02:08.125
|
| 121 |
+
variable all铆. Sin embargo, tambi茅n podr铆a definirle un
|
| 122 |
+
|
| 123 |
+
00:02:08.125 --> 00:02:10.525
|
| 124 |
+
valor inicial como lo hemos realizado con otras
|
| 125 |
+
|
| 126 |
+
00:02:10.525 --> 00:02:13.005
|
| 127 |
+
variables. En este caso, yo podr铆a ponerle que
|
| 128 |
+
|
| 129 |
+
00:02:13.005 --> 00:02:18.590
|
| 130 |
+
es tipo persona y con par茅ntesis, y esto
|
| 131 |
+
|
| 132 |
+
00:02:18.590 --> 00:02:20.750
|
| 133 |
+
lo que va a hacer es inicializar un
|
| 134 |
+
|
| 135 |
+
00:02:20.750 --> 00:02:24.190
|
| 136 |
+
nuevo valor de persona y almacenarlo dentro de
|
| 137 |
+
|
| 138 |
+
00:02:24.190 --> 00:02:27.230
|
| 139 |
+
mi variable p. Esta es una forma de
|
| 140 |
+
|
| 141 |
+
00:02:27.230 --> 00:02:30.285
|
| 142 |
+
hacerlo en la que nuestro compilador, desde el
|
| 143 |
+
|
| 144 |
+
00:02:30.285 --> 00:02:33.084
|
| 145 |
+
proceso de del del tiempo de compilaci贸n, va
|
| 146 |
+
|
| 147 |
+
00:02:33.084 --> 00:02:35.405
|
| 148 |
+
a crear la persona y va a reservar
|
| 149 |
+
|
| 150 |
+
00:02:35.405 --> 00:02:38.765
|
| 151 |
+
su memoria. Sin embargo, podemos querer hacerlo por
|
| 152 |
+
|
| 153 |
+
00:02:38.765 --> 00:02:41.565
|
| 154 |
+
memoria din谩mica, y para esto podemos utilizar los
|
| 155 |
+
|
| 156 |
+
00:02:41.565 --> 00:02:44.900
|
| 157 |
+
punteros. La forma de hacerlo ser铆a utilizar, en
|
| 158 |
+
|
| 159 |
+
00:02:44.900 --> 00:02:48.280
|
| 160 |
+
lugar de crear una variable persona p, podr铆amos
|
| 161 |
+
|
| 162 |
+
00:02:48.500 --> 00:02:51.300
|
| 163 |
+
crear un puntero que pueda apuntar a una
|
| 164 |
+
|
| 165 |
+
00:02:51.300 --> 00:02:54.995
|
| 166 |
+
persona. La forma ser铆a utilizar el asterisco y
|
| 167 |
+
|
| 168 |
+
00:02:54.995 --> 00:02:56.355
|
| 169 |
+
aqu铆, pues, ahora me va a dar un
|
| 170 |
+
|
| 171 |
+
00:02:56.355 --> 00:02:58.394
|
| 172 |
+
error y la raz贸n es que yo ya
|
| 173 |
+
|
| 174 |
+
00:02:58.394 --> 00:03:01.875
|
| 175 |
+
no estoy creando este espacio tipo persona, sino
|
| 176 |
+
|
| 177 |
+
00:03:01.875 --> 00:03:05.015
|
| 178 |
+
es un puntero a persona. Para generar din谩micamente
|
| 179 |
+
|
| 180 |
+
00:03:05.875 --> 00:03:08.114
|
| 181 |
+
una nueva persona y almacenarla en la variable
|
| 182 |
+
|
| 183 |
+
00:03:08.114 --> 00:03:11.953
|
| 184 |
+
p, dado que esta es un puntero, tendr铆a
|
| 185 |
+
|
| 186 |
+
00:03:11.959 --> 00:03:15.320
|
| 187 |
+
que utilizar la palabra reservada new. Con esto
|
| 188 |
+
|
| 189 |
+
00:03:15.320 --> 00:03:16.920
|
| 190 |
+
me va a dejar de dar el error,
|
| 191 |
+
|
| 192 |
+
00:03:16.920 --> 00:03:18.780
|
| 193 |
+
porque lo que est谩 pasando aqu铆 es que
|
| 194 |
+
|
| 195 |
+
00:03:19.080 --> 00:03:21.960
|
| 196 |
+
va primero a generar un puntero y durante
|
| 197 |
+
|
| 198 |
+
00:03:21.960 --> 00:03:25.015
|
| 199 |
+
la ejecuci贸n, ya no durante la compilaci贸n, con
|
| 200 |
+
|
| 201 |
+
00:03:25.015 --> 00:03:28.415
|
| 202 |
+
new vamos a crear una nueva persona. Las
|
| 203 |
+
|
| 204 |
+
00:03:28.415 --> 00:03:31.075
|
| 205 |
+
dos formas son v谩lidas y la 煤nica variaci贸n
|
| 206 |
+
|
| 207 |
+
00:03:31.295 --> 00:03:33.694
|
| 208 |
+
ser铆a a la hora de utilizarlas. Si yo
|
| 209 |
+
|
| 210 |
+
00:03:33.694 --> 00:03:38.515
|
| 211 |
+
quisiera utilizar la variable p de forma tradicional,
|
| 212 |
+
|
| 213 |
+
00:03:38.680 --> 00:03:42.040
|
| 214 |
+
podr铆a realizarlo con un punto. Por ejemplo, si
|
| 215 |
+
|
| 216 |
+
00:03:42.040 --> 00:03:45.000
|
| 217 |
+
yo quiero acceder al nombre de la persona,
|
| 218 |
+
|
| 219 |
+
00:03:45.000 --> 00:03:50.680
|
| 220 |
+
podr铆a utilizar p punto nombre. Con esto, como
|
| 221 |
+
|
| 222 |
+
00:03:50.680 --> 00:03:53.000
|
| 223 |
+
cualquier otra variable, yo estar铆a accediendo a ese
|
| 224 |
+
|
| 225 |
+
00:03:53.000 --> 00:03:56.795
|
| 226 |
+
valor. Yo podr铆a leerlo, por ejemplo, mostrarlo en
|
| 227 |
+
|
| 228 |
+
00:03:56.795 --> 00:03:59.674
|
| 229 |
+
un si out o podr铆a asignarle un nuevo
|
| 230 |
+
|
| 231 |
+
00:03:59.674 --> 00:04:03.674
|
| 232 |
+
valor, por ejemplo, con una cadena de texto.
|
| 233 |
+
|
| 234 |
+
00:04:03.674 --> 00:04:05.775
|
| 235 |
+
En este caso podr铆a poner, por ejemplo, Diana
|
| 236 |
+
|
| 237 |
+
00:04:06.820 --> 00:04:08.660
|
| 238 |
+
y ah铆 est谩. Por ejemplo, ah铆 le puedo
|
| 239 |
+
|
| 240 |
+
00:04:08.660 --> 00:04:11.460
|
| 241 |
+
poner Diana, luego le puedo poner otro valor
|
| 242 |
+
|
| 243 |
+
00:04:11.460 --> 00:04:13.620
|
| 244 |
+
para la edad tambi茅n. Por ejemplo, yo puedo
|
| 245 |
+
|
| 246 |
+
00:04:13.620 --> 00:04:17.140
|
| 247 |
+
poner veintis茅is y por ejemplo, vamos a mostrarlo
|
| 248 |
+
|
| 249 |
+
00:04:17.140 --> 00:04:20.694
|
| 250 |
+
con Seattle. Primero vamos a mostrar el nombre
|
| 251 |
+
|
| 252 |
+
00:04:25.715 --> 00:04:27.574
|
| 253 |
+
y voy a hacer un cambio de l铆nea.
|
| 254 |
+
|
| 255 |
+
00:04:29.875 --> 00:04:35.610
|
| 256 |
+
Y ahora vamos a mostrar la edad. Si
|
| 257 |
+
|
| 258 |
+
00:04:35.610 --> 00:04:38.889
|
| 259 |
+
ejecutamos esto con la tecla F seis, vamos
|
| 260 |
+
|
| 261 |
+
00:04:38.889 --> 00:04:40.990
|
| 262 |
+
a ver que el resultado de nuestro programa
|
| 263 |
+
|
| 264 |
+
00:04:41.370 --> 00:04:44.250
|
| 265 |
+
es primero, se muestra el nombre de la
|
| 266 |
+
|
| 267 |
+
00:04:44.250 --> 00:04:47.310
|
| 268 |
+
persona y a continuaci贸n se muestra la edad.
|
| 269 |
+
|
| 270 |
+
00:04:48.125 --> 00:04:50.764
|
| 271 |
+
Lo siguiente que podemos hacer es probar la
|
| 272 |
+
|
| 273 |
+
00:04:50.764 --> 00:04:54.445
|
| 274 |
+
versi贸n con punteros. Para esto, convertimos la variable
|
| 275 |
+
|
| 276 |
+
00:04:54.445 --> 00:04:58.544
|
| 277 |
+
p en tipo puntero y utilizamos el operador
|
| 278 |
+
|
| 279 |
+
00:04:58.764 --> 00:05:01.810
|
| 280 |
+
new. Ahora nos va a dar un error
|
| 281 |
+
|
| 282 |
+
00:05:01.810 --> 00:05:03.810
|
| 283 |
+
a la hora de tratar leer la variable
|
| 284 |
+
|
| 285 |
+
00:05:03.810 --> 00:05:06.210
|
| 286 |
+
nombre y la variable edad utilizando la anotaci贸n
|
| 287 |
+
|
| 288 |
+
00:05:06.210 --> 00:05:08.290
|
| 289 |
+
de punto. Lo que tenemos que hacer es
|
| 290 |
+
|
| 291 |
+
00:05:08.290 --> 00:05:12.690
|
| 292 |
+
utilizando es utilizar la anotaci贸n de flecha para
|
| 293 |
+
|
| 294 |
+
00:05:12.690 --> 00:05:16.395
|
| 295 |
+
poder indicarle que estamos haciendo uso de punteros.
|
| 296 |
+
|
| 297 |
+
00:05:17.574 --> 00:05:19.975
|
| 298 |
+
De esta manera, nuestro programa va a volver
|
| 299 |
+
|
| 300 |
+
00:05:19.975 --> 00:05:22.134
|
| 301 |
+
a funcionar. Lo mismo a la hora de
|
| 302 |
+
|
| 303 |
+
00:05:22.134 --> 00:05:29.275
|
| 304 |
+
leerlo. Ahora puedo volver a ejecutar mi programa
|
| 305 |
+
|
| 306 |
+
00:05:29.569 --> 00:05:31.830
|
| 307 |
+
y va a funcionar de la misma manera
|
| 308 |
+
|
| 309 |
+
00:05:32.050 --> 00:05:35.490
|
| 310 |
+
en que funcion贸 antes. La diferencia, como hab铆amos
|
| 311 |
+
|
| 312 |
+
00:05:35.490 --> 00:05:38.229
|
| 313 |
+
visto, es que si t煤 creas una variable
|
| 314 |
+
|
| 315 |
+
00:05:38.370 --> 00:05:41.569
|
| 316 |
+
tipo persona que no sea puntero, eso se
|
| 317 |
+
|
| 318 |
+
00:05:41.569 --> 00:05:45.065
|
| 319 |
+
va a reservar como, pues, memoria desde que
|
| 320 |
+
|
| 321 |
+
00:05:45.065 --> 00:05:48.344
|
| 322 |
+
se est谩 compilando. Mientras que su si t煤
|
| 323 |
+
|
| 324 |
+
00:05:48.344 --> 00:05:51.865
|
| 325 |
+
utilizas un asterisco y la palabra new, est谩s
|
| 326 |
+
|
| 327 |
+
00:05:51.865 --> 00:05:54.664
|
| 328 |
+
ejecutando el programa y durante la ejecuci贸n se
|
| 329 |
+
|
| 330 |
+
00:05:54.664 --> 00:05:57.980
|
| 331 |
+
va a crear esta persona. Se est谩 gestionando
|
| 332 |
+
|
| 333 |
+
00:05:57.980 --> 00:06:01.740
|
| 334 |
+
la memoria de forma din谩mica. La representaci贸n de
|
| 335 |
+
|
| 336 |
+
00:06:01.740 --> 00:06:03.820
|
| 337 |
+
la persona que acabamos de crear en la
|
| 338 |
+
|
| 339 |
+
00:06:03.820 --> 00:06:07.580
|
| 340 |
+
memoria ser铆a la siguiente, suponiendo que creamos sin
|
| 341 |
+
|
| 342 |
+
00:06:07.580 --> 00:06:12.225
|
| 343 |
+
punteros esta informaci贸n o con punteros, igualmente el
|
| 344 |
+
|
| 345 |
+
00:06:12.605 --> 00:06:15.645
|
| 346 |
+
lenguaje de programaci贸n lo que va a realizar
|
| 347 |
+
|
| 348 |
+
00:06:15.645 --> 00:06:18.365
|
| 349 |
+
es apartar un segmento de memoria del tama帽o
|
| 350 |
+
|
| 351 |
+
00:06:18.365 --> 00:06:21.645
|
| 352 |
+
de bytes que, pues, dependiendo si declaramos, por
|
| 353 |
+
|
| 354 |
+
00:06:21.645 --> 00:06:24.130
|
| 355 |
+
ejemplo, el nombre como string, pues va a
|
| 356 |
+
|
| 357 |
+
00:06:24.130 --> 00:06:26.970
|
| 358 |
+
almacenar la cantidad de caracteres necesarios para almacenar
|
| 359 |
+
|
| 360 |
+
00:06:26.970 --> 00:06:30.570
|
| 361 |
+
el nombre y el car谩cter de cierre, que
|
| 362 |
+
|
| 363 |
+
00:06:30.570 --> 00:06:34.010
|
| 364 |
+
es el car谩cter vac铆o, y adem谩s le va
|
| 365 |
+
|
| 366 |
+
00:06:34.010 --> 00:06:36.650
|
| 367 |
+
a sumar, pues la cantidad de memoria necesaria
|
| 368 |
+
|
| 369 |
+
00:06:36.650 --> 00:06:39.815
|
| 370 |
+
para almacenar la edad. Funcionar铆a de la forma
|
| 371 |
+
|
| 372 |
+
00:06:39.815 --> 00:06:41.655
|
| 373 |
+
en que lo est谩s viendo en pantalla y,
|
| 374 |
+
|
| 375 |
+
00:06:41.655 --> 00:06:43.975
|
| 376 |
+
por lo tanto, si t煤 quisieras acceder, ya
|
| 377 |
+
|
| 378 |
+
00:06:43.975 --> 00:06:46.295
|
| 379 |
+
sea a los valores de los punteros, al
|
| 380 |
+
|
| 381 |
+
00:06:46.295 --> 00:06:48.695
|
| 382 |
+
valor de la variable, tanto de nombre como
|
| 383 |
+
|
| 384 |
+
00:06:48.695 --> 00:06:53.230
|
| 385 |
+
de edad, podr铆as, pues, imprimirlo con COUT y
|
| 386 |
+
|
| 387 |
+
00:06:53.230 --> 00:06:54.830
|
| 388 |
+
ver que lo que se muestra en el
|
| 389 |
+
|
| 390 |
+
00:06:54.830 --> 00:06:58.050
|
| 391 |
+
recuadro negro ser铆a correcto. Te invito a probarlo
|
| 392 |
+
|
| 393 |
+
00:06:58.430 --> 00:07:01.070
|
| 394 |
+
en tu computadora, puedes hacer COUT y realizar
|
| 395 |
+
|
| 396 |
+
00:07:01.070 --> 00:07:03.596
|
| 397 |
+
cada una de las siguientes operaciones para que,
|
| 398 |
+
|
| 399 |
+
00:07:03.596 --> 00:07:06.736
|
| 400 |
+
pues, tengas la experiencia de c贸mo funcionan internamente
|
| 401 |
+
|
| 402 |
+
00:07:06.796 --> 00:07:07.536
|
| 403 |
+
los punteros.
|
subir/Curso de Programaci贸n Orientada a Objetos con C/02-Estructuras de datos/02-Resumen.html
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
subir/Curso de Programaci贸n Orientada a Objetos con C/02-Estructuras de datos/03-Resumen.html
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
subir/Curso de Programaci贸n Orientada a Objetos con C/02-Estructuras de datos/03-Uniones y Enumeraciones en C Gesti贸n Eficiente de Memoria.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:343969521c85b77eb6e865becdbeeda36524402bb7bbcfe481dff8258e305e7d
|
| 3 |
+
size 102710230
|
subir/Curso de Programaci贸n Orientada a Objetos con C/02-Estructuras de datos/03-Uniones y Enumeraciones en C Gesti贸n Eficiente de Memoria.vtt
ADDED
|
@@ -0,0 +1,559 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
WEBVTT
|
| 2 |
+
|
| 3 |
+
00:00:03.360 --> 00:00:05.859
|
| 4 |
+
Ahora vamos a hablar sobre uniones y enumeraciones.
|
| 5 |
+
|
| 6 |
+
00:00:06.480 --> 00:00:09.540
|
| 7 |
+
Son dos conceptos bastante importantes y bastante 煤tiles
|
| 8 |
+
|
| 9 |
+
00:00:09.679 --> 00:00:11.599
|
| 10 |
+
a la hora de gestionar la memoria, ya
|
| 11 |
+
|
| 12 |
+
00:00:11.599 --> 00:00:15.075
|
| 13 |
+
que nos permiten, pues, ahorrar espacios de memoria
|
| 14 |
+
|
| 15 |
+
00:00:15.215 --> 00:00:18.035
|
| 16 |
+
en la RAM para almacenar datos que sabemos
|
| 17 |
+
|
| 18 |
+
00:00:18.175 --> 00:00:20.735
|
| 19 |
+
que pueden compartir la memoria porque no van
|
| 20 |
+
|
| 21 |
+
00:00:20.735 --> 00:00:23.294
|
| 22 |
+
a existir al mismo tiempo. Vamos al ejemplo
|
| 23 |
+
|
| 24 |
+
00:00:23.294 --> 00:00:25.615
|
| 25 |
+
de c贸digo. Lo primero que vamos a hacer
|
| 26 |
+
|
| 27 |
+
00:00:25.615 --> 00:00:28.410
|
| 28 |
+
es utilizar las uniones. Las uniones son un
|
| 29 |
+
|
| 30 |
+
00:00:28.410 --> 00:00:29.850
|
| 31 |
+
tipo de estructura especial que nos va a
|
| 32 |
+
|
| 33 |
+
00:00:29.850 --> 00:00:32.729
|
| 34 |
+
servir para almacenar en el mismo espacio de
|
| 35 |
+
|
| 36 |
+
00:00:32.729 --> 00:00:37.130
|
| 37 |
+
memoria diferentes valores. Por ejemplo, si quisiera una
|
| 38 |
+
|
| 39 |
+
00:00:37.130 --> 00:00:39.770
|
| 40 |
+
uni贸n que me permita almacenar un n煤mero o
|
| 41 |
+
|
| 42 |
+
00:00:39.770 --> 00:00:42.165
|
| 43 |
+
una letra, pero solo una a la vez,
|
| 44 |
+
|
| 45 |
+
00:00:42.325 --> 00:00:45.765
|
| 46 |
+
podr铆a realizarlo de la siguiente manera. Comenzamos con
|
| 47 |
+
|
| 48 |
+
00:00:45.765 --> 00:00:50.005
|
| 49 |
+
la palabra reservada uni贸n. Ahora le podemos poner
|
| 50 |
+
|
| 51 |
+
00:00:50.005 --> 00:00:56.300
|
| 52 |
+
un un nombre, por ejemplo, n煤mero letra. Aqu铆
|
| 53 |
+
|
| 54 |
+
00:00:56.300 --> 00:01:00.460
|
| 55 |
+
me falt贸 la n煤mero letra. Ahora podemos darle,
|
| 56 |
+
|
| 57 |
+
00:01:00.460 --> 00:01:02.540
|
| 58 |
+
pues, una definici贸n de qu茅 tipo de valores
|
| 59 |
+
|
| 60 |
+
00:01:02.540 --> 00:01:04.540
|
| 61 |
+
va a almacenar, y eso lo hacemos, pues,
|
| 62 |
+
|
| 63 |
+
00:01:04.540 --> 00:01:06.620
|
| 64 |
+
muy similar a las estructuras utilizando un par
|
| 65 |
+
|
| 66 |
+
00:01:06.620 --> 00:01:10.455
|
| 67 |
+
de llaves. Y ahora s铆, de la misma
|
| 68 |
+
|
| 69 |
+
00:01:10.455 --> 00:01:12.155
|
| 70 |
+
forma en que lo hac铆amos en las estructuras,
|
| 71 |
+
|
| 72 |
+
00:01:12.615 --> 00:01:16.055
|
| 73 |
+
podemos indicarle los diferentes valores alternativos que va
|
| 74 |
+
|
| 75 |
+
00:01:16.055 --> 00:01:18.695
|
| 76 |
+
a poder almacenar. Por ejemplo, si yo quiero
|
| 77 |
+
|
| 78 |
+
00:01:18.695 --> 00:01:22.055
|
| 79 |
+
almacenar un entero, puedo indicarle un int y
|
| 80 |
+
|
| 81 |
+
00:01:22.055 --> 00:01:26.009
|
| 82 |
+
que se va a llamar n煤mero, Puedo no
|
| 83 |
+
|
| 84 |
+
00:01:26.009 --> 00:01:30.170
|
| 85 |
+
inicializarlo y dejarlo vac铆o y puedo crear ahora,
|
| 86 |
+
|
| 87 |
+
00:01:30.170 --> 00:01:32.429
|
| 88 |
+
por ejemplo, la letra podr铆a ser tipo car谩cter
|
| 89 |
+
|
| 90 |
+
00:01:35.289 --> 00:01:37.450
|
| 91 |
+
y listo. Con esto lo que tengo es
|
| 92 |
+
|
| 93 |
+
00:01:37.450 --> 00:01:39.844
|
| 94 |
+
una uni贸n que es capaz de almacenar, pues,
|
| 95 |
+
|
| 96 |
+
00:01:39.844 --> 00:01:42.164
|
| 97 |
+
en el mismo espacio de memoria RAM, tanto
|
| 98 |
+
|
| 99 |
+
00:01:42.164 --> 00:01:44.005
|
| 100 |
+
un n煤mero como una letra, y lo va
|
| 101 |
+
|
| 102 |
+
00:01:44.005 --> 00:01:46.804
|
| 103 |
+
a interpretar de diferente manera gracias a que
|
| 104 |
+
|
| 105 |
+
00:01:46.804 --> 00:01:48.645
|
| 106 |
+
le indicamos que uno lo va a interpretar
|
| 107 |
+
|
| 108 |
+
00:01:48.645 --> 00:01:51.600
|
| 109 |
+
como int, la palabra, la variable n煤mero, y
|
| 110 |
+
|
| 111 |
+
00:01:51.600 --> 00:01:54.020
|
| 112 |
+
cuando lo invoquemos como letra, va a saber,
|
| 113 |
+
|
| 114 |
+
00:01:54.080 --> 00:01:56.420
|
| 115 |
+
gracias a esta declaraci贸n, que es un car谩cter.
|
| 116 |
+
|
| 117 |
+
00:01:56.800 --> 00:01:58.880
|
| 118 |
+
Vamos a utilizarlo de la siguiente manera. Vamos
|
| 119 |
+
|
| 120 |
+
00:01:58.880 --> 00:02:02.240
|
| 121 |
+
a realizar, por ejemplo, una asignaci贸n y se
|
| 122 |
+
|
| 123 |
+
00:02:02.240 --> 00:02:04.720
|
| 124 |
+
utiliza como un tipo. Por ejemplo, yo quiero
|
| 125 |
+
|
| 126 |
+
00:02:04.720 --> 00:02:07.140
|
| 127 |
+
crear una variable que sea tipo n煤mero letra,
|
| 128 |
+
|
| 129 |
+
00:02:09.655 --> 00:02:12.635
|
| 130 |
+
la crear铆a escribiendo el tipo y a continuaci贸n
|
| 131 |
+
|
| 132 |
+
00:02:12.935 --> 00:02:15.655
|
| 133 |
+
el nombre. Yo solo voy a ponerle x
|
| 134 |
+
|
| 135 |
+
00:02:15.655 --> 00:02:19.334
|
| 136 |
+
por fines de practicidad y la 煤nica condici贸n
|
| 137 |
+
|
| 138 |
+
00:02:19.334 --> 00:02:22.135
|
| 139 |
+
o la 煤nica diferencia con una variable normal
|
| 140 |
+
|
| 141 |
+
00:02:22.135 --> 00:02:24.190
|
| 142 |
+
es que esto se comporta m谩s o menos
|
| 143 |
+
|
| 144 |
+
00:02:24.190 --> 00:02:28.130
|
| 145 |
+
como una lista porque necesitamos colocarlo entre llaves.
|
| 146 |
+
|
| 147 |
+
00:02:28.510 --> 00:02:30.670
|
| 148 |
+
Ahora s铆, podemos indicarle cu谩l va a ser
|
| 149 |
+
|
| 150 |
+
00:02:30.670 --> 00:02:33.069
|
| 151 |
+
su valor. En este caso, supongamos que yo
|
| 152 |
+
|
| 153 |
+
00:02:33.069 --> 00:02:35.550
|
| 154 |
+
quiero almacenar una letra, por ejemplo, la letra
|
| 155 |
+
|
| 156 |
+
00:02:35.550 --> 00:02:38.370
|
| 157 |
+
a. Lo podr铆a realizar de la siguiente manera.
|
| 158 |
+
|
| 159 |
+
00:02:38.955 --> 00:02:42.474
|
| 160 |
+
Con esto, yo cre茅 una variable que es
|
| 161 |
+
|
| 162 |
+
00:02:42.474 --> 00:02:45.754
|
| 163 |
+
tipo n煤mero letra, que se llama x. Esta
|
| 164 |
+
|
| 165 |
+
00:02:45.754 --> 00:02:48.394
|
| 166 |
+
yo la puedo imprimir en pantalla y leerla,
|
| 167 |
+
|
| 168 |
+
00:02:48.394 --> 00:02:50.715
|
| 169 |
+
ya sea como n煤mero o como letra, dependiendo
|
| 170 |
+
|
| 171 |
+
00:02:50.715 --> 00:02:53.910
|
| 172 |
+
de c贸mo la invoque. Vamos a hacerlo. Puedo
|
| 173 |
+
|
| 174 |
+
00:02:54.210 --> 00:02:56.610
|
| 175 |
+
escribir un c out y vamos a ver
|
| 176 |
+
|
| 177 |
+
00:02:56.610 --> 00:03:07.385
|
| 178 |
+
que se muestre x como un n煤mero. Vamos
|
| 179 |
+
|
| 180 |
+
00:03:07.385 --> 00:03:13.185
|
| 181 |
+
a invocarla con el nombre de la variable
|
| 182 |
+
|
| 183 |
+
00:03:13.185 --> 00:03:15.505
|
| 184 |
+
y a continuaci贸n, dado que es una uni贸n,
|
| 185 |
+
|
| 186 |
+
00:03:15.505 --> 00:03:17.985
|
| 187 |
+
ya nuestro editor de c贸digo nos va a
|
| 188 |
+
|
| 189 |
+
00:03:17.985 --> 00:03:20.385
|
| 190 |
+
recomendar, pues, las dos posibilidades. En este caso,
|
| 191 |
+
|
| 192 |
+
00:03:20.385 --> 00:03:22.480
|
| 193 |
+
si lo quiero leer como n煤mero, lo puedo
|
| 194 |
+
|
| 195 |
+
00:03:22.480 --> 00:03:24.560
|
| 196 |
+
leer as铆 y voy a hacer un cambio
|
| 197 |
+
|
| 198 |
+
00:03:24.560 --> 00:03:28.880
|
| 199 |
+
de l铆nea. Y lo mismo suceder铆a si lo
|
| 200 |
+
|
| 201 |
+
00:03:28.880 --> 00:03:38.505
|
| 202 |
+
quiero leer, pues como una letra. Puedo realizar
|
| 203 |
+
|
| 204 |
+
00:03:39.365 --> 00:03:42.025
|
| 205 |
+
el nombre de la variable punto y letra.
|
| 206 |
+
|
| 207 |
+
00:03:43.205 --> 00:03:45.545
|
| 208 |
+
Ahora vamos a ver qu茅 sucede al ejecutarlo.
|
| 209 |
+
|
| 210 |
+
00:03:50.420 --> 00:03:52.900
|
| 211 |
+
Lo que puedes observar es que, de una
|
| 212 |
+
|
| 213 |
+
00:03:52.900 --> 00:03:55.780
|
| 214 |
+
forma u otra, nuestro compilador imprime el valor
|
| 215 |
+
|
| 216 |
+
00:03:55.780 --> 00:03:59.560
|
| 217 |
+
que estamos esperando. Como mencionaba, esto es posible
|
| 218 |
+
|
| 219 |
+
00:03:59.780 --> 00:04:03.645
|
| 220 |
+
gracias a que la letra a est谩 almacenada
|
| 221 |
+
|
| 222 |
+
00:04:03.645 --> 00:04:06.045
|
| 223 |
+
en la misma direcci贸n de memoria. Por lo
|
| 224 |
+
|
| 225 |
+
00:04:06.045 --> 00:04:08.045
|
| 226 |
+
tanto, cuando la imprimimos como n煤mero, lo que
|
| 227 |
+
|
| 228 |
+
00:04:08.045 --> 00:04:10.465
|
| 229 |
+
nos va a dar es su equivalente num茅rico
|
| 230 |
+
|
| 231 |
+
00:04:11.085 --> 00:04:13.725
|
| 232 |
+
en la tabla ASCII. Como vimos en las
|
| 233 |
+
|
| 234 |
+
00:04:13.725 --> 00:04:16.990
|
| 235 |
+
primeras clases, los caracteres se almacenan en, pues,
|
| 236 |
+
|
| 237 |
+
00:04:16.990 --> 00:04:19.729
|
| 238 |
+
su equivalente num茅rico dentro de la memoria RAM,
|
| 239 |
+
|
| 240 |
+
00:04:20.029 --> 00:04:22.830
|
| 241 |
+
mientras que cuando le pedimos la el mismo
|
| 242 |
+
|
| 243 |
+
00:04:22.830 --> 00:04:24.750
|
| 244 |
+
valor, pero en forma de letra, nos va
|
| 245 |
+
|
| 246 |
+
00:04:24.750 --> 00:04:28.365
|
| 247 |
+
a devolver directamente la letra a. Una forma
|
| 248 |
+
|
| 249 |
+
00:04:28.365 --> 00:04:31.245
|
| 250 |
+
de comprobarlo ser铆a si yo tomara ese n煤mero
|
| 251 |
+
|
| 252 |
+
00:04:31.245 --> 00:04:35.085
|
| 253 |
+
y lo convirtiera de forma est谩tica en un
|
| 254 |
+
|
| 255 |
+
00:04:35.085 --> 00:04:37.565
|
| 256 |
+
car谩cter en lugar de en un n煤mero. Lo
|
| 257 |
+
|
| 258 |
+
00:04:37.565 --> 00:04:39.485
|
| 259 |
+
podr铆a hacer justo como lo hemos realizado en
|
| 260 |
+
|
| 261 |
+
00:04:39.485 --> 00:04:42.045
|
| 262 |
+
otras clases, indic谩ndole que yo lo quiero como
|
| 263 |
+
|
| 264 |
+
00:04:42.045 --> 00:04:46.229
|
| 265 |
+
car谩cter. De esta manera, vamos a forzar esa
|
| 266 |
+
|
| 267 |
+
00:04:46.229 --> 00:04:49.189
|
| 268 |
+
conversi贸n y las dos ocasiones nos va a
|
| 269 |
+
|
| 270 |
+
00:04:49.189 --> 00:04:51.750
|
| 271 |
+
mostrar una letra a. Lo mismo pasar铆a si
|
| 272 |
+
|
| 273 |
+
00:04:51.750 --> 00:04:54.870
|
| 274 |
+
yo tengo esta letra y la quiero interpretar,
|
| 275 |
+
|
| 276 |
+
00:04:54.870 --> 00:04:57.030
|
| 277 |
+
pero como un n煤mero. Podr铆a decirle que lo
|
| 278 |
+
|
| 279 |
+
00:04:57.030 --> 00:05:00.055
|
| 280 |
+
quiero como un entero y cuando realice la
|
| 281 |
+
|
| 282 |
+
00:05:00.055 --> 00:05:02.135
|
| 283 |
+
ejecuci贸n, ahora me va a dar el n煤mero
|
| 284 |
+
|
| 285 |
+
00:05:02.135 --> 00:05:05.575
|
| 286 |
+
sesenta y cinco. La siguiente estructura ser铆a las
|
| 287 |
+
|
| 288 |
+
00:05:05.575 --> 00:05:08.535
|
| 289 |
+
enumeraciones, y las enumeraciones nos sirven para algo
|
| 290 |
+
|
| 291 |
+
00:05:08.535 --> 00:05:12.615
|
| 292 |
+
muy parecido, ahorrar memoria utilizando el mismo registro
|
| 293 |
+
|
| 294 |
+
00:05:12.615 --> 00:05:15.460
|
| 295 |
+
dentro de la memoria RAM, sabiendo que no
|
| 296 |
+
|
| 297 |
+
00:05:15.460 --> 00:05:17.380
|
| 298 |
+
vamos a utilizar dos de sus valores a
|
| 299 |
+
|
| 300 |
+
00:05:17.380 --> 00:05:19.220
|
| 301 |
+
la vez, solo uno. Y la forma en
|
| 302 |
+
|
| 303 |
+
00:05:19.220 --> 00:05:21.139
|
| 304 |
+
que funcionan es la siguiente. T煤 vas a
|
| 305 |
+
|
| 306 |
+
00:05:21.139 --> 00:05:24.100
|
| 307 |
+
escribir la palabra reservada en un para comenzar
|
| 308 |
+
|
| 309 |
+
00:05:24.100 --> 00:05:27.495
|
| 310 |
+
a declarar una enumeraci贸n y su utilidad es
|
| 311 |
+
|
| 312 |
+
00:05:27.895 --> 00:05:29.435
|
| 313 |
+
por la que vamos a ver a continuaci贸n.
|
| 314 |
+
|
| 315 |
+
00:05:29.495 --> 00:05:31.435
|
| 316 |
+
En este caso, si yo quisiera, por ejemplo,
|
| 317 |
+
|
| 318 |
+
00:05:32.615 --> 00:05:35.735
|
| 319 |
+
establecer un calendario en el que asistes o
|
| 320 |
+
|
| 321 |
+
00:05:35.735 --> 00:05:39.014
|
| 322 |
+
en el que realizas alguna actividad, pues probablemente
|
| 323 |
+
|
| 324 |
+
00:05:39.014 --> 00:05:41.514
|
| 325 |
+
esa actividad va a tener una fecha, un
|
| 326 |
+
|
| 327 |
+
00:05:41.574 --> 00:05:44.380
|
| 328 |
+
d铆a, un mes, etc茅tera, 驴no? Ahora, si yo
|
| 329 |
+
|
| 330 |
+
00:05:44.380 --> 00:05:46.460
|
| 331 |
+
quisiera solo almacenar una fecha y no todas
|
| 332 |
+
|
| 333 |
+
00:05:46.460 --> 00:05:49.280
|
| 334 |
+
las fechas posibles, por ejemplo, yo quisiera almacenar
|
| 335 |
+
|
| 336 |
+
00:05:49.660 --> 00:05:51.100
|
| 337 |
+
solo un d铆a de la semana en el
|
| 338 |
+
|
| 339 |
+
00:05:51.100 --> 00:05:53.440
|
| 340 |
+
que sucedi贸 o va a suceder esa acci贸n,
|
| 341 |
+
|
| 342 |
+
00:05:53.820 --> 00:05:56.240
|
| 343 |
+
pues puedo dar por hecho que puedo almacenar
|
| 344 |
+
|
| 345 |
+
00:05:56.300 --> 00:05:58.544
|
| 346 |
+
los d铆as de la semana en una misma
|
| 347 |
+
|
| 348 |
+
00:05:58.604 --> 00:06:01.724
|
| 349 |
+
variable y que dependiendo, pues, esa actividad, es
|
| 350 |
+
|
| 351 |
+
00:06:01.724 --> 00:06:04.604
|
| 352 |
+
el d铆a que voy a almacenar. Yo podr铆a
|
| 353 |
+
|
| 354 |
+
00:06:04.604 --> 00:06:07.405
|
| 355 |
+
hacer esto de la siguiente manera. Podr铆a indicarle
|
| 356 |
+
|
| 357 |
+
00:06:07.405 --> 00:06:09.324
|
| 358 |
+
una variable que se llame d铆as de la
|
| 359 |
+
|
| 360 |
+
00:06:09.324 --> 00:06:18.510
|
| 361 |
+
semana. Con esto estar铆a definiendo un tipo de
|
| 362 |
+
|
| 363 |
+
00:06:18.510 --> 00:06:21.729
|
| 364 |
+
dato que ya puedo invocar y que puedo
|
| 365 |
+
|
| 366 |
+
00:06:21.870 --> 00:06:24.030
|
| 367 |
+
crear cu谩les son los diferentes d铆as de la
|
| 368 |
+
|
| 369 |
+
00:06:24.030 --> 00:06:26.845
|
| 370 |
+
semana, los diferentes valores que puede obtener. En
|
| 371 |
+
|
| 372 |
+
00:06:26.845 --> 00:06:31.665
|
| 373 |
+
este caso podr铆amos introducirlos, por ejemplo, lunes, martes,
|
| 374 |
+
|
| 375 |
+
00:06:33.645 --> 00:06:38.045
|
| 376 |
+
mi茅rcoles. A partir de ese momento, yo ya
|
| 377 |
+
|
| 378 |
+
00:06:38.045 --> 00:06:40.650
|
| 379 |
+
puedo crear variables que sean de tipo d铆as
|
| 380 |
+
|
| 381 |
+
00:06:40.650 --> 00:06:43.450
|
| 382 |
+
de la semana. Por ejemplo, si yo tengo
|
| 383 |
+
|
| 384 |
+
00:06:43.450 --> 00:06:45.450
|
| 385 |
+
una variable tipo d铆as de la semana llamada
|
| 386 |
+
|
| 387 |
+
00:06:45.450 --> 00:06:53.210
|
| 388 |
+
d铆a, yo ya puedo inicializarla con alguno de
|
| 389 |
+
|
| 390 |
+
00:06:53.210 --> 00:07:02.384
|
| 391 |
+
los valores posibles, por ejemplo, martes. Ahora, 驴qu茅
|
| 392 |
+
|
| 393 |
+
00:07:02.384 --> 00:07:05.345
|
| 394 |
+
pasar铆a si yo quisiera imprimir el valor de
|
| 395 |
+
|
| 396 |
+
00:07:05.345 --> 00:07:07.585
|
| 397 |
+
esta variable que se llama d铆a? Vamos a
|
| 398 |
+
|
| 399 |
+
00:07:07.585 --> 00:07:14.280
|
| 400 |
+
hacerlo. Voy a terminar la l铆nea anterior en
|
| 401 |
+
|
| 402 |
+
00:07:14.280 --> 00:07:17.000
|
| 403 |
+
cambio de l铆nea para que haga, para que
|
| 404 |
+
|
| 405 |
+
00:07:17.000 --> 00:07:21.880
|
| 406 |
+
lo muestre en el siguiente rengl贸n. Como puedes
|
| 407 |
+
|
| 408 |
+
00:07:21.880 --> 00:07:24.120
|
| 409 |
+
ver, al final de la salida, mi terminal
|
| 410 |
+
|
| 411 |
+
00:07:24.120 --> 00:07:26.625
|
| 412 |
+
est谩 imprimiendo el n煤mero uno. 驴Por qu茅 pasa
|
| 413 |
+
|
| 414 |
+
00:07:26.625 --> 00:07:29.985
|
| 415 |
+
esto? Porque cuando yo creo la enumeraci贸n, en
|
| 416 |
+
|
| 417 |
+
00:07:29.985 --> 00:07:32.145
|
| 418 |
+
ese momento empiezo a escribir una serie de
|
| 419 |
+
|
| 420 |
+
00:07:32.145 --> 00:07:35.345
|
| 421 |
+
valores posibles que yo puedo, pues leer como
|
| 422 |
+
|
| 423 |
+
00:07:35.345 --> 00:07:37.985
|
| 424 |
+
ser humano. Sin embargo, para la computadora esto
|
| 425 |
+
|
| 426 |
+
00:07:37.985 --> 00:07:40.860
|
| 427 |
+
debe tener, pues alguna representaci贸n num茅rica por debajo.
|
| 428 |
+
|
| 429 |
+
00:07:40.860 --> 00:07:42.939
|
| 430 |
+
Como no tiene otra forma de saber cu谩l
|
| 431 |
+
|
| 432 |
+
00:07:42.939 --> 00:07:46.879
|
| 433 |
+
es esa representaci贸n, representaci贸n num茅rica, asume que estamos
|
| 434 |
+
|
| 435 |
+
00:07:47.099 --> 00:07:49.020
|
| 436 |
+
tratando de una lista ordenada y, por lo
|
| 437 |
+
|
| 438 |
+
00:07:49.020 --> 00:07:51.259
|
| 439 |
+
tanto, lo va a manejar como si fuera
|
| 440 |
+
|
| 441 |
+
00:07:51.259 --> 00:07:53.500
|
| 442 |
+
un array. Simplemente, el primer valor va a
|
| 443 |
+
|
| 444 |
+
00:07:53.500 --> 00:07:55.259
|
| 445 |
+
ser cero, el segundo valor va a ser
|
| 446 |
+
|
| 447 |
+
00:07:55.259 --> 00:07:58.285
|
| 448 |
+
uno y as铆 sucesivamente hasta la cantidad de
|
| 449 |
+
|
| 450 |
+
00:07:58.285 --> 00:08:01.645
|
| 451 |
+
valores que tengamos dentro de nuestra enumeraci贸n. De
|
| 452 |
+
|
| 453 |
+
00:08:01.645 --> 00:08:04.285
|
| 454 |
+
esta manera, si yo quisiera almacenar en la
|
| 455 |
+
|
| 456 |
+
00:08:04.285 --> 00:08:07.085
|
| 457 |
+
variable d铆a un n煤mero de la semana, solamente
|
| 458 |
+
|
| 459 |
+
00:08:07.085 --> 00:08:10.205
|
| 460 |
+
va a almacenar el valor correspondiente a ese
|
| 461 |
+
|
| 462 |
+
00:08:10.205 --> 00:08:13.530
|
| 463 |
+
d铆a. Ahora, 驴qu茅 suceder铆a si yo quisiera cambiar
|
| 464 |
+
|
| 465 |
+
00:08:13.530 --> 00:08:16.169
|
| 466 |
+
el comportamiento por defecto de las enumeraciones para
|
| 467 |
+
|
| 468 |
+
00:08:16.169 --> 00:08:18.490
|
| 469 |
+
que tengan un valor no num茅rico? Pues yo
|
| 470 |
+
|
| 471 |
+
00:08:18.490 --> 00:08:21.470
|
| 472 |
+
podr铆a hacerlo asign谩ndole a cada una de sus
|
| 473 |
+
|
| 474 |
+
00:08:21.690 --> 00:08:25.115
|
| 475 |
+
de sus posibles valores una equivalencia. Por ejemplo,
|
| 476 |
+
|
| 477 |
+
00:08:25.115 --> 00:08:27.294
|
| 478 |
+
si yo quisiera que el lunes se represente
|
| 479 |
+
|
| 480 |
+
00:08:27.835 --> 00:08:30.155
|
| 481 |
+
internamente como un car谩cter, podr铆a ser algo como
|
| 482 |
+
|
| 483 |
+
00:08:30.155 --> 00:08:33.755
|
| 484 |
+
esto, podr铆a indicar un s铆mbolo de igual y
|
| 485 |
+
|
| 486 |
+
00:08:33.755 --> 00:08:37.169
|
| 487 |
+
el car谩cter l, por ejemplo, para indicar, pues,
|
| 488 |
+
|
| 489 |
+
00:08:37.329 --> 00:08:39.970
|
| 490 |
+
que es lunes podr铆a ser cualquier car谩cter. Y
|
| 491 |
+
|
| 492 |
+
00:08:39.970 --> 00:08:41.889
|
| 493 |
+
para el martes voy a utilizar, por ejemplo,
|
| 494 |
+
|
| 495 |
+
00:08:41.889 --> 00:08:45.250
|
| 496 |
+
una m y para el mi茅rcoles, para no
|
| 497 |
+
|
| 498 |
+
00:08:45.250 --> 00:08:47.329
|
| 499 |
+
repetir, pues voy a utilizar una x, por
|
| 500 |
+
|
| 501 |
+
00:08:47.329 --> 00:08:50.690
|
| 502 |
+
ejemplo. De esta manera, si ahora yo quiero
|
| 503 |
+
|
| 504 |
+
00:08:50.690 --> 00:08:54.055
|
| 505 |
+
imprimir el valor en pantalla, ver谩s que obtendr茅,
|
| 506 |
+
|
| 507 |
+
00:08:54.115 --> 00:08:55.955
|
| 508 |
+
pues aqu铆 lo que sucedi贸 es que muestra
|
| 509 |
+
|
| 510 |
+
00:08:55.955 --> 00:08:59.555
|
| 511 |
+
el car谩cter, pues ASCII, el equivalente num茅rico, pero
|
| 512 |
+
|
| 513 |
+
00:08:59.555 --> 00:09:01.715
|
| 514 |
+
si yo lo imprimo, aqu铆 le pido que
|
| 515 |
+
|
| 516 |
+
00:09:01.715 --> 00:09:06.610
|
| 517 |
+
lo haga como car谩cter. Voy a obtener, pues,
|
| 518 |
+
|
| 519 |
+
00:09:06.610 --> 00:09:08.050
|
| 520 |
+
la letra que yo haya seleccionado para el
|
| 521 |
+
|
| 522 |
+
00:09:08.050 --> 00:09:12.930
|
| 523 |
+
valor que establec铆 para mi enumeraci贸n. Como puedes
|
| 524 |
+
|
| 525 |
+
00:09:12.930 --> 00:09:15.570
|
| 526 |
+
ver, las uniones y las enumeraciones pueden ser
|
| 527 |
+
|
| 528 |
+
00:09:15.570 --> 00:09:18.690
|
| 529 |
+
bastante 煤tiles cuando queremos optimizar el espacio en
|
| 530 |
+
|
| 531 |
+
00:09:18.690 --> 00:09:21.255
|
| 532 |
+
memoria, ya que de esta manera, pues nos
|
| 533 |
+
|
| 534 |
+
00:09:21.255 --> 00:09:23.815
|
| 535 |
+
permiten almacenar en el mismo registro de la
|
| 536 |
+
|
| 537 |
+
00:09:23.815 --> 00:09:26.214
|
| 538 |
+
memoria RAM, pues todos los datos que puedan
|
| 539 |
+
|
| 540 |
+
00:09:26.214 --> 00:09:28.454
|
| 541 |
+
llegar a tener o llegar a suceder para
|
| 542 |
+
|
| 543 |
+
00:09:28.454 --> 00:09:31.495
|
| 544 |
+
una variable. Y esto lo podemos combinar con
|
| 545 |
+
|
| 546 |
+
00:09:31.495 --> 00:09:35.690
|
| 547 |
+
nuestro conocimiento de punteros y de estructuras. Realmente,
|
| 548 |
+
|
| 549 |
+
00:09:35.910 --> 00:09:39.110
|
| 550 |
+
pues, este es un tema bastante complejo y
|
| 551 |
+
|
| 552 |
+
00:09:39.110 --> 00:09:42.150
|
| 553 |
+
bastante diverso dentro del lenguaje programaci贸n C m谩s
|
| 554 |
+
|
| 555 |
+
00:09:42.150 --> 00:09:44.870
|
| 556 |
+
m谩s, y ahora vamos a pasar al siguiente
|
| 557 |
+
|
| 558 |
+
00:09:44.870 --> 00:09:47.530
|
| 559 |
+
tema, que es la programaci贸n orientada a objetos.
|
subir/Curso de Programaci贸n Orientada a Objetos con C/03-Introducci贸n a la Programaci贸n Orientada a Objetos/01-Lecturas recomendadas.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
https://platzi.com/cursos/oop/
|
subir/Curso de Programaci贸n Orientada a Objetos con C/03-Introducci贸n a la Programaci贸n Orientada a Objetos/01-Programaci贸n Orientada a Objetos en C Conceptos B谩sicos.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:44bf5da0e75f85698dd5c15f735473a05a60b3c7191ba86e2393561fbf5ce592
|
| 3 |
+
size 55711549
|
subir/Curso de Programaci贸n Orientada a Objetos con C/03-Introducci贸n a la Programaci贸n Orientada a Objetos/01-Programaci贸n Orientada a Objetos en C Conceptos B谩sicos.vtt
ADDED
|
@@ -0,0 +1,307 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
WEBVTT
|
| 2 |
+
|
| 3 |
+
00:00:03.520 --> 00:00:05.759
|
| 4 |
+
Vamos a comenzar con este nuevo tema, que
|
| 5 |
+
|
| 6 |
+
00:00:05.759 --> 00:00:09.040
|
| 7 |
+
es la programaci贸n orientada a objetos. La programaci贸n
|
| 8 |
+
|
| 9 |
+
00:00:09.040 --> 00:00:11.280
|
| 10 |
+
orientada a objetos, como vimos, es la gran
|
| 11 |
+
|
| 12 |
+
00:00:11.280 --> 00:00:13.405
|
| 13 |
+
diferencia entre seis e m谩s m谩s. Es el
|
| 14 |
+
|
| 15 |
+
00:00:13.405 --> 00:00:16.925
|
| 16 |
+
paradigma que Jern Strollstruft agreg贸 al compilador de
|
| 17 |
+
|
| 18 |
+
00:00:16.925 --> 00:00:18.925
|
| 19 |
+
C m谩s m谩s para, al compilador de C
|
| 20 |
+
|
| 21 |
+
00:00:18.925 --> 00:00:22.125
|
| 22 |
+
para crear C m谩s m谩s. Con todo esto,
|
| 23 |
+
|
| 24 |
+
00:00:22.125 --> 00:00:25.185
|
| 25 |
+
la capacidad de programaci贸n orienta a objetos es,
|
| 26 |
+
|
| 27 |
+
00:00:25.360 --> 00:00:26.880
|
| 28 |
+
pues, muy diversa. La verdad es que es
|
| 29 |
+
|
| 30 |
+
00:00:26.880 --> 00:00:30.740
|
| 31 |
+
bastante completo el ecosistema de programaci贸n de objetos,
|
| 32 |
+
|
| 33 |
+
00:00:31.040 --> 00:00:33.840
|
| 34 |
+
muchos lenguajes de programaci贸n lo soportan y es
|
| 35 |
+
|
| 36 |
+
00:00:33.840 --> 00:00:36.160
|
| 37 |
+
todo un tema de estudio. Por lo tanto,
|
| 38 |
+
|
| 39 |
+
00:00:36.160 --> 00:00:39.280
|
| 40 |
+
quiero recordarte que en estas clases solamente vamos
|
| 41 |
+
|
| 42 |
+
00:00:39.280 --> 00:00:42.375
|
| 43 |
+
a hablar sobre c贸mo funciona o c贸mo se
|
| 44 |
+
|
| 45 |
+
00:00:42.375 --> 00:00:45.094
|
| 46 |
+
implementa una programaci贸n orientada a objetos en C
|
| 47 |
+
|
| 48 |
+
00:00:45.094 --> 00:00:47.975
|
| 49 |
+
m谩s m谩s. Sin embargo, si quieres conocer, pues,
|
| 50 |
+
|
| 51 |
+
00:00:47.975 --> 00:00:50.875
|
| 52 |
+
a mayor profundidad y con mayor contexto y
|
| 53 |
+
|
| 54 |
+
00:00:51.254 --> 00:00:53.015
|
| 55 |
+
teor铆a lo que es la programaci贸n orientada a
|
| 56 |
+
|
| 57 |
+
00:00:53.015 --> 00:00:55.050
|
| 58 |
+
objetos y todo lo que implica, te invito
|
| 59 |
+
|
| 60 |
+
00:00:55.050 --> 00:00:57.610
|
| 61 |
+
a realizar el curso de Platzi de programaci贸n
|
| 62 |
+
|
| 63 |
+
00:00:57.610 --> 00:01:00.350
|
| 64 |
+
orientada a objetos. Pero, 驴qu茅 es un objeto?
|
| 65 |
+
|
| 66 |
+
00:01:00.650 --> 00:01:03.850
|
| 67 |
+
Pues, un objeto es una, pues, entidad que
|
| 68 |
+
|
| 69 |
+
00:01:03.850 --> 00:01:06.350
|
| 70 |
+
puede existir en el mundo f铆sico o no,
|
| 71 |
+
|
| 72 |
+
00:01:06.410 --> 00:01:09.985
|
| 73 |
+
pero que tiene las siguientes caracter铆sticas. Tiene una
|
| 74 |
+
|
| 75 |
+
00:01:09.985 --> 00:01:12.885
|
| 76 |
+
clase, es decir, es cierto tipo de objeto,
|
| 77 |
+
|
| 78 |
+
00:01:13.065 --> 00:01:15.105
|
| 79 |
+
tiene un nombre, que es lo que le
|
| 80 |
+
|
| 81 |
+
00:01:15.105 --> 00:01:18.785
|
| 82 |
+
da su identidad, y tiene una serie de
|
| 83 |
+
|
| 84 |
+
00:01:18.785 --> 00:01:21.925
|
| 85 |
+
propiedades y m茅todos. Las propiedades son todas estas,
|
| 86 |
+
|
| 87 |
+
00:01:22.120 --> 00:01:26.700
|
| 88 |
+
pues, caracter铆sticas que son descriptivas. Por ejemplo, si
|
| 89 |
+
|
| 90 |
+
00:01:26.760 --> 00:01:28.600
|
| 91 |
+
un carro tiene un color, eso es una
|
| 92 |
+
|
| 93 |
+
00:01:28.600 --> 00:01:31.820
|
| 94 |
+
propiedad. Si un animal, pues, es de cierta
|
| 95 |
+
|
| 96 |
+
00:01:31.960 --> 00:01:35.215
|
| 97 |
+
especie, eso tambi茅n es una propiedad. Y los
|
| 98 |
+
|
| 99 |
+
00:01:35.215 --> 00:01:37.295
|
| 100 |
+
m茅todos son las cosas que el objeto puede
|
| 101 |
+
|
| 102 |
+
00:01:37.295 --> 00:01:40.335
|
| 103 |
+
hacer. Por ejemplo, si un carro puede acelerar
|
| 104 |
+
|
| 105 |
+
00:01:40.335 --> 00:01:42.994
|
| 106 |
+
o frenar, esas son acciones que puede realizar.
|
| 107 |
+
|
| 108 |
+
00:01:43.295 --> 00:01:45.854
|
| 109 |
+
Si una persona puede hablar o saludar, esas
|
| 110 |
+
|
| 111 |
+
00:01:45.854 --> 00:01:48.940
|
| 112 |
+
tambi茅n son acciones que puede realizar. En programaci贸n
|
| 113 |
+
|
| 114 |
+
00:01:49.080 --> 00:01:51.640
|
| 115 |
+
orientada a objetos, como paradigma, lo que tratamos
|
| 116 |
+
|
| 117 |
+
00:01:51.640 --> 00:01:55.180
|
| 118 |
+
de hacer es escribir nuestros programas pensando en
|
| 119 |
+
|
| 120 |
+
00:01:55.480 --> 00:01:58.700
|
| 121 |
+
entidades y c贸mo estas funcionan y se colaboran
|
| 122 |
+
|
| 123 |
+
00:01:59.000 --> 00:02:02.844
|
| 124 |
+
para intercambiar informaci贸n. Por ejemplo, si quisi茅ramos modelar,
|
| 125 |
+
|
| 126 |
+
00:02:02.844 --> 00:02:06.125
|
| 127 |
+
pues, una empresa por medio de programaci贸n de
|
| 128 |
+
|
| 129 |
+
00:02:06.125 --> 00:02:08.845
|
| 130 |
+
orientaci贸n a objetos, podr铆amos hablar de que una
|
| 131 |
+
|
| 132 |
+
00:02:08.845 --> 00:02:12.685
|
| 133 |
+
persona puede tener un correo electr贸nico institucional y
|
| 134 |
+
|
| 135 |
+
00:02:12.685 --> 00:02:15.832
|
| 136 |
+
si puede realizar ciertas acciones, que ser铆an sus
|
| 137 |
+
|
| 138 |
+
00:02:15.832 --> 00:02:19.380
|
| 139 |
+
m茅todos, pues podr铆a ser enviar correos. Con esto
|
| 140 |
+
|
| 141 |
+
00:02:19.380 --> 00:02:23.300
|
| 142 |
+
tenemos una definici贸n completa que no solamente define,
|
| 143 |
+
|
| 144 |
+
00:02:23.300 --> 00:02:26.520
|
| 145 |
+
como lo vimos anteriormente, una estructura de datos,
|
| 146 |
+
|
| 147 |
+
00:02:27.220 --> 00:02:30.100
|
| 148 |
+
pues que almacena informaci贸n, sino que adem谩s nos
|
| 149 |
+
|
| 150 |
+
00:02:30.100 --> 00:02:34.235
|
| 151 |
+
permite agregar comportamiento a la identidad de cada
|
| 152 |
+
|
| 153 |
+
00:02:34.235 --> 00:02:36.875
|
| 154 |
+
objeto o de cada entidad. Pero, 驴qu茅 es
|
| 155 |
+
|
| 156 |
+
00:02:36.875 --> 00:02:39.435
|
| 157 |
+
la programaci贸n orientada a objetos para C m谩s
|
| 158 |
+
|
| 159 |
+
00:02:39.435 --> 00:02:41.355
|
| 160 |
+
m谩s? Pues, para C m谩s m谩s, como para
|
| 161 |
+
|
| 162 |
+
00:02:41.355 --> 00:02:44.015
|
| 163 |
+
muchos otros lenguajes, es una serie de conceptos
|
| 164 |
+
|
| 165 |
+
00:02:44.155 --> 00:02:45.995
|
| 166 |
+
que se van a implementar al mismo. En
|
| 167 |
+
|
| 168 |
+
00:02:45.995 --> 00:02:48.630
|
| 169 |
+
este caso, tenemos dos conceptos principales de los
|
| 170 |
+
|
| 171 |
+
00:02:48.630 --> 00:02:49.910
|
| 172 |
+
que vamos a hablar en este momento y
|
| 173 |
+
|
| 174 |
+
00:02:49.910 --> 00:02:51.690
|
| 175 |
+
algunos otros de los que vamos a hablar
|
| 176 |
+
|
| 177 |
+
00:02:51.750 --> 00:02:54.490
|
| 178 |
+
en el resto del curso. Estos dos son,
|
| 179 |
+
|
| 180 |
+
00:02:54.630 --> 00:02:57.930
|
| 181 |
+
pues, la abstracci贸n, que es la capacidad de
|
| 182 |
+
|
| 183 |
+
00:02:57.990 --> 00:03:00.390
|
| 184 |
+
realizar programas a partir de definiciones abstractas, es
|
| 185 |
+
|
| 186 |
+
00:03:00.390 --> 00:03:03.165
|
| 187 |
+
decir, en lugar de estar programando para c贸mo
|
| 188 |
+
|
| 189 |
+
00:03:03.165 --> 00:03:06.444
|
| 190 |
+
funciona internamente la computadora, como habr铆a sido programar
|
| 191 |
+
|
| 192 |
+
00:03:06.444 --> 00:03:10.125
|
| 193 |
+
en C, ahora pensar铆amos en t茅rminos de objetos
|
| 194 |
+
|
| 195 |
+
00:03:10.125 --> 00:03:13.405
|
| 196 |
+
y de ideas de entidades abstractas que tienen
|
| 197 |
+
|
| 198 |
+
00:03:13.405 --> 00:03:16.290
|
| 199 |
+
sus atributos y sus m茅todos. Y por medio
|
| 200 |
+
|
| 201 |
+
00:03:16.290 --> 00:03:19.769
|
| 202 |
+
de esto, tambi茅n solo mostrar la informaci贸n esencial
|
| 203 |
+
|
| 204 |
+
00:03:19.769 --> 00:03:22.730
|
| 205 |
+
y ocultar los detalles de implementaci贸n. Por ejemplo,
|
| 206 |
+
|
| 207 |
+
00:03:22.730 --> 00:03:26.090
|
| 208 |
+
volviendo, pues, a una persona respecto a una
|
| 209 |
+
|
| 210 |
+
00:03:26.090 --> 00:03:29.545
|
| 211 |
+
empresa, pues podr铆amos pensar que puede tener un
|
| 212 |
+
|
| 213 |
+
00:03:29.545 --> 00:03:31.905
|
| 214 |
+
m茅todo para enviar un correo, pero el c贸digo
|
| 215 |
+
|
| 216 |
+
00:03:31.905 --> 00:03:34.305
|
| 217 |
+
de c贸mo lo hace puede estar oculto en
|
| 218 |
+
|
| 219 |
+
00:03:34.305 --> 00:03:38.065
|
| 220 |
+
la implementaci贸n de 茅l mismo. Y el segundo
|
| 221 |
+
|
| 222 |
+
00:03:38.065 --> 00:03:41.285
|
| 223 |
+
concepto que, pues ser铆a para introducirnos a este
|
| 224 |
+
|
| 225 |
+
00:03:41.425 --> 00:03:44.560
|
| 226 |
+
paradigma ser铆a la encapsulaci贸n, que es la capacidad
|
| 227 |
+
|
| 228 |
+
00:03:44.560 --> 00:03:47.920
|
| 229 |
+
de agrupar los datos bajo una misma unidad.
|
| 230 |
+
|
| 231 |
+
00:03:47.920 --> 00:03:51.060
|
| 232 |
+
Como lo vimos en programas anteriores, solamente utiliz谩bamos
|
| 233 |
+
|
| 234 |
+
00:03:51.440 --> 00:03:55.540
|
| 235 |
+
variables como nombre, edad, de forma separada, luego,
|
| 236 |
+
|
| 237 |
+
00:03:55.599 --> 00:03:58.777
|
| 238 |
+
gracias a las estructuras, podemos unificarlo, pero aqu铆
|
| 239 |
+
|
| 240 |
+
00:03:58.777 --> 00:04:01.840
|
| 241 |
+
adem谩s agregamos la capacidad de realizar, pues, acciones
|
| 242 |
+
|
| 243 |
+
00:04:01.840 --> 00:04:04.555
|
| 244 |
+
por medio de los m茅todos y, pues, una
|
| 245 |
+
|
| 246 |
+
00:04:04.555 --> 00:04:07.834
|
| 247 |
+
clase puede ocultar caracter铆sticas para hacerlas inaccesibles a
|
| 248 |
+
|
| 249 |
+
00:04:07.834 --> 00:04:10.470
|
| 250 |
+
los dem谩s, a diferencia de una estructura. Por
|
| 251 |
+
|
| 252 |
+
00:04:10.470 --> 00:04:13.610
|
| 253 |
+
ejemplo, si yo tengo una propiedad que solamente
|
| 254 |
+
|
| 255 |
+
00:04:13.909 --> 00:04:16.949
|
| 256 |
+
sirve para mi funcionamiento interno o para que
|
| 257 |
+
|
| 258 |
+
00:04:16.949 --> 00:04:19.669
|
| 259 |
+
yo realice mis propias acciones o m茅todos, pero
|
| 260 |
+
|
| 261 |
+
00:04:19.669 --> 00:04:22.150
|
| 262 |
+
no quiero compartir esa informaci贸n con el resto
|
| 263 |
+
|
| 264 |
+
00:04:22.150 --> 00:04:25.585
|
| 265 |
+
del mundo, pues puedo hacerla privada y solamente
|
| 266 |
+
|
| 267 |
+
00:04:25.805 --> 00:04:28.765
|
| 268 |
+
desde mis propios m茅todos acceder a ella. Algo
|
| 269 |
+
|
| 270 |
+
00:04:28.765 --> 00:04:30.945
|
| 271 |
+
que no suced铆a, por ejemplo, con las estructuras,
|
| 272 |
+
|
| 273 |
+
00:04:31.165 --> 00:04:33.565
|
| 274 |
+
donde todos los datos, si t煤 tienes una
|
| 275 |
+
|
| 276 |
+
00:04:33.565 --> 00:04:37.105
|
| 277 |
+
persona y tiene nombre, edad, eran completamente accesibles
|
| 278 |
+
|
| 279 |
+
00:04:37.325 --> 00:04:41.560
|
| 280 |
+
desde fuera. Estas dos caracter铆sticas son la gran
|
| 281 |
+
|
| 282 |
+
00:04:41.560 --> 00:04:43.560
|
| 283 |
+
diferencia entre las clases, que es lo que
|
| 284 |
+
|
| 285 |
+
00:04:43.560 --> 00:04:45.419
|
| 286 |
+
vamos a ver ahora en C m谩s m谩s,
|
| 287 |
+
|
| 288 |
+
00:04:45.520 --> 00:04:49.000
|
| 289 |
+
y las estructuras. Por lo dem谩s, realmente funcionan
|
| 290 |
+
|
| 291 |
+
00:04:49.000 --> 00:04:51.375
|
| 292 |
+
de una forma, pues muy similar. Lo 煤nico
|
| 293 |
+
|
| 294 |
+
00:04:51.375 --> 00:04:53.215
|
| 295 |
+
que cambia es la forma en la que
|
| 296 |
+
|
| 297 |
+
00:04:53.215 --> 00:04:55.775
|
| 298 |
+
pensamos nuestros programas. Vamos a pasar a la
|
| 299 |
+
|
| 300 |
+
00:04:55.775 --> 00:04:58.354
|
| 301 |
+
siguiente clase, que vamos a comenzar a realizar
|
| 302 |
+
|
| 303 |
+
00:04:58.495 --> 00:05:01.634
|
| 304 |
+
nuestros primeros ejercicios de programaci贸n orientada a objetos
|
| 305 |
+
|
| 306 |
+
00:05:01.775 --> 00:05:02.595
|
| 307 |
+
en c贸digo.
|
subir/Curso de Programaci贸n Orientada a Objetos con C/03-Introducci贸n a la Programaci贸n Orientada a Objetos/01-Resumen.html
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
subir/Curso de Programaci贸n Orientada a Objetos con C/03-Introducci贸n a la Programaci贸n Orientada a Objetos/02-Programaci贸n Orientada a Objetos Creaci贸n de Clases y Objetos en C.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:0f5cbbe70d65e2ead1c347faf2d27621383e97134a2c36ac3d2ef1de5deadae3
|
| 3 |
+
size 84956229
|
subir/Curso de Programaci贸n Orientada a Objetos con C/03-Introducci贸n a la Programaci贸n Orientada a Objetos/02-Programaci贸n Orientada a Objetos Creaci贸n de Clases y Objetos en C.vtt
ADDED
|
@@ -0,0 +1,445 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
WEBVTT
|
| 2 |
+
|
| 3 |
+
00:00:03.520 --> 00:00:05.120
|
| 4 |
+
Ahora que ya vimos lo que es la
|
| 5 |
+
|
| 6 |
+
00:00:05.120 --> 00:00:07.359
|
| 7 |
+
programaci贸n orientada a objetos desde un punto de
|
| 8 |
+
|
| 9 |
+
00:00:07.359 --> 00:00:09.920
|
| 10 |
+
vista te贸rico, vamos a pasar a realizar nuestros
|
| 11 |
+
|
| 12 |
+
00:00:09.920 --> 00:00:13.195
|
| 13 |
+
primeros ejercicios en c贸digo. Vamos al editor. Vamos
|
| 14 |
+
|
| 15 |
+
00:00:13.195 --> 00:00:16.395
|
| 16 |
+
a comenzar a escribir nuestra primera clase. Para
|
| 17 |
+
|
| 18 |
+
00:00:16.395 --> 00:00:18.895
|
| 19 |
+
esto, vamos a definir con la palabra class
|
| 20 |
+
|
| 21 |
+
00:00:19.915 --> 00:00:22.875
|
| 22 |
+
nuestra primera nuestro primer objeto. Vamos a seguir
|
| 23 |
+
|
| 24 |
+
00:00:22.875 --> 00:00:25.289
|
| 25 |
+
con el ejemplo de las personas. Para esto
|
| 26 |
+
|
| 27 |
+
00:00:25.289 --> 00:00:28.009
|
| 28 |
+
vamos a replicar exactamente lo mismo que hab铆amos
|
| 29 |
+
|
| 30 |
+
00:00:28.009 --> 00:00:30.650
|
| 31 |
+
hecho con estructuras, que es utilizar el nombre
|
| 32 |
+
|
| 33 |
+
00:00:30.650 --> 00:00:32.809
|
| 34 |
+
y la edad de una persona. Vamos a
|
| 35 |
+
|
| 36 |
+
00:00:32.809 --> 00:00:37.210
|
| 37 |
+
comenzar con la palabra reservada plus. Con esto
|
| 38 |
+
|
| 39 |
+
00:00:37.210 --> 00:00:42.105
|
| 40 |
+
nuestro int茅rprete, nuestro compilador sabe que estamos tratando
|
| 41 |
+
|
| 42 |
+
00:00:42.105 --> 00:00:50.185
|
| 43 |
+
de un objeto. Ahora le di el nombre
|
| 44 |
+
|
| 45 |
+
00:00:50.185 --> 00:00:52.720
|
| 46 |
+
de persona y de una forma muy similar
|
| 47 |
+
|
| 48 |
+
00:00:52.720 --> 00:00:54.960
|
| 49 |
+
a como lo hacemos con las estructuras, dentro
|
| 50 |
+
|
| 51 |
+
00:00:54.960 --> 00:00:57.040
|
| 52 |
+
de un bloque de llaves vamos a comenzar
|
| 53 |
+
|
| 54 |
+
00:00:57.040 --> 00:01:00.560
|
| 55 |
+
a escribir las propiedades de esta persona. Sin
|
| 56 |
+
|
| 57 |
+
00:01:00.560 --> 00:01:04.080
|
| 58 |
+
embargo, como vimos, el concepto de clase incluye
|
| 59 |
+
|
| 60 |
+
00:01:04.080 --> 00:01:07.945
|
| 61 |
+
la capacidad de encapsulaci贸n y la forma en
|
| 62 |
+
|
| 63 |
+
00:01:07.945 --> 00:01:10.345
|
| 64 |
+
que lo hace es que, por defecto, todos
|
| 65 |
+
|
| 66 |
+
00:01:10.345 --> 00:01:12.905
|
| 67 |
+
los atributos de la persona van a ser
|
| 68 |
+
|
| 69 |
+
00:01:12.905 --> 00:01:14.905
|
| 70 |
+
privados, no se van a poder acceder desde
|
| 71 |
+
|
| 72 |
+
00:01:14.905 --> 00:01:17.705
|
| 73 |
+
fuera. Por lo tanto, para poder leerlos desde
|
| 74 |
+
|
| 75 |
+
00:01:17.705 --> 00:01:20.765
|
| 76 |
+
fuera en nuestro ejemplo, vamos a realizar una
|
| 77 |
+
|
| 78 |
+
00:01:21.720 --> 00:01:24.440
|
| 79 |
+
modificaci贸n al comportamiento por defecto, que es utilizar
|
| 80 |
+
|
| 81 |
+
00:01:24.440 --> 00:01:27.720
|
| 82 |
+
la palabra p煤blica. Con esto, lo que vamos
|
| 83 |
+
|
| 84 |
+
00:01:27.720 --> 00:01:30.040
|
| 85 |
+
a hacer es indicarle al compilador que las
|
| 86 |
+
|
| 87 |
+
00:01:30.040 --> 00:01:33.720
|
| 88 |
+
siguientes variables o propiedades del objeto se pueden
|
| 89 |
+
|
| 90 |
+
00:01:33.720 --> 00:01:36.575
|
| 91 |
+
acceder desde fuera del mismo. En este caso,
|
| 92 |
+
|
| 93 |
+
00:01:36.575 --> 00:01:39.335
|
| 94 |
+
vamos a seguir con el ejemplo anterior y
|
| 95 |
+
|
| 96 |
+
00:01:39.335 --> 00:01:41.594
|
| 97 |
+
vamos a crear el nombre de la persona,
|
| 98 |
+
|
| 99 |
+
00:01:42.454 --> 00:01:45.174
|
| 100 |
+
nombre. Si yo quiero, puedo darle un valor
|
| 101 |
+
|
| 102 |
+
00:01:45.174 --> 00:01:48.630
|
| 103 |
+
inicial. Por ejemplo, le puedo poner Diana punto
|
| 104 |
+
|
| 105 |
+
00:01:48.630 --> 00:01:52.150
|
| 106 |
+
y coma, y tambi茅n puedo agregar la cantidad
|
| 107 |
+
|
| 108 |
+
00:01:52.150 --> 00:01:53.750
|
| 109 |
+
de atributos que yo quiera. En este caso
|
| 110 |
+
|
| 111 |
+
00:01:53.750 --> 00:01:58.230
|
| 112 |
+
puede ser edad y de esta forma tengo
|
| 113 |
+
|
| 114 |
+
00:01:58.230 --> 00:02:00.730
|
| 115 |
+
creada mi primer clase, que es la clase
|
| 116 |
+
|
| 117 |
+
00:02:00.790 --> 00:02:04.115
|
| 118 |
+
persona. Con esto yo puedo ir a mi
|
| 119 |
+
|
| 120 |
+
00:02:04.115 --> 00:02:06.595
|
| 121 |
+
secci贸n main y comenzar a crear personas. Por
|
| 122 |
+
|
| 123 |
+
00:02:06.595 --> 00:02:10.755
|
| 124 |
+
ejemplo, yo puedo utilizar de la misma forma
|
| 125 |
+
|
| 126 |
+
00:02:10.755 --> 00:02:14.135
|
| 127 |
+
en que funciona con estructuras el tipo persona,
|
| 128 |
+
|
| 129 |
+
00:02:14.410 --> 00:02:16.730
|
| 130 |
+
crear la variable p que va a contener
|
| 131 |
+
|
| 132 |
+
00:02:16.730 --> 00:02:24.830
|
| 133 |
+
a nuestra primera persona y puedo inicializarlo. Ahora,
|
| 134 |
+
|
| 135 |
+
00:02:24.890 --> 00:02:27.690
|
| 136 |
+
cuando estoy creando la persona, desde ese momento
|
| 137 |
+
|
| 138 |
+
00:02:27.690 --> 00:02:29.450
|
| 139 |
+
ya la defin铆, que todas las personas que
|
| 140 |
+
|
| 141 |
+
00:02:29.450 --> 00:02:31.585
|
| 142 |
+
yo cre茅 tienen el nombre de Diana y
|
| 143 |
+
|
| 144 |
+
00:02:31.585 --> 00:02:34.145
|
| 145 |
+
la edad de veintis茅is a帽os. Vamos a ver
|
| 146 |
+
|
| 147 |
+
00:02:34.145 --> 00:02:37.665
|
| 148 |
+
si podemos obtener esta informaci贸n con c out
|
| 149 |
+
|
| 150 |
+
00:02:37.665 --> 00:02:48.480
|
| 151 |
+
p punto nombre y lo ejecutamos. Como puedes
|
| 152 |
+
|
| 153 |
+
00:02:48.480 --> 00:02:50.580
|
| 154 |
+
ver, aqu铆 tenemos la salida de la terminal
|
| 155 |
+
|
| 156 |
+
00:02:50.800 --> 00:02:53.520
|
| 157 |
+
y dice Diana. Sabes que lo mismo pasar铆a
|
| 158 |
+
|
| 159 |
+
00:02:53.520 --> 00:02:57.254
|
| 160 |
+
con edad. Ahora, esta es la forma en
|
| 161 |
+
|
| 162 |
+
00:02:57.254 --> 00:03:00.668
|
| 163 |
+
la que podemos realizar, pues, las personas con
|
| 164 |
+
|
| 165 |
+
00:03:00.668 --> 00:03:03.415
|
| 166 |
+
memoria, pues, est谩tica. Si yo quisiera utilizar la
|
| 167 |
+
|
| 168 |
+
00:03:03.415 --> 00:03:05.495
|
| 169 |
+
memoria din谩mica y hacer el uso de los
|
| 170 |
+
|
| 171 |
+
00:03:05.495 --> 00:03:08.694
|
| 172 |
+
punteros, podr铆a hacerlo, podr铆a utilizar de la misma
|
| 173 |
+
|
| 174 |
+
00:03:08.694 --> 00:03:11.020
|
| 175 |
+
forma que lo hicimos con struots el asterisco
|
| 176 |
+
|
| 177 |
+
00:03:11.020 --> 00:03:13.600
|
| 178 |
+
para indicar que la variable p es tipo
|
| 179 |
+
|
| 180 |
+
00:03:13.980 --> 00:03:17.340
|
| 181 |
+
puntero para almacenar personas y utilizar la palabra
|
| 182 |
+
|
| 183 |
+
00:03:17.340 --> 00:03:21.819
|
| 184 |
+
reservada new para crear a la persona. De
|
| 185 |
+
|
| 186 |
+
00:03:21.819 --> 00:03:23.980
|
| 187 |
+
la misma manera, vamos a reemplazar la anotaci贸n
|
| 188 |
+
|
| 189 |
+
00:03:23.980 --> 00:03:27.315
|
| 190 |
+
de punto por la anotaci贸n de flecha. Si
|
| 191 |
+
|
| 192 |
+
00:03:27.315 --> 00:03:30.515
|
| 193 |
+
ejecutamos este programa, ahora vamos a obtener de
|
| 194 |
+
|
| 195 |
+
00:03:30.515 --> 00:03:33.715
|
| 196 |
+
nuevo el nombre Diana. Como ya vimos en
|
| 197 |
+
|
| 198 |
+
00:03:33.715 --> 00:03:36.435
|
| 199 |
+
la clase de punteros y de estructuras, pues
|
| 200 |
+
|
| 201 |
+
00:03:36.435 --> 00:03:38.835
|
| 202 |
+
la diferencia es en qu茅 momento se crea
|
| 203 |
+
|
| 204 |
+
00:03:38.835 --> 00:03:40.500
|
| 205 |
+
la persona. Si lo hacemos por medio de
|
| 206 |
+
|
| 207 |
+
00:03:40.500 --> 00:03:43.959
|
| 208 |
+
punteros, esta memoria se est谩 reservando durante la
|
| 209 |
+
|
| 210 |
+
00:03:43.980 --> 00:03:48.900
|
| 211 |
+
ejecuci贸n del programa. Otra cosa que podemos hacer
|
| 212 |
+
|
| 213 |
+
00:03:48.900 --> 00:03:50.579
|
| 214 |
+
con los objetos, y que esa es la
|
| 215 |
+
|
| 216 |
+
00:03:50.579 --> 00:03:53.480
|
| 217 |
+
gran diferencia con las estructuras, es a帽adir comportamiento
|
| 218 |
+
|
| 219 |
+
00:03:53.540 --> 00:03:56.395
|
| 220 |
+
a los mismos. Por ejemplo, una persona puede
|
| 221 |
+
|
| 222 |
+
00:03:56.395 --> 00:03:58.715
|
| 223 |
+
no solo tener sus atributos como nombre y
|
| 224 |
+
|
| 225 |
+
00:03:58.715 --> 00:04:01.515
|
| 226 |
+
edad, sino realizar acciones. En este caso, vamos
|
| 227 |
+
|
| 228 |
+
00:04:01.515 --> 00:04:04.955
|
| 229 |
+
a hacer que nuestra persona pueda saludar. Y
|
| 230 |
+
|
| 231 |
+
00:04:04.955 --> 00:04:07.755
|
| 232 |
+
para eso podemos, en lugar de definir una
|
| 233 |
+
|
| 234 |
+
00:04:07.755 --> 00:04:11.969
|
| 235 |
+
variable, definir una funci贸n. Se definir铆a exactamente c贸mo
|
| 236 |
+
|
| 237 |
+
00:04:11.969 --> 00:04:16.452
|
| 238 |
+
se definen todas las funciones. Esto es utilizar,
|
| 239 |
+
|
| 240 |
+
00:04:16.556 --> 00:04:21.570
|
| 241 |
+
por ejemplo, un tipo, void, y un nombre
|
| 242 |
+
|
| 243 |
+
00:04:21.570 --> 00:04:26.074
|
| 244 |
+
para la funci贸n, por ejemplo, saludar. A continuaci贸n,
|
| 245 |
+
|
| 246 |
+
00:04:26.134 --> 00:04:30.294
|
| 247 |
+
entre par茅ntesis, podemos mencionar los diferentes atributos que
|
| 248 |
+
|
| 249 |
+
00:04:30.294 --> 00:04:33.574
|
| 250 |
+
puede recibir o simplemente dejarlo vac铆o. En este
|
| 251 |
+
|
| 252 |
+
00:04:33.574 --> 00:04:39.250
|
| 253 |
+
caso, vamos a escribir un ceo. Cuando se
|
| 254 |
+
|
| 255 |
+
00:04:39.250 --> 00:04:41.750
|
| 256 |
+
ejecute la funci贸n, va a mostrar el nombre
|
| 257 |
+
|
| 258 |
+
00:04:45.810 --> 00:04:48.710
|
| 259 |
+
Diana. Vamos a hacer que el al saludar,
|
| 260 |
+
|
| 261 |
+
00:04:48.930 --> 00:04:51.975
|
| 262 |
+
pues cada persona diga su propio nombre. Esto
|
| 263 |
+
|
| 264 |
+
00:04:51.975 --> 00:04:54.135
|
| 265 |
+
vamos a pasar a ejecutarlo en lugar de
|
| 266 |
+
|
| 267 |
+
00:04:54.135 --> 00:04:55.895
|
| 268 |
+
yo hacer un SEOut que diga el nombre
|
| 269 |
+
|
| 270 |
+
00:04:55.895 --> 00:04:57.895
|
| 271 |
+
en esta l铆nea de c贸digo. Lo que puedo
|
| 272 |
+
|
| 273 |
+
00:04:57.895 --> 00:05:02.055
|
| 274 |
+
hacer es reemplazarlo e invocar. Como estoy utilizando
|
| 275 |
+
|
| 276 |
+
00:05:02.055 --> 00:05:05.870
|
| 277 |
+
punteros, uso la anotaci贸n de flecha e invoco
|
| 278 |
+
|
| 279 |
+
00:05:05.930 --> 00:05:08.810
|
| 280 |
+
de esta manera esa funci贸n. Si te das
|
| 281 |
+
|
| 282 |
+
00:05:08.810 --> 00:05:10.750
|
| 283 |
+
cuenta, es la misma forma en que hubi茅ramos
|
| 284 |
+
|
| 285 |
+
00:05:10.810 --> 00:05:13.050
|
| 286 |
+
accedido a los atributos como la edad y
|
| 287 |
+
|
| 288 |
+
00:05:13.050 --> 00:05:15.290
|
| 289 |
+
el nombre, solamente que, como se trata de
|
| 290 |
+
|
| 291 |
+
00:05:15.290 --> 00:05:19.615
|
| 292 |
+
una funci贸n, vamos a utilizarlo con par茅ntesis. Al
|
| 293 |
+
|
| 294 |
+
00:05:19.615 --> 00:05:22.675
|
| 295 |
+
ejecutar esto, yo voy a observar qu茅 sucede
|
| 296 |
+
|
| 297 |
+
00:05:22.735 --> 00:05:25.535
|
| 298 |
+
el mismo comportamiento que antes, pero la ventaja
|
| 299 |
+
|
| 300 |
+
00:05:25.535 --> 00:05:28.335
|
| 301 |
+
de esta implementaci贸n es que la persona o
|
| 302 |
+
|
| 303 |
+
00:05:28.335 --> 00:05:31.315
|
| 304 |
+
cada persona tiene dentro de su propio c贸digo
|
| 305 |
+
|
| 306 |
+
00:05:31.455 --> 00:05:34.850
|
| 307 |
+
el c贸mo saludar. De esta manera, podemos abstraer
|
| 308 |
+
|
| 309 |
+
00:05:34.850 --> 00:05:38.450
|
| 310 |
+
el c贸mo funciona de, pues, internamente cada objeto
|
| 311 |
+
|
| 312 |
+
00:05:38.450 --> 00:05:40.370
|
| 313 |
+
o cada tipo de objeto, en este caso,
|
| 314 |
+
|
| 315 |
+
00:05:40.370 --> 00:05:44.850
|
| 316 |
+
pues, para realizar esta acci贸n. Es importante que
|
| 317 |
+
|
| 318 |
+
00:05:44.850 --> 00:05:47.330
|
| 319 |
+
notes que cada persona va a acceder a
|
| 320 |
+
|
| 321 |
+
00:05:47.330 --> 00:05:49.705
|
| 322 |
+
su propio nombre. Por ejemplo, supongamos que yo
|
| 323 |
+
|
| 324 |
+
00:05:49.705 --> 00:05:52.845
|
| 325 |
+
quiero crear otra persona que sea la persona
|
| 326 |
+
|
| 327 |
+
00:05:53.476 --> 00:06:01.065
|
| 328 |
+
n煤mero dos, podr铆a crear otra variable y crear
|
| 329 |
+
|
| 330 |
+
00:06:01.065 --> 00:06:06.960
|
| 331 |
+
una nueva persona para ella. Por defecto, sabemos
|
| 332 |
+
|
| 333 |
+
00:06:06.960 --> 00:06:08.720
|
| 334 |
+
que el nombre de la persona n煤mero dos
|
| 335 |
+
|
| 336 |
+
00:06:08.720 --> 00:06:12.180
|
| 337 |
+
tambi茅n ser铆a Diana, pero supongamos que queremos asignarle
|
| 338 |
+
|
| 339 |
+
00:06:12.240 --> 00:06:14.879
|
| 340 |
+
otro nombre, sabes que podemos hacerlo utilizando la
|
| 341 |
+
|
| 342 |
+
00:06:14.879 --> 00:06:17.379
|
| 343 |
+
notaci贸n de punteros, en este caso una flecha,
|
| 344 |
+
|
| 345 |
+
00:06:17.599 --> 00:06:20.020
|
| 346 |
+
y la variable o atributo que queremos modificar.
|
| 347 |
+
|
| 348 |
+
00:06:23.185 --> 00:06:26.005
|
| 349 |
+
Vamos a ponerle otro nombre, por ejemplo, Ximena,
|
| 350 |
+
|
| 351 |
+
00:06:28.545 --> 00:06:30.225
|
| 352 |
+
y vamos a hacer que la persona n煤mero
|
| 353 |
+
|
| 354 |
+
00:06:30.225 --> 00:06:37.599
|
| 355 |
+
dos tambi茅n salude. Vamos a ejecutar el c贸digo
|
| 356 |
+
|
| 357 |
+
00:06:38.219 --> 00:06:40.620
|
| 358 |
+
y como puedes observar, pues a excepci贸n de
|
| 359 |
+
|
| 360 |
+
00:06:40.620 --> 00:06:42.780
|
| 361 |
+
que falta un cambio de l铆nea, pero est谩
|
| 362 |
+
|
| 363 |
+
00:06:42.780 --> 00:06:46.139
|
| 364 |
+
funcionando correctamente, estamos hablando de que la primera
|
| 365 |
+
|
| 366 |
+
00:06:46.139 --> 00:06:49.039
|
| 367 |
+
persona dijo Diana y la segunda dijo Ximena.
|
| 368 |
+
|
| 369 |
+
00:06:49.705 --> 00:06:52.985
|
| 370 |
+
Esto sucede porque cada persona, pues, almacena su
|
| 371 |
+
|
| 372 |
+
00:06:52.985 --> 00:06:56.125
|
| 373 |
+
propia informaci贸n. Cada vez que utilizamos la palabra
|
| 374 |
+
|
| 375 |
+
00:06:56.825 --> 00:07:00.105
|
| 376 |
+
reservada new, creamos una persona distinta, y cuando
|
| 377 |
+
|
| 378 |
+
00:07:00.105 --> 00:07:02.505
|
| 379 |
+
a la persona n煤mero dos le reasignamos el
|
| 380 |
+
|
| 381 |
+
00:07:02.505 --> 00:07:05.280
|
| 382 |
+
nombre, solamente se le asigna a esa persona,
|
| 383 |
+
|
| 384 |
+
00:07:05.280 --> 00:07:07.200
|
| 385 |
+
no a todas las dem谩s. Esta es una
|
| 386 |
+
|
| 387 |
+
00:07:07.200 --> 00:07:10.400
|
| 388 |
+
de las ventajas de utilizar, pues, programaci贸n orientada
|
| 389 |
+
|
| 390 |
+
00:07:10.400 --> 00:07:13.440
|
| 391 |
+
a objetos para almacenar, pues, los atributos y
|
| 392 |
+
|
| 393 |
+
00:07:13.440 --> 00:07:16.400
|
| 394 |
+
m茅todos. Lo mismo sucede con saludar, aunque en
|
| 395 |
+
|
| 396 |
+
00:07:16.400 --> 00:07:18.255
|
| 397 |
+
la persona uno y en la persona dos
|
| 398 |
+
|
| 399 |
+
00:07:18.495 --> 00:07:21.375
|
| 400 |
+
existe la funci贸n saludar, cada una accede a
|
| 401 |
+
|
| 402 |
+
00:07:21.375 --> 00:07:23.135
|
| 403 |
+
su propio nombre a la hora de realizar
|
| 404 |
+
|
| 405 |
+
00:07:23.135 --> 00:07:26.575
|
| 406 |
+
este ceo. Como sabes, podr铆amos haber utilizado una
|
| 407 |
+
|
| 408 |
+
00:07:26.575 --> 00:07:29.535
|
| 409 |
+
funci贸n independiente que se llamara saludar y que
|
| 410 |
+
|
| 411 |
+
00:07:29.535 --> 00:07:32.355
|
| 412 |
+
recibiera como par谩metro el nombre de cada persona.
|
| 413 |
+
|
| 414 |
+
00:07:32.680 --> 00:07:36.139
|
| 415 |
+
Las ventajas de realizarlo como lo realizamos utilizando
|
| 416 |
+
|
| 417 |
+
00:07:36.280 --> 00:07:39.099
|
| 418 |
+
la funci贸n como parte de la clase persona
|
| 419 |
+
|
| 420 |
+
00:07:39.160 --> 00:07:41.800
|
| 421 |
+
es que as铆 cada persona tiene su propio
|
| 422 |
+
|
| 423 |
+
00:07:41.800 --> 00:07:45.180
|
| 424 |
+
comportamiento y su propio c贸digo de c贸mo saludar,
|
| 425 |
+
|
| 426 |
+
00:07:45.565 --> 00:07:48.445
|
| 427 |
+
y cada una accede a su propio valor
|
| 428 |
+
|
| 429 |
+
00:07:48.445 --> 00:07:51.085
|
| 430 |
+
con su propio nombre. En este caso, la
|
| 431 |
+
|
| 432 |
+
00:07:51.085 --> 00:07:53.405
|
| 433 |
+
persona n煤mero dos con un nombre distinto al
|
| 434 |
+
|
| 435 |
+
00:07:53.405 --> 00:07:56.695
|
| 436 |
+
de la persona n煤mero uno. Nos vemos en
|
| 437 |
+
|
| 438 |
+
00:07:56.695 --> 00:07:59.495
|
| 439 |
+
la pr贸xima clase, donde comenzaremos a hablar sobre
|
| 440 |
+
|
| 441 |
+
00:07:59.495 --> 00:08:01.895
|
| 442 |
+
c贸mo funcionan los objetos y su ciclo de
|
| 443 |
+
|
| 444 |
+
00:08:01.895 --> 00:08:02.395
|
| 445 |
+
vida.
|
subir/Curso de Programaci贸n Orientada a Objetos con C/03-Introducci贸n a la Programaci贸n Orientada a Objetos/02-Resumen.html
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
subir/Curso de Programaci贸n Orientada a Objetos con C/03-Introducci贸n a la Programaci贸n Orientada a Objetos/03-Ciclo de Vida de Objetos en C Constructores y Destructores.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:6656a54ff8663bb928b18724d1442337f16cb6709d10450eadeb6156fa354699
|
| 3 |
+
size 110875287
|
subir/Curso de Programaci贸n Orientada a Objetos con C/03-Introducci贸n a la Programaci贸n Orientada a Objetos/03-Ciclo de Vida de Objetos en C Constructores y Destructores.vtt
ADDED
|
@@ -0,0 +1,619 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
WEBVTT
|
| 2 |
+
|
| 3 |
+
00:00:03.040 --> 00:00:04.960
|
| 4 |
+
Vamos a hablar sobre el ciclo de vida
|
| 5 |
+
|
| 6 |
+
00:00:04.960 --> 00:00:08.080
|
| 7 |
+
de un objeto en C m谩s m谩s. Un
|
| 8 |
+
|
| 9 |
+
00:00:08.080 --> 00:00:10.639
|
| 10 |
+
objeto en C m谩s m谩s es una entidad,
|
| 11 |
+
|
| 12 |
+
00:00:10.639 --> 00:00:12.639
|
| 13 |
+
pero al mismo tiempo es como una especie
|
| 14 |
+
|
| 15 |
+
00:00:12.639 --> 00:00:14.400
|
| 16 |
+
de estructura que se va a almacenar en
|
| 17 |
+
|
| 18 |
+
00:00:14.400 --> 00:00:18.215
|
| 19 |
+
memoria. Es por esto que durante diferentes etapas
|
| 20 |
+
|
| 21 |
+
00:00:18.215 --> 00:00:20.475
|
| 22 |
+
de su proceso, pues puede estar en diferentes
|
| 23 |
+
|
| 24 |
+
00:00:20.535 --> 00:00:24.055
|
| 25 |
+
estados. Vamos a ver el diagrama que tienes
|
| 26 |
+
|
| 27 |
+
00:00:24.055 --> 00:00:26.615
|
| 28 |
+
en pantalla. En primer lugar, se va a
|
| 29 |
+
|
| 30 |
+
00:00:26.615 --> 00:00:29.380
|
| 31 |
+
reservar un espacio en memoria. Esto sucede cuando
|
| 32 |
+
|
| 33 |
+
00:00:29.380 --> 00:00:33.240
|
| 34 |
+
realizas una asignaci贸n, por ejemplo, utilizando la palabra
|
| 35 |
+
|
| 36 |
+
00:00:33.300 --> 00:00:36.180
|
| 37 |
+
reservada new hacia un puntero que puede almacenar
|
| 38 |
+
|
| 39 |
+
00:00:36.180 --> 00:00:40.020
|
| 40 |
+
ese objeto. Luego, se va a invocar una
|
| 41 |
+
|
| 42 |
+
00:00:40.020 --> 00:00:42.420
|
| 43 |
+
funci贸n que tiene todo objeto, que es el
|
| 44 |
+
|
| 45 |
+
00:00:42.420 --> 00:00:44.515
|
| 46 |
+
constructor, que lo que va a hacer es
|
| 47 |
+
|
| 48 |
+
00:00:44.515 --> 00:00:47.655
|
| 49 |
+
inicializar todos los valores necesarios dentro del objeto.
|
| 50 |
+
|
| 51 |
+
00:00:47.954 --> 00:00:50.195
|
| 52 |
+
Por ejemplo, si le asignamos un valor inicial
|
| 53 |
+
|
| 54 |
+
00:00:50.195 --> 00:00:52.754
|
| 55 |
+
a el nombre de una persona, esto va
|
| 56 |
+
|
| 57 |
+
00:00:52.754 --> 00:00:56.170
|
| 58 |
+
a suceder durante esta etapa. A continuaci贸n, va
|
| 59 |
+
|
| 60 |
+
00:00:56.170 --> 00:00:57.969
|
| 61 |
+
a entrar en un ciclo de per铆odo de
|
| 62 |
+
|
| 63 |
+
00:00:57.969 --> 00:01:00.449
|
| 64 |
+
actividad donde el objeto va a existir en
|
| 65 |
+
|
| 66 |
+
00:01:00.449 --> 00:01:02.870
|
| 67 |
+
memoria durante todo el tiempo que sea necesario
|
| 68 |
+
|
| 69 |
+
00:01:03.170 --> 00:01:06.450
|
| 70 |
+
hasta que ya no lo necesitemos. Entonces, debemos
|
| 71 |
+
|
| 72 |
+
00:01:06.450 --> 00:01:10.275
|
| 73 |
+
invocar una funci贸n que se llama destructor. Por
|
| 74 |
+
|
| 75 |
+
00:01:10.275 --> 00:01:14.035
|
| 76 |
+
defecto, el compilador, pues, tiene un destructor vac铆o
|
| 77 |
+
|
| 78 |
+
00:01:14.035 --> 00:01:17.155
|
| 79 |
+
que hace la funci贸n b谩sica de liberar toda
|
| 80 |
+
|
| 81 |
+
00:01:17.155 --> 00:01:20.355
|
| 82 |
+
la memoria que el mismo compilador reserva cuando
|
| 83 |
+
|
| 84 |
+
00:01:20.355 --> 00:01:23.510
|
| 85 |
+
crea el objeto, pero si tenemos alg煤n tipo
|
| 86 |
+
|
| 87 |
+
00:01:23.890 --> 00:01:26.390
|
| 88 |
+
de creaci贸n de memoria din谩mica dentro de nuestro
|
| 89 |
+
|
| 90 |
+
00:01:26.770 --> 00:01:29.670
|
| 91 |
+
objeto, es una buena pr谩ctica utilizar el destructor
|
| 92 |
+
|
| 93 |
+
00:01:30.050 --> 00:01:33.090
|
| 94 |
+
para comenzar a limpiar la memoria manualmente. A
|
| 95 |
+
|
| 96 |
+
00:01:33.090 --> 00:01:35.485
|
| 97 |
+
diferencia de otros lenguajes de programaci贸n, C m谩s
|
| 98 |
+
|
| 99 |
+
00:01:35.485 --> 00:01:37.965
|
| 100 |
+
m谩s no tiene un recolector de basura que
|
| 101 |
+
|
| 102 |
+
00:01:37.965 --> 00:01:41.005
|
| 103 |
+
elimine todas esas variables o informaci贸n que ya
|
| 104 |
+
|
| 105 |
+
00:01:41.005 --> 00:01:43.965
|
| 106 |
+
no estemos utilizando cuando lo detecten, sino que
|
| 107 |
+
|
| 108 |
+
00:01:43.965 --> 00:01:46.845
|
| 109 |
+
necesitamos limpiar la memoria de forma manual, o
|
| 110 |
+
|
| 111 |
+
00:01:46.845 --> 00:01:49.939
|
| 112 |
+
de lo contrario, podemos tener muchos problemas porque
|
| 113 |
+
|
| 114 |
+
00:01:49.939 --> 00:01:53.780
|
| 115 |
+
se sature o se haya un consumo excesivo
|
| 116 |
+
|
| 117 |
+
00:01:53.780 --> 00:01:57.299
|
| 118 |
+
de memoria. Finalmente, una vez que se ha
|
| 119 |
+
|
| 120 |
+
00:01:57.299 --> 00:02:00.340
|
| 121 |
+
invocado el destructor, se libera el espacio de
|
| 122 |
+
|
| 123 |
+
00:02:00.340 --> 00:02:03.875
|
| 124 |
+
memoria y el compilador o el durante el
|
| 125 |
+
|
| 126 |
+
00:02:03.875 --> 00:02:06.915
|
| 127 |
+
proceso de ejecuci贸n, pues, se asume que ya
|
| 128 |
+
|
| 129 |
+
00:02:06.915 --> 00:02:10.115
|
| 130 |
+
esa memoria est谩 desocupada para estar disponible para
|
| 131 |
+
|
| 132 |
+
00:02:10.115 --> 00:02:14.609
|
| 133 |
+
cualquier otra informaci贸n. Vamos a ver c贸mo se
|
| 134 |
+
|
| 135 |
+
00:02:14.609 --> 00:02:17.829
|
| 136 |
+
implementan los constructores y los destructores en c贸digo.
|
| 137 |
+
|
| 138 |
+
00:02:18.209 --> 00:02:20.849
|
| 139 |
+
Para este ejemplo, vamos a seguir utilizando el
|
| 140 |
+
|
| 141 |
+
00:02:20.849 --> 00:02:23.489
|
| 142 |
+
mismo que en las clases anteriores, que es
|
| 143 |
+
|
| 144 |
+
00:02:23.489 --> 00:02:27.365
|
| 145 |
+
el ejemplo de una persona. Como sabes, creamos
|
| 146 |
+
|
| 147 |
+
00:02:27.365 --> 00:02:29.605
|
| 148 |
+
una persona que es capaz de almacenar su
|
| 149 |
+
|
| 150 |
+
00:02:29.605 --> 00:02:33.765
|
| 151 |
+
nombre, su edad y saludar. Esto mismo podemos
|
| 152 |
+
|
| 153 |
+
00:02:33.765 --> 00:02:37.925
|
| 154 |
+
realizarlo con constructores y destructores. Para comenzar, vamos
|
| 155 |
+
|
| 156 |
+
00:02:37.925 --> 00:02:40.825
|
| 157 |
+
a definir un constructor. Una de las formas
|
| 158 |
+
|
| 159 |
+
00:02:41.569 --> 00:02:43.730
|
| 160 |
+
en las que nos es 煤til tener un
|
| 161 |
+
|
| 162 |
+
00:02:43.730 --> 00:02:46.629
|
| 163 |
+
constructor es porque, pues, podemos inicializar los valores.
|
| 164 |
+
|
| 165 |
+
00:02:46.849 --> 00:02:49.090
|
| 166 |
+
En este caso, hicimos que, por defecto, los
|
| 167 |
+
|
| 168 |
+
00:02:49.090 --> 00:02:51.650
|
| 169 |
+
nombres de todas las personas fueran Diana y
|
| 170 |
+
|
| 171 |
+
00:02:51.650 --> 00:02:54.925
|
| 172 |
+
sus edades fueran veintis茅is a帽os. Sin embargo, esto
|
| 173 |
+
|
| 174 |
+
00:02:54.925 --> 00:02:58.444
|
| 175 |
+
no deber铆a suceder en una aplicaci贸n de la
|
| 176 |
+
|
| 177 |
+
00:02:58.444 --> 00:03:01.084
|
| 178 |
+
vida real, ya que es cada persona deber铆a
|
| 179 |
+
|
| 180 |
+
00:03:01.084 --> 00:03:03.484
|
| 181 |
+
tener, pues, su propio nombre o ninguno, o
|
| 182 |
+
|
| 183 |
+
00:03:03.484 --> 00:03:06.125
|
| 184 |
+
su propiedad o ninguna, o en todo caso
|
| 185 |
+
|
| 186 |
+
00:03:06.125 --> 00:03:08.444
|
| 187 |
+
inicializar con un valor en ceros o una
|
| 188 |
+
|
| 189 |
+
00:03:08.444 --> 00:03:11.560
|
| 190 |
+
cadena vac铆a. Para esto, vamos a hacer uso
|
| 191 |
+
|
| 192 |
+
00:03:11.560 --> 00:03:14.120
|
| 193 |
+
de los constructores, y los constructores se definen
|
| 194 |
+
|
| 195 |
+
00:03:14.120 --> 00:03:16.700
|
| 196 |
+
como cualquier otra funci贸n, pero con dos condiciones,
|
| 197 |
+
|
| 198 |
+
00:03:17.080 --> 00:03:20.120
|
| 199 |
+
no retornan un tipo y debe ser el
|
| 200 |
+
|
| 201 |
+
00:03:20.120 --> 00:03:22.280
|
| 202 |
+
mismo nombre que el de la clase. Por
|
| 203 |
+
|
| 204 |
+
00:03:22.280 --> 00:03:24.465
|
| 205 |
+
ejemplo, si yo quiero crear el constructor para
|
| 206 |
+
|
| 207 |
+
00:03:24.465 --> 00:03:27.345
|
| 208 |
+
una persona, utilizar铆a ese mismo nombre como un
|
| 209 |
+
|
| 210 |
+
00:03:27.345 --> 00:03:33.185
|
| 211 |
+
m茅todo, persona. Par茅ntesis y como sabemos, no debe
|
| 212 |
+
|
| 213 |
+
00:03:33.185 --> 00:03:35.945
|
| 214 |
+
retornar nada, as铆 que no necesita un void
|
| 215 |
+
|
| 216 |
+
00:03:35.945 --> 00:03:40.030
|
| 217 |
+
o un int para funcionar. Solamente necesitamos crear
|
| 218 |
+
|
| 219 |
+
00:03:40.090 --> 00:03:42.569
|
| 220 |
+
sus par de llaves, donde vamos a escribir
|
| 221 |
+
|
| 222 |
+
00:03:42.569 --> 00:03:46.090
|
| 223 |
+
todo lo que va a realizar. Como toda
|
| 224 |
+
|
| 225 |
+
00:03:46.090 --> 00:03:49.209
|
| 226 |
+
funci贸n, la persona que acabamos de crear puede
|
| 227 |
+
|
| 228 |
+
00:03:49.209 --> 00:03:53.355
|
| 229 |
+
recibir un par de atributos o argumentos que
|
| 230 |
+
|
| 231 |
+
00:03:53.355 --> 00:03:56.315
|
| 232 |
+
se pongan dentro de el par茅ntesis. Podr铆amos, por
|
| 233 |
+
|
| 234 |
+
00:03:56.315 --> 00:04:00.335
|
| 235 |
+
ejemplo, aprovechar esa caracter铆stica para recibir un nombre.
|
| 236 |
+
|
| 237 |
+
00:04:00.395 --> 00:04:02.475
|
| 238 |
+
Entonces, si yo quiero recibir el nombre de
|
| 239 |
+
|
| 240 |
+
00:04:02.475 --> 00:04:05.195
|
| 241 |
+
la persona desde su constructor, lo definir铆a lo
|
| 242 |
+
|
| 243 |
+
00:04:05.195 --> 00:04:08.580
|
| 244 |
+
definir铆a de la siguiente manera string, una variable
|
| 245 |
+
|
| 246 |
+
00:04:08.580 --> 00:04:12.040
|
| 247 |
+
que guarde temporalmente ese valor y a continuaci贸n
|
| 248 |
+
|
| 249 |
+
00:04:12.580 --> 00:04:15.140
|
| 250 |
+
podr铆a hacer uso de 茅l. Como cualquier otra
|
| 251 |
+
|
| 252 |
+
00:04:15.140 --> 00:04:17.720
|
| 253 |
+
funci贸n, como la funci贸n saludar, yo tengo acceso
|
| 254 |
+
|
| 255 |
+
00:04:18.180 --> 00:04:20.985
|
| 256 |
+
al contexto de la persona, por lo tanto,
|
| 257 |
+
|
| 258 |
+
00:04:20.985 --> 00:04:24.025
|
| 259 |
+
yo podr铆a realizar una asignaci贸n como la siguiente,
|
| 260 |
+
|
| 261 |
+
00:04:24.025 --> 00:04:28.745
|
| 262 |
+
nombre igual a n. En ese momento, la
|
| 263 |
+
|
| 264 |
+
00:04:28.745 --> 00:04:32.664
|
| 265 |
+
variable nombre de esta persona en espec铆fico comenzar铆a
|
| 266 |
+
|
| 267 |
+
00:04:32.664 --> 00:04:34.185
|
| 268 |
+
a ser el valor que se le haya
|
| 269 |
+
|
| 270 |
+
00:04:34.185 --> 00:04:39.070
|
| 271 |
+
pasado durante su construcci贸n. De modo que cuando
|
| 272 |
+
|
| 273 |
+
00:04:39.210 --> 00:04:41.530
|
| 274 |
+
utilicemos la funci贸n de saludar, ese es el
|
| 275 |
+
|
| 276 |
+
00:04:41.530 --> 00:04:44.330
|
| 277 |
+
nombre que va a mostrar. Ahora, como te
|
| 278 |
+
|
| 279 |
+
00:04:44.330 --> 00:04:46.570
|
| 280 |
+
dar谩s cuenta, ya nos marca un error nuestro
|
| 281 |
+
|
| 282 |
+
00:04:46.570 --> 00:04:48.970
|
| 283 |
+
editor de c贸digo en el momento de crear
|
| 284 |
+
|
| 285 |
+
00:04:48.970 --> 00:04:50.570
|
| 286 |
+
personas, y es que a la hora de
|
| 287 |
+
|
| 288 |
+
00:04:50.570 --> 00:04:53.105
|
| 289 |
+
modificar el constructor, C m谩s m谩s ya nos
|
| 290 |
+
|
| 291 |
+
00:04:53.105 --> 00:04:55.525
|
| 292 |
+
pide que cumplamos con lo que definimos aqu铆.
|
| 293 |
+
|
| 294 |
+
00:04:55.665 --> 00:04:58.145
|
| 295 |
+
En este caso, nos pide que pasemos ese
|
| 296 |
+
|
| 297 |
+
00:04:58.145 --> 00:04:59.825
|
| 298 |
+
esa cadena de texto que va a contener
|
| 299 |
+
|
| 300 |
+
00:04:59.825 --> 00:05:03.345
|
| 301 |
+
el nombre. As铆 que yo puedo pasar, como
|
| 302 |
+
|
| 303 |
+
00:05:03.345 --> 00:05:06.830
|
| 304 |
+
cualquier otra funci贸n, el nombre Diana al primer
|
| 305 |
+
|
| 306 |
+
00:05:07.370 --> 00:05:09.230
|
| 307 |
+
a la primera persona y a la segunda,
|
| 308 |
+
|
| 309 |
+
00:05:09.290 --> 00:05:11.370
|
| 310 |
+
pues para respetar el ejemplo anterior, le voy
|
| 311 |
+
|
| 312 |
+
00:05:11.370 --> 00:05:15.370
|
| 313 |
+
a poner Jimena. Eso hace que esta l铆nea
|
| 314 |
+
|
| 315 |
+
00:05:15.370 --> 00:05:17.530
|
| 316 |
+
de c贸digo ya no sea necesaria, as铆 que
|
| 317 |
+
|
| 318 |
+
00:05:17.530 --> 00:05:19.930
|
| 319 |
+
la voy a eliminar y ahora voy a
|
| 320 |
+
|
| 321 |
+
00:05:19.930 --> 00:05:24.155
|
| 322 |
+
ejecutar el c贸digo. Las dos personas van a
|
| 323 |
+
|
| 324 |
+
00:05:24.155 --> 00:05:27.514
|
| 325 |
+
realizar su saludo, pues mencionando su nombre y
|
| 326 |
+
|
| 327 |
+
00:05:27.514 --> 00:05:30.095
|
| 328 |
+
aqu铆 est谩, est谩 Diana y Jimena. Para acomodar
|
| 329 |
+
|
| 330 |
+
00:05:30.155 --> 00:05:33.675
|
| 331 |
+
esto un poquito voy a escribir endline al
|
| 332 |
+
|
| 333 |
+
00:05:33.675 --> 00:05:38.160
|
| 334 |
+
final del ceo de saludar Y listo. Ya
|
| 335 |
+
|
| 336 |
+
00:05:38.160 --> 00:05:40.320
|
| 337 |
+
tengo primero el nombre de Diana, que se
|
| 338 |
+
|
| 339 |
+
00:05:40.320 --> 00:05:43.220
|
| 340 |
+
est谩 mostrando cuando realizamos en la l铆nea veintid贸s
|
| 341 |
+
|
| 342 |
+
00:05:43.920 --> 00:05:47.360
|
| 343 |
+
la funci贸n, el m茅todo de saludar, y luego
|
| 344 |
+
|
| 345 |
+
00:05:47.360 --> 00:05:50.865
|
| 346 |
+
en la veintitr茅s para Ximena. De esta manera,
|
| 347 |
+
|
| 348 |
+
00:05:50.865 --> 00:05:54.225
|
| 349 |
+
los constructores nos permiten inicializar las variables sin
|
| 350 |
+
|
| 351 |
+
00:05:54.225 --> 00:05:57.025
|
| 352 |
+
necesidad de recurrir a valores por defecto y
|
| 353 |
+
|
| 354 |
+
00:05:57.025 --> 00:05:58.945
|
| 355 |
+
al mismo tiempo de una forma mucho m谩s
|
| 356 |
+
|
| 357 |
+
00:05:58.945 --> 00:06:02.465
|
| 358 |
+
ordenada. Incluso, como es una funci贸n, podr铆amos invocar
|
| 359 |
+
|
| 360 |
+
00:06:02.465 --> 00:06:05.536
|
| 361 |
+
a cualquiera de las otras funciones o m茅todos
|
| 362 |
+
|
| 363 |
+
00:06:05.536 --> 00:06:08.835
|
| 364 |
+
que tiene nuestro objeto y podr铆amos realizar procesos
|
| 365 |
+
|
| 366 |
+
00:06:08.835 --> 00:06:12.060
|
| 367 |
+
m谩s complejos, como reservar m谩s espacios en memoria
|
| 368 |
+
|
| 369 |
+
00:06:12.060 --> 00:06:16.860
|
| 370 |
+
o realizar alguna otra acci贸n. Algo importante que
|
| 371 |
+
|
| 372 |
+
00:06:16.860 --> 00:06:19.435
|
| 373 |
+
seguramente habr谩s notado es que a la hora
|
| 374 |
+
|
| 375 |
+
00:06:19.435 --> 00:06:22.075
|
| 376 |
+
de tener mis m茅todos dentro de la persona,
|
| 377 |
+
|
| 378 |
+
00:06:22.075 --> 00:06:24.955
|
| 379 |
+
por ejemplo, a la hora de escribir el
|
| 380 |
+
|
| 381 |
+
00:06:24.955 --> 00:06:27.595
|
| 382 |
+
c贸digo de saludar, yo pude en un en
|
| 383 |
+
|
| 384 |
+
00:06:27.595 --> 00:06:29.935
|
| 385 |
+
una sola l铆nea de c贸digo agregar el endline
|
| 386 |
+
|
| 387 |
+
00:06:31.035 --> 00:06:33.600
|
| 388 |
+
y eso funcion贸 para las dos personas. Esa
|
| 389 |
+
|
| 390 |
+
00:06:33.600 --> 00:06:35.600
|
| 391 |
+
es una de las ventajas de realizar las
|
| 392 |
+
|
| 393 |
+
00:06:35.600 --> 00:06:39.040
|
| 394 |
+
cosas con programaci贸n orientada a objetos. Para continuar
|
| 395 |
+
|
| 396 |
+
00:06:39.040 --> 00:06:40.880
|
| 397 |
+
con el tema de el ciclo de vida
|
| 398 |
+
|
| 399 |
+
00:06:40.880 --> 00:06:43.280
|
| 400 |
+
de los objetos, vamos a hablar sobre los
|
| 401 |
+
|
| 402 |
+
00:06:43.280 --> 00:06:45.200
|
| 403 |
+
la segunda, el segundo tipo de funci贸n que
|
| 404 |
+
|
| 405 |
+
00:06:45.200 --> 00:06:47.200
|
| 406 |
+
le puedes definir a una clase, que es
|
| 407 |
+
|
| 408 |
+
00:06:47.200 --> 00:06:50.795
|
| 409 |
+
su destructor. El destructor va a funcionar pr谩cticamente
|
| 410 |
+
|
| 411 |
+
00:06:50.855 --> 00:06:53.655
|
| 412 |
+
igual que el constructor, pero la diferencia es
|
| 413 |
+
|
| 414 |
+
00:06:53.655 --> 00:06:59.015
|
| 415 |
+
que comienza con este s铆mbolo y eso le
|
| 416 |
+
|
| 417 |
+
00:06:59.015 --> 00:07:01.575
|
| 418 |
+
va a indicar a nuestro compilador que estamos
|
| 419 |
+
|
| 420 |
+
00:07:01.575 --> 00:07:05.509
|
| 421 |
+
hablando de un destructor. La forma en la
|
| 422 |
+
|
| 423 |
+
00:07:05.509 --> 00:07:07.750
|
| 424 |
+
que lo vamos a definir es exactamente la
|
| 425 |
+
|
| 426 |
+
00:07:07.750 --> 00:07:10.229
|
| 427 |
+
misma que el constructor y esto nos puede
|
| 428 |
+
|
| 429 |
+
00:07:10.229 --> 00:07:12.650
|
| 430 |
+
ser 煤til para limpiar alg煤n valor en memoria.
|
| 431 |
+
|
| 432 |
+
00:07:12.789 --> 00:07:14.870
|
| 433 |
+
En este caso, no tenemos la necesidad de
|
| 434 |
+
|
| 435 |
+
00:07:14.870 --> 00:07:19.405
|
| 436 |
+
hacerlo porque no estamos reservando memoria adicional din谩mica
|
| 437 |
+
|
| 438 |
+
00:07:19.544 --> 00:07:22.764
|
| 439 |
+
usando punteros. Si tuvi茅ramos alguna de estas variables
|
| 440 |
+
|
| 441 |
+
00:07:23.865 --> 00:07:26.264
|
| 442 |
+
definida como un puntero, s铆 tendr铆amos que realizar
|
| 443 |
+
|
| 444 |
+
00:07:26.264 --> 00:07:30.345
|
| 445 |
+
una limpieza manual por medio de utilizar, pues,
|
| 446 |
+
|
| 447 |
+
00:07:30.345 --> 00:07:34.080
|
| 448 |
+
alguna instrucci贸n que limpie la memoria. 驴Cu谩ndo vamos
|
| 449 |
+
|
| 450 |
+
00:07:34.080 --> 00:07:37.120
|
| 451 |
+
a utilizar los destructores o cu谩ndo se invocan
|
| 452 |
+
|
| 453 |
+
00:07:37.120 --> 00:07:39.280
|
| 454 |
+
los destructores? Bueno, la forma en que se
|
| 455 |
+
|
| 456 |
+
00:07:39.280 --> 00:07:41.280
|
| 457 |
+
invocan los destructores y lo vamos a ver
|
| 458 |
+
|
| 459 |
+
00:07:41.280 --> 00:07:43.760
|
| 460 |
+
para ver cu谩ndo se ejecuta. Voy a ponerle
|
| 461 |
+
|
| 462 |
+
00:07:43.760 --> 00:07:51.755
|
| 463 |
+
aqu铆 un c out que diga destructor con
|
| 464 |
+
|
| 465 |
+
00:07:51.755 --> 00:07:55.275
|
| 466 |
+
un cambio de l铆nea. Ahora, cuando se ejecuta
|
| 467 |
+
|
| 468 |
+
00:07:55.275 --> 00:07:59.515
|
| 469 |
+
un destructor es cuando terminamos de usar un
|
| 470 |
+
|
| 471 |
+
00:07:59.515 --> 00:08:02.930
|
| 472 |
+
objeto. En este caso, nuestro compilador asume que
|
| 473 |
+
|
| 474 |
+
00:08:02.930 --> 00:08:05.570
|
| 475 |
+
cuando salimos de la funci贸n main nuestro programa
|
| 476 |
+
|
| 477 |
+
00:08:05.570 --> 00:08:08.449
|
| 478 |
+
ha terminado, por lo tanto, si ejecutamos este
|
| 479 |
+
|
| 480 |
+
00:08:08.449 --> 00:08:10.210
|
| 481 |
+
c贸digo de la forma en la que est谩,
|
| 482 |
+
|
| 483 |
+
00:08:10.210 --> 00:08:13.410
|
| 484 |
+
nuestros destructores se van a ejecutar justo antes
|
| 485 |
+
|
| 486 |
+
00:08:13.410 --> 00:08:15.330
|
| 487 |
+
de terminar la funci贸n main, despu茅s de haber
|
| 488 |
+
|
| 489 |
+
00:08:15.330 --> 00:08:18.685
|
| 490 |
+
saludado. Pero esta no es la 煤nica forma,
|
| 491 |
+
|
| 492 |
+
00:08:18.685 --> 00:08:20.604
|
| 493 |
+
y es que cuando utilizamos la palabra reservada
|
| 494 |
+
|
| 495 |
+
00:08:20.604 --> 00:08:26.044
|
| 496 |
+
new estamos, pues, reservando memoria para utilizarla en
|
| 497 |
+
|
| 498 |
+
00:08:26.044 --> 00:08:29.324
|
| 499 |
+
nuestras personas, en este caso. Pues existe su
|
| 500 |
+
|
| 501 |
+
00:08:29.324 --> 00:08:31.645
|
| 502 |
+
funci贸n contraria, que es limpiar la memoria que
|
| 503 |
+
|
| 504 |
+
00:08:31.645 --> 00:08:35.460
|
| 505 |
+
hab铆amos reservado previamente. Esto funciona de la siguiente
|
| 506 |
+
|
| 507 |
+
00:08:35.460 --> 00:08:37.460
|
| 508 |
+
manera, si yo tengo, por ejemplo, a la
|
| 509 |
+
|
| 510 |
+
00:08:37.460 --> 00:08:40.980
|
| 511 |
+
persona n煤mero dos y quiero liberar la memoria
|
| 512 |
+
|
| 513 |
+
00:08:40.980 --> 00:08:43.800
|
| 514 |
+
donde est谩 almacenada, puedo utilizar la palabra reservada
|
| 515 |
+
|
| 516 |
+
00:08:44.020 --> 00:08:48.295
|
| 517 |
+
delete. La palabra delete lo que va a
|
| 518 |
+
|
| 519 |
+
00:08:48.295 --> 00:08:50.535
|
| 520 |
+
hacer es eliminar todo lo que haya en
|
| 521 |
+
|
| 522 |
+
00:08:50.535 --> 00:08:53.495
|
| 523 |
+
esa memoria. Por ejemplo, yo puedo eliminar todo
|
| 524 |
+
|
| 525 |
+
00:08:53.495 --> 00:08:56.615
|
| 526 |
+
lo que hay dentro de P2. De esta
|
| 527 |
+
|
| 528 |
+
00:08:56.615 --> 00:09:00.280
|
| 529 |
+
manera, cuando llegue la l铆nea veintiocho, en realidad
|
| 530 |
+
|
| 531 |
+
00:09:00.280 --> 00:09:02.360
|
| 532 |
+
la persona ya no va a existir y
|
| 533 |
+
|
| 534 |
+
00:09:02.360 --> 00:09:05.720
|
| 535 |
+
eso va a fallar. Vamos a realizar la
|
| 536 |
+
|
| 537 |
+
00:09:05.720 --> 00:09:11.080
|
| 538 |
+
ejecuci贸n y aqu铆 est谩. En primer lugar, podemos
|
| 539 |
+
|
| 540 |
+
00:09:11.080 --> 00:09:13.560
|
| 541 |
+
ver que se muestra el saludo de la
|
| 542 |
+
|
| 543 |
+
00:09:13.560 --> 00:09:15.565
|
| 544 |
+
persona n煤mero uno, que es Diana, y en
|
| 545 |
+
|
| 546 |
+
00:09:15.565 --> 00:09:18.065
|
| 547 |
+
segundo lugar nos muestra un error de segmentaci贸n
|
| 548 |
+
|
| 549 |
+
00:09:18.365 --> 00:09:21.084
|
| 550 |
+
falt. Esto sucede porque el objeto ya no
|
| 551 |
+
|
| 552 |
+
00:09:21.084 --> 00:09:24.365
|
| 553 |
+
existe cuando estamos tratando de saludar con la
|
| 554 |
+
|
| 555 |
+
00:09:24.365 --> 00:09:28.144
|
| 556 |
+
persona n煤mero dos. Y tambi茅n podemos notar que
|
| 557 |
+
|
| 558 |
+
00:09:28.204 --> 00:09:30.945
|
| 559 |
+
el destructor fue invocado, por eso se imprimi贸
|
| 560 |
+
|
| 561 |
+
00:09:31.460 --> 00:09:34.500
|
| 562 |
+
el y se mostr贸 en consola la palabra
|
| 563 |
+
|
| 564 |
+
00:09:34.500 --> 00:09:37.700
|
| 565 |
+
destructor antes de el saludo de Diana, porque
|
| 566 |
+
|
| 567 |
+
00:09:37.700 --> 00:09:40.420
|
| 568 |
+
se destruy贸 el objeto n煤mero dos desde la
|
| 569 |
+
|
| 570 |
+
00:09:40.420 --> 00:09:43.460
|
| 571 |
+
l铆nea veinticinco y el saludo de Diana sucedi贸
|
| 572 |
+
|
| 573 |
+
00:09:43.460 --> 00:09:45.795
|
| 574 |
+
hasta la l铆nea veintisiete. Esta es la forma
|
| 575 |
+
|
| 576 |
+
00:09:45.795 --> 00:09:48.275
|
| 577 |
+
en la que se invocan los destructores, ya
|
| 578 |
+
|
| 579 |
+
00:09:48.275 --> 00:09:50.855
|
| 580 |
+
sea la forma por defecto o la forma
|
| 581 |
+
|
| 582 |
+
00:09:50.915 --> 00:09:54.835
|
| 583 |
+
manual, que es utilizar delete. De modo que
|
| 584 |
+
|
| 585 |
+
00:09:54.835 --> 00:10:00.050
|
| 586 |
+
si utiliz谩ramos alguna memoria reservada din谩micamente dentro de
|
| 587 |
+
|
| 588 |
+
00:10:00.050 --> 00:10:03.670
|
| 589 |
+
nuestra clase, una forma de limpiarla ser铆a utilizar
|
| 590 |
+
|
| 591 |
+
00:10:04.130 --> 00:10:07.410
|
| 592 |
+
delete dentro de nuestro destructor para limpiar alguna
|
| 593 |
+
|
| 594 |
+
00:10:07.410 --> 00:10:10.210
|
| 595 |
+
variable que tambi茅n tenga, pues, alg煤n otro objeto
|
| 596 |
+
|
| 597 |
+
00:10:10.210 --> 00:10:13.105
|
| 598 |
+
o algo que hayamos reservado previamente. Esta es
|
| 599 |
+
|
| 600 |
+
00:10:13.105 --> 00:10:15.105
|
| 601 |
+
la forma en la que funcionan el ciclo
|
| 602 |
+
|
| 603 |
+
00:10:15.105 --> 00:10:16.865
|
| 604 |
+
de vida de un objeto en C m谩s
|
| 605 |
+
|
| 606 |
+
00:10:16.865 --> 00:10:19.025
|
| 607 |
+
m谩s el uso de los constructores y los
|
| 608 |
+
|
| 609 |
+
00:10:19.025 --> 00:10:22.385
|
| 610 |
+
destructores para reservar o liberar la memoria, y
|
| 611 |
+
|
| 612 |
+
00:10:22.385 --> 00:10:25.045
|
| 613 |
+
tambi茅n, en el caso de los constructores, inicializar
|
| 614 |
+
|
| 615 |
+
00:10:25.265 --> 00:10:27.858
|
| 616 |
+
algunas variables. Vamos a hablar en la pr贸xima
|
| 617 |
+
|
| 618 |
+
00:10:27.858 --> 00:10:30.038
|
| 619 |
+
clase sobre el concepto de encapsulaci贸n.
|
subir/Curso de Programaci贸n Orientada a Objetos con C/03-Introducci贸n a la Programaci贸n Orientada a Objetos/03-Resumen.html
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
subir/Curso de Programaci贸n Orientada a Objetos con C/04-Principios de la Programaci贸n Orientada a Objetos/01-Encapsulaci贸n de Atributos en C Pr谩cticas Seguras.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:5c1a6612acc6e230e09675dc55f3617be5564291ab118d62eeb05503d0731e7c
|
| 3 |
+
size 59364658
|
subir/Curso de Programaci贸n Orientada a Objetos con C/04-Principios de la Programaci贸n Orientada a Objetos/01-Lecturas recomendadas.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
https://platzi.com/cursos/oop/
|
subir/Curso de Programaci贸n Orientada a Objetos con C/04-Principios de la Programaci贸n Orientada a Objetos/01-Resumen.html
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
subir/Curso de Programaci贸n Orientada a Objetos con C/04-Principios de la Programaci贸n Orientada a Objetos/02-Resumen.html
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
subir/Curso de Programaci贸n Orientada a Objetos con C/04-Principios de la Programaci贸n Orientada a Objetos/02-Uso del Puntero This en C para Desambiguaci贸n y Autorreferencia.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:83cf5b321ca1051e376f1668a131f8778cfa8651f9ad44e01c45d1dd679950e1
|
| 3 |
+
size 120051606
|
subir/Curso de Programaci贸n Orientada a Objetos con C/04-Principios de la Programaci贸n Orientada a Objetos/02-Uso del Puntero This en C para Desambiguaci贸n y Autorreferencia.vtt
ADDED
|
@@ -0,0 +1,589 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
WEBVTT
|
| 2 |
+
|
| 3 |
+
00:00:04.240 --> 00:00:06.580
|
| 4 |
+
Vamos a hablar sobre un puntero muy importante
|
| 5 |
+
|
| 6 |
+
00:00:07.040 --> 00:00:09.200
|
| 7 |
+
dentro de la programaci贸n orientada a objetos en
|
| 8 |
+
|
| 9 |
+
00:00:09.200 --> 00:00:11.840
|
| 10 |
+
C m谩s m谩s que es el puntero DIS.
|
| 11 |
+
|
| 12 |
+
00:00:11.840 --> 00:00:14.684
|
| 13 |
+
Este puntero es muy especial porque nos permite
|
| 14 |
+
|
| 15 |
+
00:00:14.684 --> 00:00:18.125
|
| 16 |
+
hacer una autorreferencia dentro de una clase o
|
| 17 |
+
|
| 18 |
+
00:00:18.125 --> 00:00:21.025
|
| 19 |
+
un objeto. Por ejemplo, si tratamos el tema
|
| 20 |
+
|
| 21 |
+
00:00:21.485 --> 00:00:24.125
|
| 22 |
+
de las personas de, como en los ejemplos
|
| 23 |
+
|
| 24 |
+
00:00:24.125 --> 00:00:27.325
|
| 25 |
+
anteriores, podemos pensar que cada persona es una
|
| 26 |
+
|
| 27 |
+
00:00:27.325 --> 00:00:31.340
|
| 28 |
+
entidad independiente asignada a una variable distinta. Esto
|
| 29 |
+
|
| 30 |
+
00:00:31.340 --> 00:00:34.220
|
| 31 |
+
es muy 煤til, pero no es suficiente cuando
|
| 32 |
+
|
| 33 |
+
00:00:34.220 --> 00:00:38.300
|
| 34 |
+
necesitamos que una persona realice algunas operaciones sobre
|
| 35 |
+
|
| 36 |
+
00:00:38.300 --> 00:00:40.940
|
| 37 |
+
s铆 misma. Sabemos que cada persona de las
|
| 38 |
+
|
| 39 |
+
00:00:40.940 --> 00:00:44.145
|
| 40 |
+
que creamos es independiente, aunque sean de la
|
| 41 |
+
|
| 42 |
+
00:00:44.145 --> 00:00:48.705
|
| 43 |
+
misma clase, pero en algunas ocasiones necesitamos resolver
|
| 44 |
+
|
| 45 |
+
00:00:48.705 --> 00:00:52.465
|
| 46 |
+
ambig眉edades o realizar algunas acciones que solamente se
|
| 47 |
+
|
| 48 |
+
00:00:52.465 --> 00:00:55.585
|
| 49 |
+
pueden realizar gracias al puntero DIS. Vamos a
|
| 50 |
+
|
| 51 |
+
00:00:55.585 --> 00:00:58.720
|
| 52 |
+
ver c贸mo se utiliza en el c贸digo. Vamos
|
| 53 |
+
|
| 54 |
+
00:00:58.720 --> 00:01:01.840
|
| 55 |
+
a retomar el mismo ejercicio de c贸digo de
|
| 56 |
+
|
| 57 |
+
00:01:01.840 --> 00:01:03.920
|
| 58 |
+
la clase persona que hemos utilizado en las
|
| 59 |
+
|
| 60 |
+
00:01:03.920 --> 00:01:08.180
|
| 61 |
+
clases anteriores, pero vamos a eliminar la inicializaci贸n
|
| 62 |
+
|
| 63 |
+
00:01:08.320 --> 00:01:12.115
|
| 64 |
+
inline de estos par谩metros para devolverlo a la
|
| 65 |
+
|
| 66 |
+
00:01:12.115 --> 00:01:15.315
|
| 67 |
+
forma original. En este caso, podr铆amos asignar la
|
| 68 |
+
|
| 69 |
+
00:01:15.315 --> 00:01:20.915
|
| 70 |
+
variable nombre al valor que traiga n y
|
| 71 |
+
|
| 72 |
+
00:01:20.915 --> 00:01:25.020
|
| 73 |
+
la variable edad al valor que traiga e.
|
| 74 |
+
|
| 75 |
+
00:01:25.020 --> 00:01:27.680
|
| 76 |
+
Esta ser铆a una forma bastante sencilla de hacerlo
|
| 77 |
+
|
| 78 |
+
00:01:27.820 --> 00:01:32.619
|
| 79 |
+
y puede ser bastante correcta realmente, pero en
|
| 80 |
+
|
| 81 |
+
00:01:32.619 --> 00:01:35.420
|
| 82 |
+
algunos casos tal vez lo mejor ser铆a utilizar
|
| 83 |
+
|
| 84 |
+
00:01:35.420 --> 00:01:37.744
|
| 85 |
+
el nombre, pues, de la variable. Por ejemplo,
|
| 86 |
+
|
| 87 |
+
00:01:37.744 --> 00:01:41.185
|
| 88 |
+
yo no quisiera utilizar n en algunos ejemplos
|
| 89 |
+
|
| 90 |
+
00:01:41.185 --> 00:01:43.265
|
| 91 |
+
de c贸digo real porque puede ser ambiguo de
|
| 92 |
+
|
| 93 |
+
00:01:43.265 --> 00:01:46.304
|
| 94 |
+
qu茅 se trata. Entonces, yo realmente quisiera poder
|
| 95 |
+
|
| 96 |
+
00:01:46.304 --> 00:01:49.024
|
| 97 |
+
utilizar la palabra nombre tambi茅n aqu铆, de esta
|
| 98 |
+
|
| 99 |
+
00:01:49.024 --> 00:01:51.655
|
| 100 |
+
manera, y en esta parte quisiera poder utilizar
|
| 101 |
+
|
| 102 |
+
00:01:51.655 --> 00:01:56.210
|
| 103 |
+
la palabra edad de esta forma. Sin embargo,
|
| 104 |
+
|
| 105 |
+
00:01:56.210 --> 00:01:58.690
|
| 106 |
+
si yo hiciera esto, tendr铆a que realizar esa
|
| 107 |
+
|
| 108 |
+
00:01:58.690 --> 00:02:03.430
|
| 109 |
+
misma asignaci贸n de esta manera, nombre y edad.
|
| 110 |
+
|
| 111 |
+
00:02:05.010 --> 00:02:07.730
|
| 112 |
+
Hacerlo as铆 ser铆a tal vez lo correcto y
|
| 113 |
+
|
| 114 |
+
00:02:07.730 --> 00:02:11.665
|
| 115 |
+
lo m谩s razonable, sin embargo, para el compilador
|
| 116 |
+
|
| 117 |
+
00:02:11.885 --> 00:02:14.525
|
| 118 |
+
va a significar una ambig眉edad, ya que no
|
| 119 |
+
|
| 120 |
+
00:02:14.525 --> 00:02:16.605
|
| 121 |
+
sabes si te refieres a el nombre que
|
| 122 |
+
|
| 123 |
+
00:02:16.605 --> 00:02:18.765
|
| 124 |
+
est谩 declarado aqu铆 o a este que est谩
|
| 125 |
+
|
| 126 |
+
00:02:18.765 --> 00:02:20.925
|
| 127 |
+
declarado aqu铆, sobre todo en la parte de
|
| 128 |
+
|
| 129 |
+
00:02:20.925 --> 00:02:24.349
|
| 130 |
+
asignaci贸n. Y aunque si t煤 hubieras creado este
|
| 131 |
+
|
| 132 |
+
00:02:24.349 --> 00:02:26.270
|
| 133 |
+
lenguaje de programaci贸n podr铆as decir, bueno, a la
|
| 134 |
+
|
| 135 |
+
00:02:26.270 --> 00:02:28.430
|
| 136 |
+
izquierda es el de la clase y a
|
| 137 |
+
|
| 138 |
+
00:02:28.430 --> 00:02:30.430
|
| 139 |
+
la derecha es el valor que se pas贸
|
| 140 |
+
|
| 141 |
+
00:02:30.430 --> 00:02:32.590
|
| 142 |
+
en el constructor, pues eso no es as铆
|
| 143 |
+
|
| 144 |
+
00:02:32.590 --> 00:02:35.410
|
| 145 |
+
en C m谩s m谩s. Entonces, es una es
|
| 146 |
+
|
| 147 |
+
00:02:35.470 --> 00:02:38.510
|
| 148 |
+
necesario realizar una desambiguaci贸n de estas de estas
|
| 149 |
+
|
| 150 |
+
00:02:38.510 --> 00:02:41.525
|
| 151 |
+
situaciones y esto es una de las formas
|
| 152 |
+
|
| 153 |
+
00:02:41.525 --> 00:02:44.325
|
| 154 |
+
de utilizar el puntero this. El puntero this
|
| 155 |
+
|
| 156 |
+
00:02:44.325 --> 00:02:47.465
|
| 157 |
+
se utilizar铆a como cualquier otro puntero, solamente que
|
| 158 |
+
|
| 159 |
+
00:02:48.965 --> 00:02:53.040
|
| 160 |
+
es esa palabra. Entonces, esta ser铆a la forma
|
| 161 |
+
|
| 162 |
+
00:02:53.040 --> 00:02:56.320
|
| 163 |
+
correcta de utilizarlo con la con la asignaci贸n
|
| 164 |
+
|
| 165 |
+
00:02:56.320 --> 00:02:57.760
|
| 166 |
+
por medio de una flecha, ya que se
|
| 167 |
+
|
| 168 |
+
00:02:57.760 --> 00:03:02.160
|
| 169 |
+
trata de un puntero y as铆 es. De
|
| 170 |
+
|
| 171 |
+
00:03:02.160 --> 00:03:04.980
|
| 172 |
+
esta manera, cuando nos referimos a this nombre
|
| 173 |
+
|
| 174 |
+
00:03:05.040 --> 00:03:07.215
|
| 175 |
+
en esta l铆nea, nos referimos a la variable
|
| 176 |
+
|
| 177 |
+
00:03:07.215 --> 00:03:09.695
|
| 178 |
+
que est谩 declarada en la l铆nea n煤mero ocho,
|
| 179 |
+
|
| 180 |
+
00:03:09.695 --> 00:03:12.435
|
| 181 |
+
y cuando accedemos por dis edad, nos referimos
|
| 182 |
+
|
| 183 |
+
00:03:12.895 --> 00:03:14.575
|
| 184 |
+
a la variable que est谩 declarada en la
|
| 185 |
+
|
| 186 |
+
00:03:14.575 --> 00:03:17.695
|
| 187 |
+
l铆nea nueve. As铆 es como el compilador puede
|
| 188 |
+
|
| 189 |
+
00:03:17.695 --> 00:03:21.230
|
| 190 |
+
saber cu谩l es cu谩l. Otra forma de utilizar
|
| 191 |
+
|
| 192 |
+
00:03:21.230 --> 00:03:24.349
|
| 193 |
+
this es cuando necesitamos acceder, pues, a la
|
| 194 |
+
|
| 195 |
+
00:03:24.349 --> 00:03:26.110
|
| 196 |
+
instancia en s铆 misma, a la entidad en
|
| 197 |
+
|
| 198 |
+
00:03:26.110 --> 00:03:29.709
|
| 199 |
+
s铆 misma, pero desde ella. Entonces, por ejemplo,
|
| 200 |
+
|
| 201 |
+
00:03:29.709 --> 00:03:33.834
|
| 202 |
+
si yo quisiera realizar una asignaci贸n que retorne,
|
| 203 |
+
|
| 204 |
+
00:03:34.135 --> 00:03:36.694
|
| 205 |
+
pues, el objeto en s铆 mismo, podr铆a hacerlo
|
| 206 |
+
|
| 207 |
+
00:03:36.694 --> 00:03:39.275
|
| 208 |
+
de la siguiente manera. Supongamos que yo quiero
|
| 209 |
+
|
| 210 |
+
00:03:39.895 --> 00:03:43.015
|
| 211 |
+
hacer que esta persona pueda actualizar su nombre
|
| 212 |
+
|
| 213 |
+
00:03:43.015 --> 00:03:45.819
|
| 214 |
+
y actualizar su edad. Como vimos en clases
|
| 215 |
+
|
| 216 |
+
00:03:45.819 --> 00:03:49.099
|
| 217 |
+
pasadas, la secci贸n de estas dos variables es
|
| 218 |
+
|
| 219 |
+
00:03:49.099 --> 00:03:51.819
|
| 220 |
+
privada, por lo tanto, necesitamos crear un par
|
| 221 |
+
|
| 222 |
+
00:03:51.819 --> 00:03:55.019
|
| 223 |
+
de funciones que nos ayuden a actualizarlas. La
|
| 224 |
+
|
| 225 |
+
00:03:55.019 --> 00:03:57.180
|
| 226 |
+
forma de hacerlo ser铆a crear un par de
|
| 227 |
+
|
| 228 |
+
00:03:57.180 --> 00:04:00.285
|
| 229 |
+
m茅todos. En este caso, supongamos que yo quiero
|
| 230 |
+
|
| 231 |
+
00:04:00.285 --> 00:04:02.605
|
| 232 |
+
un m茅todo que no retorne nada, solamente actualice
|
| 233 |
+
|
| 234 |
+
00:04:02.605 --> 00:04:06.365
|
| 235 |
+
el valor, podr铆a ser tipo void y podr铆a
|
| 236 |
+
|
| 237 |
+
00:04:06.365 --> 00:04:09.325
|
| 238 |
+
llamarse de alguna forma que sea descriptiva. En
|
| 239 |
+
|
| 240 |
+
00:04:09.325 --> 00:04:11.165
|
| 241 |
+
este caso, si quiero cambiar el nombre, podr铆a
|
| 242 |
+
|
| 243 |
+
00:04:11.165 --> 00:04:18.680
|
| 244 |
+
llamarse establecer nombre. Y establecer nombre podr铆a recibir
|
| 245 |
+
|
| 246 |
+
00:04:18.680 --> 00:04:23.640
|
| 247 |
+
una cadena de texto que traiga el nuevo
|
| 248 |
+
|
| 249 |
+
00:04:23.640 --> 00:04:28.514
|
| 250 |
+
nombre. Dentro de lo que hace esta funci贸n,
|
| 251 |
+
|
| 252 |
+
00:04:28.514 --> 00:04:31.655
|
| 253 |
+
pues ser铆a acceder a el valor this nombre
|
| 254 |
+
|
| 255 |
+
00:04:32.595 --> 00:04:36.375
|
| 256 |
+
y actualizarlo con el argumento nombre de la
|
| 257 |
+
|
| 258 |
+
00:04:37.315 --> 00:04:39.634
|
| 259 |
+
funci贸n. Lo mismo si yo quisiera cambiar la
|
| 260 |
+
|
| 261 |
+
00:04:39.634 --> 00:04:42.690
|
| 262 |
+
edad, Por ejemplo, podr铆a tener voy establecer edad,
|
| 263 |
+
|
| 264 |
+
00:04:45.949 --> 00:04:50.190
|
| 265 |
+
que recibe un entero llamado edad y que
|
| 266 |
+
|
| 267 |
+
00:04:50.190 --> 00:04:55.354
|
| 268 |
+
modifica el valor de this edad para asignarle
|
| 269 |
+
|
| 270 |
+
00:04:55.495 --> 00:04:59.895
|
| 271 |
+
el valor que recibi贸 por argumento. Ahora yo
|
| 272 |
+
|
| 273 |
+
00:04:59.895 --> 00:05:03.495
|
| 274 |
+
soy capaz de ejecutar llamadas a estas funciones,
|
| 275 |
+
|
| 276 |
+
00:05:03.495 --> 00:05:05.655
|
| 277 |
+
a estos m茅todos, de la misma manera en
|
| 278 |
+
|
| 279 |
+
00:05:05.655 --> 00:05:07.600
|
| 280 |
+
que lo hice con saludar. Por ejemplo, yo
|
| 281 |
+
|
| 282 |
+
00:05:07.600 --> 00:05:10.160
|
| 283 |
+
podr铆a hacer esta llamada de la siguiente manera
|
| 284 |
+
|
| 285 |
+
00:05:10.160 --> 00:05:14.560
|
| 286 |
+
establecer nombre y a Diana podr铆a cambiarle el
|
| 287 |
+
|
| 288 |
+
00:05:14.560 --> 00:05:22.294
|
| 289 |
+
nombre a Jimena y dejar que solamente Diana
|
| 290 |
+
|
| 291 |
+
00:05:22.294 --> 00:05:27.255
|
| 292 |
+
salude. De hecho, voy a eliminar la variable
|
| 293 |
+
|
| 294 |
+
00:05:27.255 --> 00:05:29.815
|
| 295 |
+
que tiene la segunda persona para hacer m谩s
|
| 296 |
+
|
| 297 |
+
00:05:29.815 --> 00:05:32.794
|
| 298 |
+
claro el ejemplo. Vamos a ejecutar este c贸digo
|
| 299 |
+
|
| 300 |
+
00:05:32.854 --> 00:05:37.020
|
| 301 |
+
y ahora podemos ver que la salida de
|
| 302 |
+
|
| 303 |
+
00:05:37.020 --> 00:05:40.419
|
| 304 |
+
saludar lo hace con la con la palabra
|
| 305 |
+
|
| 306 |
+
00:05:40.419 --> 00:05:43.900
|
| 307 |
+
Jimena. Esto es porque hemos actualizado su valor
|
| 308 |
+
|
| 309 |
+
00:05:43.900 --> 00:05:46.460
|
| 310 |
+
por medio de este m茅todo. Lo mismo podr铆amos
|
| 311 |
+
|
| 312 |
+
00:05:46.460 --> 00:05:50.275
|
| 313 |
+
hacer con la edad, por ejemplo, p establecer
|
| 314 |
+
|
| 315 |
+
00:05:50.275 --> 00:05:55.335
|
| 316 |
+
edad, que originalmente la definimos en diez. Ahora
|
| 317 |
+
|
| 318 |
+
00:05:55.475 --> 00:05:57.794
|
| 319 |
+
podr铆amos definirla en cualquier otro n煤mero, por ejemplo,
|
| 320 |
+
|
| 321 |
+
00:05:57.794 --> 00:06:01.794
|
| 322 |
+
veintis茅is. Y si yo ejecuto este c贸digo, voy
|
| 323 |
+
|
| 324 |
+
00:06:01.794 --> 00:06:05.640
|
| 325 |
+
a obtener como resultado, pues, de de momento
|
| 326 |
+
|
| 327 |
+
00:06:05.640 --> 00:06:07.800
|
| 328 |
+
tengo solamente el nombre, as铆 que voy a
|
| 329 |
+
|
| 330 |
+
00:06:07.800 --> 00:06:10.680
|
| 331 |
+
hacer que saludar sea un poco m谩s completo
|
| 332 |
+
|
| 333 |
+
00:06:10.680 --> 00:06:12.760
|
| 334 |
+
y nos diga tambi茅n la edad. En saludar,
|
| 335 |
+
|
| 336 |
+
00:06:12.760 --> 00:06:18.755
|
| 337 |
+
entonces, voy a poner algo as铆 como hola,
|
| 338 |
+
|
| 339 |
+
00:06:18.755 --> 00:06:23.395
|
| 340 |
+
soy, y que diga el nombre, y despu茅s
|
| 341 |
+
|
| 342 |
+
00:06:23.395 --> 00:06:28.755
|
| 343 |
+
le voy a agregar y que diga mi
|
| 344 |
+
|
| 345 |
+
00:06:28.755 --> 00:06:36.820
|
| 346 |
+
edad es y que diga la edad. De
|
| 347 |
+
|
| 348 |
+
00:06:36.820 --> 00:06:41.140
|
| 349 |
+
esta manera, si yo ejecuto el c贸digo, me
|
| 350 |
+
|
| 351 |
+
00:06:41.140 --> 00:06:43.780
|
| 352 |
+
dice que tengo un error. Ah, me falt贸
|
| 353 |
+
|
| 354 |
+
00:06:43.780 --> 00:06:52.845
|
| 355 |
+
aqu铆 un menor que Listo. Me dice hola,
|
| 356 |
+
|
| 357 |
+
00:06:52.845 --> 00:06:55.884
|
| 358 |
+
soy Jimena y mi edad es veintis茅is. En
|
| 359 |
+
|
| 360 |
+
00:06:55.884 --> 00:06:58.685
|
| 361 |
+
este caso, hemos, pues, realizado la actualizaci贸n de
|
| 362 |
+
|
| 363 |
+
00:06:58.685 --> 00:07:01.380
|
| 364 |
+
las variables correctamente, pero todav铆a no hemos visto
|
| 365 |
+
|
| 366 |
+
00:07:01.380 --> 00:07:03.780
|
| 367 |
+
c贸mo es que puede servir this aqu铆. Y
|
| 368 |
+
|
| 369 |
+
00:07:03.780 --> 00:07:06.020
|
| 370 |
+
bueno, este es un ejemplo de un caso
|
| 371 |
+
|
| 372 |
+
00:07:06.020 --> 00:07:10.100
|
| 373 |
+
muy especial, pero supongamos que yo quiero utilizar
|
| 374 |
+
|
| 375 |
+
00:07:10.100 --> 00:07:13.139
|
| 376 |
+
el objeto this para, cada vez que se
|
| 377 |
+
|
| 378 |
+
00:07:13.139 --> 00:07:16.715
|
| 379 |
+
invoque, establecer nombre, obtener, pues, la instancia o
|
| 380 |
+
|
| 381 |
+
00:07:16.715 --> 00:07:19.195
|
| 382 |
+
el objeto en s铆 mismo. Supongamos que yo
|
| 383 |
+
|
| 384 |
+
00:07:19.195 --> 00:07:22.555
|
| 385 |
+
quiero que cuando se establezca el nombre, esto
|
| 386 |
+
|
| 387 |
+
00:07:22.555 --> 00:07:26.555
|
| 388 |
+
retorne tambi茅n a la persona, de manera que
|
| 389 |
+
|
| 390 |
+
00:07:26.555 --> 00:07:28.795
|
| 391 |
+
esa otra variable que la reciba, de nuevo,
|
| 392 |
+
|
| 393 |
+
00:07:28.795 --> 00:07:32.070
|
| 394 |
+
pueda invocar sus m茅todos. Es una forma f谩cil
|
| 395 |
+
|
| 396 |
+
00:07:32.450 --> 00:07:34.370
|
| 397 |
+
o sencilla de decir que yo quiero poder
|
| 398 |
+
|
| 399 |
+
00:07:34.370 --> 00:07:38.530
|
| 400 |
+
llamar, establecer nombre y establecer edad en una
|
| 401 |
+
|
| 402 |
+
00:07:38.530 --> 00:07:42.930
|
| 403 |
+
sola l铆nea sin necesidad de cambiar, de utilizar
|
| 404 |
+
|
| 405 |
+
00:07:42.930 --> 00:07:46.395
|
| 406 |
+
dos veces esta secci贸n que es p y
|
| 407 |
+
|
| 408 |
+
00:07:46.395 --> 00:07:49.995
|
| 409 |
+
la funci贸n de flecha, 驴no? Entonces, yo puedo
|
| 410 |
+
|
| 411 |
+
00:07:49.995 --> 00:07:54.395
|
| 412 |
+
utilizar una concatenaci贸n realizando un return que devuelva
|
| 413 |
+
|
| 414 |
+
00:07:54.395 --> 00:07:57.435
|
| 415 |
+
la identidad o la entidad de esta persona
|
| 416 |
+
|
| 417 |
+
00:07:57.435 --> 00:07:59.800
|
| 418 |
+
en espec铆fico. La forma en que yo podr铆a
|
| 419 |
+
|
| 420 |
+
00:07:59.800 --> 00:08:04.200
|
| 421 |
+
hacerlo es indicarle que quiero retornar un puntero
|
| 422 |
+
|
| 423 |
+
00:08:04.200 --> 00:08:07.960
|
| 424 |
+
que es this, pero como esto es tipo
|
| 425 |
+
|
| 426 |
+
00:08:07.960 --> 00:08:12.794
|
| 427 |
+
puntero, yo necesito indicarlo con mi asterisco y
|
| 428 |
+
|
| 429 |
+
00:08:13.014 --> 00:08:16.235
|
| 430 |
+
aqu铆 tambi茅n necesito indicar que mi funci贸n devuelve
|
| 431 |
+
|
| 432 |
+
00:08:16.455 --> 00:08:18.314
|
| 433 |
+
un valor, que es una direcci贸n de memoria,
|
| 434 |
+
|
| 435 |
+
00:08:18.615 --> 00:08:22.235
|
| 436 |
+
utilizando ampersand. Lo mismo voy a realizar aqu铆
|
| 437 |
+
|
| 438 |
+
00:08:22.669 --> 00:08:26.350
|
| 439 |
+
para que tambi茅n establecer edad devuelva a la
|
| 440 |
+
|
| 441 |
+
00:08:26.350 --> 00:08:31.310
|
| 442 |
+
persona en s铆 misma. Una vez hecho esto,
|
| 443 |
+
|
| 444 |
+
00:08:31.310 --> 00:08:33.870
|
| 445 |
+
yo voy a poder invocar la funci贸n o
|
| 446 |
+
|
| 447 |
+
00:08:33.870 --> 00:08:36.669
|
| 448 |
+
invocar estos m茅todos de la persona de forma
|
| 449 |
+
|
| 450 |
+
00:08:36.669 --> 00:08:44.505
|
| 451 |
+
concatenada. Por ejemplo, as铆 voy a ejecutar la
|
| 452 |
+
|
| 453 |
+
00:08:44.505 --> 00:08:50.185
|
| 454 |
+
funci贸n y me dice que esto no retorna
|
| 455 |
+
|
| 456 |
+
00:08:50.185 --> 00:08:52.029
|
| 457 |
+
nada porque es void. Esto es cierto, no
|
| 458 |
+
|
| 459 |
+
00:08:52.029 --> 00:08:56.050
|
| 460 |
+
actualizamos lo que retornan. En este caso, debe
|
| 461 |
+
|
| 462 |
+
00:08:56.190 --> 00:09:07.025
|
| 463 |
+
retornar un tipo persona. Y ahora s铆 voy
|
| 464 |
+
|
| 465 |
+
00:09:07.025 --> 00:09:16.705
|
| 466 |
+
a realizar la ejecuci贸n. Y ah铆 est谩. Me
|
| 467 |
+
|
| 468 |
+
00:09:16.705 --> 00:09:18.865
|
| 469 |
+
est谩 diciendo, hola, soy Jimena, mi edad es
|
| 470 |
+
|
| 471 |
+
00:09:18.865 --> 00:09:22.540
|
| 472 |
+
veintis茅is a帽os. 驴Por qu茅 funciona esto? Porque cuando
|
| 473 |
+
|
| 474 |
+
00:09:22.600 --> 00:09:26.199
|
| 475 |
+
yo ejecuto establecer nombre, lo hago con la
|
| 476 |
+
|
| 477 |
+
00:09:26.199 --> 00:09:28.199
|
| 478 |
+
anotaci贸n de puntero, porque la variable p es
|
| 479 |
+
|
| 480 |
+
00:09:28.199 --> 00:09:32.040
|
| 481 |
+
un puntero. Esto va a retornar, pues, a
|
| 482 |
+
|
| 483 |
+
00:09:32.040 --> 00:09:34.515
|
| 484 |
+
la persona en s铆 misma. Por lo tanto,
|
| 485 |
+
|
| 486 |
+
00:09:34.575 --> 00:09:36.755
|
| 487 |
+
este bloque de c贸digo que estoy seleccionando aqu铆
|
| 488 |
+
|
| 489 |
+
00:09:37.214 --> 00:09:40.095
|
| 490 |
+
ejecuta la actualizaci贸n del nombre y, al mismo
|
| 491 |
+
|
| 492 |
+
00:09:40.095 --> 00:09:44.015
|
| 493 |
+
tiempo, contiene una referencia hacia la persona como
|
| 494 |
+
|
| 495 |
+
00:09:44.015 --> 00:09:46.575
|
| 496 |
+
retorno. Por lo tanto, ahora que yo tengo
|
| 497 |
+
|
| 498 |
+
00:09:46.575 --> 00:09:49.589
|
| 499 |
+
a una persona, yo tambi茅n puedo establecerle su
|
| 500 |
+
|
| 501 |
+
00:09:49.589 --> 00:09:53.350
|
| 502 |
+
edad. Y como hice, pues, uso de this,
|
| 503 |
+
|
| 504 |
+
00:09:53.350 --> 00:09:56.790
|
| 505 |
+
pues, se trata de la misma persona. Entonces,
|
| 506 |
+
|
| 507 |
+
00:09:56.790 --> 00:10:00.569
|
| 508 |
+
esto tambi茅n puede devolver, de hecho, esta l铆nea
|
| 509 |
+
|
| 510 |
+
00:10:01.350 --> 00:10:04.110
|
| 511 |
+
completa tambi茅n puede devolver o est谩 devolviendo a
|
| 512 |
+
|
| 513 |
+
00:10:04.110 --> 00:10:06.045
|
| 514 |
+
la persona en s铆 misma, y yo podr铆a
|
| 515 |
+
|
| 516 |
+
00:10:06.045 --> 00:10:08.645
|
| 517 |
+
asign谩rselo a un valor de una variable o
|
| 518 |
+
|
| 519 |
+
00:10:08.645 --> 00:10:11.905
|
| 520 |
+
seguir concatenando elementos. Por ejemplo, si yo quiero
|
| 521 |
+
|
| 522 |
+
00:10:12.285 --> 00:10:16.285
|
| 523 |
+
ahora establecer otro nombre, podr铆a realizarlo. Por ejemplo,
|
| 524 |
+
|
| 525 |
+
00:10:16.285 --> 00:10:18.385
|
| 526 |
+
solo le voy a poner de nuevo Diana.
|
| 527 |
+
|
| 528 |
+
00:10:19.790 --> 00:10:22.670
|
| 529 |
+
Y de esta manera, si yo ejecuto este
|
| 530 |
+
|
| 531 |
+
00:10:22.670 --> 00:10:26.449
|
| 532 |
+
c贸digo, voy a obtener mi saludar, mi saludo.
|
| 533 |
+
|
| 534 |
+
00:10:26.910 --> 00:10:29.149
|
| 535 |
+
Pero ahora dice hola, soy Diana, mi edad
|
| 536 |
+
|
| 537 |
+
00:10:29.149 --> 00:10:32.149
|
| 538 |
+
es veintis茅is. 驴Qu茅 fue lo que sucedi贸? Bueno,
|
| 539 |
+
|
| 540 |
+
00:10:32.149 --> 00:10:35.170
|
| 541 |
+
estableci贸 el nombre, retorn贸 el objeto que contiene
|
| 542 |
+
|
| 543 |
+
00:10:35.545 --> 00:10:39.545
|
| 544 |
+
el nombre de Diana, perd贸n, Jimena, le estableci贸
|
| 545 |
+
|
| 546 |
+
00:10:39.545 --> 00:10:41.945
|
| 547 |
+
la edad de veintis茅is a帽os y tambi茅n se
|
| 548 |
+
|
| 549 |
+
00:10:41.945 --> 00:10:45.145
|
| 550 |
+
retorn贸 a s铆 mismo, y luego vino y
|
| 551 |
+
|
| 552 |
+
00:10:45.145 --> 00:10:47.785
|
| 553 |
+
estableci贸 el nombre a Diana una vez m谩s
|
| 554 |
+
|
| 555 |
+
00:10:47.785 --> 00:10:49.870
|
| 556 |
+
y se retorn贸 a s铆 mismo. Para cuando
|
| 557 |
+
|
| 558 |
+
00:10:49.870 --> 00:10:52.670
|
| 559 |
+
yo ejecut茅 la funci贸n celular, el nombre ya
|
| 560 |
+
|
| 561 |
+
00:10:52.670 --> 00:10:55.550
|
| 562 |
+
era Diana. Como puedes ver, el puntero DIS
|
| 563 |
+
|
| 564 |
+
00:10:55.550 --> 00:10:57.790
|
| 565 |
+
es una herramienta muy importante dentro de la
|
| 566 |
+
|
| 567 |
+
00:10:57.790 --> 00:11:00.430
|
| 568 |
+
programaci贸n orientada a objetos, no solamente en C
|
| 569 |
+
|
| 570 |
+
00:11:00.430 --> 00:11:02.670
|
| 571 |
+
m谩s m谩s, sino es parte del paradigma y
|
| 572 |
+
|
| 573 |
+
00:11:02.670 --> 00:11:05.145
|
| 574 |
+
en todos los lenguajes que lo implementan. Te
|
| 575 |
+
|
| 576 |
+
00:11:05.145 --> 00:11:08.525
|
| 577 |
+
invito a aprender m谩s formas de c贸mo se
|
| 578 |
+
|
| 579 |
+
00:11:08.825 --> 00:11:11.865
|
| 580 |
+
utiliza este puntero para realizar, pues, cosas m谩s
|
| 581 |
+
|
| 582 |
+
00:11:11.865 --> 00:11:14.664
|
| 583 |
+
complejas en programaci贸n orientada a objetos. Nos vemos
|
| 584 |
+
|
| 585 |
+
00:11:14.664 --> 00:11:17.544
|
| 586 |
+
en la pr贸xima clase, donde hablaremos sobre c贸mo
|
| 587 |
+
|
| 588 |
+
00:11:17.544 --> 00:11:21.324
|
| 589 |
+
los objetos pueden compartir informaci贸n de forma est谩tica.
|
subir/Curso de Programaci贸n Orientada a Objetos con C/04-Principios de la Programaci贸n Orientada a Objetos/03-Atributos y M茅todos Est谩ticos en Programaci贸n Orientada a Objetos.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:efc57cedc6a0b861df938e95cad95303c5915856b6b84a0e764f9ef33c0c309e
|
| 3 |
+
size 80746352
|
subir/Curso de Programaci贸n Orientada a Objetos con C/04-Principios de la Programaci贸n Orientada a Objetos/03-Atributos y M茅todos Est谩ticos en Programaci贸n Orientada a Objetos.vtt
ADDED
|
@@ -0,0 +1,448 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
WEBVTT
|
| 2 |
+
|
| 3 |
+
00:00:03.360 --> 00:00:05.920
|
| 4 |
+
Vamos a hablar sobre otra caracter铆stica de la
|
| 5 |
+
|
| 6 |
+
00:00:05.920 --> 00:00:08.720
|
| 7 |
+
programaci贸n orientada a objetos, que es la capacidad
|
| 8 |
+
|
| 9 |
+
00:00:08.720 --> 00:00:14.160
|
| 10 |
+
de las clases para mantener m茅todos o atributos
|
| 11 |
+
|
| 12 |
+
00:00:14.160 --> 00:00:16.824
|
| 13 |
+
est谩ticos. Esto es una forma en la que
|
| 14 |
+
|
| 15 |
+
00:00:16.824 --> 00:00:20.765
|
| 16 |
+
las clases pueden intercambiar mensajes, pero sin realizar
|
| 17 |
+
|
| 18 |
+
00:00:20.824 --> 00:00:24.585
|
| 19 |
+
una implementaci贸n por cada copia del objeto. Volviendo
|
| 20 |
+
|
| 21 |
+
00:00:24.585 --> 00:00:27.500
|
| 22 |
+
al ejemplo de las personas, si ten铆amos, pues,
|
| 23 |
+
|
| 24 |
+
00:00:27.880 --> 00:00:30.520
|
| 25 |
+
por ejemplo, una copia por cada persona, cada
|
| 26 |
+
|
| 27 |
+
00:00:30.520 --> 00:00:34.060
|
| 28 |
+
una pod铆a tener su propio nombre. La variante
|
| 29 |
+
|
| 30 |
+
00:00:34.680 --> 00:00:38.120
|
| 31 |
+
est谩tica de esto es que se almacenar谩 un
|
| 32 |
+
|
| 33 |
+
00:00:38.120 --> 00:00:40.760
|
| 34 |
+
煤nico registro de memoria para todas las clases
|
| 35 |
+
|
| 36 |
+
00:00:40.760 --> 00:00:43.825
|
| 37 |
+
y ese se compartiera. En ese caso, vamos
|
| 38 |
+
|
| 39 |
+
00:00:43.825 --> 00:00:47.525
|
| 40 |
+
a realizar un ejemplo con la implementaci贸n est谩tica
|
| 41 |
+
|
| 42 |
+
00:00:47.825 --> 00:00:50.545
|
| 43 |
+
de los atributos de persona. Voy a agregar
|
| 44 |
+
|
| 45 |
+
00:00:50.545 --> 00:00:53.605
|
| 46 |
+
un atributo est谩tico a nuestra clase de persona.
|
| 47 |
+
|
| 48 |
+
00:00:53.905 --> 00:00:56.305
|
| 49 |
+
Para esto, lo 煤nico que necesito es utilizar
|
| 50 |
+
|
| 51 |
+
00:00:56.305 --> 00:00:58.760
|
| 52 |
+
la palabra static antes de crear, el atributo.
|
| 53 |
+
|
| 54 |
+
00:00:58.760 --> 00:01:01.899
|
| 55 |
+
En este caso, si yo quiero almacenar, por
|
| 56 |
+
|
| 57 |
+
00:01:02.120 --> 00:01:05.479
|
| 58 |
+
ejemplo, cu谩ntas personas existen, podr铆a crear un atributo
|
| 59 |
+
|
| 60 |
+
00:01:05.479 --> 00:01:07.720
|
| 61 |
+
que sea tipo entero y que sea n煤mero
|
| 62 |
+
|
| 63 |
+
00:01:07.720 --> 00:01:14.634
|
| 64 |
+
de personas. N煤mero gui贸n bajo persona. En este
|
| 65 |
+
|
| 66 |
+
00:01:14.634 --> 00:01:17.515
|
| 67 |
+
caso, voy a utilizar esta variable precisamente para
|
| 68 |
+
|
| 69 |
+
00:01:17.515 --> 00:01:19.435
|
| 70 |
+
que cada vez que yo cree una nueva
|
| 71 |
+
|
| 72 |
+
00:01:19.435 --> 00:01:22.634
|
| 73 |
+
copia o de el objeto personas, que cree
|
| 74 |
+
|
| 75 |
+
00:01:22.634 --> 00:01:25.515
|
| 76 |
+
yo una nueva persona, en ese momento agregue
|
| 77 |
+
|
| 78 |
+
00:01:25.515 --> 00:01:29.420
|
| 79 |
+
yo un, pues, sume yo en uno esta
|
| 80 |
+
|
| 81 |
+
00:01:29.420 --> 00:01:31.900
|
| 82 |
+
variable y, por lo tanto, tendr铆a yo que
|
| 83 |
+
|
| 84 |
+
00:01:31.900 --> 00:01:34.700
|
| 85 |
+
modificar el constructor para que esa operaci贸n de
|
| 86 |
+
|
| 87 |
+
00:01:34.700 --> 00:01:38.320
|
| 88 |
+
incremento se ejecute. Pero para esto tengo dos
|
| 89 |
+
|
| 90 |
+
00:01:39.180 --> 00:01:41.260
|
| 91 |
+
limitantes. M谩s bien, es una limitante que tiene
|
| 92 |
+
|
| 93 |
+
00:01:41.260 --> 00:01:45.174
|
| 94 |
+
dos efectos. El primero es que los atributos
|
| 95 |
+
|
| 96 |
+
00:01:45.475 --> 00:01:48.835
|
| 97 |
+
y m茅todos est谩ticos no pueden ser accedidos de
|
| 98 |
+
|
| 99 |
+
00:01:48.835 --> 00:01:52.354
|
| 100 |
+
forma din谩mica, y como los miembros que estamos
|
| 101 |
+
|
| 102 |
+
00:01:52.354 --> 00:01:54.715
|
| 103 |
+
definiendo aqu铆 para la persona, tanto el constructor,
|
| 104 |
+
|
| 105 |
+
00:01:54.715 --> 00:01:57.390
|
| 106 |
+
el instructor y estos m茅todos, Todo eso se
|
| 107 |
+
|
| 108 |
+
00:01:57.390 --> 00:01:59.390
|
| 109 |
+
va a crear una copia por cada vez
|
| 110 |
+
|
| 111 |
+
00:01:59.390 --> 00:02:01.810
|
| 112 |
+
que creemos una persona para que el compilador,
|
| 113 |
+
|
| 114 |
+
00:02:02.030 --> 00:02:05.950
|
| 115 |
+
pues, pueda mantener su autorreferencia. Sin embargo, esto
|
| 116 |
+
|
| 117 |
+
00:02:05.950 --> 00:02:08.370
|
| 118 |
+
nos bloquea y, por lo tanto, tenemos que
|
| 119 |
+
|
| 120 |
+
00:02:08.509 --> 00:02:11.694
|
| 121 |
+
cambiar ese comportamiento por defecto. C m谩s m谩s
|
| 122 |
+
|
| 123 |
+
00:02:11.694 --> 00:02:14.575
|
| 124 |
+
nos provee una forma que es definir estos
|
| 125 |
+
|
| 126 |
+
00:02:14.575 --> 00:02:17.614
|
| 127 |
+
m茅todos fuera de el cuerpo inicial de la
|
| 128 |
+
|
| 129 |
+
00:02:17.614 --> 00:02:20.894
|
| 130 |
+
clase, y la forma ser铆a utilizar el nombre
|
| 131 |
+
|
| 132 |
+
00:02:20.894 --> 00:02:23.694
|
| 133 |
+
de la clase de la siguiente forma persona,
|
| 134 |
+
|
| 135 |
+
00:02:23.694 --> 00:02:28.860
|
| 136 |
+
por ejemplo, persona y dos veces dos puntos.
|
| 137 |
+
|
| 138 |
+
00:02:28.860 --> 00:02:30.940
|
| 139 |
+
A partir de ah铆 ya podemos acceder tanto
|
| 140 |
+
|
| 141 |
+
00:02:30.940 --> 00:02:33.740
|
| 142 |
+
a los m茅todos como a los atributos de
|
| 143 |
+
|
| 144 |
+
00:02:33.740 --> 00:02:37.815
|
| 145 |
+
la persona para definirlos. Es importante, por ejemplo,
|
| 146 |
+
|
| 147 |
+
00:02:38.055 --> 00:02:41.692
|
| 148 |
+
notar que si yo quisiera realizar una asignaci贸n
|
| 149 |
+
|
| 150 |
+
00:02:41.692 --> 00:02:45.330
|
| 151 |
+
o una inicializaci贸n de mi de mi propiedad
|
| 152 |
+
|
| 153 |
+
00:02:45.330 --> 00:02:48.455
|
| 154 |
+
est谩tica, n煤mero de personas, no me dejar铆a el
|
| 155 |
+
|
| 156 |
+
00:02:48.455 --> 00:02:52.560
|
| 157 |
+
compilador realizar algo como esto, porque al ser
|
| 158 |
+
|
| 159 |
+
00:02:52.560 --> 00:02:55.120
|
| 160 |
+
este atributo est谩tico, pues est谩 bloqueado para que
|
| 161 |
+
|
| 162 |
+
00:02:55.120 --> 00:02:58.560
|
| 163 |
+
no pueda realizarse ese tipo de asignaciones. La
|
| 164 |
+
|
| 165 |
+
00:02:58.560 --> 00:03:02.480
|
| 166 |
+
forma correcta ser铆a hacerlo desde fuera. Por ejemplo,
|
| 167 |
+
|
| 168 |
+
00:03:02.480 --> 00:03:07.765
|
| 169 |
+
yo crear el tipo entero persona, el nombre
|
| 170 |
+
|
| 171 |
+
00:03:07.765 --> 00:03:09.625
|
| 172 |
+
de mi variable, que es n煤mero de personas,
|
| 173 |
+
|
| 174 |
+
00:03:10.325 --> 00:03:13.605
|
| 175 |
+
n煤mero de personas. Y ahora s铆, ya podr铆a
|
| 176 |
+
|
| 177 |
+
00:03:13.605 --> 00:03:16.084
|
| 178 |
+
darle un valor inicial con el que va
|
| 179 |
+
|
| 180 |
+
00:03:16.084 --> 00:03:18.805
|
| 181 |
+
a funcionar. Si te das cuenta, la forma
|
| 182 |
+
|
| 183 |
+
00:03:18.805 --> 00:03:21.480
|
| 184 |
+
en que el compilador tiene para reconocerlo es
|
| 185 |
+
|
| 186 |
+
00:03:21.480 --> 00:03:24.840
|
| 187 |
+
que estoy utilizando este esta sintaxis con la
|
| 188 |
+
|
| 189 |
+
00:03:24.840 --> 00:03:27.420
|
| 190 |
+
que indico a qu茅 clase pertenece este atributo.
|
| 191 |
+
|
| 192 |
+
00:03:28.440 --> 00:03:30.760
|
| 193 |
+
Lo mismo puedo hacer con los m茅todos. Por
|
| 194 |
+
|
| 195 |
+
00:03:30.760 --> 00:03:35.250
|
| 196 |
+
ejemplo, este m茅todo saludar yo podr铆a extraerlo y
|
| 197 |
+
|
| 198 |
+
00:03:35.250 --> 00:03:43.174
|
| 199 |
+
traerlo afuera. Por ejemplo, void saludar y podr铆a
|
| 200 |
+
|
| 201 |
+
00:03:43.174 --> 00:03:45.735
|
| 202 |
+
escribir el cuerpo de la funci贸n. Para esto
|
| 203 |
+
|
| 204 |
+
00:03:45.735 --> 00:03:48.295
|
| 205 |
+
tendr铆a que indicarle igual que lo hice con
|
| 206 |
+
|
| 207 |
+
00:03:48.295 --> 00:03:50.935
|
| 208 |
+
mi atributo n煤mero de personas, a qu茅 clase
|
| 209 |
+
|
| 210 |
+
00:03:50.935 --> 00:03:54.510
|
| 211 |
+
pertenece. Voy a cortar la l铆nea veintiocho de
|
| 212 |
+
|
| 213 |
+
00:03:54.510 --> 00:03:56.270
|
| 214 |
+
mi funci贸n saludar, que es su cuerpo lo
|
| 215 |
+
|
| 216 |
+
00:03:56.270 --> 00:03:58.670
|
| 217 |
+
que lo que la funci贸n realiza y lo
|
| 218 |
+
|
| 219 |
+
00:03:58.670 --> 00:04:02.910
|
| 220 |
+
voy a traer a su nueva definici贸n. Con
|
| 221 |
+
|
| 222 |
+
00:04:02.910 --> 00:04:05.010
|
| 223 |
+
esto, pues lo que estoy haciendo es reescribir
|
| 224 |
+
|
| 225 |
+
00:04:05.135 --> 00:04:08.174
|
| 226 |
+
el mismo comportamiento, solamente que con la sintaxis
|
| 227 |
+
|
| 228 |
+
00:04:08.174 --> 00:04:11.055
|
| 229 |
+
en la que le indico que esta clase
|
| 230 |
+
|
| 231 |
+
00:04:11.055 --> 00:04:14.515
|
| 232 |
+
tiene este m茅todo, pero de forma externa. Entonces,
|
| 233 |
+
|
| 234 |
+
00:04:14.974 --> 00:04:16.894
|
| 235 |
+
lo que va a suceder aqu铆 es que
|
| 236 |
+
|
| 237 |
+
00:04:16.894 --> 00:04:19.539
|
| 238 |
+
yo necesito quitar este juego de llaves para
|
| 239 |
+
|
| 240 |
+
00:04:19.539 --> 00:04:23.699
|
| 241 |
+
que mi compilador reconozca que esta funci贸n s铆
|
| 242 |
+
|
| 243 |
+
00:04:23.699 --> 00:04:26.100
|
| 244 |
+
la estoy declarando como que pertenece a la
|
| 245 |
+
|
| 246 |
+
00:04:26.100 --> 00:04:29.220
|
| 247 |
+
clase persona. Por lo tanto, s铆 debo tenerla
|
| 248 |
+
|
| 249 |
+
00:04:29.220 --> 00:04:31.620
|
| 250 |
+
aqu铆, pero a la hora de definir c贸mo
|
| 251 |
+
|
| 252 |
+
00:04:31.620 --> 00:04:35.675
|
| 253 |
+
funciona, lo estoy realizando desde fuera. Este comportamiento
|
| 254 |
+
|
| 255 |
+
00:04:35.675 --> 00:04:38.095
|
| 256 |
+
de saludar se va a mantener intacto, solamente
|
| 257 |
+
|
| 258 |
+
00:04:38.155 --> 00:04:40.975
|
| 259 |
+
cambia la forma de escribirlo. Lo mismo suceder铆a,
|
| 260 |
+
|
| 261 |
+
00:04:41.514 --> 00:04:44.415
|
| 262 |
+
por ejemplo, con el constructor. El constructor no
|
| 263 |
+
|
| 264 |
+
00:04:44.555 --> 00:04:46.315
|
| 265 |
+
retorna un tipo, as铆 que, por ejemplo, este
|
| 266 |
+
|
| 267 |
+
00:04:46.315 --> 00:04:49.082
|
| 268 |
+
void no ir铆a, pero el resto de la
|
| 269 |
+
|
| 270 |
+
00:04:49.082 --> 00:04:51.450
|
| 271 |
+
sintaxis s铆 ser铆a igual. En este caso, voy
|
| 272 |
+
|
| 273 |
+
00:04:51.450 --> 00:04:53.850
|
| 274 |
+
a copiar el constructor para poder definirlo desde
|
| 275 |
+
|
| 276 |
+
00:04:53.850 --> 00:04:57.210
|
| 277 |
+
fuera y voy a eliminar su cuerpo de
|
| 278 |
+
|
| 279 |
+
00:04:57.210 --> 00:04:59.850
|
| 280 |
+
esta parte. Lo que voy a hacer es
|
| 281 |
+
|
| 282 |
+
00:04:59.850 --> 00:05:03.935
|
| 283 |
+
terminar de declararlo aqu铆 abajo como parte de
|
| 284 |
+
|
| 285 |
+
00:05:03.935 --> 00:05:09.694
|
| 286 |
+
la clase de persona y ah铆 est谩. De
|
| 287 |
+
|
| 288 |
+
00:05:09.694 --> 00:05:11.794
|
| 289 |
+
este modo, ahora yo voy a poder acceder
|
| 290 |
+
|
| 291 |
+
00:05:12.014 --> 00:05:14.655
|
| 292 |
+
a los miembros est谩ticos de mi clase, por
|
| 293 |
+
|
| 294 |
+
00:05:14.655 --> 00:05:16.669
|
| 295 |
+
ejemplo, al n煤mero de personas. Y lo que
|
| 296 |
+
|
| 297 |
+
00:05:16.669 --> 00:05:18.509
|
| 298 |
+
voy a poder hacer es una asignaci贸n como
|
| 299 |
+
|
| 300 |
+
00:05:18.509 --> 00:05:23.470
|
| 301 |
+
la siguiente n煤mero de personas es un incremento
|
| 302 |
+
|
| 303 |
+
00:05:23.470 --> 00:05:26.289
|
| 304 |
+
m谩s uno, por ejemplo, el n煤mero anterior m谩s
|
| 305 |
+
|
| 306 |
+
00:05:26.509 --> 00:05:29.675
|
| 307 |
+
uno, m谩s igual uno. Y ahora s铆 voy
|
| 308 |
+
|
| 309 |
+
00:05:29.675 --> 00:05:32.695
|
| 310 |
+
a darle compilar para ver el comportamiento de
|
| 311 |
+
|
| 312 |
+
00:05:32.695 --> 00:05:36.615
|
| 313 |
+
mi funci贸n. Esto va a mandar el mismo
|
| 314 |
+
|
| 315 |
+
00:05:36.615 --> 00:05:39.675
|
| 316 |
+
mensaje de salida que ten铆amos implementado. La diferencia
|
| 317 |
+
|
| 318 |
+
00:05:39.735 --> 00:05:41.885
|
| 319 |
+
es que ahora, durante la creaci贸n de la
|
| 320 |
+
|
| 321 |
+
00:05:41.885 --> 00:05:44.810
|
| 322 |
+
instancia del objeto, estamos incrementando en m谩s uno
|
| 323 |
+
|
| 324 |
+
00:05:44.810 --> 00:05:47.770
|
| 325 |
+
el contador de personas. Vamos a mostrar el
|
| 326 |
+
|
| 327 |
+
00:05:47.770 --> 00:05:51.389
|
| 328 |
+
resultado de cu谩ntas personas tienen, pues, la lista
|
| 329 |
+
|
| 330 |
+
00:05:52.010 --> 00:05:54.370
|
| 331 |
+
o la clase, mejor dicho, a la hora
|
| 332 |
+
|
| 333 |
+
00:05:54.370 --> 00:05:57.130
|
| 334 |
+
de crear. Entonces, despu茅s de esta l铆nea, vamos
|
| 335 |
+
|
| 336 |
+
00:05:57.130 --> 00:05:59.185
|
| 337 |
+
a imprimir se out y el n煤mero de
|
| 338 |
+
|
| 339 |
+
00:05:59.185 --> 00:06:02.305
|
| 340 |
+
personas. Para acceder a un miembro est谩tico no
|
| 341 |
+
|
| 342 |
+
00:06:02.305 --> 00:06:06.305
|
| 343 |
+
necesitamos crear una persona como tal, sino podemos
|
| 344 |
+
|
| 345 |
+
00:06:06.305 --> 00:06:09.025
|
| 346 |
+
acceder directamente desde la clase. Por ejemplo, podemos
|
| 347 |
+
|
| 348 |
+
00:06:09.025 --> 00:06:17.100
|
| 349 |
+
poner persona, dos puntos, n煤mero, personas. Con esto
|
| 350 |
+
|
| 351 |
+
00:06:18.040 --> 00:06:20.440
|
| 352 |
+
voy a hacer un cambio de l铆nea y
|
| 353 |
+
|
| 354 |
+
00:06:20.440 --> 00:06:22.360
|
| 355 |
+
le voy a poner aqu铆 un texto para
|
| 356 |
+
|
| 357 |
+
00:06:22.360 --> 00:06:24.120
|
| 358 |
+
que sepamos qu茅 es lo que estamos viendo
|
| 359 |
+
|
| 360 |
+
00:06:24.120 --> 00:06:26.700
|
| 361 |
+
y le voy a poner n煤mero de personas.
|
| 362 |
+
|
| 363 |
+
00:06:27.960 --> 00:06:34.555
|
| 364 |
+
Con esto vamos a ejecutarlo. Podemos acceder y
|
| 365 |
+
|
| 366 |
+
00:06:34.575 --> 00:06:38.035
|
| 367 |
+
dice, ah, es privado. Olvidamos que se declar贸
|
| 368 |
+
|
| 369 |
+
00:06:38.415 --> 00:06:41.375
|
| 370 |
+
dentro de la parte privada de la funci贸n,
|
| 371 |
+
|
| 372 |
+
00:06:41.375 --> 00:06:43.235
|
| 373 |
+
entonces la voy a cambiar a la secci贸n
|
| 374 |
+
|
| 375 |
+
00:06:43.710 --> 00:06:47.389
|
| 376 |
+
p煤blica de nuestra clase, perd贸n, para que pueda
|
| 377 |
+
|
| 378 |
+
00:06:47.389 --> 00:06:50.190
|
| 379 |
+
ser accedida desde fuera. Con esto voy a
|
| 380 |
+
|
| 381 |
+
00:06:50.190 --> 00:06:54.349
|
| 382 |
+
realizar la ejecuci贸n una vez m谩s y ahora
|
| 383 |
+
|
| 384 |
+
00:06:54.349 --> 00:06:57.250
|
| 385 |
+
s铆 tengo la salida del n煤mero de personas.
|
| 386 |
+
|
| 387 |
+
00:06:57.634 --> 00:07:00.195
|
| 388 |
+
En este momento que se realiz贸 la ejecuci贸n,
|
| 389 |
+
|
| 390 |
+
00:07:00.195 --> 00:07:01.794
|
| 391 |
+
me dice que el n煤mero de personas es
|
| 392 |
+
|
| 393 |
+
00:07:01.794 --> 00:07:04.854
|
| 394 |
+
uno y si yo quisiera crear m谩s personas
|
| 395 |
+
|
| 396 |
+
00:07:04.995 --> 00:07:07.875
|
| 397 |
+
podr铆a hacerlo. Por ejemplo, voy a duplicar la
|
| 398 |
+
|
| 399 |
+
00:07:07.875 --> 00:07:10.870
|
| 400 |
+
declaraci贸n de la primera persona para crear una
|
| 401 |
+
|
| 402 |
+
00:07:10.870 --> 00:07:14.790
|
| 403 |
+
segunda persona aqu铆 que se llame P2, que
|
| 404 |
+
|
| 405 |
+
00:07:14.790 --> 00:07:16.950
|
| 406 |
+
puede tener de hecho los mismos valores, as铆
|
| 407 |
+
|
| 408 |
+
00:07:16.950 --> 00:07:19.350
|
| 409 |
+
que no hay problema. Voy a ejecutarlo y
|
| 410 |
+
|
| 411 |
+
00:07:19.350 --> 00:07:21.590
|
| 412 |
+
ahora me dice que hay dos personas a
|
| 413 |
+
|
| 414 |
+
00:07:21.590 --> 00:07:23.030
|
| 415 |
+
la hora de llegar a la l铆nea cuarenta
|
| 416 |
+
|
| 417 |
+
00:07:23.030 --> 00:07:26.175
|
| 418 |
+
y tres. Con esto hemos utilizado un miembro
|
| 419 |
+
|
| 420 |
+
00:07:26.175 --> 00:07:29.235
|
| 421 |
+
est谩tico y hemos accedido a 茅l desde una,
|
| 422 |
+
|
| 423 |
+
00:07:29.935 --> 00:07:35.055
|
| 424 |
+
pues, de un constructor. Los miembros est谩ticos pueden
|
| 425 |
+
|
| 426 |
+
00:07:35.055 --> 00:07:38.574
|
| 427 |
+
ser muy 煤tiles para intercambiar mensajes entre clases
|
| 428 |
+
|
| 429 |
+
00:07:38.574 --> 00:07:41.630
|
| 430 |
+
y tambi茅n las diferentes copias de la clase
|
| 431 |
+
|
| 432 |
+
00:07:41.630 --> 00:07:44.910
|
| 433 |
+
pueden hacer, pues, acceso, pero tenemos debemos tener
|
| 434 |
+
|
| 435 |
+
00:07:44.910 --> 00:07:46.430
|
| 436 |
+
cuidado con la forma en lo que lo
|
| 437 |
+
|
| 438 |
+
00:07:46.430 --> 00:07:48.670
|
| 439 |
+
hacemos para que el compilador no nos lance
|
| 440 |
+
|
| 441 |
+
00:07:48.670 --> 00:07:51.310
|
| 442 |
+
ninguna clase de error. Vamos a pasar a
|
| 443 |
+
|
| 444 |
+
00:07:51.310 --> 00:07:53.870
|
| 445 |
+
la siguiente secci贸n, donde vamos a hablar sobre
|
| 446 |
+
|
| 447 |
+
00:07:53.870 --> 00:07:54.370
|
| 448 |
+
herencia.
|
subir/Curso de Programaci贸n Orientada a Objetos con C/04-Principios de la Programaci贸n Orientada a Objetos/03-Resumen.html
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
subir/Curso de Programaci贸n Orientada a Objetos con C/04-Principios de la Programaci贸n Orientada a Objetos/04-Herencia en C Implementaci贸n y Ejemplos Pr谩cticos.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:3fe79143ba74a01f6bc4b6623738a4e3f9db0d29fed69be92779c8f2ac1d4a1f
|
| 3 |
+
size 127774520
|
subir/Curso de Programaci贸n Orientada a Objetos con C/04-Principios de la Programaci贸n Orientada a Objetos/04-Herencia en C Implementaci贸n y Ejemplos Pr谩cticos.vtt
ADDED
|
@@ -0,0 +1,673 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
WEBVTT
|
| 2 |
+
|
| 3 |
+
00:00:04.640 --> 00:00:07.120
|
| 4 |
+
Una de las caracter铆sticas m谩s importantes de la
|
| 5 |
+
|
| 6 |
+
00:00:07.120 --> 00:00:10.160
|
| 7 |
+
programaci贸n orientada a objetos es la herencia, y
|
| 8 |
+
|
| 9 |
+
00:00:10.160 --> 00:00:12.340
|
| 10 |
+
dentro de C m谩s m谩s tambi茅n podemos implementarla.
|
| 11 |
+
|
| 12 |
+
00:00:12.755 --> 00:00:15.575
|
| 13 |
+
La herencia es la capacidad que tienen las
|
| 14 |
+
|
| 15 |
+
00:00:16.035 --> 00:00:19.715
|
| 16 |
+
clases de heredar, pues, habilidades o caracter铆sticas de
|
| 17 |
+
|
| 18 |
+
00:00:19.715 --> 00:00:22.755
|
| 19 |
+
otras clases, de una o m谩s clases. La
|
| 20 |
+
|
| 21 |
+
00:00:22.755 --> 00:00:25.415
|
| 22 |
+
herencia nos va a permitir continuar con la
|
| 23 |
+
|
| 24 |
+
00:00:25.930 --> 00:00:28.730
|
| 25 |
+
abstracci贸n de la orientaci贸n a objetos y pensar
|
| 26 |
+
|
| 27 |
+
00:00:28.730 --> 00:00:33.610
|
| 28 |
+
todo como entidades, y estas pueden estar relacionadas.
|
| 29 |
+
|
| 30 |
+
00:00:33.610 --> 00:00:36.830
|
| 31 |
+
Por ejemplo, una persona puede tener una especializaci贸n
|
| 32 |
+
|
| 33 |
+
00:00:37.130 --> 00:00:39.770
|
| 34 |
+
que sea, pues, en este caso, un alumno
|
| 35 |
+
|
| 36 |
+
00:00:39.770 --> 00:00:43.073
|
| 37 |
+
de Platzi o una profesora. Estas ser铆an clases
|
| 38 |
+
|
| 39 |
+
00:00:43.073 --> 00:00:45.974
|
| 40 |
+
que heredan de una persona o de un
|
| 41 |
+
|
| 42 |
+
00:00:45.974 --> 00:00:48.545
|
| 43 |
+
ser humano sus caracter铆sticas, como la capacidad de
|
| 44 |
+
|
| 45 |
+
00:00:48.545 --> 00:00:50.945
|
| 46 |
+
tener un hombre o una edad. Del mismo
|
| 47 |
+
|
| 48 |
+
00:00:50.945 --> 00:00:54.704
|
| 49 |
+
modo, podemos realizar herencia, pues, muy compleja. Por
|
| 50 |
+
|
| 51 |
+
00:00:54.704 --> 00:00:58.090
|
| 52 |
+
ejemplo, si tuvi茅ramos una serie de clases como
|
| 53 |
+
|
| 54 |
+
00:00:58.090 --> 00:01:01.949
|
| 55 |
+
la clase animal, podr铆amos tener, pues, varias, pues,
|
| 56 |
+
|
| 57 |
+
00:01:02.170 --> 00:01:05.630
|
| 58 |
+
especializaciones como podr铆an ser un carn铆voro, un herb铆voro
|
| 59 |
+
|
| 60 |
+
00:01:05.689 --> 00:01:08.235
|
| 61 |
+
o un omn铆voro. Y cada uno de estos
|
| 62 |
+
|
| 63 |
+
00:01:08.235 --> 00:01:11.115
|
| 64 |
+
no solamente heredar铆a las habilidades de ser un
|
| 65 |
+
|
| 66 |
+
00:01:11.115 --> 00:01:14.315
|
| 67 |
+
animal, sino tendr铆a caracter铆sticas muy 煤nicas de su
|
| 68 |
+
|
| 69 |
+
00:01:14.315 --> 00:01:18.015
|
| 70 |
+
propia clase. Vamos a realizar algunos ejemplos en
|
| 71 |
+
|
| 72 |
+
00:01:18.035 --> 00:01:21.195
|
| 73 |
+
c贸digo sobre la herencia. En esta ocasi贸n, primero
|
| 74 |
+
|
| 75 |
+
00:01:21.195 --> 00:01:22.940
|
| 76 |
+
voy a mostrarte un ejemplo que he escrito
|
| 77 |
+
|
| 78 |
+
00:01:22.940 --> 00:01:25.880
|
| 79 |
+
para ahorrarnos tiempo en la clase, que es
|
| 80 |
+
|
| 81 |
+
00:01:26.580 --> 00:01:28.980
|
| 82 |
+
simplemente utilizar todos los conceptos que hemos estado
|
| 83 |
+
|
| 84 |
+
00:01:28.980 --> 00:01:32.020
|
| 85 |
+
viendo anteriormente en el curso, c贸mo es la
|
| 86 |
+
|
| 87 |
+
00:01:32.020 --> 00:01:36.100
|
| 88 |
+
definici贸n de una clase con, pues, sus propiedades,
|
| 89 |
+
|
| 90 |
+
00:01:36.100 --> 00:01:39.915
|
| 91 |
+
m茅todos est谩ticos, con la capacidad de acceder a
|
| 92 |
+
|
| 93 |
+
00:01:40.135 --> 00:01:42.855
|
| 94 |
+
estas, pues, diferentes variables, como el n煤mero de
|
| 95 |
+
|
| 96 |
+
00:01:42.855 --> 00:01:45.735
|
| 97 |
+
animales. Algo muy similar a lo que realic茅
|
| 98 |
+
|
| 99 |
+
00:01:45.735 --> 00:01:48.775
|
| 100 |
+
con personas fue, pues, realizar el conteo del
|
| 101 |
+
|
| 102 |
+
00:01:48.775 --> 00:01:51.575
|
| 103 |
+
n煤mero de animales utilizando el constructor y el
|
| 104 |
+
|
| 105 |
+
00:01:51.575 --> 00:01:54.830
|
| 106 |
+
destructor de esta clase. Por ejemplo, cada vez
|
| 107 |
+
|
| 108 |
+
00:01:54.830 --> 00:01:57.150
|
| 109 |
+
que se crea un nuevo animal, pues se
|
| 110 |
+
|
| 111 |
+
00:01:57.150 --> 00:01:58.710
|
| 112 |
+
va a incrementar en uno y adem谩s va
|
| 113 |
+
|
| 114 |
+
00:01:58.710 --> 00:02:00.830
|
| 115 |
+
a dar un mensaje en la terminal. Y
|
| 116 |
+
|
| 117 |
+
00:02:00.830 --> 00:02:03.630
|
| 118 |
+
tambi茅n cada vez que se elimina, pues un
|
| 119 |
+
|
| 120 |
+
00:02:03.630 --> 00:02:06.030
|
| 121 |
+
animal, pues vamos a tener el mensaje de
|
| 122 |
+
|
| 123 |
+
00:02:06.030 --> 00:02:09.305
|
| 124 |
+
que se elimin贸 el animal que se elimin贸
|
| 125 |
+
|
| 126 |
+
00:02:09.305 --> 00:02:12.505
|
| 127 |
+
y, en este caso, pues estar铆amos rest谩ndole uno
|
| 128 |
+
|
| 129 |
+
00:02:12.505 --> 00:02:15.945
|
| 130 |
+
al conteo total de animales. Tambi茅n tengo un
|
| 131 |
+
|
| 132 |
+
00:02:15.945 --> 00:02:19.485
|
| 133 |
+
m茅todo en lugar de una de simplemente acceder
|
| 134 |
+
|
| 135 |
+
00:02:19.705 --> 00:02:23.250
|
| 136 |
+
al atributo est谩tico para poderlo mantener privado. De
|
| 137 |
+
|
| 138 |
+
00:02:23.250 --> 00:02:25.010
|
| 139 |
+
esta forma, si te das cuenta, el que
|
| 140 |
+
|
| 141 |
+
00:02:25.010 --> 00:02:27.569
|
| 142 |
+
est谩 en la secci贸n de private y aqu铆
|
| 143 |
+
|
| 144 |
+
00:02:27.569 --> 00:02:31.010
|
| 145 |
+
con este m茅todo puedo retornarlo. Si te das
|
| 146 |
+
|
| 147 |
+
00:02:31.010 --> 00:02:32.450
|
| 148 |
+
cuenta, la forma en que lo utilic茅 en
|
| 149 |
+
|
| 150 |
+
00:02:32.450 --> 00:02:34.849
|
| 151 |
+
la l铆nea cuarenta y tres es como cualquier
|
| 152 |
+
|
| 153 |
+
00:02:34.849 --> 00:02:37.970
|
| 154 |
+
otro m茅todo de una, pues como si fuera
|
| 155 |
+
|
| 156 |
+
00:02:37.970 --> 00:02:41.165
|
| 157 |
+
una funci贸n, pero siendo parte de la clase
|
| 158 |
+
|
| 159 |
+
00:02:41.305 --> 00:02:45.805
|
| 160 |
+
animal. Aqu铆 tengo un ejemplo de c贸mo funcionar铆a
|
| 161 |
+
|
| 162 |
+
00:02:46.185 --> 00:02:48.765
|
| 163 |
+
y la forma ser铆a crear un nuevo animal
|
| 164 |
+
|
| 165 |
+
00:02:49.225 --> 00:02:51.705
|
| 166 |
+
y adem谩s le agregu茅, pues, un par de
|
| 167 |
+
|
| 168 |
+
00:02:51.705 --> 00:02:55.150
|
| 169 |
+
secciones. En primer lugar, tiene una un m茅todo
|
| 170 |
+
|
| 171 |
+
00:02:55.150 --> 00:02:57.150
|
| 172 |
+
comer que va a mostrar un mensaje de
|
| 173 |
+
|
| 174 |
+
00:02:57.150 --> 00:02:59.650
|
| 175 |
+
que este animal est谩 comiendo, va a mostrar
|
| 176 |
+
|
| 177 |
+
00:02:59.870 --> 00:03:01.390
|
| 178 |
+
cu谩l es el tipo de alimento que est谩
|
| 179 |
+
|
| 180 |
+
00:03:01.390 --> 00:03:04.670
|
| 181 |
+
comiendo y 帽om 帽om. Y una vez que
|
| 182 |
+
|
| 183 |
+
00:03:04.670 --> 00:03:07.490
|
| 184 |
+
hayamos realizado la ejecuci贸n de la funci贸n comer,
|
| 185 |
+
|
| 186 |
+
00:03:07.630 --> 00:03:10.325
|
| 187 |
+
vamos a eliminar este animal y vamos a
|
| 188 |
+
|
| 189 |
+
00:03:10.325 --> 00:03:12.984
|
| 190 |
+
ver cu谩l es el n煤mero de animales actualizado
|
| 191 |
+
|
| 192 |
+
00:03:13.125 --> 00:03:15.444
|
| 193 |
+
despu茅s de destruir. En este caso, solo tenemos
|
| 194 |
+
|
| 195 |
+
00:03:15.444 --> 00:03:16.965
|
| 196 |
+
un animal, as铆 que tendr谩 que volver a
|
| 197 |
+
|
| 198 |
+
00:03:16.965 --> 00:03:20.825
|
| 199 |
+
cero. Pero tambi茅n deberemos poder ver el mensaje
|
| 200 |
+
|
| 201 |
+
00:03:21.034 --> 00:03:25.410
|
| 202 |
+
que pusimos al destructor para mostrar el borrando
|
| 203 |
+
|
| 204 |
+
00:03:25.410 --> 00:03:30.610
|
| 205 |
+
animal. Vamos a ejecutarlo. Listo. Ahora tenemos, pues,
|
| 206 |
+
|
| 207 |
+
00:03:30.610 --> 00:03:33.430
|
| 208 |
+
los siguientes mensajes. En primer lugar, se mencion贸
|
| 209 |
+
|
| 210 |
+
00:03:33.569 --> 00:03:37.155
|
| 211 |
+
el creando un nuevo animal, porque a la
|
| 212 |
+
|
| 213 |
+
00:03:37.155 --> 00:03:40.695
|
| 214 |
+
hora de que utilizamos el la palabra reservada
|
| 215 |
+
|
| 216 |
+
00:03:40.755 --> 00:03:43.175
|
| 217 |
+
new, en ese momento se invoca el constructor
|
| 218 |
+
|
| 219 |
+
00:03:43.555 --> 00:03:47.075
|
| 220 |
+
y se hace el ceoT correspondiente. Despu茅s, vamos
|
| 221 |
+
|
| 222 |
+
00:03:47.075 --> 00:03:49.155
|
| 223 |
+
a tener el n煤mero de animales de la
|
| 224 |
+
|
| 225 |
+
00:03:49.155 --> 00:03:52.750
|
| 226 |
+
l铆nea cuarenta y tres. A continuaci贸n, se realiza
|
| 227 |
+
|
| 228 |
+
00:03:52.750 --> 00:03:55.790
|
| 229 |
+
la ejecuci贸n de el m茅todo comer y, en
|
| 230 |
+
|
| 231 |
+
00:03:55.790 --> 00:03:57.630
|
| 232 |
+
este caso, no sabe qu茅 es lo que
|
| 233 |
+
|
| 234 |
+
00:03:57.630 --> 00:04:00.430
|
| 235 |
+
est谩 comiendo exactamente, se qued贸 una una cadena
|
| 236 |
+
|
| 237 |
+
00:04:00.430 --> 00:04:02.750
|
| 238 |
+
vac铆a por defecto. Por lo tanto, solo dice
|
| 239 |
+
|
| 240 |
+
00:04:02.750 --> 00:04:05.334
|
| 241 |
+
el animal est谩 comiendo 帽om 帽om. Y a
|
| 242 |
+
|
| 243 |
+
00:04:05.334 --> 00:04:07.895
|
| 244 |
+
continuaci贸n podemos ver que se borr贸 el animal
|
| 245 |
+
|
| 246 |
+
00:04:07.895 --> 00:04:11.334
|
| 247 |
+
y luego el conteo baj贸 a cero. Voy
|
| 248 |
+
|
| 249 |
+
00:04:11.334 --> 00:04:14.255
|
| 250 |
+
a hacer una segunda ejecuci贸n solamente para agregar
|
| 251 |
+
|
| 252 |
+
00:04:14.255 --> 00:04:16.695
|
| 253 |
+
un ejemplo de c贸mo funcionar铆a si tuviera ya
|
| 254 |
+
|
| 255 |
+
00:04:16.695 --> 00:04:19.349
|
| 256 |
+
alg煤n alimento asignado. En este caso, si yo
|
| 257 |
+
|
| 258 |
+
00:04:19.349 --> 00:04:22.310
|
| 259 |
+
quisiera hacer que el animal por defecto tenga
|
| 260 |
+
|
| 261 |
+
00:04:22.310 --> 00:04:28.550
|
| 262 |
+
un alimento, por ejemplo, aqu铆 arriba, podemos darle
|
| 263 |
+
|
| 264 |
+
00:04:28.550 --> 00:04:31.895
|
| 265 |
+
un valor por defecto, que sea carne. A
|
| 266 |
+
|
| 267 |
+
00:04:34.435 --> 00:04:36.595
|
| 268 |
+
la hora de realizar la ejecuci贸n, me dir铆a,
|
| 269 |
+
|
| 270 |
+
00:04:36.595 --> 00:04:40.995
|
| 271 |
+
este animal est谩 comiendo carne. Vamos a pasar
|
| 272 |
+
|
| 273 |
+
00:04:40.995 --> 00:04:44.595
|
| 274 |
+
ahora a realizar, pues, la implementaci贸n de una
|
| 275 |
+
|
| 276 |
+
00:04:44.595 --> 00:04:48.450
|
| 277 |
+
clase que herede de la clase animal. Para
|
| 278 |
+
|
| 279 |
+
00:04:48.450 --> 00:04:51.170
|
| 280 |
+
esto, vamos a aprovechar el espacio justo donde
|
| 281 |
+
|
| 282 |
+
00:04:51.170 --> 00:04:54.230
|
| 283 |
+
terminamos de definir todo lo relacionado con animal
|
| 284 |
+
|
| 285 |
+
00:04:54.370 --> 00:04:57.410
|
| 286 |
+
para crear una nueva clase. La clase podr铆a
|
| 287 |
+
|
| 288 |
+
00:04:57.410 --> 00:04:59.890
|
| 289 |
+
ser una especializaci贸n de animal, que podr铆a ser
|
| 290 |
+
|
| 291 |
+
00:04:59.890 --> 00:05:06.245
|
| 292 |
+
herb铆voro. Y herb铆voro se definir铆a como cualquier otra
|
| 293 |
+
|
| 294 |
+
00:05:06.385 --> 00:05:09.445
|
| 295 |
+
clase, pero como va a heredar desde animal,
|
| 296 |
+
|
| 297 |
+
00:05:09.665 --> 00:05:12.945
|
| 298 |
+
necesitamos agregarle esa referencia. Por lo tanto, la
|
| 299 |
+
|
| 300 |
+
00:05:12.945 --> 00:05:15.669
|
| 301 |
+
forma de hacerlo ser铆a usar dos puntos y
|
| 302 |
+
|
| 303 |
+
00:05:15.669 --> 00:05:17.910
|
| 304 |
+
el nombre de la clase que vamos a
|
| 305 |
+
|
| 306 |
+
00:05:17.910 --> 00:05:20.710
|
| 307 |
+
heredar. En este caso, vamos a heredar de
|
| 308 |
+
|
| 309 |
+
00:05:20.710 --> 00:05:22.810
|
| 310 |
+
la clase animal, por lo que yo podr铆a
|
| 311 |
+
|
| 312 |
+
00:05:23.270 --> 00:05:27.849
|
| 313 |
+
colocar el nombre de esa clase. Sin embargo,
|
| 314 |
+
|
| 315 |
+
00:05:28.150 --> 00:05:32.525
|
| 316 |
+
el compilador tambi茅n tiene un voy a cerrar
|
| 317 |
+
|
| 318 |
+
00:05:32.525 --> 00:05:34.445
|
| 319 |
+
la terminal para que se vea m谩s completo
|
| 320 |
+
|
| 321 |
+
00:05:34.445 --> 00:05:38.525
|
| 322 |
+
el c贸digo. Ok, entonces mencion谩bamos que la clase
|
| 323 |
+
|
| 324 |
+
00:05:38.525 --> 00:05:40.685
|
| 325 |
+
herb铆voro va a heredar sobre la clase animal,
|
| 326 |
+
|
| 327 |
+
00:05:40.685 --> 00:05:44.065
|
| 328 |
+
por lo tanto, para hacer esta indicaci贸n necesitamos
|
| 329 |
+
|
| 330 |
+
00:05:44.380 --> 00:05:46.620
|
| 331 |
+
escribir dos puntos, el nombre de la clase
|
| 332 |
+
|
| 333 |
+
00:05:46.620 --> 00:05:50.460
|
| 334 |
+
de la que queremos, pues, heredar, y as铆
|
| 335 |
+
|
| 336 |
+
00:05:50.460 --> 00:05:53.660
|
| 337 |
+
ser铆a la asignaci贸n de la herencia. Sin embargo,
|
| 338 |
+
|
| 339 |
+
00:05:53.660 --> 00:05:56.860
|
| 340 |
+
por defecto, como sabemos, igual que, pues, los
|
| 341 |
+
|
| 342 |
+
00:05:56.860 --> 00:05:59.705
|
| 343 |
+
miembros por defecto de una clase pueden ser
|
| 344 |
+
|
| 345 |
+
00:05:59.705 --> 00:06:02.664
|
| 346 |
+
privados y debemos mostrar que son p煤blicos para
|
| 347 |
+
|
| 348 |
+
00:06:02.664 --> 00:06:05.224
|
| 349 |
+
poder utilizarlos desde fuera. Lo mismo pasa en
|
| 350 |
+
|
| 351 |
+
00:06:05.224 --> 00:06:07.625
|
| 352 |
+
la herencia, as铆 que podemos utilizar la palabra
|
| 353 |
+
|
| 354 |
+
00:06:07.625 --> 00:06:11.164
|
| 355 |
+
public antes de animal para que esa herencia
|
| 356 |
+
|
| 357 |
+
00:06:11.305 --> 00:06:14.639
|
| 358 |
+
funcione de la forma que estamos esperando. Ahora
|
| 359 |
+
|
| 360 |
+
00:06:14.639 --> 00:06:16.820
|
| 361 |
+
que tenemos creada la base de nuestra clase
|
| 362 |
+
|
| 363 |
+
00:06:18.160 --> 00:06:21.360
|
| 364 |
+
herb铆voro, podemos realizar la especializaci贸n, pues, de lo
|
| 365 |
+
|
| 366 |
+
00:06:21.360 --> 00:06:23.600
|
| 367 |
+
que realiza un herb铆voro. En este caso, si
|
| 368 |
+
|
| 369 |
+
00:06:23.600 --> 00:06:26.259
|
| 370 |
+
estamos hablando de c贸mo un animal, pues, come,
|
| 371 |
+
|
| 372 |
+
00:06:26.835 --> 00:06:29.555
|
| 373 |
+
podr铆amos estar hablando de de aprovechar el constructor,
|
| 374 |
+
|
| 375 |
+
00:06:29.555 --> 00:06:35.235
|
| 376 |
+
por ejemplo, herb铆voro, para que el animal se
|
| 377 |
+
|
| 378 |
+
00:06:35.235 --> 00:06:39.075
|
| 379 |
+
haga asimismo comer, por ejemplo, pasto, 驴no? Entonces
|
| 380 |
+
|
| 381 |
+
00:06:39.075 --> 00:06:43.630
|
| 382 |
+
podr铆amos decirle, este tipo de animales come un
|
| 383 |
+
|
| 384 |
+
00:06:44.410 --> 00:06:52.570
|
| 385 |
+
alimento que es pasto o plantas. 驴Listo? Entonces,
|
| 386 |
+
|
| 387 |
+
00:06:52.570 --> 00:06:54.730
|
| 388 |
+
esto podr铆a parecer que va a funcionar, pero
|
| 389 |
+
|
| 390 |
+
00:06:54.730 --> 00:06:57.034
|
| 391 |
+
nos falta una peque帽a cosa. Es que cuando
|
| 392 |
+
|
| 393 |
+
00:06:57.034 --> 00:06:59.754
|
| 394 |
+
vamos a hacer herencia y queremos utilizar nuestros
|
| 395 |
+
|
| 396 |
+
00:06:59.754 --> 00:07:02.794
|
| 397 |
+
constructores o destructores, necesitamos, si los vamos a
|
| 398 |
+
|
| 399 |
+
00:07:02.794 --> 00:07:07.375
|
| 400 |
+
utilizar, indicarle que es estamos usando el constructor
|
| 401 |
+
|
| 402 |
+
00:07:07.514 --> 00:07:10.340
|
| 403 |
+
de cierta clase. Por ejemplo, aqu铆 ser铆a el
|
| 404 |
+
|
| 405 |
+
00:07:10.340 --> 00:07:12.659
|
| 406 |
+
constructor de animal, por lo tanto, tambi茅n se
|
| 407 |
+
|
| 408 |
+
00:07:12.659 --> 00:07:18.280
|
| 409 |
+
lo tengo que indicar. Si mi constructor recibiera
|
| 410 |
+
|
| 411 |
+
00:07:18.340 --> 00:07:21.555
|
| 412 |
+
argumentos, tendr铆a que agregarle los argumentos que recibe,
|
| 413 |
+
|
| 414 |
+
00:07:21.555 --> 00:07:24.035
|
| 415 |
+
pero de momento no recibe ning煤n argumento, solamente
|
| 416 |
+
|
| 417 |
+
00:07:24.035 --> 00:07:26.514
|
| 418 |
+
nos sirve para que nuestra clase pueda tener
|
| 419 |
+
|
| 420 |
+
00:07:26.514 --> 00:07:30.275
|
| 421 |
+
acceso a el a la propiedad alimento de
|
| 422 |
+
|
| 423 |
+
00:07:30.275 --> 00:07:33.955
|
| 424 |
+
animal. Entonces, ahora, sin necesidad de que hayamos
|
| 425 |
+
|
| 426 |
+
00:07:33.955 --> 00:07:39.219
|
| 427 |
+
definido la propiedad alimento dentro de animal, podr铆amos
|
| 428 |
+
|
| 429 |
+
00:07:39.379 --> 00:07:42.600
|
| 430 |
+
asumir que estamos accediendo a la definici贸n que
|
| 431 |
+
|
| 432 |
+
00:07:42.600 --> 00:07:45.479
|
| 433 |
+
creamos, pero en la clase animal. Como puedes
|
| 434 |
+
|
| 435 |
+
00:07:45.479 --> 00:07:48.039
|
| 436 |
+
ver, la clase animal tiene aqu铆 designada la
|
| 437 |
+
|
| 438 |
+
00:07:48.039 --> 00:07:51.905
|
| 439 |
+
variable alimento y la clase herb铆voro no tiene
|
| 440 |
+
|
| 441 |
+
00:07:51.905 --> 00:07:55.505
|
| 442 |
+
esa asignaci贸n. Aqu铆 nos est谩 marcando un error
|
| 443 |
+
|
| 444 |
+
00:07:55.505 --> 00:07:58.385
|
| 445 |
+
de sintaxis y lo que nos dice es
|
| 446 |
+
|
| 447 |
+
00:07:58.385 --> 00:08:01.585
|
| 448 |
+
que esto no tiene, no es accesible. Esto
|
| 449 |
+
|
| 450 |
+
00:08:01.585 --> 00:08:04.850
|
| 451 |
+
es porque nos falta simplemente agregar aqu铆 que
|
| 452 |
+
|
| 453 |
+
00:08:04.850 --> 00:08:07.490
|
| 454 |
+
esto va a ser p煤blico. Ok, me sigue
|
| 455 |
+
|
| 456 |
+
00:08:07.490 --> 00:08:09.410
|
| 457 |
+
diciendo que es inaccesible y es que me
|
| 458 |
+
|
| 459 |
+
00:08:09.410 --> 00:08:11.650
|
| 460 |
+
falta una cosa m谩s relacionada con la forma
|
| 461 |
+
|
| 462 |
+
00:08:11.650 --> 00:08:14.950
|
| 463 |
+
de acceder y es que en la clase
|
| 464 |
+
|
| 465 |
+
00:08:15.090 --> 00:08:19.655
|
| 466 |
+
animal, pues original, utilice esto como privado para
|
| 467 |
+
|
| 468 |
+
00:08:19.655 --> 00:08:23.655
|
| 469 |
+
cuando utilicemos herencia. Si queremos acceder a los
|
| 470 |
+
|
| 471 |
+
00:08:23.655 --> 00:08:27.194
|
| 472 |
+
elementos privados de la clase base, necesitamos cambiar
|
| 473 |
+
|
| 474 |
+
00:08:27.254 --> 00:08:29.495
|
| 475 |
+
esto a una tercera palabra que se llama
|
| 476 |
+
|
| 477 |
+
00:08:29.495 --> 00:08:32.730
|
| 478 |
+
protected. Va a tener una forma de funcionar
|
| 479 |
+
|
| 480 |
+
00:08:32.889 --> 00:08:35.690
|
| 481 |
+
muy similar a si fuera privado, excepto porque
|
| 482 |
+
|
| 483 |
+
00:08:35.690 --> 00:08:37.789
|
| 484 |
+
cuando hablemos de herencia s铆 vamos a poder,
|
| 485 |
+
|
| 486 |
+
00:08:38.169 --> 00:08:40.250
|
| 487 |
+
pues de las clases que heredan, acceder a
|
| 488 |
+
|
| 489 |
+
00:08:40.250 --> 00:08:44.329
|
| 490 |
+
estos elementos. Ahora s铆, ya tengo, ya est谩
|
| 491 |
+
|
| 492 |
+
00:08:44.329 --> 00:08:46.785
|
| 493 |
+
libre de errores y ya puedo, yo podr铆a
|
| 494 |
+
|
| 495 |
+
00:08:46.785 --> 00:08:49.365
|
| 496 |
+
realizar una ejecuci贸n, solo que no suceder铆a nada.
|
| 497 |
+
|
| 498 |
+
00:08:49.745 --> 00:08:52.944
|
| 499 |
+
Voy a seguir modificando la forma en que
|
| 500 |
+
|
| 501 |
+
00:08:52.944 --> 00:08:55.985
|
| 502 |
+
se comporta la clase herb铆voro y esto no
|
| 503 |
+
|
| 504 |
+
00:08:55.985 --> 00:08:58.510
|
| 505 |
+
est谩 escrito en animal, sino que esto es
|
| 506 |
+
|
| 507 |
+
00:08:58.510 --> 00:09:00.990
|
| 508 |
+
solo espec铆fico de los herb铆voros, que podr铆a ser,
|
| 509 |
+
|
| 510 |
+
00:09:00.990 --> 00:09:03.630
|
| 511 |
+
por ejemplo, pastar. En este caso, voy a
|
| 512 |
+
|
| 513 |
+
00:09:03.630 --> 00:09:05.710
|
| 514 |
+
crear, pues, un m茅todo que se llama que
|
| 515 |
+
|
| 516 |
+
00:09:05.710 --> 00:09:11.964
|
| 517 |
+
sea tipo void pastar, porque los herb铆voros, pues,
|
| 518 |
+
|
| 519 |
+
00:09:11.985 --> 00:09:14.705
|
| 520 |
+
pueden ir y comer pasto. Entonces, voy a
|
| 521 |
+
|
| 522 |
+
00:09:14.705 --> 00:09:18.805
|
| 523 |
+
poner seout y va a mencionar este animal
|
| 524 |
+
|
| 525 |
+
00:09:21.265 --> 00:09:28.700
|
| 526 |
+
est谩 pastando. Con esto me voy a dar
|
| 527 |
+
|
| 528 |
+
00:09:28.700 --> 00:09:31.340
|
| 529 |
+
cuenta cuando yo realic茅, pues la ejecuci贸n de
|
| 530 |
+
|
| 531 |
+
00:09:31.340 --> 00:09:37.340
|
| 532 |
+
pastar, que esto est谩 sucediendo. Entonces vamos a
|
| 533 |
+
|
| 534 |
+
00:09:37.340 --> 00:09:39.680
|
| 535 |
+
utilizar esta clase. Por ejemplo, si yo regreso
|
| 536 |
+
|
| 537 |
+
00:09:40.140 --> 00:09:46.335
|
| 538 |
+
aqu铆, puedo crear ahora un herb铆voro y le
|
| 539 |
+
|
| 540 |
+
00:09:46.335 --> 00:09:54.190
|
| 541 |
+
voy a poner solo h, new herb铆voro. Y
|
| 542 |
+
|
| 543 |
+
00:09:54.190 --> 00:09:57.070
|
| 544 |
+
ahora voy a poder realizar algo con ese
|
| 545 |
+
|
| 546 |
+
00:09:57.070 --> 00:10:01.150
|
| 547 |
+
herb铆voro. Por ejemplo, puedo hacer que vaya a
|
| 548 |
+
|
| 549 |
+
00:10:01.150 --> 00:10:04.910
|
| 550 |
+
pastar. Voy a realizar esta ejecuci贸n y, como
|
| 551 |
+
|
| 552 |
+
00:10:04.910 --> 00:10:08.825
|
| 553 |
+
puedes darte cuenta, el n煤mero de animales en
|
| 554 |
+
|
| 555 |
+
00:10:08.825 --> 00:10:11.625
|
| 556 |
+
este en esta ejecuci贸n. Ahora ser谩 dos, el
|
| 557 |
+
|
| 558 |
+
00:10:11.625 --> 00:10:15.865
|
| 559 |
+
animal, pues gen茅rico, solamente est谩 comiendo, no se
|
| 560 |
+
|
| 561 |
+
00:10:15.865 --> 00:10:18.745
|
| 562 |
+
sabe qu茅 y dice 帽om 帽om. El animal
|
| 563 |
+
|
| 564 |
+
00:10:18.745 --> 00:10:20.425
|
| 565 |
+
que est谩 pastando, pues dice este animal est谩
|
| 566 |
+
|
| 567 |
+
00:10:20.425 --> 00:10:22.860
|
| 568 |
+
pastando y despu茅s se borra un animal, que
|
| 569 |
+
|
| 570 |
+
00:10:22.860 --> 00:10:25.980
|
| 571 |
+
es el el animal gen锟斤拷rico, y el n煤mero
|
| 572 |
+
|
| 573 |
+
00:10:25.980 --> 00:10:29.020
|
| 574 |
+
de animales disminuye a uno. Este es el
|
| 575 |
+
|
| 576 |
+
00:10:29.020 --> 00:10:32.060
|
| 577 |
+
comportamiento esperado y de la misma manera en
|
| 578 |
+
|
| 579 |
+
00:10:32.060 --> 00:10:36.215
|
| 580 |
+
que creamos nuestra especializaci贸n de herb铆voro a partir
|
| 581 |
+
|
| 582 |
+
00:10:36.215 --> 00:10:40.295
|
| 583 |
+
de la clase base animal, podr铆amos crear la
|
| 584 |
+
|
| 585 |
+
00:10:40.295 --> 00:10:44.535
|
| 586 |
+
especializaci贸n para carn铆voro. Con esto hemos creado dos
|
| 587 |
+
|
| 588 |
+
00:10:44.535 --> 00:10:48.235
|
| 589 |
+
especializaciones de la clase base animal. Hemos creado
|
| 590 |
+
|
| 591 |
+
00:10:48.295 --> 00:10:52.690
|
| 592 |
+
dos clases que heredan de la clase animal.
|
| 593 |
+
|
| 594 |
+
00:10:52.830 --> 00:10:57.410
|
| 595 |
+
Yo podr铆a realizar una instancia, por ejemplo, herb铆voro,
|
| 596 |
+
|
| 597 |
+
00:10:58.750 --> 00:11:02.750
|
| 598 |
+
perd贸n, carn铆voro, que se llame C, por ejemplo,
|
| 599 |
+
|
| 600 |
+
00:11:02.750 --> 00:11:10.085
|
| 601 |
+
igual a new carn铆voro. Y a continuaci贸n, yo
|
| 602 |
+
|
| 603 |
+
00:11:10.085 --> 00:11:12.725
|
| 604 |
+
puedo hacer a cualquier animal comer, pero solamente
|
| 605 |
+
|
| 606 |
+
00:11:12.725 --> 00:11:15.285
|
| 607 |
+
los carn铆voros pueden cazar. Entonces, voy a hacer
|
| 608 |
+
|
| 609 |
+
00:11:15.285 --> 00:11:21.470
|
| 610 |
+
que mi carn铆voro vaya y case. As铆 que
|
| 611 |
+
|
| 612 |
+
00:11:21.470 --> 00:11:24.050
|
| 613 |
+
cuando yo realice la ejecuci贸n de este programa,
|
| 614 |
+
|
| 615 |
+
00:11:24.390 --> 00:11:29.170
|
| 616 |
+
pues nuestro animal gen茅rico va a comer, los
|
| 617 |
+
|
| 618 |
+
00:11:29.630 --> 00:11:31.950
|
| 619 |
+
herb铆voros van a pastar y los carn铆voros van
|
| 620 |
+
|
| 621 |
+
00:11:31.950 --> 00:11:36.185
|
| 622 |
+
a cazar. Esto ya es una expansi贸n de
|
| 623 |
+
|
| 624 |
+
00:11:36.185 --> 00:11:38.985
|
| 625 |
+
las funcionalidades b谩sicas que tiene Animal y esa
|
| 626 |
+
|
| 627 |
+
00:11:38.985 --> 00:11:40.765
|
| 628 |
+
es una de las ventajas de la herencia.
|
| 629 |
+
|
| 630 |
+
00:11:41.144 --> 00:11:45.225
|
| 631 |
+
Estamos pudiendo asignarle tipos de alimento, pero adem谩s
|
| 632 |
+
|
| 633 |
+
00:11:45.225 --> 00:11:48.800
|
| 634 |
+
estamos pudiendo asignarles, pues, algo m谩s de lo
|
| 635 |
+
|
| 636 |
+
00:11:48.800 --> 00:11:51.279
|
| 637 |
+
que solamente puede realizar un animal en s铆
|
| 638 |
+
|
| 639 |
+
00:11:51.279 --> 00:11:55.120
|
| 640 |
+
mismo. Si yo quisiera crear una especializaci贸n, por
|
| 641 |
+
|
| 642 |
+
00:11:55.120 --> 00:11:58.399
|
| 643 |
+
ejemplo, para crear un omn铆voro, podr铆a realizarlo de
|
| 644 |
+
|
| 645 |
+
00:11:58.399 --> 00:12:00.399
|
| 646 |
+
la misma manera en la que lo he
|
| 647 |
+
|
| 648 |
+
00:12:00.399 --> 00:12:02.395
|
| 649 |
+
estado haciendo con herb铆voro y carn铆voro, Pero los
|
| 650 |
+
|
| 651 |
+
00:12:02.395 --> 00:12:06.635
|
| 652 |
+
omn铆voros, pues, sabemos que son una forma de
|
| 653 |
+
|
| 654 |
+
00:12:06.635 --> 00:12:11.595
|
| 655 |
+
definirlos, ser铆a que solamente pueden comer cualquier cosa,
|
| 656 |
+
|
| 657 |
+
00:12:11.595 --> 00:12:13.755
|
| 658 |
+
驴no? O sea, realmente pueden comer cualquier cosa.
|
| 659 |
+
|
| 660 |
+
00:12:13.755 --> 00:12:15.995
|
| 661 |
+
Entonces, podr铆amos decir que es un herb铆voro y
|
| 662 |
+
|
| 663 |
+
00:12:15.995 --> 00:12:17.979
|
| 664 |
+
un carn铆voro a la vez, y esto lo
|
| 665 |
+
|
| 666 |
+
00:12:17.979 --> 00:12:20.779
|
| 667 |
+
podemos hacer por medio de herencia m煤ltiple. Vamos
|
| 668 |
+
|
| 669 |
+
00:12:20.779 --> 00:12:22.859
|
| 670 |
+
a la siguiente clase donde hablaremos de este
|
| 671 |
+
|
| 672 |
+
00:12:22.859 --> 00:12:23.359
|
| 673 |
+
tema.
|
subir/Curso de Programaci贸n Orientada a Objetos con C/04-Principios de la Programaci贸n Orientada a Objetos/04-Resumen.html
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
subir/Curso de Programaci贸n Orientada a Objetos con C/04-Principios de la Programaci贸n Orientada a Objetos/05-Herencia M煤ltiple en C Implementaci贸n y Ejemplos Pr谩cticos.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:cd6484b3bf64c8b62e099c1ad25415e2dd37d37c011c5e959a9dba9202ff440f
|
| 3 |
+
size 78600171
|
subir/Curso de Programaci贸n Orientada a Objetos con C/04-Principios de la Programaci贸n Orientada a Objetos/05-Herencia M煤ltiple en C Implementaci贸n y Ejemplos Pr谩cticos.vtt
ADDED
|
@@ -0,0 +1,403 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
WEBVTT
|
| 2 |
+
|
| 3 |
+
00:00:00.000 --> 00:00:05.279
|
| 4 |
+
Como vimos, la herencia es una de las
|
| 5 |
+
|
| 6 |
+
00:00:05.279 --> 00:00:08.639
|
| 7 |
+
caracter铆sticas m谩s importantes dentro de la programaci贸n orientada
|
| 8 |
+
|
| 9 |
+
00:00:08.639 --> 00:00:11.920
|
| 10 |
+
a objetos, y una de sus variantes es
|
| 11 |
+
|
| 12 |
+
00:00:11.920 --> 00:00:14.545
|
| 13 |
+
la herencia m煤ltiple. La herencia m煤ltiple lo que
|
| 14 |
+
|
| 15 |
+
00:00:14.545 --> 00:00:16.705
|
| 16 |
+
nos va a permitir es heredar de m谩s
|
| 17 |
+
|
| 18 |
+
00:00:16.705 --> 00:00:19.265
|
| 19 |
+
de una clase base y la herencia m煤ltiple
|
| 20 |
+
|
| 21 |
+
00:00:19.265 --> 00:00:22.145
|
| 22 |
+
nos va a permitir, pues, implementar de una
|
| 23 |
+
|
| 24 |
+
00:00:22.145 --> 00:00:25.365
|
| 25 |
+
forma m谩s eficiente casos como el ejemplo anterior.
|
| 26 |
+
|
| 27 |
+
00:00:25.760 --> 00:00:29.120
|
| 28 |
+
Si tenemos una clase origen animal y tenemos
|
| 29 |
+
|
| 30 |
+
00:00:29.120 --> 00:00:32.120
|
| 31 |
+
dos herencias o dos clases heredadas que se
|
| 32 |
+
|
| 33 |
+
00:00:32.120 --> 00:00:35.040
|
| 34 |
+
llaman herb铆voro y carn铆voro, tal vez una mejor
|
| 35 |
+
|
| 36 |
+
00:00:35.040 --> 00:00:38.420
|
| 37 |
+
forma de implementar el omn铆voro ser铆a m谩s bien
|
| 38 |
+
|
| 39 |
+
00:00:38.720 --> 00:00:41.795
|
| 40 |
+
heredando de los dos anteriores, de forma que
|
| 41 |
+
|
| 42 |
+
00:00:41.795 --> 00:00:44.755
|
| 43 |
+
no tengas que repetir funcionalidades que vendr铆an, a
|
| 44 |
+
|
| 45 |
+
00:00:44.755 --> 00:00:47.715
|
| 46 |
+
lo mejor, implementadas tanto en carn铆voro como en
|
| 47 |
+
|
| 48 |
+
00:00:47.715 --> 00:00:52.915
|
| 49 |
+
herb铆voro si trajeras la herencia solamente desde animal.
|
| 50 |
+
|
| 51 |
+
00:00:52.915 --> 00:00:55.230
|
| 52 |
+
Entonces, vamos a realizar un ejemplo de c贸digo
|
| 53 |
+
|
| 54 |
+
00:00:55.310 --> 00:00:59.149
|
| 55 |
+
sobre c贸mo ser铆a esta especializaci贸n. Para continuar con
|
| 56 |
+
|
| 57 |
+
00:00:59.149 --> 00:01:02.030
|
| 58 |
+
el ejemplo que ven铆amos realizando en la clase
|
| 59 |
+
|
| 60 |
+
00:01:02.030 --> 00:01:05.869
|
| 61 |
+
anterior, vamos a realizar la especializaci贸n omn铆voro a
|
| 62 |
+
|
| 63 |
+
00:01:05.869 --> 00:01:08.030
|
| 64 |
+
partir de la de las clases herb铆voro y
|
| 65 |
+
|
| 66 |
+
00:01:08.030 --> 00:01:11.345
|
| 67 |
+
carn铆voro. La forma de escribirlo ser铆a muy similar.
|
| 68 |
+
|
| 69 |
+
00:01:12.045 --> 00:01:16.945
|
| 70 |
+
Ser铆a, por ejemplo, clase y omn铆voro, que ser铆a
|
| 71 |
+
|
| 72 |
+
00:01:18.525 --> 00:01:24.625
|
| 73 |
+
omn铆voro. Listo. Y heredar铆a de, heredar铆a p煤blicamente de
|
| 74 |
+
|
| 75 |
+
00:01:24.850 --> 00:01:28.390
|
| 76 |
+
la clase herb铆voro y de la clase carn铆voro.
|
| 77 |
+
|
| 78 |
+
00:01:31.970 --> 00:01:34.690
|
| 79 |
+
Y a continuaci贸n podr铆amos comenzar a realizar, pues,
|
| 80 |
+
|
| 81 |
+
00:01:34.690 --> 00:01:38.050
|
| 82 |
+
el c贸digo relacionado con esta clase. Por ejemplo,
|
| 83 |
+
|
| 84 |
+
00:01:38.050 --> 00:01:46.185
|
| 85 |
+
el constructor ser铆a omn铆voro y heredar铆a de las
|
| 86 |
+
|
| 87 |
+
00:01:46.185 --> 00:01:48.985
|
| 88 |
+
dos clases anteriores. La forma en lo que
|
| 89 |
+
|
| 90 |
+
00:01:48.985 --> 00:01:51.485
|
| 91 |
+
en la que lo realizar铆amos ser铆a igual utilizando,
|
| 92 |
+
|
| 93 |
+
00:01:52.185 --> 00:01:55.700
|
| 94 |
+
pues, el nombre de la clase base, coma
|
| 95 |
+
|
| 96 |
+
00:01:55.700 --> 00:01:59.860
|
| 97 |
+
el nombre de la otra clase base. Y
|
| 98 |
+
|
| 99 |
+
00:01:59.860 --> 00:02:02.820
|
| 100 |
+
as铆 ya tenemos, pues, definido el constructor. En
|
| 101 |
+
|
| 102 |
+
00:02:02.820 --> 00:02:04.740
|
| 103 |
+
este caso, no lo vamos a utilizar, pero
|
| 104 |
+
|
| 105 |
+
00:02:04.740 --> 00:02:09.145
|
| 106 |
+
es importante notar que tanto en la definici贸n
|
| 107 |
+
|
| 108 |
+
00:02:09.145 --> 00:02:11.545
|
| 109 |
+
de la clase como en su constructor, tendr铆amos
|
| 110 |
+
|
| 111 |
+
00:02:11.545 --> 00:02:14.745
|
| 112 |
+
que utilizar para poder utilizar m谩s de uno
|
| 113 |
+
|
| 114 |
+
00:02:14.745 --> 00:02:18.585
|
| 115 |
+
separaci贸n por comas. Eso es una regla que
|
| 116 |
+
|
| 117 |
+
00:02:18.585 --> 00:02:20.025
|
| 118 |
+
C m谩s m谩s nos va a obligar a
|
| 119 |
+
|
| 120 |
+
00:02:20.025 --> 00:02:22.310
|
| 121 |
+
utilizar. Aqu铆 me est谩n marcando un error porque
|
| 122 |
+
|
| 123 |
+
00:02:22.310 --> 00:02:25.350
|
| 124 |
+
me falta un punto y coma. Listo. Y
|
| 125 |
+
|
| 126 |
+
00:02:25.350 --> 00:02:29.210
|
| 127 |
+
ahora, otra caracter铆stica que implementamos en la clase
|
| 128 |
+
|
| 129 |
+
00:02:29.830 --> 00:02:33.190
|
| 130 |
+
animal fue comer, y esto, pues, nos permit铆a
|
| 131 |
+
|
| 132 |
+
00:02:33.190 --> 00:02:35.935
|
| 133 |
+
imprimir, pues, exactamente qu茅 tipo de alimento estaba
|
| 134 |
+
|
| 135 |
+
00:02:35.935 --> 00:02:38.894
|
| 136 |
+
comiendo el animal, y no lo probamos dentro
|
| 137 |
+
|
| 138 |
+
00:02:38.894 --> 00:02:41.614
|
| 139 |
+
de las clases herb铆voro y carn铆voro, as铆 que
|
| 140 |
+
|
| 141 |
+
00:02:41.614 --> 00:02:45.534
|
| 142 |
+
vamos a hacerlo. Para estos, pongamos que el
|
| 143 |
+
|
| 144 |
+
00:02:45.534 --> 00:02:48.120
|
| 145 |
+
animal herb铆voro no solo sale a pastar, sino
|
| 146 |
+
|
| 147 |
+
00:02:48.120 --> 00:02:51.420
|
| 148 |
+
que adem谩s est谩 saliendo a comer, y esto
|
| 149 |
+
|
| 150 |
+
00:02:51.560 --> 00:02:53.480
|
| 151 |
+
es una de las ventajas de la programaci贸n
|
| 152 |
+
|
| 153 |
+
00:02:53.480 --> 00:02:57.100
|
| 154 |
+
orientada a objetos, podemos trabajar con conceptos abstractos.
|
| 155 |
+
|
| 156 |
+
00:03:00.695 --> 00:03:04.215
|
| 157 |
+
Lo mismo sucede con el carn铆voro. Entonces, vamos
|
| 158 |
+
|
| 159 |
+
00:03:04.215 --> 00:03:08.935
|
| 160 |
+
a realizar esta ejecuci贸n y, como puedes ver
|
| 161 |
+
|
| 162 |
+
00:03:08.935 --> 00:03:12.135
|
| 163 |
+
en pantalla, no solamente muestra este animal est谩
|
| 164 |
+
|
| 165 |
+
00:03:12.135 --> 00:03:14.940
|
| 166 |
+
pastando, sino que, adem谩s, cuando el animal pastando
|
| 167 |
+
|
| 168 |
+
00:03:14.940 --> 00:03:19.260
|
| 169 |
+
dice este animal est谩 comiendo plantas, y cuando
|
| 170 |
+
|
| 171 |
+
00:03:19.260 --> 00:03:22.460
|
| 172 |
+
est谩 cazando luego muestra este animal est谩 comiendo
|
| 173 |
+
|
| 174 |
+
00:03:22.460 --> 00:03:25.580
|
| 175 |
+
carne. Esto es porque, aunque en las clases
|
| 176 |
+
|
| 177 |
+
00:03:25.580 --> 00:03:28.525
|
| 178 |
+
herb铆voro y carn铆voro no definimos como tal la
|
| 179 |
+
|
| 180 |
+
00:03:28.525 --> 00:03:31.085
|
| 181 |
+
variable alimento, s铆 la reasignamos a la hora
|
| 182 |
+
|
| 183 |
+
00:03:31.085 --> 00:03:34.765
|
| 184 |
+
de utilizar el constructor. Lo interesante sucede cuando
|
| 185 |
+
|
| 186 |
+
00:03:34.765 --> 00:03:37.265
|
| 187 |
+
queremos realizar la misma acci贸n con el omn铆voro.
|
| 188 |
+
|
| 189 |
+
00:03:37.485 --> 00:03:39.805
|
| 190 |
+
Vamos a implementar un ejemplo. Por ejemplo, si
|
| 191 |
+
|
| 192 |
+
00:03:39.805 --> 00:03:42.340
|
| 193 |
+
yo quiero crear un omn铆voro, puedo crear el
|
| 194 |
+
|
| 195 |
+
00:03:42.340 --> 00:03:47.320
|
| 196 |
+
tipo omn铆voro y le voy a poner o
|
| 197 |
+
|
| 198 |
+
00:03:47.540 --> 00:03:51.460
|
| 199 |
+
new omn铆voro. Con esto estoy creando un nuevo
|
| 200 |
+
|
| 201 |
+
00:03:51.460 --> 00:03:56.194
|
| 202 |
+
animal que es clase omn铆voro, el cual supondr铆a
|
| 203 |
+
|
| 204 |
+
00:03:56.334 --> 00:03:59.135
|
| 205 |
+
puede comer igual que cualquier otro animal. Sin
|
| 206 |
+
|
| 207 |
+
00:03:59.135 --> 00:04:01.235
|
| 208 |
+
embargo, vamos a tratar de hacer el ejemplo
|
| 209 |
+
|
| 210 |
+
00:04:02.015 --> 00:04:04.415
|
| 211 |
+
y si te das cuenta, ni siquiera mi
|
| 212 |
+
|
| 213 |
+
00:04:04.415 --> 00:04:06.515
|
| 214 |
+
auto completado me lo va a mostrar porque
|
| 215 |
+
|
| 216 |
+
00:04:06.655 --> 00:04:10.420
|
| 217 |
+
realmente ya no est谩 disponible como pensar铆amos. Si
|
| 218 |
+
|
| 219 |
+
00:04:10.420 --> 00:04:14.900
|
| 220 |
+
yo quisiera compilarlo, por ejemplo, comer y darle
|
| 221 |
+
|
| 222 |
+
00:04:14.900 --> 00:04:17.620
|
| 223 |
+
compilar, esto me va a dar un error.
|
| 224 |
+
|
| 225 |
+
00:04:17.620 --> 00:04:19.940
|
| 226 |
+
Voy a cerrar esto para que no estorbe
|
| 227 |
+
|
| 228 |
+
00:04:19.940 --> 00:04:21.540
|
| 229 |
+
a la hora de leer el c贸digo, pero
|
| 230 |
+
|
| 231 |
+
00:04:21.540 --> 00:04:22.979
|
| 232 |
+
la raz贸n por la que me est谩 dando
|
| 233 |
+
|
| 234 |
+
00:04:22.979 --> 00:04:25.485
|
| 235 |
+
el error es porque para C m谩s m谩s
|
| 236 |
+
|
| 237 |
+
00:04:25.564 --> 00:04:28.224
|
| 238 |
+
la forma en que funciona la herencia m煤ltiple
|
| 239 |
+
|
| 240 |
+
00:04:28.245 --> 00:04:31.245
|
| 241 |
+
es que si queremos utilizar, por ejemplo, herb铆voro
|
| 242 |
+
|
| 243 |
+
00:04:31.245 --> 00:04:34.685
|
| 244 |
+
y carn铆voro para crear el omn铆voro, estamos en
|
| 245 |
+
|
| 246 |
+
00:04:34.685 --> 00:04:36.764
|
| 247 |
+
realidad dici茅ndole que es de los dos tipos
|
| 248 |
+
|
| 249 |
+
00:04:36.764 --> 00:04:38.540
|
| 250 |
+
a la vez. Por lo tanto, es como
|
| 251 |
+
|
| 252 |
+
00:04:38.540 --> 00:04:41.440
|
| 253 |
+
si tuvi茅ramos tanto un carn铆voro como un omn铆voro
|
| 254 |
+
|
| 255 |
+
00:04:41.580 --> 00:04:45.660
|
| 256 |
+
existiendo dentro de esta variable o. Para esto
|
| 257 |
+
|
| 258 |
+
00:04:45.660 --> 00:04:49.030
|
| 259 |
+
tendr铆amos que decirle una forma de quitar esa
|
| 260 |
+
|
| 261 |
+
00:04:49.030 --> 00:04:51.765
|
| 262 |
+
ambig眉edad y la forma correcta ser铆a indicar por
|
| 263 |
+
|
| 264 |
+
00:04:51.765 --> 00:04:54.245
|
| 265 |
+
medio de qu茅 padre o de qu茅 base
|
| 266 |
+
|
| 267 |
+
00:04:54.245 --> 00:04:56.645
|
| 268 |
+
va a realizar esta acci贸n. Por ejemplo, yo
|
| 269 |
+
|
| 270 |
+
00:04:56.645 --> 00:05:03.760
|
| 271 |
+
puedo pedirle que coma como un herb铆voro Y
|
| 272 |
+
|
| 273 |
+
00:05:03.760 --> 00:05:10.080
|
| 274 |
+
entonces ejecutar el c贸digo. Si puedes ver, ahora
|
| 275 |
+
|
| 276 |
+
00:05:10.080 --> 00:05:14.640
|
| 277 |
+
puedo, ahora tengo un 煤ltimo log desde mi
|
| 278 |
+
|
| 279 |
+
00:05:14.640 --> 00:05:16.980
|
| 280 |
+
terminal que me dice este animal est谩 comiendo
|
| 281 |
+
|
| 282 |
+
00:05:17.280 --> 00:05:19.755
|
| 283 |
+
plantas. Para diferenciarlo, antes de esto te voy
|
| 284 |
+
|
| 285 |
+
00:05:19.755 --> 00:05:22.535
|
| 286 |
+
a poner un c out que diga humano,
|
| 287 |
+
|
| 288 |
+
00:05:24.115 --> 00:05:26.835
|
| 289 |
+
porque un humano es un omn铆voro, por ejemplo.
|
| 290 |
+
|
| 291 |
+
00:05:26.835 --> 00:05:34.830
|
| 292 |
+
O voy a poner omn铆voro. Y voy a
|
| 293 |
+
|
| 294 |
+
00:05:36.289 --> 00:05:43.530
|
| 295 |
+
realizar la ejecuci贸n. Ahora s铆, entonces vemos que
|
| 296 |
+
|
| 297 |
+
00:05:43.530 --> 00:05:45.290
|
| 298 |
+
justo despu茅s de que se muestra el mensaje
|
| 299 |
+
|
| 300 |
+
00:05:45.290 --> 00:05:48.255
|
| 301 |
+
de omn铆voro, est谩 ejecut谩ndose esta l铆nea de c贸digo
|
| 302 |
+
|
| 303 |
+
00:05:48.255 --> 00:05:50.495
|
| 304 |
+
y ahora s铆 podemos tener la certeza de
|
| 305 |
+
|
| 306 |
+
00:05:50.495 --> 00:05:52.575
|
| 307 |
+
que esta se trata de que alguien est谩
|
| 308 |
+
|
| 309 |
+
00:05:52.575 --> 00:05:55.695
|
| 310 |
+
comiendo plantas. 驴Qu茅 pasar铆a si yo lo hago
|
| 311 |
+
|
| 312 |
+
00:05:55.695 --> 00:05:57.455
|
| 313 |
+
desde la clase de carn铆voro? Pues me va
|
| 314 |
+
|
| 315 |
+
00:05:57.455 --> 00:06:03.170
|
| 316 |
+
a mostrar que, carn铆voro, me va a mostrar
|
| 317 |
+
|
| 318 |
+
00:06:03.170 --> 00:06:05.250
|
| 319 |
+
en esta ocasi贸n que la persona est谩 comiendo
|
| 320 |
+
|
| 321 |
+
00:06:05.250 --> 00:06:09.890
|
| 322 |
+
carne. Entonces, esta es una forma de quitarle
|
| 323 |
+
|
| 324 |
+
00:06:09.890 --> 00:06:13.250
|
| 325 |
+
esa ambig眉edad y realmente podr铆amos encontrar, pues, muchas
|
| 326 |
+
|
| 327 |
+
00:06:13.250 --> 00:06:17.395
|
| 328 |
+
otras situaciones y podr铆amos incluso pensar en reescribir
|
| 329 |
+
|
| 330 |
+
00:06:17.775 --> 00:06:20.975
|
| 331 |
+
la capacidad de el omn铆voro de c贸mo realizar
|
| 332 |
+
|
| 333 |
+
00:06:20.975 --> 00:06:23.535
|
| 334 |
+
su acci贸n comer. Para esto, si yo no
|
| 335 |
+
|
| 336 |
+
00:06:23.535 --> 00:06:26.575
|
| 337 |
+
quisiera tener esta ambig眉edad, podr铆a reescribirlo y simplemente
|
| 338 |
+
|
| 339 |
+
00:06:26.575 --> 00:06:28.495
|
| 340 |
+
poner un mensaje de que este animal, pues,
|
| 341 |
+
|
| 342 |
+
00:06:28.495 --> 00:06:30.975
|
| 343 |
+
come todo tipo de alimentos para que funcione
|
| 344 |
+
|
| 345 |
+
00:06:30.975 --> 00:06:33.430
|
| 346 |
+
algo como esto. La forma en que lo
|
| 347 |
+
|
| 348 |
+
00:06:33.430 --> 00:06:36.250
|
| 349 |
+
har铆a ser铆a venir aqu铆 a la clase omn铆voro
|
| 350 |
+
|
| 351 |
+
00:06:36.710 --> 00:06:41.510
|
| 352 |
+
y agregarle un m茅todo que se llame, que
|
| 353 |
+
|
| 354 |
+
00:06:41.510 --> 00:06:46.805
|
| 355 |
+
reescribe b谩sicamente, el m茅todo comer original. Y a
|
| 356 |
+
|
| 357 |
+
00:06:46.805 --> 00:06:49.705
|
| 358 |
+
partir de este podr铆a ser el siguiente mensaje.
|
| 359 |
+
|
| 360 |
+
00:06:55.205 --> 00:06:59.765
|
| 361 |
+
Este animal come lo que sea. Ahora, si
|
| 362 |
+
|
| 363 |
+
00:06:59.765 --> 00:07:05.060
|
| 364 |
+
realizo la ejecuci贸n, aqu铆 me estaba sobrando un
|
| 365 |
+
|
| 366 |
+
00:07:05.060 --> 00:07:08.620
|
| 367 |
+
menor que listo. Si realizo la ejecuci贸n de
|
| 368 |
+
|
| 369 |
+
00:07:08.620 --> 00:07:11.520
|
| 370 |
+
esta l铆nea de c贸digo que es o comer,
|
| 371 |
+
|
| 372 |
+
00:07:11.819 --> 00:07:15.120
|
| 373 |
+
ahora un omn铆voro puede comer f谩cilmente y ya
|
| 374 |
+
|
| 375 |
+
00:07:15.259 --> 00:07:18.885
|
| 376 |
+
tengo la forma correcta en que est谩 implementado
|
| 377 |
+
|
| 378 |
+
00:07:19.265 --> 00:07:23.025
|
| 379 |
+
o reimplementado este m茅todo para poder utilizarlo sin
|
| 380 |
+
|
| 381 |
+
00:07:23.025 --> 00:07:26.465
|
| 382 |
+
ninguna ambig眉edad. Esta es la forma en que
|
| 383 |
+
|
| 384 |
+
00:07:26.465 --> 00:07:28.785
|
| 385 |
+
funciona la herencia m煤ltiple dentro de C m谩s
|
| 386 |
+
|
| 387 |
+
00:07:28.785 --> 00:07:31.220
|
| 388 |
+
m谩s Te recuerdo que si quieres aprender mucho
|
| 389 |
+
|
| 390 |
+
00:07:31.220 --> 00:07:34.740
|
| 391 |
+
m谩s sobre los conceptos te贸ricos de la programaci贸n
|
| 392 |
+
|
| 393 |
+
00:07:34.740 --> 00:07:36.740
|
| 394 |
+
orientada a objetos, puedes realizar el curso de
|
| 395 |
+
|
| 396 |
+
00:07:36.740 --> 00:07:39.620
|
| 397 |
+
programaci贸n orientada a objetos de Platzi. Nos vemos
|
| 398 |
+
|
| 399 |
+
00:07:39.620 --> 00:07:42.740
|
| 400 |
+
en la pr贸xima clase, donde hablaremos sobre el
|
| 401 |
+
|
| 402 |
+
00:07:42.740 --> 00:07:43.240
|
| 403 |
+
polimorfismo.
|
subir/Curso de Programaci贸n Orientada a Objetos con C/04-Principios de la Programaci贸n Orientada a Objetos/05-Resumen.html
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
subir/Curso de Programaci贸n Orientada a Objetos con C/04-Principios de la Programaci贸n Orientada a Objetos/06-Lecturas recomendadas.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
https://platzi.com/cursos/oop/
|
subir/Curso de Programaci贸n Orientada a Objetos con C/04-Principios de la Programaci贸n Orientada a Objetos/06-Polimorfismo en Programaci贸n Orientada a Objetos.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:04c2173287c17c6d3ec871d5c67f421ecac6e2873417762f311d8399f8323d28
|
| 3 |
+
size 53503118
|
subir/Curso de Programaci贸n Orientada a Objetos con C/04-Principios de la Programaci贸n Orientada a Objetos/06-Polimorfismo en Programaci贸n Orientada a Objetos.vtt
ADDED
|
@@ -0,0 +1,313 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
WEBVTT
|
| 2 |
+
|
| 3 |
+
00:00:03.120 --> 00:00:05.920
|
| 4 |
+
La 煤ltima caracter铆stica que vamos a ver sobre
|
| 5 |
+
|
| 6 |
+
00:00:05.920 --> 00:00:08.500
|
| 7 |
+
programaci贸n orientada a objetos en este curso es
|
| 8 |
+
|
| 9 |
+
00:00:08.559 --> 00:00:11.679
|
| 10 |
+
el polimorfismo. El polimorfismo es una de esas
|
| 11 |
+
|
| 12 |
+
00:00:11.679 --> 00:00:15.085
|
| 13 |
+
cosas que son importantes dentro de este paradigma,
|
| 14 |
+
|
| 15 |
+
00:00:15.385 --> 00:00:17.405
|
| 16 |
+
porque nos va a ayudar a la reutilizaci贸n
|
| 17 |
+
|
| 18 |
+
00:00:17.625 --> 00:00:20.185
|
| 19 |
+
de c贸digo, pero tambi茅n a que el c贸digo
|
| 20 |
+
|
| 21 |
+
00:00:20.185 --> 00:00:22.365
|
| 22 |
+
no se convierta en un dolor de cabeza.
|
| 23 |
+
|
| 24 |
+
00:00:22.505 --> 00:00:24.570
|
| 25 |
+
Esto lo vamos a hacer por medio de
|
| 26 |
+
|
| 27 |
+
00:00:24.810 --> 00:00:28.010
|
| 28 |
+
permitir que las diferentes clases y objetos interact煤en
|
| 29 |
+
|
| 30 |
+
00:00:28.010 --> 00:00:31.230
|
| 31 |
+
intercambiando mensajes entre ellos de una forma estandarizada
|
| 32 |
+
|
| 33 |
+
00:00:32.090 --> 00:00:34.830
|
| 34 |
+
o com煤n, de forma que un mismo mensaje
|
| 35 |
+
|
| 36 |
+
00:00:34.890 --> 00:00:37.770
|
| 37 |
+
o forma de llamar a cierto bloque de
|
| 38 |
+
|
| 39 |
+
00:00:37.770 --> 00:00:41.375
|
| 40 |
+
c贸digo siempre sea compatible para que se reemplace,
|
| 41 |
+
|
| 42 |
+
00:00:41.375 --> 00:00:43.695
|
| 43 |
+
por ejemplo, con una clase heredada o con
|
| 44 |
+
|
| 45 |
+
00:00:43.695 --> 00:00:47.075
|
| 46 |
+
una clase base. Vamos a realizar alg煤n ejemplo
|
| 47 |
+
|
| 48 |
+
00:00:47.135 --> 00:00:50.495
|
| 49 |
+
de c贸digo. Para retomar el mismo ejercicio que
|
| 50 |
+
|
| 51 |
+
00:00:50.495 --> 00:00:54.355
|
| 52 |
+
hemos venido manejando sobre los animales, herb铆voros y
|
| 53 |
+
|
| 54 |
+
00:00:54.470 --> 00:00:57.770
|
| 55 |
+
omn铆voros, vamos a realizar un ejemplo de polimorfismo.
|
| 56 |
+
|
| 57 |
+
00:00:58.070 --> 00:01:00.149
|
| 58 |
+
En realidad ya lo hemos realizado, y es
|
| 59 |
+
|
| 60 |
+
00:01:00.149 --> 00:01:03.670
|
| 61 |
+
que el polimorfismo es tener, pues, una interfaz
|
| 62 |
+
|
| 63 |
+
00:01:03.670 --> 00:01:06.010
|
| 64 |
+
en com煤n o una forma com煤n de trabajar
|
| 65 |
+
|
| 66 |
+
00:01:06.150 --> 00:01:08.995
|
| 67 |
+
con las diferentes clases. En este caso lo
|
| 68 |
+
|
| 69 |
+
00:01:08.995 --> 00:01:12.915
|
| 70 |
+
implementamos en clases anteriores cuando trabajamos la caracter铆stica
|
| 71 |
+
|
| 72 |
+
00:01:12.915 --> 00:01:16.755
|
| 73 |
+
de que tanto animales herb铆voros como carn铆voros y
|
| 74 |
+
|
| 75 |
+
00:01:16.755 --> 00:01:19.955
|
| 76 |
+
omn铆voros puedan realizar la acci贸n de comer. En
|
| 77 |
+
|
| 78 |
+
00:01:19.955 --> 00:01:22.455
|
| 79 |
+
este caso, las tres clases tienen una implementaci贸n
|
| 80 |
+
|
| 81 |
+
00:01:22.515 --> 00:01:25.390
|
| 82 |
+
de un modo u otro que les permite
|
| 83 |
+
|
| 84 |
+
00:01:25.390 --> 00:01:26.990
|
| 85 |
+
a agentes externos o a quien vaya a
|
| 86 |
+
|
| 87 |
+
00:01:26.990 --> 00:01:30.590
|
| 88 |
+
consumir esa clase simplemente usar ese m茅todo sin
|
| 89 |
+
|
| 90 |
+
00:01:30.590 --> 00:01:33.170
|
| 91 |
+
necesidad de pensar en cu谩l de las tres
|
| 92 |
+
|
| 93 |
+
00:01:33.470 --> 00:01:35.390
|
| 94 |
+
clases es de la que se tratar谩. Para
|
| 95 |
+
|
| 96 |
+
00:01:35.390 --> 00:01:37.950
|
| 97 |
+
ejemplificar un poco m谩s esto, vamos a realizar
|
| 98 |
+
|
| 99 |
+
00:01:37.950 --> 00:01:40.855
|
| 100 |
+
una un peque帽o cambio a nuestra clase de
|
| 101 |
+
|
| 102 |
+
00:01:40.855 --> 00:01:44.855
|
| 103 |
+
animal en el m茅todo de comer. Y aqu铆
|
| 104 |
+
|
| 105 |
+
00:01:44.855 --> 00:01:47.975
|
| 106 |
+
algo que suced铆a durante la creaci贸n de animal,
|
| 107 |
+
|
| 108 |
+
00:01:47.975 --> 00:01:50.375
|
| 109 |
+
cuando no heredas ninguna clase, sino que solo
|
| 110 |
+
|
| 111 |
+
00:01:50.375 --> 00:01:53.850
|
| 112 |
+
instancias animal, es que, pues al mostrar el
|
| 113 |
+
|
| 114 |
+
00:01:53.850 --> 00:01:56.090
|
| 115 |
+
alimento, pues mostraba un elemento vac铆o. Vamos a
|
| 116 |
+
|
| 117 |
+
00:01:56.090 --> 00:01:58.650
|
| 118 |
+
cambiar un poco el comportamiento por defecto de
|
| 119 |
+
|
| 120 |
+
00:01:58.650 --> 00:02:01.369
|
| 121 |
+
esto o el comportamiento de esto, y vamos
|
| 122 |
+
|
| 123 |
+
00:02:01.369 --> 00:02:03.930
|
| 124 |
+
a permitirle recibir qu茅 tipo de animal es
|
| 125 |
+
|
| 126 |
+
00:02:03.930 --> 00:02:05.790
|
| 127 |
+
el que va a comer. En este caso,
|
| 128 |
+
|
| 129 |
+
00:02:06.505 --> 00:02:07.945
|
| 130 |
+
pues le voy a indicar que es un
|
| 131 |
+
|
| 132 |
+
00:02:07.945 --> 00:02:11.385
|
| 133 |
+
tipo animal y lo voy a llamar a,
|
| 134 |
+
|
| 135 |
+
00:02:11.385 --> 00:02:14.365
|
| 136 |
+
de manera que yo pueda pasarle cualquier animal
|
| 137 |
+
|
| 138 |
+
00:02:14.905 --> 00:02:17.885
|
| 139 |
+
como argumento a este m茅todo y a煤n as铆
|
| 140 |
+
|
| 141 |
+
00:02:17.945 --> 00:02:21.085
|
| 142 |
+
pueda mostrar su alimento. Entonces voy a poder
|
| 143 |
+
|
| 144 |
+
00:02:21.250 --> 00:02:23.970
|
| 145 |
+
reemplazar aqu铆 para que se utilice el animal
|
| 146 |
+
|
| 147 |
+
00:02:23.970 --> 00:02:25.970
|
| 148 |
+
que se haya pasado por argumento y se
|
| 149 |
+
|
| 150 |
+
00:02:25.970 --> 00:02:30.450
|
| 151 |
+
obtenga el alimento de ese animal. Algo, pues,
|
| 152 |
+
|
| 153 |
+
00:02:30.450 --> 00:02:33.349
|
| 154 |
+
importante al respecto es que entonces ya no
|
| 155 |
+
|
| 156 |
+
00:02:33.810 --> 00:02:37.085
|
| 157 |
+
podr铆amos utilizar la funci贸n, el m茅todo comer, como
|
| 158 |
+
|
| 159 |
+
00:02:37.085 --> 00:02:39.585
|
| 160 |
+
lo estamos haciendo aqu铆, sin pasarle el argumento
|
| 161 |
+
|
| 162 |
+
00:02:39.645 --> 00:02:42.945
|
| 163 |
+
correcto. En este caso, ya no necesitamos invocar
|
| 164 |
+
|
| 165 |
+
00:02:44.125 --> 00:02:46.925
|
| 166 |
+
comer, podr铆amos invocar comer desde la implementaci贸n, por
|
| 167 |
+
|
| 168 |
+
00:02:46.925 --> 00:02:49.390
|
| 169 |
+
ejemplo, del herb铆voro o del carn铆voro, pero a
|
| 170 |
+
|
| 171 |
+
00:02:49.390 --> 00:02:53.730
|
| 172 |
+
lo mejor algo m谩s limpio podr铆a ser realizarlo.
|
| 173 |
+
|
| 174 |
+
00:02:54.430 --> 00:02:57.310
|
| 175 |
+
Y vamos a comentar entonces comer, porque la
|
| 176 |
+
|
| 177 |
+
00:02:57.310 --> 00:03:01.330
|
| 178 |
+
forma ser铆a utilizar a lo mejor esta otra,
|
| 179 |
+
|
| 180 |
+
00:03:01.895 --> 00:03:03.735
|
| 181 |
+
que es utilizar la clase base, la clase
|
| 182 |
+
|
| 183 |
+
00:03:03.735 --> 00:03:06.395
|
| 184 |
+
animal para tener un c贸digo un poco m谩s
|
| 185 |
+
|
| 186 |
+
00:03:06.535 --> 00:03:09.655
|
| 187 |
+
general. Y ahora s铆 puede recibir cualquier animal
|
| 188 |
+
|
| 189 |
+
00:03:09.655 --> 00:03:12.235
|
| 190 |
+
como argumento, por ejemplo, el herb铆voro que tenemos
|
| 191 |
+
|
| 192 |
+
00:03:12.295 --> 00:03:16.615
|
| 193 |
+
implementado aqu铆 y m谩s abajo podr铆amos reutilizarlo para
|
| 194 |
+
|
| 195 |
+
00:03:16.615 --> 00:03:20.829
|
| 196 |
+
el carn铆voro. De esta forma, cuando ejecutamos nuestro
|
| 197 |
+
|
| 198 |
+
00:03:20.829 --> 00:03:24.269
|
| 199 |
+
c贸digo, podemos ver que, bueno, en primer lugar,
|
| 200 |
+
|
| 201 |
+
00:03:24.269 --> 00:03:27.489
|
| 202 |
+
aqu铆 me est谩 devolviendo un error de c贸digo
|
| 203 |
+
|
| 204 |
+
00:03:32.125 --> 00:03:34.844
|
| 205 |
+
porque me dice que esta l铆nea, la n煤mero
|
| 206 |
+
|
| 207 |
+
00:03:34.844 --> 00:03:37.825
|
| 208 |
+
setenta y siete, ya necesito pasarle un animal.
|
| 209 |
+
|
| 210 |
+
00:03:37.965 --> 00:03:39.965
|
| 211 |
+
Entonces la voy a comentar y voy a
|
| 212 |
+
|
| 213 |
+
00:03:39.965 --> 00:03:44.480
|
| 214 |
+
ejecutar de nuevo. Listo. Ahora, tanto mi herb铆voro
|
| 215 |
+
|
| 216 |
+
00:03:44.540 --> 00:03:46.380
|
| 217 |
+
como mi carn铆voro se le est谩n pasando como
|
| 218 |
+
|
| 219 |
+
00:03:46.380 --> 00:03:50.460
|
| 220 |
+
argumento y de nuevo tenemos que, pues, est谩n
|
| 221 |
+
|
| 222 |
+
00:03:50.460 --> 00:03:53.680
|
| 223 |
+
comiendo el herb铆voro plantas y el carn铆voro est谩
|
| 224 |
+
|
| 225 |
+
00:03:54.140 --> 00:03:58.255
|
| 226 |
+
est谩 comiendo carne y el carn铆voro est谩 comiendo
|
| 227 |
+
|
| 228 |
+
00:03:58.255 --> 00:04:04.195
|
| 229 |
+
carne. Entonces podemos observar que realmente la misma
|
| 230 |
+
|
| 231 |
+
00:04:04.335 --> 00:04:07.295
|
| 232 |
+
funci贸n o m茅todo comer puede recibir cualquier tipo
|
| 233 |
+
|
| 234 |
+
00:04:07.295 --> 00:04:10.335
|
| 235 |
+
de animal y sin importar cu谩l sea el
|
| 236 |
+
|
| 237 |
+
00:04:10.335 --> 00:04:12.580
|
| 238 |
+
tipo que reciba, va a poder obtener su
|
| 239 |
+
|
| 240 |
+
00:04:12.580 --> 00:04:15.300
|
| 241 |
+
nombre. Esta es una interfaz en com煤n que
|
| 242 |
+
|
| 243 |
+
00:04:15.300 --> 00:04:17.620
|
| 244 |
+
estamos definiendo a la hora de programar. No
|
| 245 |
+
|
| 246 |
+
00:04:17.620 --> 00:04:19.700
|
| 247 |
+
es tanto un concepto que se escriba en
|
| 248 |
+
|
| 249 |
+
00:04:19.700 --> 00:04:22.660
|
| 250 |
+
c贸digo, sino es una intenci贸n que debemos tener
|
| 251 |
+
|
| 252 |
+
00:04:22.660 --> 00:04:25.940
|
| 253 |
+
siempre que realicemos c贸digo con programaci贸n orientada a
|
| 254 |
+
|
| 255 |
+
00:04:25.940 --> 00:04:29.275
|
| 256 |
+
objetos. El polimorfismo se puede implementar de muchas
|
| 257 |
+
|
| 258 |
+
00:04:29.275 --> 00:04:32.715
|
| 259 |
+
maneras. Esto es por medio de cambiar, pues
|
| 260 |
+
|
| 261 |
+
00:04:32.715 --> 00:04:35.115
|
| 262 |
+
las clases. Tambi茅n se puede hacer por medio
|
| 263 |
+
|
| 264 |
+
00:04:35.115 --> 00:04:38.315
|
| 265 |
+
de modificar las funciones para que, dependiendo del
|
| 266 |
+
|
| 267 |
+
00:04:38.315 --> 00:04:40.875
|
| 268 |
+
tipo de dato que reciban, se puedan comportar
|
| 269 |
+
|
| 270 |
+
00:04:40.875 --> 00:04:43.810
|
| 271 |
+
de una u otra manera. Y hay muchos
|
| 272 |
+
|
| 273 |
+
00:04:43.810 --> 00:04:46.790
|
| 274 |
+
otros usos. Realmente, el polimorfismo es un tema
|
| 275 |
+
|
| 276 |
+
00:04:47.010 --> 00:04:49.170
|
| 277 |
+
bastante amplio y si quieres aprender m谩s sobre
|
| 278 |
+
|
| 279 |
+
00:04:49.170 --> 00:04:50.930
|
| 280 |
+
茅l, te invito a realizar el curso de
|
| 281 |
+
|
| 282 |
+
00:04:50.930 --> 00:04:54.870
|
| 283 |
+
Programaci贸n Orientada a Objetos de Platzi. El polimorfismo
|
| 284 |
+
|
| 285 |
+
00:04:55.170 --> 00:04:57.694
|
| 286 |
+
se puede implementar de muchas maneras. En realidad,
|
| 287 |
+
|
| 288 |
+
00:04:57.914 --> 00:05:00.314
|
| 289 |
+
este fue solo un ejemplo de un caso
|
| 290 |
+
|
| 291 |
+
00:05:00.314 --> 00:05:04.074
|
| 292 |
+
espec铆fico, donde utilizamos la clase animal para que
|
| 293 |
+
|
| 294 |
+
00:05:04.074 --> 00:05:07.034
|
| 295 |
+
se le pueda pasar como argumento cualquier tipo
|
| 296 |
+
|
| 297 |
+
00:05:07.034 --> 00:05:09.935
|
| 298 |
+
de animal a esta funci贸n, pero realmente existen
|
| 299 |
+
|
| 300 |
+
00:05:09.995 --> 00:05:13.000
|
| 301 |
+
muchas formas y muy variadas de hacerlo. Para
|
| 302 |
+
|
| 303 |
+
00:05:13.000 --> 00:05:15.320
|
| 304 |
+
que puedas entender m谩s a fondo el concepto
|
| 305 |
+
|
| 306 |
+
00:05:15.320 --> 00:05:17.720
|
| 307 |
+
de polimorfismo, te invito a realizar el curso
|
| 308 |
+
|
| 309 |
+
00:05:17.720 --> 00:05:20.520
|
| 310 |
+
de programaci贸n orientado a objetos de Platzi. Nos
|
| 311 |
+
|
| 312 |
+
00:05:20.520 --> 00:05:21.980
|
| 313 |
+
vemos en la pr贸xima clase.
|
subir/Curso de Programaci贸n Orientada a Objetos con C/04-Principios de la Programaci贸n Orientada a Objetos/06-Resumen.html
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
subir/Curso de Programaci贸n Orientada a Objetos con C/05-Despedida/01-Evaluaci贸n Final Programaci贸n Orientada a Objetos en C.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:f7cc7e4ca26292603504ba7b2d59deb6a6c52e6b599ca029aa4737c5639a0172
|
| 3 |
+
size 8619408
|
subir/Curso de Programaci贸n Orientada a Objetos con C/05-Despedida/01-Evaluaci贸n Final Programaci贸n Orientada a Objetos en C.vtt
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
WEBVTT
|
| 2 |
+
|
| 3 |
+
00:00:03.439 --> 00:00:06.000
|
| 4 |
+
Felicidades. Ya llegaste al final del curso de
|
| 5 |
+
|
| 6 |
+
00:00:06.000 --> 00:00:08.880
|
| 7 |
+
programaci贸n orientada a objetos con C m谩s m谩s,
|
| 8 |
+
|
| 9 |
+
00:00:08.880 --> 00:00:12.080
|
| 10 |
+
donde aprendiste una cantidad de conocimientos variados, como
|
| 11 |
+
|
| 12 |
+
00:00:12.080 --> 00:00:14.824
|
| 13 |
+
el concepto de manejo de memoria, estructuras de
|
| 14 |
+
|
| 15 |
+
00:00:14.824 --> 00:00:17.805
|
| 16 |
+
datos y c贸mo aplicar el paradigma orientado a
|
| 17 |
+
|
| 18 |
+
00:00:18.025 --> 00:00:20.505
|
| 19 |
+
objetos en este lenguaje. Recuerda que todo esto
|
| 20 |
+
|
| 21 |
+
00:00:20.505 --> 00:00:23.145
|
| 22 |
+
se puede aplicar en una gran variedad de
|
| 23 |
+
|
| 24 |
+
00:00:23.145 --> 00:00:25.805
|
| 25 |
+
soluciones de software, como el desarrollo de videojuegos
|
| 26 |
+
|
| 27 |
+
00:00:26.025 --> 00:00:28.690
|
| 28 |
+
o el software de ingenier铆a. Te invito a
|
| 29 |
+
|
| 30 |
+
00:00:28.690 --> 00:00:31.530
|
| 31 |
+
realizar tu examen para evaluar tus conocimientos y
|
| 32 |
+
|
| 33 |
+
00:00:31.530 --> 00:00:34.510
|
| 34 |
+
tambi茅n para dejarme una calificaci贸n de cinco estrellas
|
| 35 |
+
|
| 36 |
+
00:00:34.730 --> 00:00:37.210
|
| 37 |
+
para que puedas seguir tray茅ndote m谩s cursos a
|
| 38 |
+
|
| 39 |
+
00:00:37.210 --> 00:00:40.325
|
| 40 |
+
trav茅s de Platzi. No olvides compartirme tu certificado
|
| 41 |
+
|
| 42 |
+
00:00:40.545 --> 00:00:43.665
|
| 43 |
+
a trav茅s de Twitter por arroba Diana guion
|
| 44 |
+
|
| 45 |
+
00:00:43.665 --> 00:00:46.405
|
| 46 |
+
bajo nerd y nunca pares de aprender.
|