La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Programación Orientada a Objetos usando CONSTRUCTORES DESTRUCTORES.

Presentaciones similares


Presentación del tema: "Programación Orientada a Objetos usando CONSTRUCTORES DESTRUCTORES."— Transcripción de la presentación:

1 Programación Orientada a Objetos usando CONSTRUCTORES DESTRUCTORES

2 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 3 Constructores ► De Oficio ► Específico  Por Defecto  Con Parámetros ► De Copia

4 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 5 Constructor: De Oficio 0 0 f: 0 0  En C++: En forma implícita: Fraccion f; explícita: Fraccion *f= new Fraccion()

6 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 7 Constructor: Específico con Parámetros class Fraccion { private: int num; int den; public: Fraccion(int, int); : }; Fraccion::Fraccion(int n, int d) { num=n; den=d; } ► 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

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

9 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 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 11 Ejemplo Uso de la clase Alumno: #include #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 12 ► 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. Constructor de Copia

13 13 1.- Fraccion f(2,5); Fraccion g=f; ► Ejemplos de uso 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; } 2 5 f: 2 5 g: Constructor de Copia

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

15 15 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(); }; Constructor de Copia

16 16 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; } Constructor de Copia

17 17 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 Fraccion::Fraccion(int x,int y):num(x),den(y) { puede ir el cuerpo vacío } Variables miembros

18 18 DESTRUCTORES

19 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 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 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.


Descargar ppt "Programación Orientada a Objetos usando CONSTRUCTORES DESTRUCTORES."

Presentaciones similares


Anuncios Google