Академический Документы
Профессиональный Документы
Культура Документы
Templates (Plantillas)
Una de las ideas clave en el mundo de la programacin es la posibilidad de
disear clases y funciones que acten sobre tipos arbitrarios o genricos. Para
definir clases y funciones que operan sobre tipos arbitrarios se definen los tipos
parametrizados o tipos genricos. La mayora de los lenguajes de
programacin orientados a objetos proporcionan soporte para la generacidad:
las unidades genricas en Ada, las plantillas (templates) en C++.
Las plantillas o tipos parametrizados se pueden utilizar para implementar
estructuras y algoritmos que son en su mayora independientes del tipo de
objetos sobre los que operan. Por ejemplo, una plantilla Pila puede describir
como implementar una pila de objetos arbitrarios, una vez que la plantilla se ha
definido, los usuarios pueden escribir el cdigo que utiliza pila de tipos de
datos reales, cadenas, enteros, apuntadores, etctera.
Las plantillas fueron propuestas por Stroustrup en la conferencia de Usenix C+
+ de Denver, en 1988. En esa ocasin planteo las siguientes preguntas:
tales como pila, listas enlazadas, etc., que solo deben ser implementadas una
vez.
Una plantilla de funciones especifica un conjunto infinito de funciones
sobrecargadas. Cada funcin de este conjunto es una funcin plantilla y una
instancia de la plantilla de funcin. Una funcin plantilla apropiada se produce
automticamente por el compilador cuando es necesario.
Ventajas
La mayor ventaja de las plantillas es la genericidad.
La genericidad es una propiedad que permite definir una clase sin especificar el
tipo de datos de uno o ms de sus miembros (parmetros). De esta forma, se
puede cambiar la clase para adaptarla a los diferentes usos sin tener que
rescribirla. La razn de la genericidad se basa principalmente en el hecho de
que los algoritmo de resolucin de numerosos problemas no depende del tipo
de dato que procesa y, sin embargo, cuando se implementas en un lenguaje de
programacin, los programas que resuelven cada algoritmo sern diferentes
para cada tipo de dato que procesan. Por ejemplo, un algoritmo que
implementa una pila de caracteres es esencialmente el mismo que el algoritmo
necesario para implementar una pila de enteros o de cualquier otro tipo.
Implementacin
La sintaxis de una plantilla de funciones tiene dos formatos, segn se utiliza la
palabra reservada class o typename. Ambos formatos se pueden utilizar: class
es el formato clsico t que incorpora todos los compiladores y typename es el
formado introducido por el estndar ANSI/ISO C++para utilizar en lugar de
class.
Plantilla de funcin: Es parecida a cualquier otra funcin solo que se le aade al
principio una presentacin de la clase que se usara como referencial de la
plantilla.
template <class|typename <id>[,...]>
<tipo_retorno> <identificador>(<lista_de_parmetros>)
{
// Declaracin de funcin
};
Ejemplo:
#include <iostream>
using namespace std;
template <class T>
void intercambio(T& v1, T&v2)
{
T aux;
aux=v1;
v1=v2;
v2=aux;
}
int main(){
int numero1=5;
int numero2=8;
cout<<endl;
cout<<" UTILIZANDO TIPO ENTERO"<<endl;
cout<<"Los valores originales son: "<<numero1<<" y "<<numero2<<endl;
intercambio(numero1,numero2);
cout<<"Los nuevos valores son: "<<numero1<<" y "<<numero2<<endl;
cout<<endl;
cout<<"______________________________________"<<endl;
cout<<endl;
cout<<" UTILIZANDO TIPO CARACTER"<<endl;
char car1='L';
char car2='J';
cout<<"Las letras originales son: "<<car1<<" y "<<car2<<endl;
intercambio(car1,car2);
cout<<"Las nuevas letras son: "<<car1<<" y "<<car2<<endl;
cout<<endl;
system("pause");
return 0;
Bibliografa: Joyantes Aguilar, Luis, Programacin en C, C++, JAVA y UML, 2010,
p. 613