Programación II POO en C++ | Introducción
Programación Orientada a Objetos (POO)
• Descompone un problema en subgrupos
• Cada subgrupo es un objeto autocontenido (datos y
acciones sobre los datos)
• Encapsulamiento, Polimorfismo y Herencia
Basado en:
• Petit, J., Roura, S. y Atserias, A. Anàlisi i Disseny d’Algorismes (ADA). FIB-UPC. 2005.
• Schildt, H. C++ Guía de autoenseñanza. Osborne McGraw-Hill. 1995. Liliana Félix
Programación II POO en C++ | Introducción
C++
• Es un lenguaje orientado a objetos
• Es un superconjunto de C
Liliana Félix
Programación II POO en C++ | Introducción
C++
• La E/S por consola se realiza incluyendo el archivo de
cabecera iostream y utilizando operadores
Entrada Salida
Operador >> <<
Sintaxis cin>>variable; cout<<expresion;
No requiere indicar el tipo
de dato a manipular
Liliana Félix
Programación II POO en C++ | Introducción
C++
• Un namespace es un entorno para identificadores
• Los identificadores de la librería estándar están definidos en
un namespace llamado std
• Usos std::cout << “Hola Mundo” << std::endl;
using std::cout;
using std::endl;
cout << “Hola Mundo” << endl;
using namespace std;
cout << “Hola Mundo” << endl;
Liliana Félix
Programación II POO en C++ | Introducción
Clase
• Es un concepto extendido de una estructura (struct)
• Una clase contiene miembros y comportamiento
(métodos)
class CCuadrado {
double l; //lado
void lado(double);
double area();
};
Basado en:
• Stroustrup, B. The C++ Programming Language. Addison-Wesley. 1997.
• Schildt, H. C++ Guía de autoenseñanza. Osborne McGraw-Hill. 1995.
• Josuttis, N. M. The C++ Standard Library. A tutorial and reference. Addison-Wesley. 1999.
• C++ Language Tutorial at [Link] Liliana Félix
Programación II POO en C++ | Introducción
Objeto
• Es una instancia de una clase
• clase=tipo de dato class CCuadrado {
double l;
• objeto=variable
void lado(double);
double area();
int main () {
};
CCuadrado c;
return 0;
}
Liliana Félix
Programación II POO en C++ | Introducción
Encapsulamiento
• Modifican los derechos de acceso a los miembros
accesible sólo desde dentro de otros miembros de la
• private
misma clase
accesible desde los miembros de su misma clase y
• protected también de los miembros de sus clases derivadas
accesible desde cualquier lugar donde el objeto es
• public visible
• Todos los miembros de una clase tienen, por omisión,
acceso private
Liliana Félix
Programación II POO en C++ | Introducción
Encapsulamiento
class CCuadrado {
private: accesible sólo desde dentro de otros
double l;
miembros de la misma clase
public:
void lado(double); public: accesible desde cualquier lugar
double area(); donde el objeto es visible
};
int main() {
CCuadrado c;
return 0; void lado(double);
} double area();
Liliana Félix
Programación II POO en C++ | Introducción
Encapsulamiento
class CCuadrado {
double l; miembro privado
public:
void lado(double);
double area(); miembros públicos
};
int main() {
CCuadrado c;
X
return 0; void lado(double);
} double area();
double l;
Liliana Félix
Programación II POO en C++ | Introducción
Encapsulamiento
int main() {
CCuadrado c;
#include <iostream>
[Link](3);
using namespace std; cout << "area: ";
cout << [Link]() << endl;
class CCuadrado { return 0;
double l; }
public:
void lado(double);
double area() {return (l*l);}
};
void CCuadrado::lado(double a) {
l = a;
return;
}
Liliana Félix
Programación II POO en C++ | Introducción
Encapsulamiento
int main() {
CCuadrado c;
#include <iostream>
[Link](3);
using namespace std; cout << "area: ";
acceso a miembros cout << [Link]() << endl;
class CCuadrado { return 0;
double lado; }
public:
void lado(double);
double area() {return (l*l);}
}; Función miembro inline
void CCuadrado::lado(double a) {
l = a;
return; Operador de entorno, especifica la
} clase a la que pertenece el miembro
que se define
Liliana Félix
Programación II POO en C++ | Introducción
Método
• Define el comportamiento de una clase
• Este comportamiento se lleva a cabo a través de mensajes
class CCuadrado {
double l; int main() {
public: CCuadrado c;
void lado(double);
double area() {return (l*l);} [Link](3);
}; cout << "area: ";
cout << [Link]() << endl;
void CCuadrado::lado(double a) { return 0;
l = a; }
return;
}
Liliana Félix
Programación II POO en C++ | Introducción
Método
• Define el comportamiento de una clase
• Este comportamiento se lleva a cabo a través de mensajes
class CCuadrado {
double lado; int main() {
public: CCuadrado c;
void lado(double);
double area() {return (l*l);} [Link](3);
}; cout << "area: ";
cout << [Link]() << endl;
void CCuadrado::lado(double a) { return 0;
l = a; }
return;
} Comportamiento
Liliana Félix
Programación II POO en C++ | Introducción
Método
• Define el comportamiento de una clase
• Este comportamiento se lleva a cabo a través de mensajes
class CCuadrado {
double lado; int main() {
public: CCuadrado c;
void lado(double);
double area() {return (l*l);} [Link](3);
}; cout << "area: ";
cout << [Link]() << endl;
void CCuadrado::lado(double a) { return 0;
l = a; } Mensaje
return;
}
Liliana Félix
Programación II POO en C++ | Introducción
Método
• Define el comportamiento de una clase
• Este comportamiento se lleva a cabo a través de mensajes
class CCuadrado {
double lado; int main() {
public: CCuadrado c;
void lado(double);
double area() {return (l*l);} [Link](3);
}; cout << "area: ";
cout << [Link]() << endl;
void CCuadrado::lado(double a) { return 0;
l = a; } Mensaje
return;
} Comportamiento
Liliana Félix
Programación II POO en C++ | Introducción
Constructores
• Previenen comportamientos inesperados
• Se asigna uno por omisión sin argumentos
• Se ejecutan automáticamente
• Pueden ser sobrecargados
Liliana Félix
Programación II POO en C++ | Introducción
Constructores
class CCuadrado { int main() {
double lado; CCuadrado c(5);
public:
CCuadrado(double); cout << "area: ";
cout << [Link]() << endl;
}; El constructor se nombra igual que return 0;
su clase y no tiene tipo asociado }
CCuadrado::CCuadrado(double a) {
l = a;
}
Liliana Félix
Programación II POO en C++ | Introducción
Constructores
class CCuadrado { int main() {
double lado; CCuadrado c(5);
public: Ejecución automática
CCuadrado(double); cout << "area: ";
double area() {return (l*l);} cout << [Link]() << endl;
}; return 0;
}
CCuadrado::CCuadrado(double a) {
l = a;
} Constructor
Liliana Félix
Programación II POO en C++ | Introducción
Sobrecarga de Constructores
• Cuando se define un constructor propio, queda inhabilitado
el constructor por omisión
class CCuadrado {
double lado;
public: int main() {
CCuadrado(double) {l = a;} CCuadrado c1(5);
CCuadrado c2;
};
return 0;
}
Liliana Félix
Programación II POO en C++ | Introducción
Sobrecarga de Constructores
• Cuando se define un constructor propio, queda inhabilitado
el constructor por omisión
class CCuadrado {
double lado;
public: int main() {
CCuadrado(double) {l = a;} CCuadrado c1(5);
CCuadrado() {l=0;} CCuadrado c2;
};
return 0;
}
Liliana Félix
Programación II POO en C++ | Introducción
Destructores
• Se ejecutan automáticamente cuando
• el ámbito de un objeto ha terminado
• un objeto asignado dinámicamente se ha liberado
utilizando el operador delete
Liliana Félix