Introducci ´on Programaci ´on gen ´erica Programaci ´on gen ´erica en C++
Programaci ´on gen ´erica
Templates (Plantillas)Programaci ´on Avanzada
Introducci ´on Programaci ´on gen ´erica Programaci ´on gen ´erica en C++
Contenido
Introducci ´on
Ejemplos donde aplica la PG
Programaci ´on gen ´erica
Programaci ´on gen ´erica en C++ Sintaxis
Introducci ´on Programaci ´on gen ´erica Programaci ´on gen ´erica en C++
Contenido
Introducci ´on
Ejemplos donde aplica la PG
Programaci ´on gen ´erica
Programaci ´on gen ´erica en C++ Sintaxis
Introducci ´on Programaci ´on gen ´erica Programaci ´on gen ´erica en C++
Contenido
Introducci ´on
Ejemplos donde aplica la PG
Programaci ´on gen ´erica
Programaci ´on gen ´erica en C++ Sintaxis
Introducci ´on Programaci ´on gen ´erica Programaci ´on gen ´erica en C++
Ejemplos donde aplica la PG
Ejemplos donde aplicar PG
Considerar las siguientes situaciones:
• Escriba una funci ´on que encuentre el m ´aximo valor de un
arreglo de enteros
• Escriba una funci ´on que encuentre el m ´aximo valor de un
arreglo de flotantes
• Escriba una clase que modele a un punto en el plano por
sus coordenadas cartesianas como valores flotantes
• Escriba una clase que modele a un punto en el plano por
sus coordenadas cartesianas como valores de doble precisi ´on
• Escriba una funci ´on que encuentre el m ´aximo valor de un
Introducci ´on Programaci ´on gen ´erica Programaci ´on gen ´erica en C++
Ejemplos donde aplica la PG
Ejemplos donde aplicar PG
Considerar las siguientes situaciones:
• Escriba una funci ´on que encuentre el m ´aximo valor de un
arreglo de enteros
• Escriba una funci ´on que encuentre el m ´aximo valor de un
arreglo de flotantes
• Escriba una clase que modele a un punto en el plano por
sus coordenadas cartesianas como valores flotantes
• Escriba una clase que modele a un punto en el plano por
sus coordenadas cartesianas como valores de doble precisi ´on
• Escriba una funci ´on que encuentre el m ´aximo valor de un
Introducci ´on Programaci ´on gen ´erica Programaci ´on gen ´erica en C++
Ejemplos donde aplica la PG
Ejemplos donde aplicar PG
Considerar las siguientes situaciones:
• Escriba una funci ´on que encuentre el m ´aximo valor de un
arreglo de enteros
• Escriba una funci ´on que encuentre el m ´aximo valor de un
arreglo de flotantes
• Escriba una clase que modele a un punto en el plano por
sus coordenadas cartesianas como valores flotantes
• Escriba una clase que modele a un punto en el plano por
sus coordenadas cartesianas como valores de doble precisi ´on
• Escriba una funci ´on que encuentre el m ´aximo valor de un
Introducci ´on Programaci ´on gen ´erica Programaci ´on gen ´erica en C++
Ejemplos donde aplica la PG
Ejemplos donde aplicar PG
Considerar las siguientes situaciones:
• Escriba una funci ´on que encuentre el m ´aximo valor de un
arreglo de enteros
• Escriba una funci ´on que encuentre el m ´aximo valor de un
arreglo de flotantes
• Escriba una clase que modele a un punto en el plano por
sus coordenadas cartesianas como valores flotantes
• Escriba una clase que modele a un punto en el plano por
sus coordenadas cartesianas como valores de doble precisi ´on
• Escriba una funci ´on que encuentre el m ´aximo valor de un
Introducci ´on Programaci ´on gen ´erica Programaci ´on gen ´erica en C++
Ejemplos donde aplica la PG
Ejemplos donde aplicar PG
Considerar las siguientes situaciones:
• Escriba una funci ´on que encuentre el m ´aximo valor de un
arreglo de enteros
• Escriba una funci ´on que encuentre el m ´aximo valor de un
arreglo de flotantes
• Escriba una clase que modele a un punto en el plano por
sus coordenadas cartesianas como valores flotantes
• Escriba una clase que modele a un punto en el plano por
sus coordenadas cartesianas como valores de doble precisi ´on
• Escriba una funci ´on que encuentre el m ´aximo valor de un
Introducci ´on Programaci ´on gen ´erica Programaci ´on gen ´erica en C++
Ejemplos donde aplica la PG
Ejemplos donde aplicar PG
Considerar las siguientes situaciones:
• Escriba una funci ´on que encuentre el m ´aximo valor de un
arreglo de enteros
• Escriba una funci ´on que encuentre el m ´aximo valor de un
arreglo de flotantes
• Escriba una clase que modele a un punto en el plano por
sus coordenadas cartesianas como valores flotantes
• Escriba una clase que modele a un punto en el plano por
sus coordenadas cartesianas como valores de doble precisi ´on
• Escriba una funci ´on que encuentre el m ´aximo valor de un
Introducci ´on Programaci ´on gen ´erica Programaci ´on gen ´erica en C++
Programaci ´on gen ´erica
• Es un paradigma de programaci ´on en el cual losalgoritmos y las estructuras de datos se definen en base a tipo de datos gen ´ericos, los cuales ser ´an especificados cuando estos algoritmos y estructuras de datos se instancien.
• Permite reutilizar c ´odigo fuente.
• En C++, las plantillas (templates) son un mecanismo de
programaci ´on gen ´erica que permite programar haciendo que los tipos de datos sean par ´ametros en la definici ´on de una clase o una funci ´on.
• En C++, las plantillas implementan el concepto de tipo de
Introducci ´on Programaci ´on gen ´erica Programaci ´on gen ´erica en C++
Programaci ´on gen ´erica
• Es un paradigma de programaci ´on en el cual losalgoritmos y las estructuras de datos se definen en base a tipo de datos gen ´ericos, los cuales ser ´an especificados cuando estos algoritmos y estructuras de datos se instancien.
• Permite reutilizar c ´odigo fuente.
• En C++, las plantillas (templates) son un mecanismo de
programaci ´on gen ´erica que permite programar haciendo que los tipos de datos sean par ´ametros en la definici ´on de una clase o una funci ´on.
• En C++, las plantillas implementan el concepto de tipo de
Introducci ´on Programaci ´on gen ´erica Programaci ´on gen ´erica en C++
Programaci ´on gen ´erica
• Es un paradigma de programaci ´on en el cual losalgoritmos y las estructuras de datos se definen en base a tipo de datos gen ´ericos, los cuales ser ´an especificados cuando estos algoritmos y estructuras de datos se instancien.
• Permite reutilizar c ´odigo fuente.
• En C++, las plantillas (templates) son un mecanismo de
programaci ´on gen ´erica que permite programar haciendo que los tipos de datos sean par ´ametros en la definici ´on de una clase o una funci ´on.
• En C++, las plantillas implementan el concepto de tipo de
Introducci ´on Programaci ´on gen ´erica Programaci ´on gen ´erica en C++
Programaci ´on gen ´erica
• Es un paradigma de programaci ´on en el cual losalgoritmos y las estructuras de datos se definen en base a tipo de datos gen ´ericos, los cuales ser ´an especificados cuando estos algoritmos y estructuras de datos se instancien.
• Permite reutilizar c ´odigo fuente.
• En C++, las plantillas (templates) son un mecanismo de
programaci ´on gen ´erica que permite programar haciendo que los tipos de datos sean par ´ametros en la definici ´on de una clase o una funci ´on.
• En C++, las plantillas implementan el concepto de tipo de
Introducci ´on Programaci ´on gen ´erica Programaci ´on gen ´erica en C++
Sintaxis
Sintaxis
• Se utiliza la palabra reservadatemplate.
Esta le dice al compilador que la definici ´on de funci ´on o clase que sigue, manipular ´a uno o m ´as tipos a ´un no especificados.
Introducci ´on Programaci ´on gen ´erica Programaci ´on gen ´erica en C++
Sintaxis
Sintaxis
• Se utiliza la palabra reservadatemplate. Esta le dice al
compilador que la definici ´on de funci ´on o clase que sigue, manipular ´a uno o m ´as tipos a ´un no especificados.
Introducci ´on Programaci ´on gen ´erica Programaci ´on gen ´erica en C++
Sintaxis
Sintaxis
• Se utiliza la palabra reservadatemplate. Esta le dice al
compilador que la definici ´on de funci ´on o clase que sigue, manipular ´a uno o m ´as tipos a ´un no especificados.
Introducci ´on Programaci ´on gen ´erica Programaci ´on gen ´erica en C++
Sintaxis
Plantillas de funciones
Ejemplo plantilla de funci ´on buscar m ´aximo
1 template<classT>
2 T buscar_maximo(vector<T> & valores) { 3 T max = valores[0];
4 for(unsigned i=1; i<valores.size(); ++i) { 5 if(valores[i] > max) { 6 max = valores[i]; 7 } 8 } 9 returnmax; 10 }
Introducci ´on Programaci ´on gen ´erica Programaci ´on gen ´erica en C++
Sintaxis
Plantillas de funciones
Ejemplo plantilla de funci ´on buscar m ´aximo
1 template<classT>
2 T buscar_maximo(vector<T> & valores) { 3 T max = valores[0];
4 for(unsigned i=1; i<valores.size(); ++i) { 5 if(valores[i] > max) { 6 max = valores[i]; 7 } 8 } 9 returnmax; 10 }
Introducci ´on Programaci ´on gen ´erica Programaci ´on gen ´erica en C++
Sintaxis
Plantillas de funciones
Ejemplo plantilla de funci ´on buscar m ´aximo
1 template<classT>
2 T buscar_maximo(vector<T> & valores) { 3 T max = valores[0];
4 for(unsignedi=1; i<valores.size(); ++i) { 5 if(valores[i] > max) { 6 max = valores[i]; 7 } 8 } 9 returnmax; 10 }
Introducci ´on Programaci ´on gen ´erica Programaci ´on gen ´erica en C++
Sintaxis
Plantillas de clase
Ejemplo de plantillas de clase Punto2D
1 template<classT> 2 classPunto2D { 3 private: 4 T x; 5 T y; 6 public:
7 voidsetX(T valor); 8 voidsetY(T valor); 9 T getX();
10 T getY();
11 bool operator>(Punto2D<T> PDer); 12 // ...
Introducci ´on Programaci ´on gen ´erica Programaci ´on gen ´erica en C++
Sintaxis
Plantillas de clase
Ejemplo de plantillas de clase Punto2D
1 template<classT> 2 classPunto2D { 3 private: 4 T x; 5 T y; 6 public:
7 voidsetX(T valor); 8 voidsetY(T valor); 9 T getX();
10 T getY();
11 bool operator>(Punto2D<T> PDer); 12 // ...
Introducci ´on Programaci ´on gen ´erica Programaci ´on gen ´erica en C++
Sintaxis
Plantillas de clase
Ejemplo de plantillas de clase Punto2D
1 template<classT> 2 classPunto2D { 3 private: 4 T x; 5 T y; 6 public:
7 voidsetX(T valor); 8 voidsetY(T valor); 9 T getX();
10 T getY();
11 bool operator>(Punto2D<T> PDer); 12 // ...
Introducci ´on Programaci ´on gen ´erica Programaci ´on gen ´erica en C++
Instanciaci ´on de plantillas
Instanciaci ´on de plantillas
• Es la utilizaci ´on de la plantilla con un tipo(s) de dato(s)
especificado(s).
• Se da en tiempo de compilaci ´on, el compilador detecta las
instancias espec´ıficas de las plantillas, y genera las funciones y clases espec´ıficas para los tipos de datos utilizados.
Introducci ´on Programaci ´on gen ´erica Programaci ´on gen ´erica en C++
Instanciaci ´on de plantillas
Instanciaci ´on de plantillas
• Es la utilizaci ´on de la plantilla con un tipo(s) de dato(s)
especificado(s).
• Se da en tiempo de compilaci ´on,
el compilador detecta las instancias espec´ıficas de las plantillas, y genera las funciones y clases espec´ıficas para los tipos de datos utilizados.
Introducci ´on Programaci ´on gen ´erica Programaci ´on gen ´erica en C++
Instanciaci ´on de plantillas
Instanciaci ´on de plantillas
• Es la utilizaci ´on de la plantilla con un tipo(s) de dato(s)
especificado(s).
• Se da en tiempo de compilaci ´on, el compilador detecta las
instancias espec´ıficas de las plantillas, y genera las funciones y clases espec´ıficas para los tipos de datos utilizados.
Introducci ´on Programaci ´on gen ´erica Programaci ´on gen ´erica en C++
Instanciaci ´on de plantillas
Instanciaci ´on de plantillas
Ejemplo de uso de la clase Punto2D
1 intmain() { 2 Punto2D<float> p1; 3 p1.setX(1.0f); 4 P1.setY(3.4f); 5 // ... 6 return(0); 7 }
Introducci ´on Programaci ´on gen ´erica Programaci ´on gen ´erica en C++
Instanciaci ´on de plantillas
Instanciaci ´on de plantillas
Ejemplo de uso de la clase Punto2D
1 intmain() { 2 Punto2D<float> p1; 3 p1.setX(1.0f); 4 P1.setY(3.4f); 5 // ... 6 return(0); 7 }
Introducci ´on Programaci ´on gen ´erica Programaci ´on gen ´erica en C++
Instanciaci ´on de plantillas
Instanciaci ´on de plantillas
Ejemplo de instanciaci ´on buscar m ´aximo
1 intmain() {
2 vector<float> v(10);
3 for(unsigned i=0; i<v.size(); ++i) { 4 v[i] = rand() %8;
5 }
6 floatmax = buscar_maximo(v); 7 // ...
Introducci ´on Programaci ´on gen ´erica Programaci ´on gen ´erica en C++
Instanciaci ´on de plantillas
Instanciaci ´on de plantillas
Ejemplo de instanciaci ´on buscar m ´aximo
1 intmain() {
2 vector<float> v(10);
3 for(unsignedi=0; i<v.size(); ++i) { 4 v[i] = rand() %8;
5 }
6 floatmax = buscar_maximo(v); 7 // ...
Introducci ´on Programaci ´on gen ´erica Programaci ´on gen ´erica en C++
Instanciaci ´on de plantillas
Instanciaci ´on de plantillas
Ejemplo de uso de la funci ´on buscar m ´aximo con instancia de la clase Punto2D
1 intmain() {
2 vector< Punto2D<int> > v; 3 Punto2D<int> aux; 4 aux.setX(0); 5 aux.setY(0); 6 v.push_back(aux);
7 Punto2D<int> max = buscar_maximo(v); 8 // ...
Introducci ´on Programaci ´on gen ´erica Programaci ´on gen ´erica en C++
Instanciaci ´on de plantillas
Instanciaci ´on de plantillas
Ejemplo de uso de la funci ´on buscar m ´aximo con instancia de la clase Punto2D
1 intmain() {
2 vector< Punto2D<int> > v; 3 Punto2D<int> aux; 4 aux.setX(0); 5 aux.setY(0); 6 v.push_back(aux);
7 Punto2D<int> max = buscar_maximo(v); 8 // ...
Introducci ´on Programaci ´on gen ´erica Programaci ´on gen ´erica en C++
Instanciaci ´on de plantillas
Templates de varios tipos
1 template<classT,classU> 2 classParAsociado {
3 private:
4 T clave; 5 U valor;
6 public:
7 voidsetClave(T nuevo); 8 voidsetValor(U nuevo) 9 T getClave(); 10 // ... 11 };