plantillas en c

Upload: eduin-arango-caccha

Post on 08-Jan-2016

27 views

Category:

Documents


0 download

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