plantillas en c
Post on 08-Jan-2016
32 Views
Preview:
TRANSCRIPT
-
I N G . F E L I X H U A R I 1
PLANTILLAS
La POO permite disear clases y funciones que actan sobre tipo arbitrarios o genricos.
Una plantilla o llamado tambin patrones, permite escribir funciones y clases genricas.
Es aplicado a objetos de diferentes tipos.
templates
double int float
-
I N G . F E L I X H U A R I 2
PLANTILLA DE FUNCIONES
Define a un conjunto de funciones sobrecargadas.
El compilador genera automticamente tantas versiones diferentes como sean necesarias.
La funcin genrica se crea utilizando la palabra reservada template.
template
()
{ Sentencia(s);
}
-
I N G . F E L I X H U A R I 3
EJEMPLO /* Dados 2 datos no iguales por cada tipo, escribir cual es el
menor */
#include
using namespace std;
// Declaracion de la funcion plantilla
template T Menor(T a, T b);
// Programa principal
int main()
{ int a,b; char ca,cb; float fa,fb;
cout
-
I N G . F E L I X H U A R I 4
EJEMPLO couta>>b;
coutca>>cb;
coutfa>>fb;
// Salida y llamada a las funciones
cout
-
I N G . F E L I X H U A R I 5
CONTINUACION
//Definicion de la funcion plantilla
template
T Menor(T x, T y)
{ T w;
w=x
-
I N G . F E L I X H U A R I 6
EJEMPLO DE APLICACIN
/* Programa que permite almacenar datos en un vector */
#include
using namespace std;
const int M=100;
//Declaracion de la funciones plantilla
template void Lectura(R X[],int m);
template void Escribe(R X[],int m);
template void Ordenar(R X[],int m);
// Programa principal
int main()
{ int N,A[M]; float B[M];
-
I N G . F E L I X H U A R I 7
EJEMPLO DE APLICACIN
coutN;
cout
-
I N G . F E L I X H U A R I 8
CONTINUACION ...
Ordenar(A,N);
cout
-
I N G . F E L I X H U A R I 9
CONTINUACION ...
// Definiendo las funciones plantilla
template void Lectura(R X[],int m)
{ int i,j;
for(i=0;i
-
I N G . F E L I X H U A R I 10
CONTINUACION ...
template void Ordenar(R X[],int m)
{ int i,j;
R temp;
for(i=0;i
-
I N G . F E L I X H U A R I 11
PLANTILLA DE CLASES
Define una clase genrica
Permite manipular diferente tipo de dato.
La declaracion est dado por:
template class
{ private:
;
public:
;
};
Donde. Id es el identificador de plantilla
-
I N G . F E L I X H U A R I 12
PLANTILLA DE CLASES
Para definir la funciones miembro de la clase se usa la siguiente sintaxis:
template
::(Lista de parametros)
{
Sentencia(s);
};
Para crear una instancia de clase (objeto), seguir la siguiente sintaxis:
Nombre clase nombre objeto; // o tambien
Nombre clase Nombre Objeto;
-
I N G . F E L I X H U A R I 13
EJEMPLO
// Programa que calcula la distancia entre 2 puntos
#include
#include
using namespace std;
// Declaracion de la plantilla de clase
template class Punto
{ private:
T x1,y1,x2,y2;
float d;
public:
void Lectura();
void Proceso(); void Ver();
};
-
I N G . F E L I X H U A R I 14
CONTINUACION ...
// Programa principal
int main()
{ Punto P;
Punto Q;
cout
-
I N G . F E L I X H U A R I 15
CONTINUACION ...
template
void Punto::Lectura()
{ coutx1;couty1;
coutx2;couty2;
}
template
void Punto::Proceso()
{ d=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
}
-
I N G . F E L I X H U A R I 16
CONTINUACION ...
template void Punto::Ver()
{ cout
-
I N G . F E L I X H U A R I 17
EJEMPLO DE APLICACION
// Programa que permite almacenar datos en un vector
#include
using namespace std;
const int M=100;
// Declarando la clase plantilla
template
class Vector
{ private:
int N;
S X[M];
public:
Vector(int m):N(m){}
void Lectura();
void Escribe();
void Sortear();
};
-
I N G . F E L I X H U A R I 18
CONTINUACION ...
// Programa principal
int main()
{ int elem;
coutelem;
Vector Z(elem);
Vector Y(elem);
cout
-
I N G . F E L I X H U A R I 19
CONTINUACION ...
cout
-
I N G . F E L I X H U A R I 20
CONTINUACION ...
// Definiendo las funciones miembro de la clase
template void Vector::Lectura()
{ int i;
for(i=0;i
-
I N G . F E L I X H U A R I 21
CONTINUACION ...
template void Vector::Sortear()
{ int i,j;
S temp;
for(i=0;i
top related