1 / 21

Programación Orientada a Objetos usando

Programación Orientada a Objetos usando. CONSTRUCTORES DESTRUCTORES. Constructores. Método de la clase cuyo objetivo es: Pedir recursos al sistema para construir el objeto Generar y dar valores iniciales a los atributos de un objeto al instanciar la clase.

salma
Download Presentation

Programación Orientada a Objetos usando

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programación Orientada a Objetos usando CONSTRUCTORES DESTRUCTORES

  2. Constructores • Método de la clase cuyo objetivo es: • Pedir recursos al sistema para construir el objeto • Generar y dar valores iniciales a los atributos de un objeto al instanciar la clase. • Método con el mismo nombre de la clase. • No posee valor de retorno • Se invoca al crear el objeto • Puede sobrecargarse • Si en la clase NO se define un constructor, el compilador proporciona uno por defecto.

  3. Constructores • De Oficio • Específico • Por Defecto • Con Parámetros • De Copia

  4. Constructor de Oficio • Constructor proporcionado automáticamente por el compilador. • No posee parámetros. • Se invoca en el momento de la creación de un objeto. • Inicializa los atributos del objeto a su valor por defecto: • 0 : Enteros • 0.0 : Reales • false : Booleanos • '\u0000 : Caracteres • null : Referencias

  5. f: 0 0 • En C++: En forma implícita: Fraccion f; explícita: Fraccion *f= new Fraccion() f: 0 0 Constructor: De Oficio

  6. Constructor: Específico por Defecto • Constructor creado por el diseñador de la clase. • Anula el constructor de Oficio 1.- Por Defecto: Este constructor NO contiene parámetros y, su código lee valores y/o los asigna a las varibales miembros class Fraccion { private: int num; int den; public: Fraccion(); : }; Fraccion::Fraccion() { num=0; den=1; } } C++

  7. Constructor: Específico con Parámetros • Constructor creado por el diseñador de la clase. • Anula el constructor de Oficio 2.- Con Parámetros: Este constructor contiene parámetros y los asigna a las varibales miembros class Fraccion { private: int num; int den; public: Fraccion(int, int); : }; Fraccion::Fraccion(int n, int d) { num=n; den=d; } }

  8. Ejemplo • Uso del constructor específico: Fraccion(int,int) 1.- Fraccion f(5,3); 2.- Fraccion f= Fraccion(5,3); 3.- Fraccion *g; g=new Fraccion(2,5); 4.- Fraccion V[100];

  9. Ejemplo Definición de la clase Alumno con dos constructores específicos class Alumno{ private: char nom[25]; int carrera; int ingreso; public: Alumno(); Alumno(char *n, int c, int a); void Asigna_nom(char x[]); void Asigna_carrera(int c); void Asigna_ingreso(int i); void Listar(); char * Obtener_nom(); int Obtener_carrera(); int Obtener_ingreso(); };

  10. Ejemplo Implementación de constructores específicos para la clase Alumno: Alumno::Alumno(){ strcpy(nom,NULL); ingreso=2005; carrera=511; } Alumno::Alumno(char *n, int c, int a){ strcpy(nom,n); ingreso=a; carrera=c; } void Alumno::Asigna_nom(char x[]){ strcpy(nom,x); } : :

  11. Ejemplo Uso de la clase Alumno: #include <iostream.h> #include "CAlumno1.h" #include "IAlumnos1.h" void main(){ char nombre[25]; int carr; int año; cout<<"Ingrese nombre del alumno"; cin.getline(nombre,80); cout<<"Ingrese carrera: "; cin>>carr; cout<<"Ingrese año de ingreso"; cin>>año; Alumno a(nombre,anio,carr); a.Listar(); }

  12. Constructor de Copia • Uso Permite crear objetos inicializándolo a partir de otro objeto de la misma clase. • El compilador proporciona uno de oficio. Este constructor efectúa una COPIA bit a bit de las variables miembro del objeto original a objeto destino.

  13. 2 2 f: g: 5 5 Constructor de Copia • Ejemplos de uso 1.- Fraccion f(2,5); Fraccion g=f; 2.- Fraccion h(f); 3.- Un objeto es el valor de retorno de una función: Fraccion Fraccion::Suma(Fraccion &f) { Fracción c; ... return c; }

  14. Constructor de Copia • Implementación Este constructor tiene SÓLO un argumento que es una referencia constante a un objeto de la clase. Fraccion (const Fraccion&); Fraccion::Fraccion(const Fraccion &f) {num= f.num; den = f.den; }

  15. Constructor de Copia class Alumno{ private: char *nom; int carrera; int ingreso; public: Alumno(); Alumno(char *n, int c, int a); Alumno(const Alumno&); void Asigna_nom(char x[]); void Asigna_carrera(int c); void Asigna_ingreso(int i); void Listar(); char * Obtener_nom(); int Obtener_carrera(); int Obtener_ingreso(); };

  16. Constructor de Copia Alumno::Alumno(){ nom= new char[25]; strcpy(nom,NULL); ingreso=2005; carrera=2141; } Alumno::Alumno(char *n, int c, int a){ nom= new char[25]; strcpy(nom,n); ingreso=a; carrera=c; } Alumno::Alumno(const Alumno &x){ nom= new char[25]; strcpy(nom,x.nom); ingreso=x.ingreso; carrera=x.carrera; }

  17. Fraccion::Fraccion(int x,int y):num(x),den(y) { puede ir el cuerpo vacío } Variables miembros Inicializadores • Utilizados en los constructores • Son más eficientes que las asignaciones dentro del código de un constructor. • Son de gran utilidad : • Para inicializar objetos contantes. • En clases derivadas

  18. DESTRUCTORES

  19. Destructores • Método complemento de los constructores • No posee valor de retorno • NO puede sobrecargarse, es único • No posee argumentos. • Tiene el mismo nombre de la clase con un tilde como prefijo: ~Clase (); Clase::~Clase () { : }

  20. Destructores • Es llamado implícitamente cuando un objeto va a dejar de existir. • Los objetos creados dinámicamente (new) deben eliminarse en forma explícita con delete. • El compilador proporciona un destructor para variables estáticas y/o automáticas, excepto para liberar vectores y/o matrices: Clase::~Clase () {delete [] v;}

  21. Tarea • Modifique la clase Alumno, de tal forma que: • Agregue variables miembro para registrar información sobre las asignaturas que un alumno debe cursar a lo largo de su carrera. • Suponga que la malla curricular considera 72 asignaturas. • Para cada asignatura cursada se deberá registrar: Código, año, nota • Considere la máxima cantidad de constructores. • No olvide el destructor.

More Related