Fecha de efectividad: _______________ UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE INGENIERÍA (UNIDAD MEXICALI) DOCUMENTO DEL SISTEMA DE CALIDAD Formatos para prácticas de laboratorio CARRERA PLAN DE ESTUDIO CLAVE ASIGNATURA NOMBRE DE LA ASIGNATURA Ing. En Mecatrónica 2009-2 11892 Programación Orientada a Objetos PRÁCTICA No. LABORATORIO DE Ingeniero en Mecatrónica DURACIÓN (HORA) 5 NOMBRE DE LA PRÁCTICA Funciones Constructoras y Destructoras 2 1. INTRODUCCIÓN En la programación orientada a objetos, es de gran utilidad el uso de las funciones constructoras y destructoras ya sea para inicializar un valor al crear el objeto o para destruir el objeto y liberar memoria o eliminación de datos. 2. OBJETIVO (COMPETENCIA) El alumno conocerá y aplicará las funciones constructoras y destructoras tanto para la inicialización automática de acciones en los objetos así como la terminación automática de un objeto, aplicándolo en el desarrollo de programas mediante el uso del lenguaje C++ . 3. FUNDAMENTO Funciones Constructoras En los programas hay partes que requieren inicialización. Esta necesidad de inicialización es incluso más común cuando se está trabajando con objetos. Para tratar esta situación, C++ permite incluir una función constructora. A estas funciones se les llama automáticamente cada vez que se crea un objeto de esa clase. La función constructora debe tener el mismo nombre que la clase de la que es parte, no tienen tipo devuelto, es ilegal que un constructor tenga un tipo devuelto. Pero si es posible pasarle valores a modo de parámetros. La función constructora es invocada automáticamente cuando se crea (instancia) un objeto de dicha clase. Formuló LSC. Natalia Rodríguez Castellón Maestro Revisó Aprobó M. I. Jesús Armando Cantú Cárdenas Coordinador de la carrera de Ingeniería Mecatrónica Autorizó Dr. Maximiliano De Las Fuentes Lara Gestión de Calidad Director de la Facultad Código GC-N4-017 Revisión 1 Página 1 de 6 Fecha de efectividad: ______________________ UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE INGENIERÍA (UNIDAD MEXICALI) DOCUMENTO DEL SISTEMA DE CALIDAD Formatos para prácticas de laboratorio Al declarar un objeto de una clase, es posible indicar inicializadotes entre paréntesis a la derecha del nombre del objeto y antes del punto y coma. Estos inicializadotes se pasan como parámetros al constructor de la clase. Prototipo de la función: nombre_función(parámetros); Desarrollo de la función: nombre_clase::nombre_función(parámetros){ cuerpo; } EJEMPLO: #include <iostream.h> #include <stdio.h> #include <conio.h> class miclase{ int a; public: miclase(); //function constructora void show(); }; miclase::miclase() { a=100; } void miclase::show() { cout << a; } void main() { clrscr(); miclase obj; obj.show(); getch(); } Código GC-N4-017 Revisión 1 Página 2 de 6 Fecha de efectividad: ______________________ UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE INGENIERÍA (UNIDAD MEXICALI) DOCUMENTO DEL SISTEMA DE CALIDAD Formatos para prácticas de laboratorio Constructoras con Parámetros: Es posible pasar argumentos a una función constructora. Para permitir esto, simplemente añada los parámetros a la declaración y definición de la función constructora. Después, cuando declare un objeto, especifique los parámetros como argumentos. Aunque en el programa no se llama explícitamente a las funciones constructoras, pueden proveer información que se le pasa como argumento a los constructores. EJEMPLO: #include <iostream.h> #include <stdio.h> #include <conio.h> class miclase{ int a; public: miclase(int x); void mostrar(); }; miclase::miclase(int x) { cout << "Constructor"; a=x; } void miclase::show() { cout <<"El valor de a es: "; cout << a; } void main() { miclase objeto(4); objeto.show(); getch(); } Código GC-N4-017 Revisión 1 Página 3 de 6 Fecha de efectividad: ______________________ UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE INGENIERÍA (UNIDAD MEXICALI) DOCUMENTO DEL SISTEMA DE CALIDAD Formatos para prácticas de laboratorio Funciones Destructoras El complemento de un constructor es la función destructora. A esta función se le llama automáticamente cuando se destruye el objeto. El nombre de las funciones destructoras debe ser el mismo que el de la clase a la que pertenece precedido del carácter ~ .Los objetos se destruyen cuando se salen de ámbito cuando son locales, y al salir del programa si son globales. Las funciones destructoras no devuelven valor y tampoco pueden recibir parámetros. El uso mas apropiado de las funciones destructoras es para liberar memoria, esto es cuando se esta trabajando con estructuras de memoria dinámica. Prototipo de la Función: ~nombre_función(); Desarrollo de la Función: nombre_clase::nombre_función(){ cuerpo; } EJEMPLO: Mismo programa de antes añadiendo una función destructora. #include <iostream.h> #include <stdio.h> #include <conio.h> class miclase{ int a; public: miclase(); ~miclase(); //Esta es la función Destructora void show(); }; miclase::miclase() { a=100; } miclase::~miclase() { cout << "Destruyendo...\n"; getch(); } Código GC-N4-017 Revisión 1 Página 4 de 6 Fecha de efectividad: ______________________ UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE INGENIERÍA (UNIDAD MEXICALI) DOCUMENTO DEL SISTEMA DE CALIDAD Formatos para prácticas de laboratorio void miclase::show() { cout << a; } void main() { clrscr(); miclase obj; obj.show(); getch(); } 4. PROCEDIMIENTO (DESCRIPCIÓN) A) EQUIPO NECESARIO Computadora con editor turbo C++ instalado MATERIAL DE APOYO Práctica impresa B) DESARROLLO DE LA PRÁCTICA 1.- Crear un programa que cree la clase Rectángulo, que tenga los atributos base y altura y que sean inicializados en 1 y 2 en el constructor. También incluir funciones miembro que calculen el área y el perímetro, y por ultimo incluir su función destructora. 2.- Crear un programa que cree la clase Círculo, que tenga los atributos radio y pi, de tal forma que en el constructor inicialice el valor de pi, incluir funciones miembro para capturar el valor del radio, otra para calcular el área y finalmente el destructor. 3.- Crear un programa que cree la clase Triángulo que tenga los atributos base y altura, incluyendo un constructor para iniciar los valores recibiéndolos como parámetros, agregar una función miembro para calcular y mostrar el área del triángulo. 4.- Crear un programa que cree la clase Cuadrado, que tenga el atributo lado y que sea inicializado en 5 en el constructor. También incluir funciones miembro que calculen el área y el perímetro, y por último incluir su función destructora. 5.- Crear un programa que cree la clase Cilindro que tenga los atributos radio y altura, incluyendo un constructor para iniciar el valor de pi, agregar la función miembro para capturar el radio y otra para calcular y mostrar el volumen del cilindro y por último incluir una función destructora para verificar en que momento se destruye el objeto. Código GC-N4-017 Revisión 1 Página 5 de 6 Fecha de efectividad: ______________________ UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE INGENIERÍA (UNIDAD MEXICALI) DOCUMENTO DEL SISTEMA DE CALIDAD Formatos para prácticas de laboratorio 6.- Crear un programa que cree la clase Cilindro que tenga los atributos radio y altura, incluyendo un constructor para enviar como parámetros el valor del radio y el valor de pi dada una constante definida en el programa principal, agregar la función miembro para calcular y mostrar el volumen del cilindro y por ultimo incluir una función destructora para verificar en que momento se destruye el objeto. C) CÁLCULOS Y REPORTE Se revisarán los programas haciendo pruebas 1 o más veces. 5. RESULTADOS Y CONCLUSIONES El alumno será capaz de elaborar programas orientados a objetos utilizando funciones constructoras y destructoras. 6. ANEXOS Ninguno 7. REFERENCIAS Como Programar en C++, Deitel & Deitel, Prentice Hall Código GC-N4-017 Revisión 1 Página 6 de 6