La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Programación Orientada a Objetos

Presentaciones similares


Presentación del tema: "Programación Orientada a Objetos"— Transcripción de la presentación:

1 Programación Orientada a Objetos
Plantillas Programación Orientada a Objetos

2 Introducción Las plantillas son el mecanismo de C++ para implantar el paradigma de la programación genérica. Permiten que una clase o función trabaje con tipos de datos abstractos, especificándose más adelante cuales son los que se quieren usar. Por ejemplo, es posible construir un vector genérico que pueda contener cualquier tipo de estructura de datos. De esta forma se pueden declarar objetos de la clase de este vector que contengan enteros, flotantes, polígonos, figuras, fichas de personal, etc.

3 Cuando usar plantillas
El uso de plantillas es apropiado para definir contenedores, es decir estructuras que sirven para almacenar una colección de objetos (una lista, un vector, un grafo…) Las plantillas también son apropiadas para definir algoritmos genéricos que se aplican a una familia de clase. Por ejemplo, es interesante codificar un algoritmo del camino mas corto, independientemente de la estructura del grafo. El uso de un functor puede ser apropiado para acceder a los pesos instalados sobre los arcos del grafo en este caso. La clase de grafo pasada como parámetro debe cumplir un cierto número de pre-requisitos para que el algoritmo pueda ser aplicado. Si no, el programa no compilará

4 Plantillas de funciones
Una plantilla de función es una especial que puede ser operada con tipos genéricos. Esto permite crear una plantilla de función cuya funcionalidad puede ser adaptada para más de un tipo o clase sin repetir el código entero para cada tipo o clase. Esto puede lograrse usando parámetros de plantilla que es un tipo de parámetro para pasar un tipo como parámetro. La forma generar para declarar plantillas de funciones es: template <class identifier> function_declaration; template <typename identifier> function_declaration;

5 Ejemplo La siguiente función regresa el mayos de dos valores:
template <class myType> myType GetMax (myType a, myType b) { return (a>b?a:b); } Se crea una función con mytype como su parámetro deplantilla. Podemos llamar a GetMax para comparar dos valores enteros de la siguiente manera: int x,y; GetMax <int> (x,y);

6 // function template #include <iostream> using namespace std; template <class T> T GetMax (T a, T b) { T result; result = (a>b)? a : b; return (result); } int main () { int i=5, j=6, k; long l=10, m=5, n; k=GetMax<int>(i,j); n=GetMax<long>(l,m); cout << k << endl; cout << n << endl; system("pause"); return 0;

7 Más de un parámetro Se puede tener más de un tipo como parámetro en una plantilla. template <class T, class U> T GetMin (T a, U b) { return (a<b?a:b); } Podría usarse en el siguiente código: int i,j; long l; i = GetMin<int,long> (j,l);

8 Ejemplo de una tabla genérica
Archivos: TablaT, TablaT2, punto.dev

9 Plantilla por defecto También es posible precisar un parámetro de plantilla por defecto del mismo modo que con un parámetro de función. Por ejemplo: template<typename T = int> class my_vector_t{ //... }; int main(){ my_vector<> v; // un vector de int return 0; }

10 Espacios de nombres Una adición a las características de C son los espacios de nombre (namespace en inglés), los cuales pueden describirse como áreas virtuales bajo las cuales ciertos nombres de variable o tipos tienen validez. Esto permite evitar las ocurrencias de conflictos entre nombres de funciones, variables o clases. El ejemplo más conocido en C++ es el espacio de nombres std::, el cual almacena todas las definiciones nuevas en C++ que difieren de C (algunas estructuras y funciones), así como las funcionalidades propias de C++ (streams) y los componentes de la biblioteca STL.


Descargar ppt "Programación Orientada a Objetos"

Presentaciones similares


Anuncios Google