UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso.

Slides:



Advertisements
Presentaciones similares
METODOLOGÍA ORIENTADA A OBJETOS CARACTERISTICAS DEL PROCESO
Advertisements

Unidad 3 Lenguajes .Net y POO
Fundamentos de la programación orientada a objetos
Lenguaje de programación Java
Arquitectura CLARO-TECNOTREE
Programación Orientada a Objetos
Introducción a la Orientación a Objetos
Programación Orientada a Objetos (P.O.O.)
Introducción 1 Puntos Clave –La orientación a objetos representa un cambio radical en los métodos tradicionales de creación de software –Los métodos tradicionales.
Tipos de Datos Abstractos Modularidad
POO Santiago, Mayo 2004 TRABAJO DE INVESTIGACIÓN POO Programación Orientada a Objetos CENAFOM Carolina Bravo V. Jaime Jofré B.
Tipo de Dato Abstracto Tipos de datos:
GENERACIONES DE LENGUAJES DE PROGRAMACIÓN
UNIVERSIDAD LATINA (UNILA) ENCAPSULACION Y HERENCIA
Aplicación del paradigma orientado a objetos
PROGRAMACION ORIENTADA
UNIDAD I. INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS EN JAVA.
Programación orientada a objetos Rosemary Torrico Bascopé.
METODOLOGIA DE LA PROGRAMACION
HERENCIA.
El paradigma de la orientación a objetos La programación orientada a objetos genera códigos eficientes y estandariza la metodología de programación, además.
UNIVERSIDAD TECNOLÓGICA DE HERMOSILLO T.S.U. EN T.I.C., Área: Sistemas Informáticos Ing. José Padilla Duarte y estudiantes de Sistemas Informáticos Hermosillo,
PROGRAMACIÓN ORIENTADA A OBJETOS
Fundamentos de Programación
Material Original de Microsoft para desarrolladores adaptado por Jorge Miguel PERALTA para clases de Informática Aplicada (Haga clic para adelantar/atrasar.
 El termino OO, significa que el software es organizado como una colección de objetos. Un objeto es un paquete de software que contiene datos y procedimientos.
Introducción a la programación Orientada a objetos
 2003 Prentice Hall, Inc. All rights reserved. 1 Capítulo 6: Clases y Abstracción de Datos Índice del capítulo 6.1 Introducción 6.2 Estructuras 6.3 Clases.
UNIDAD I Conceptos Básicos.
Semana 5 Subprogramas..
Ingeniería de Software
Programación Orientada a Aspectos (POA)
Introducción a los tipos de datos abstractos
Fundamentos de Programación
Introducción a la POO • ¿Qué es la programación orientada a objets (POO)? – Un “paradigma” de programación – Una forma de pensar acerca de los problemas.
Contenido: 1- Que es el .Net Framework 2- Arquitectura en .Net
Programación Orientada a Objetos
Programación Orientada Objetos
Métricas Técnicas para Sistemas Orientados a Objeto
Sara Isabel Osorio Alacraz Ana Isabel Vallejo Grisales
INSTITUTO TECNOLOGICO DE MINATITLAN ASIGNATURA: FUNDAMENTOS DE PROGRAMACION DOCENTE: JOSE ANGEL TOLEDO ALVAREZ ALUMNA: ALEJANDRA OSORIO ARVISU SEMESTRE:
Programación Orientada a Objetos (P.O.O.)
Facultad de Ingeniería
Programación Orientada a Objeto
PROGRAMACION ORIENTADA A OBJETOS
Metodología de la programación
POO U1: INTRODUCCIÓN AL PARADIGMA DE LA PROGRAMACIÓN ORIENTADA A OBJETOS.
Ing. Esp. Ricardo Cujar. Programación Orientada a Objetos  Modelo de desarrollo de software.  Modo de pensar del hombre y no de la máquina.  Abstracción.
Programación orientada a objetos
Universidad Tecnológica de Izúcar de Matamoros Programa Educativo: Tecnologías de la Información Asignatura: Base de datos para aplicaciones Tema: Base.
PROGRAMACIÓN IV INTRODUCCIÓN.
Ing. Johanna Macias Algoritmo, Estructura y Programación III.
Tipo de relación entre clases Es uno de los aspectos que distinguen el paradigma de orientación a objetos frente a otros paradigmas. Mecanismo que,
UNIVERSIDAD TECNOLÓGICA DE IZÚCAR DE MATAMOROS TECNOLOGÍAS DE LA INFORMACION Y COMUNICACIÓN BASE DE DATOS PARA APLICACIONES MTRO. GONZALO ROSAS CABRERA.
Acceso a Datos Erick López Ovando Licenciado en Informática.
Programación orientada a objetos
Programación Orientada a Objetos: CLASES Y OBJETOS
Programación Orientada Objetos
La Programación Orientado a Objetos
Introducción AOO. Contenido - Introducción - Repaso de Orientación a Objetos - UML - Casos de Uso.
Paradigma Orientado a Objetos
Herencias Conceptos básicos i
Programación orientada a objetos La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos.
Programación Orientada a Objetos Unidad 5. Los objetos son entidades que combinan estado Contiene toda la información denominados atributos REPASO Cada.
1 Introducción a la Programación Orientada a Objetos Programación Orientada a Objetos Departamento de Sistemas Universidad del Cauca 2006.
Presentación De UML Lenguaje estándar para escribir planos de software Se usa para visualizar, especificar, construir y documentar los artefactos de un.
PARADIGMA viene del Griego Paradeima = Modelo. Un paradigma es el resultado de los usos, y costumbres, de creencias establecidas de verdades a medias,
Métodos en Java. Estructura de un programa en Java ► La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases.
Programación I Clases. Paradigma POO La programación Orientada a objetos (POO) es una forma programar, más cercana a como expresaríamos las cosas en la.
PROGRAMACION ORIENTADA A OBJETOS
Transcripción de la presentación:

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII2 Historia êCrisis del software êSistemas ambiciosos y caros êCalidad insuficiente êDifíciles de planear êCasi imposibles de manejar êMayor capacidad de hardware (reutilización) êEl software se ha quedado atrás

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII3 Revolución del software “La ciencia no progresa de forma continua, expandiendo gradualmente un paradigma ya establecido; avanza en una serie de cataclismos revolucionarios. El descubrimiento de deficiencias insalvables en un paradigma establecido produce una crisis, que puede dar lugar a una revolución en la cual el paradigma establecido es derrocado y sustituido.” Thomas Kuhn

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII4 Revolución del software Programación en ensamblador Dificultad en recordar toda la información que necesitaban conocer para desarrollar o corregir su software. –¿Qué valor tienen las variables? –¿La declaración de un nuevo identificador generará un conflicto con identificadores previamente creados? –¿Qué variables es necesario inicializar?.

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII5 Revolución del software La generación de lenguajes de alto nivel como FORTRAN, COBOL y ALGOL, solucionaron muchos de los problemas mientras se generaban nuevos problemas, más complejos y que requerían de mayor esfuerzo humano en cantidad y tiempo.

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII6 Revolución del software Los sistemas se hacían cada vez más complejos y el software era difícil de reutilizar. Además, el mantenimiento de estos sistemas era una tarea muy costosa en tiempo y dinero.

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII7 Así, surgió un nuevo paradigma basado en el producto, en el cual el progreso se mide, principalmente, por la agregación de componentes estándar, intercambiables y reutilizables, y sólo secundariamente por el avance de los procesos que se emplean para construirlo Programación orientada a objetos

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII8 Programación orientada a objetos êBasada en el Diseño recursivo êDefinir nuevas estructuras a partir de otras ya existentes êNoción de objeto: conjunto de localidades de memoria junto con las operaciones que pueden cambiar los valores de las mismas êClases: conjunto de objetos con las mismas propiedades êUn objeto: instancia de una clase

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII9 Mecanismos de Abstracción Los programadores se han enfrentado al problema de complejidad por largo tiempo en la historia de la ciencia de la computación. Para entender mejor la importancia de las técnicas orientadas a objetos, debemos explicar algunos de los mecanismos que se utilizan para controlar la complejidad.

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII10 Mecanismos de Abstracción Abstracción: la capacidad de encapsular y aislar información. De alguna forma las técnicas orientadas a objetos pueden considerarse como un resultado natural de progreso desde procedimientos, a módulos, a tipos de datos abstractos y objetos.

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII11 Mecanismos de Abstracción Procedimientos –Repetir tareas reutilizando código –Ocultamiento de información Módulos –Resuelve Information Hidding (parte pública y privada) –Instanciar nuevas estructuras NO

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII12 Mecanismos de Abstracción Tipos de datos abstractos (TAD - TDA) –Estructura Algebraica compuesta por un conjunto de objetos abstractos, que modelan elementos del mundo, y un conjunto de operaciones para su manipulación, que modelan el comportamiento real del objeto en el mundo. –TAD (Nombre, Formalismo, Invariante, operaciones(constructoras, modificadoras y analizadoras, adicionales(comparación, copia, destrucción, salida, persistencia))).

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII13 Mecanismos de Abstracción Tipos de datos abstractos - Estructuras de Datos –Tipo de dato definido por el usuario que puede manipularse como dato del sistema (datos y operaciones sobre éstos). –Para crearlos: Exportar una definición de tipo Definir operaciones Proteger los datos Realizar múltiples instancias

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII14 Mecanismos de abstracción Un TAD = Datos + Algoritmos. Programa = TAD + Interfaz. Un objeto es un tipo de dato abstracto como estructura de datos junto con las siguientes características –Código compartido –Reusabilidad

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII15 Programación orientada a objetos Lenguajes OO años 60´s con el proyecto SIMULA Diseñar un lenguaje de programación que hiciera de Algol60 una forma de desarrollar simulaciones del mundo real en la computadora

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII16 Programación orientada a objetos Incorporar al lenguaje la noción de un objeto, que es una entidad con ciertas propiedades, y con la capacidad de reaccionar a ciertos eventos. Programa: conjunto de objetos, que pueden cambiar dinámicamente y que actúan y reaccionan unos con otros, de manera similar a los procesos del mundo real.

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII17 Programación orientada a objetos Simula67 Smalltalk-80. Primer lenguaje OO OO se convirtió en la expresión de moda –incrementar productividad –mejorar confiabilidad –disminuir huecos –reducir deuda nacional

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII18 Programación orientada a objetos A pesar de que la POO tiene muchos beneficios, programar requiere de: –Talento, creatividad, inteligencia, lógica, habilidad para abstraer y experiencia.

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII19 Programación orientada a objetos Conocer C no necesariamente ayuda a C++ Nueva forma de pensar en cómo realizar cálculos Envío de mensajes entre objetos Ocultamiento de información –Si la representación de los datos debe cambiar o si hay un error en su manejo, sólo se modifican las funciones miembro, no el programa del usuario

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII20 Programación orientada a objetos Late binding (vinculación estática/dinámica) –Polimorfismo El objeto que envía el mensaje desconoce los mecanismos por medio de los cuales se responderá al mismo Clases e instancias Herencia (subclases y superclases) Override y Method Binding

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII21

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII22 Programación orientada a objetos Lenguaje Orientado a Objetos –Abstracción –Polimorfismo –Herencia –Encapsulamiento

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII23 Organización de la Información LPOO Nombres de variables Miembro Variables de clase y nombres Funciones y miembro Punteros a clases base A clases base De clases derivadas Puntero a clase Variables Miembro Puntero a clase Variables Miembro...

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII24 Programación orientada a objetos Es un método de implementación en el que los programas se organizan como un conjunto de objetos cooperativos, cada uno de los cuales representa una instancia de alguna clase, y cuyas clases son miembros de una jerarquía de clases unidas por relaciones de herencia.

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII25 Programación orientada a objetos Un programa puede parecer orientado a objetos pero si no cumple alguno de los puntos anteriores, no lo es. Específicamente, programar sin herencia se conoce como programar con tipos de datos abstractos y no orientado a objetos.

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII26 Programación orientada a objetos Objeto: Es una abstracción de algo en el dominio de un problema o su implementación, que refleja la capacidad de un sistema para guardar información sobre sí mismo e interactuar. Una encapsulación de los valores de un atributo y de sus procedimientos. (Sinónimo: Una instancia).

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII27 Programación orientada a objetos Clase: Una descripción de uno o más objetos, descritos por un conjunto uniforme de atributos y procedimientos; además, puede describir cómo crear nuevos objetos en la clase.

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII28 Programación orientada a objetos Abstracción: El principio de ignorar aquellos aspectos de un sujeto que no son relevantes para el propósito principal, con el fin de tener más concentración en aquellos aspectos que sí son importantes.

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII29 Programación orientada a objetos Abstracción de datos: El principio de definir un tipo de datos en términos de las operaciones que se aplican a los objetos de ese tipo, con la restricción de que los valores de esos objetos pueden ser modificados u observados únicamente utilizando esas operaciones.

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII30 Programación orientada a objetos En C, como en otros lenguajes de programación procedural, la programación tiende a ser orientada a acciones. En C++ la programación es orientada a objetos. En C, la unidad de programación es la función y en C++ la unidad de programación es la clase de la cual pueden instanciarse objetos (crearse).

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII31 Estructuras Las clases en C++ son una evolución natural de las estructuras en C (struct). Una estructura es una colección de una o más variables, de tipos posiblemente diferentes, agrupadas bajo un solo nombre para manejo conveniente.

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII32 Estructuras Las estructuras ayudan a organizar datos complicados debido a que permiten que a un grupo de variables relacionadas se les trate como una unidad en lugar de como entidades separadas.

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII33 Estructuras struct Time { int hour; int minute; int second; };

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII34 Estructuras Una estructura NO reserva espacio en memoria, únicamente crea un nuevo tipo de dato que se utiliza para declarar variables. Las variables tipo estructura se declaran como cualquier otra: Time timeObject, timeArray[10], *timePtr;

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII35 Estructuras Los miembros de una estructura pueden accederse utilizando los operadores de membresía (. y ->). El punto (.) accede un elemento de la estructura por medio de una referencia al objeto. Por ejemplo: timeObject.hour timeArray[5].hour

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII36 Estructuras La flecha (->) accede un elemento de la estructura por medio de un apuntador a dicho objeto. timePtr = &timeObject timePtr->hour;

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII37 Clases Las clases permiten al programador modelar objetos que tienen atributos y operaciones. Las funciones miembro se conocen como métodos y son llamados en respuesta a mensajes enviados a un objeto

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII38 Clases class Time { public: Time( ); void setTime (int, int, int); void printMilitary ( ); void printStandard ( ); private: int hour, minute, second; };

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII39 Ejemplos // Programa 1. Crea una estructura, actualiza sus elementos y los imprime #include struct Time { int hour; int minute; int second; }; void printMilitary (const Time &); void printStandard (const Time &);

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII40 void main ( ) { Time dinnerTime; dinnerTime.hour = 18; dinnerTime.minute = 30; dinnerTime.second = 0; cout << "La cena se servirá a las "; printMilitary (dinnerTime);cout << "tiempo militar, " << endl << " que es "; printStandard (dinnerTime); cout << "tiempo estándar." << endl; Ejemplos

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII41 dinnerTime.hour = 29;// Colocando valores inválidos dinnerTime.minute = 73; dinnerTime.second = 103; cout << endl << "La hora con valores inválidos : "; printMilitary (dinnerTime); } void printMilitary (Time &t){// Imprime la hora en formato militar cout << (t.hour < 10 ? "0" : "") << t.hour << ":" << (t.minute < 10 ? "0" : "") << t.minute << ":" << (t.second < 10 ? "0" : "") << t.second; } Ejemplos

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII42 void printStandard (Time &t) { // Imprime la hora en formato estándar cout << ((t.hour == 0 || t.hour == 12) ? 12 : t.hour % 12) << ":" << (t.minute < 10 ? "0" : "") << t.minute << ":" << (t.second < 10 ? "0" : "") << t.second << (t.hour < 12 ? " AM" : " PM"); } Ejemplos

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII43 // Programa 2. Time class. #include class Time { public: Time( ); void setTime(int, int, int); void printMilitary(); void printStandard(); private: int hour, minute, second; }; Time::Time( ) { hour = minute = second = 0; } void Time::setTime(int h, int m, int s) { hour = ( h >= 0 && h < 24) ? h : 0; minute = ( m => 0 && m < 60 ) ? m : 0; second = ( s >= 0 && s < 60 ) ? s : 0; } void Time::printMilitary( ) { cout << ( hour < 10 ? "0" : "" ) << hour << ":" << ( minute < 10 ? "0" : "" ) << minute << ":" << ( second < 10 ? "0" : "" ) << second; } void Time::printStandard( ) { cout << (( hour == 0 || hour == 12) ? 12 : hour % 12) << ":" << ( minute < 10 ? "0" : "") << minute << ":" << ( second < 10 ? "0" : "") << second << ( hour < 12 ? " AM" : " PM"); } void main( ) { Time t; cout << "La hora inicial en formato militar es "; t.printMilitary( ); cout << endl << "La hora inicial en formato estándar es "; t.printStandard( ); t.setTime(13, 27, 6); cout << endl << endl << "La hora cambiada en formato militar es "; t.printMilitary( ); cout << endl << "La hora cambiada en formato estándar es "; t.printStandard( ); t.setTime(99, 99, 99); cout << endl << endl << "Después de intentar inicializar la hora con valores" << "inválidos:"<< endl << "En formato militar: "; t.printMilitary( ); cout << endl << "En formato estándar: "; t.printStandard( ); cout << endl; } // Programa 38. Ejemplo de constructores y destructores #include // Definición de la clase CreateandDestroy en la librería de usuario Create.h class CreateandDestroy {public:CreateandDestroy (int); ~CreateandDestroy ( ); private: int data; }; CreateandDestroy::CreateandDestroy (int value){ data = value; cout << "Object " << data << "constructor"; } CreateandDestroy::~CreateandDestroy ( ){ cout << "Object " << data << "destructor"; } Ejemplos

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII44 Time::Time( ) { hour = minute = second = 0; } void Time::setTime(int h, int m, int s) { hour = ( h >= 0 && h < 24) ? h : 0; minute = ( m => 0 && m < 60 ) ? m : 0; second = ( s >= 0 && s < 60 ) ? s : 0; } void Time::printMilitary( ) { cout << ( hour < 10 ? "0" : "" ) << hour << ":" << ( minute < 10 ? "0" : "" ) << minute << ":" << ( second < 10 ? "0" : "" ) << second; } Ejemplos

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII45 void Time::printStandard( ) { cout << (( hour == 0 || hour == 12) ? 12 : hour % 12) << ":" << ( minute < 10 ? "0" : "") << minute << ":" << ( second < 10 ? "0" : "") << second << ( hour < 12 ? " AM" : " PM"); } void main( ) { Time t; cout << "La hora inicial en formato militar es "; t.printMilitary( ); Ejemplos

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII46 Ejemplos cout << endl << "La hora inicial en formato estándar es "; t.printStandard( ); t.setTime(13, 27, 6); cout << endl << endl << "La hora cambiada en formato militar es "; t.printMilitary( ); cout << endl << "La hora cambiada en formato estándar es "; t.printStandard( ); t.setTime(99, 99, 99); cout << endl << endl << "Después de intentar inicializar la hora con valores" << "inválidos:"<< endl << "En formato militar: "; t.printMilitary( ); cout << endl << "En formato estándar: "; t.printStandard( ); cout << endl; }

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII47 Constructor y destructor Si no existe el constructor en la definición de una clase, el compilador genera uno por default pero no realiza ninguna inicialización; así que, cuando se crea un objeto no hay garantía de que esté en un estado consistente.

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII48 Constructor y destructor El destructor se llama con una tilde (~) y es el complemento del constructor. Se manda llamar cuando un objeto es destruido (cuando la ejecución de un programa deja el alcance en al cuál el objeto de una clase fue instanciado. ej. recordar Reglas de alcance).

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII49 Constructor y destructor Sin embargo, físicamente el destructor no destruye al objeto sino que lo deja de proteger de las reclamaciones de memoria por parte del sistema. Un destructor no recibe parámetros ni regresa algún valor.

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII50 Constructor y destructor Los constructores y destructores se llaman automáticamente. El orden en el que se llaman depende del momento en el que se instancían estos objetos en la ejecución.

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII51 Ejemplos // Programa 3. Ejemplo de constructores y destructores #include // Definición de la clase CreateandDestroy en la librería de usuario Create.h class CreateandDestroy {public:CreateandDestroy (int); ~CreateandDestroy ( ); private: int data; }; CreateandDestroy::CreateandDestroy (int value){ data = value; cout << "Object " << data << "constructor"; } CreateandDestroy::~CreateandDestroy ( ){ cout << "Object " << data << "destructor"; }

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII52 Ejemplos // Programa 4.Ejemplo de constructores y destructores // Utiliza la librería de usuario previa (Create.h) #include CreateandDestroy uno(1); void create (void) { CreateandDestroy cinco (5); cout << "local automático en función create"; static CreateandDestroy seis (6); cout << "local estático en función create"; CreateandDestroy siete (7); cout << "local automático en función create"; }

UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII53 Ejemplos void main (void) { cout << "global creado antes del main"; CreateandDestroy dos (2); cout << "local automático en el main"; static CreateandDestroy tres (3); cout << "local estático en el main"; create( ); CreateandDestroy cuatro (4); cout << "local automático en el main"; }