• No se han encontrado resultados

Programación genérica

N/A
N/A
Protected

Academic year: 2021

Share "Programación genérica"

Copied!
33
0
0

Texto completo

(1)

Introducci ´on Programaci ´on gen ´erica Programaci ´on gen ´erica en C++

Programaci ´on gen ´erica

Templates (Plantillas)

Programaci ´on Avanzada

(2)

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

(3)

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

(4)

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

(5)

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

(6)

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

(7)

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

(8)

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

(9)

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

(10)

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

(11)

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 los

algoritmos 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

(12)

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 los

algoritmos 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

(13)

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 los

algoritmos 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

(14)

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 los

algoritmos 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

(15)

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.

(16)

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.

(17)

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.

(18)

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 }

(19)

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 }

(20)

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 }

(21)

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 // ...

(22)

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 // ...

(23)

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 // ...

(24)

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.

(25)

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.

(26)

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.

(27)

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 }

(28)

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 }

(29)

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 // ...

(30)

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 // ...

(31)

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 // ...

(32)

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 // ...

(33)

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 };

Referencias

Documento similar