Informática II - PowerPoint PPT Presentation

inform tica ii n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Informática II PowerPoint Presentation
Download Presentation
Informática II

play fullscreen
1 / 142
Informática II
131 Views
Download Presentation
sharis
Download Presentation

Informática II

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. Informática II Clase 2: Clases y Objetos Diego Fernando Serna Restrepo Semestre 2011/2

  2. Quiz Informática II 2011/2

  3. Informática II 2011/2

  4. Contenido Programación orientada aobjetos - POO 1 Clases y Objetos 2 Punteros y Referencias 3 Manejo de errores 4 Informática II 2011/2

  5. Contenido Funciones Avanzadas 5 Herencia 6 Arreglos 7 Polimorfismo 8 Informática II 2011/2

  6. Programación orientada a objetos - POO • El mundo real esta compuesto por elementos complejos, difícilmente pueden ser modelados por números simples o caracteres. • La esencia de la POO es modelar objetos (cosas o conceptos) en vez de datos. Informática II 2011/2

  7. Programación Orientada a Objetos Informática II 2011/2

  8. Programación Orientada a Objetos • Caraterísticas Informática II 2011/2

  9. Contenido Programación orientada aobjetos - POO 1 Clases y Objetos 2 Punteros y Referencias 3 Manejo de errores 4 Informática II 2011/2

  10. Clases Informática II 2011/2

  11. Clases Los miembros de una clase puede ser catalogados como públicos o privados. Informática II 2011/2

  12. Cómo acceder a los miembros de una clase? • Los miembros de una clase pueden accederse cuando existe un objeto definido como dicha clase, y se accede utilizando el operador punto (.) Gato Tom; Tom.Maullar(); • ¡Cuidado!, no trate de asignar valores a las clases, los únicos que pueden tener valores son los objetos. Informática II 2011/2

  13. Métodos de las clases • La declaración e implementación de los métodos de una clase es prácticamente igual a la definición de una función regular. class Gato { public: intObtenerEdad(); //declaración del método private: intsuEdad; } //Implementación del método int Gato::ObtenerEdad() //Operador SCOPE :: { returnsuEdad; } Informática II 2011/2

  14. Métodos de las clases // Declaracion de una clase classRectangulo { // Variables de instancia int ancho, alto; public: // Metodos void set_values(int a, int b); intarea(); }; // Fin de clase Rectangulo voidRectangulo::set_values(int a, int b) { ancho = a; alto = b; } intRectangulo::area() { return ancho*alto; } Informática II 2011/2

  15. Constructores y destructores • Los constructores y destructores son métodos especiales de las clases, usados para inicializar y liberar la memoria de las clases respectivamente: class Gato{ Public: Gato(); //Declaración de un constructor ~Gato(); //Declaración de un destructor } Informática II 2011/2

  16. Constructores y destructores • Los constructores pueden tomar parámetros de entrada, los destructores ¡NO! • Es una buena práctica declarar los destructores, si se declaran los constructores. Informática II 2011/2

  17. Operador Scope (::) Informática II 2011/2

  18. Función inline • C++ permite sustituir, en tiempo de compilación, la llamada a una función por el código correspondiente en el punto en que se realiza la llamada. De esta manera la ejecución es más rápida, pues no se pierde tiempo transfiriendo el control y realizando conversiones de parámetros. • Como contrapartida, el programa resultante ocupa más memoria, pues es posible que el código de una misma función se introduzca muchas veces. Las funciones inline son muy útiles en el caso de funciones cortas, que se ejecutan muchas veces (en un bucle for, por ejemplo). Informática II 2011/2

  19. Espacios nombres (namespace) Informática II 2011/2

  20. Resumen: • Conceptos: Informática II 2011/2

  21. Estructura de un Programa Encabezados //Mi primer programa en C++ #include <iostream> usingnamespacestd; intmain(void){ int a, b, c = 0; cout << “Digite el primer numero: ”; cin >> a; cout << “Digite el segundo numero: ”); cin >> b; c = a + b; cout << “El resultado es: << c <<‘\n’; return 0; } Directivas INICIO Declaración de variables Acciones del Algoritmo FIN Informática II 2011/2

  22. Variables

  23. Arreglos • Es posible crear arreglos de tantas dimensiones como requieran sus aplicaciones. • Se declaran siguiendo el patrón de la declaración de un vector: tipo nombre [d1] [d2] [d3]… [dN]; Informática II 2011/2

  24. Arreglos Fila 0 Fila 1 Bloque 0 • intmatrizA [2] [3] [3]={ {{1,3,5}, {7,9,11}}, • {{2,4,6}, {8,10,12}}, • {{3,7,11}, {15,19,23}} }; Bloque 1 Bloque 2 Bloque 0 Bloque 1 Bloque 2 F0 1 3 5 2 4 6 3 7 11 F1 7 9 11 8 12 15 19 23 10 C0 C1 C2 C0 C0 C1 C2 C1 C2 Informática II 2011/2

  25. Arreglos • Arreglos como parámetros a funciones tipoRetornofuncion (tipoDatovector[]); funcion (nombreVector); tipoRetornofuncion (tipoDatovector[], intsize); funcion (nombreVector, tamaño); Informática II 2011/2

  26. Estructuras Con la declaración de un estructura estamos creando un tipo de datos NUEVO y PERSONALIZADO. Se utiliza la palabra clave struct structnombreDeLaEstructura { tipoDeDatoMiembro1nombreMiembro1; tipoDeDatoMiembro2 nombreMiembro2; ... tipoDeDatoMiembroNnombreMiembroN; } ;

  27. Estructuras Cuando declaramos una estructura SOLO se está diciendo que forma tendrá, SE CREA UN NUEVO TIPO DE DATOS. Falta instanciar la estructura o simplemente reservarle un espacio en memoria con un nombre especifico, SE DECLARA UNA VARIABLE DE ESTE NUEVO TIPO. structcdsMusica { char titulo[40]; char artista[40]; chargenero[15]; intnumCanciones; int lanzamiento; int precio; }; structcdsMusica cd1, cd2, cd3;

  28. Estructuras Si queremos a un elemento especifico dentro de una variable estructura se puede acceder por medio del operador “.” ó “->”. nombreVarEstructura.nombreMiembro= dato; CADA MIEMBRO de una variable estructura se maneja como si fuera otra VARIABLE COMÚN Y CORRIENTE.

  29. Contenido Programación orientada aobjetos - POO 1 Clases y Objetos 2 Punteros y Referencias 3 Manejo de errores 4 Informática II 2011/2

  30. Punteros • Es un tipo de variable implementada para almacenar exclusivamente direcciones de otras variables, estos se debe declarar y definir de acuerdo al tipo de dato que apunta. Utilizando punteros un programa puede realizar muchas tareas que no sería posible utilizando tipos de datos estándar. Informática II 2011/2

  31. Características de un apuntador • Un puntero es una variable como cualquier otra. Excepto que solo puede almacenar direcciones de otras variables común y corrientes. • Un puntero apunta a una variable en memoria. • Son útiles para pasar y regresar valores a la rutina que las llama. • Si son usadas incorrectamente se pueden convertir en fuente de fallas y frustraciones. El tipo de variable que almacena una dirección se denomina puntero. Informática II 2011/2

  32. Punteros Informática II 2011/2

  33. Violación de seguridad de la memoria • Generan corrupción de datos y posiblemente fallos de segmentación. Informática II 2011/2

  34. ¿Para que se usan los punteros? Informática II 2011/2

  35. MEMORIA Variables y memoria #include <iostream> usingnamespacestd; void main() { int y = 25; int z=77; int y = 25; int z=77; cout << " y= " << y << endl; / * visualiza el valor de y * / cout << " y= " << y << endl; / * visualiza el valor de y * / cout << " Dir y= " << &y << endl; / * visualiza dirección de y * / cout << " Dir y= " << &y << endl; / * visualiza dirección de y * / } y = 25 &y = 1002 y = 25 Informática II 2011/2

  36. Modo de almacenamiento • El modo de almacenamiento (storageclass) es otra característica de las variables de C++ que determina cuándo se crea una variable, cuándo deja de existir y desde dónde se puede acceder a ella. Informática II 2011/2

  37. Espacios de memoria • Reservada antes de la ejecución del programa • Permanece fija. • No requiere gestión durante la ejecución. • El sistema operativo se encarga de la reserva, recuperación y reutilización. • Se accede a un espacio en esta cada vez que se declaran Variables globales o tipo static. • Es una zona de memoria que gestiona las llamadas a funciones durante la ejecución de un programa. • Cada vez que se realiza una llamada a una función en el programa, se crea un entorno de programa que se libera cuando acaba su ejecución. • La reserva y liberación de la memoria la realiza el S.O. de forma automática durante la ejecución del programa. • Es una zona de memoria donde se reservan y se liberan “trozos” durante la ejecución de los programas según sus propias necesidades, este proceso es usualmente llamado gestiónde memoria dinámica. • Optimiza el almacenamiento de datos. Informática II 2009/2

  38. Gestión dinámica de memoria Informática II 2011/2

  39. Operador new • Un operador que reserva la cantidad de memoria deseada en tiempo de ejecución. Informática II 2011/2

  40. Liberando la memoria del heap • Para liberar la memoria del HEAP se usa el comando delete sobre el puntero. deletepPuntero; • Es MUY importante liberar la memoria del Heap, pues en caso de perder el rastro de los punteros podrán presentarse “fugas de memoria” Informática II 2011/2

  41. Operador delete • El operador deleteno elimina el puntero, simplemente lo desreferencia. • Cuando se utiliza el operardodelete más de una vez, puede generar que el programa se estrelle, por ello es recomendable inicializar el puntero a NULL, haciendo esto se garantiza mayor seguridad, y de este modo se puede volver a reutilizar el puntero. int*ptr =newint; //reservamemoria deleteptr; //desrefernciaptr ptr=NULL; //lo lleva a NULL deleteptr; //no hay problema //se puede volver a referenciar a otro espacio de memoria ptr=newint; Informática II 2011/2

  42. Fugas de memoria • Cuando “se pierde de vista” la dirección o el puntero que lleva registro del espacio en el Heap, se dice que hubo una fuga de memoria. • La memoria desperdiciada por causa de fugas de memoria, NO podrá liberarse sino hasta que termine el programa. Informática II 2011/2

  43. Fugas de memoria • Es muy frecuente que ocurra cuando el puntero es declarado como variable local (dentro de una función) y luego se sale de ésta sin antes liberar la memoria. • Es muy común usar los constructores para reservar memoria en el heap y los destructores para liberarla. • ¡OJO!, realizar un delete sobre un puntero libera la memoria, realizarlo de nuevo estrellará el programa. Para que esto no ocurra, asígnele al puntero el valor de cero DESPUÉS de hacer el primer delete. Informática II 2011/2

  44. Resumen de apuntadores Informática II 2011/2

  45. Referencias • Las referencias son “alias” de otros objetos, por lo tanto cuando se manipula una referencia, realmente se está manipulando el objeto al que ésta hace referencia. Informática II 2011/2

  46. Declaración de Referencias int Edad = 5; int &rVbleReferencia = Edad; // int &rOtraVble = int // error!, esta mal referenciado Informática II 2011/2

  47. Referencias 0X0FDE00 0X0FDE04 socio1, socio2 0X0FDE08 int socio1; int &socio2=socio1; • Las referencias difieren con otro tipo de variables ya que deben declararse inicializándolas con las variables a las que harán referencia. Si se tratan de declarar sin inicializar, el programa no compilará. • Si se toma la dirección de una referencia (&rReferencia), el valor que devuelve es la dirección de la variable a la que apunta la referencia. Informática II 2011/2

  48. Referencias • Las referencias SÓLO pueden ser asignadas una vez, por lo tanto, todas las operaciones que se hagan a la referencia, en realidad se estarán haciendo sobre el objeto al que hacen referencia. • ¡NO TRATE DE REASIGNAR UNA REFERENCIA! Informática II 2011/2

  49. Referencias • Las referencias pueden trabajar con todo tipo, incluso con objetos. • Cuando una referencia hace referencia a un objeto, puede usar todos sus miembros y métodos tal y como se hace con objeto real. Informática II 2011/2

  50. Pasar y retornar valores por referencia • A las funciones normalmente se le pasan los argumentos por valor y sólo devuelven un valor. • Si se pasan los parámetros por referencia, se puede superar éstas limitantes. Existe dos formas de hacerlo; usando punteros o referencias • Se dice que uno pasa “por referencia” cuando usa punteros o uno pasa “una referencia” cuando usa referencias. Informática II 2011/2