![Page 1: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/1.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
1
Programación Orientada a Objetos
Repaso
![Page 2: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/2.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
2
Historia
Crisis del softwareSistemas ambiciosos y carosCalidad insuficienteDifíciles de planearCasi imposibles de manejar
Mayor capacidad de hardware (reutilización)El software se ha quedado atrás
![Page 3: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/3.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
3
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
![Page 4: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/4.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
4
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?.
![Page 5: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/5.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
5
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.
![Page 6: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/6.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
6
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.
![Page 7: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/7.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
7
• 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 objetosProgramación orientada a objetos
![Page 8: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/8.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
8
Programación orientada a objetos
Basada en el Diseño recursivoDefinir nuevas estructuras a partir de otras ya
existentesNoció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
![Page 9: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/9.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
9
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.
![Page 10: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/10.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
10
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.
![Page 11: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/11.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
11
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
NO
![Page 12: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/12.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
12
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))).
![Page 13: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/13.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
13
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
![Page 14: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/14.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
14
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
![Page 15: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/15.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
15
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
![Page 16: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/16.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
16
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.
![Page 17: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/17.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
17
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
![Page 18: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/18.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
18
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.
![Page 19: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/19.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
19
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
![Page 20: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/20.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
20
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
![Page 21: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/21.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
21
![Page 22: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/22.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
22
Programación orientada a objetos
• Lenguaje Orientado a Objetos
– Abstracción
– Polimorfismo
– Herencia
– Encapsulamiento
![Page 23: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/23.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
23
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 clasesderivadas
Puntero a clase
Variables Miembro
Puntero a clase
Variables Miembro...
![Page 24: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/24.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
24
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.
![Page 25: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/25.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
25
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.
![Page 26: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/26.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
26
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).
![Page 27: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/27.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
27
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.
![Page 28: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/28.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
28
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.
![Page 29: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/29.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
29
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.
![Page 30: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/30.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
30
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).
![Page 31: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/31.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
31
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.
![Page 32: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/32.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
32
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.
![Page 33: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/33.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
33
Estructuras
struct Time {
int hour;
int minute;
int second;
};
![Page 34: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/34.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
34
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;
![Page 35: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/35.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
35
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
![Page 36: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/36.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
36
Estructuras
• La flecha (->) accede un elemento de la estructura por medio de un apuntador a dicho objeto.
timePtr = &timeObject
timePtr->hour;
![Page 37: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/37.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
37
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
![Page 38: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/38.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
38
Clasesclass Time {
public:
Time( );
void setTime (int, int, int);
void printMilitary ( );
void printStandard ( );
private:
int hour, minute, second;
};
![Page 39: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/39.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
39
Ejemplos
// Programa 1. Crea una estructura, actualiza sus elementos y los imprime
#include <iostream.h>
struct Time {
int hour;
int minute;
int second;
};
void printMilitary (const Time &);
void printStandard (const Time &);
![Page 40: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/40.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
40
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
![Page 41: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/41.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
41
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
![Page 42: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/42.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
42
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
![Page 43: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/43.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
43
// Programa 2. Time class.
#include <iostream.h>
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 <iostream.h>
// 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
![Page 44: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/44.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
44
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
![Page 45: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/45.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
45
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
![Page 46: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/46.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
46
Ejemploscout << 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;
}
![Page 47: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/47.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
47
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.
![Page 48: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/48.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
48
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).
![Page 49: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/49.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
49
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.
![Page 50: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/50.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
50
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.
![Page 51: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/51.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
51
Ejemplos // Programa 3. Ejemplo de constructores y destructores
#include <iostream.h>
// 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";
}
![Page 52: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/52.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
52
Ejemplos// Programa 4. Ejemplo de constructores y destructores
// Utiliza la librería de usuario previa (Create.h)
#include <Create.h>
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";
}
![Page 53: UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII1 Programación Orientada a Objetos Repaso](https://reader035.vdocuments.pub/reader035/viewer/2022062807/5665b4441a28abb57c908fc0/html5/thumbnails/53.jpg)
UNIVERSIDAD DEL CAUCA - PIS Ing. Miguel Angel Niño Zambrano EDII
53
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";
}