Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porRuy Soza Modificado hace 10 años
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.
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.