2999a commited on
Commit
8fa1e8c
verified
1 Parent(s): 53aaa34

Upload via hfc (batch)

Browse files

Uploaded using hfc tool

This view is limited to 50 files because it contains too many changes. 聽 See raw diff
Files changed (50) hide show
  1. .gitattributes +15 -0
  2. subir/Curso Pr谩ctico de C/01-Introducci贸n a C/01-Programaci贸n de Videojuegos con C desde Cero.mp4 +3 -0
  3. subir/Curso Pr谩ctico de C/01-Introducci贸n a C/01-Programaci贸n de Videojuegos con C desde Cero.vtt +71 -0
  4. subir/Curso Pr谩ctico de C/01-Introducci贸n a C/01-Resumen.html +0 -0
  5. subir/Curso Pr谩ctico de C/01-Introducci贸n a C/02-Programaci贸n en C Fundamentos y Aplicaciones Pr谩cticas.mp4 +3 -0
  6. subir/Curso Pr谩ctico de C/01-Introducci贸n a C/02-Programaci贸n en C Fundamentos y Aplicaciones Pr谩cticas.vtt +80 -0
  7. subir/Curso Pr谩ctico de C/01-Introducci贸n a C/02-Resumen.html +0 -0
  8. subir/Curso Pr谩ctico de C/02-Conceptos Generales de C/01-Historia y uso del compilador GCC en programaci贸n.mp4 +3 -0
  9. subir/Curso Pr谩ctico de C/02-Conceptos Generales de C/01-Historia y uso del compilador GCC en programaci贸n.vtt +71 -0
  10. subir/Curso Pr谩ctico de C/02-Conceptos Generales de C/01-Resumen.html +0 -0
  11. 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
  12. 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
  13. subir/Curso Pr谩ctico de C/03-Preparando el entorno de trabajo/01-Lecturas recomendadas.txt +2 -0
  14. subir/Curso Pr谩ctico de C/presentation.mhtml +0 -0
  15. 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
  16. subir/Curso de Programaci贸n Orientada a Objetos con C/02-Estructuras de datos/02-Resumen.html +0 -0
  17. subir/Curso de Programaci贸n Orientada a Objetos con C/02-Estructuras de datos/03-Resumen.html +0 -0
  18. 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
  19. 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
  20. 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
  21. 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
  22. 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
  23. 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
  24. 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
  25. 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
  26. 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
  27. 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
  28. 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
  29. 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
  30. 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
  31. 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
  32. subir/Curso de Programaci贸n Orientada a Objetos con C/04-Principios de la Programaci贸n Orientada a Objetos/01-Resumen.html +0 -0
  33. subir/Curso de Programaci贸n Orientada a Objetos con C/04-Principios de la Programaci贸n Orientada a Objetos/02-Resumen.html +0 -0
  34. 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
  35. 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
  36. 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
  37. 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
  38. subir/Curso de Programaci贸n Orientada a Objetos con C/04-Principios de la Programaci贸n Orientada a Objetos/03-Resumen.html +0 -0
  39. 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
  40. 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
  41. subir/Curso de Programaci贸n Orientada a Objetos con C/04-Principios de la Programaci贸n Orientada a Objetos/04-Resumen.html +0 -0
  42. 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
  43. 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
  44. subir/Curso de Programaci贸n Orientada a Objetos con C/04-Principios de la Programaci贸n Orientada a Objetos/05-Resumen.html +0 -0
  45. 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
  46. 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
  47. 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
  48. subir/Curso de Programaci贸n Orientada a Objetos con C/04-Principios de la Programaci贸n Orientada a Objetos/06-Resumen.html +0 -0
  49. 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
  50. 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.