Genericidad : plantillas (templantes).

este mapa se creo por franlly mendoza matricula:2018-0268 con los fines de una tarea de estructura de datos en el semestre 2-2020.

Get Started. It's Free
or sign up with your email address
Genericidad : plantillas (templantes). by Mind Map: Genericidad : plantillas (templantes).

1. Plantillas de clase

1.1. Las plantillas de clase permiten definir clases genéricas que pueden manipular diferentes tipos de datos. Una aplicación importante es la implementación de contenedores, clases que contienen objetos de un tipo dato, tales como vectores (arrays), listas, secuencias ordenadas, tablas de dispersión (hash) y así es posible utilizar una clase plantilla para crear una pila genérica

1.1.1. Definición de una plantilla de clase: al igual que en las plantillas de funciones, se escribe una plantilla clase y a continuación el compilador generara el código real cuando se este utilizando la plantilla por primera vez y incluso la sintaxis de la misma plantilla un ejemplo de ello es : template<class nombretipo> class tipop{ //...}; donde nombretipo es el nombre del tipo definido por el usuario utilizando por la plantilla de tipo genérico T y tipop es el nombre de tipo parametrizado para la plantilla , es decir que tipop es una clase genérica. recordando que al igual que las plantillas de funciones en las plantillas de clase se comienza con la palabra reservada template.

1.1.1.1. Argumentos de la plantilla

1.1.1.1.1. Los argumentos de plantillas no se restringen a tipos aunque este sea uno predominante Los parámetros de una plantilla pueden ser cadenas de caracteres, nombres de funciones y expresiones de constantes. Un caso interesante es el uso de una constante entera para definir el «tamaño» de una estructura de datos de tipo genérico.

1.1.2. Utilización de una plantilla de clase: la manipulación de una plantilla de clase requiere tres etapas las cuales son :

1.1.2.1. *Declaración del tipo parametrizado(por ejemplo, pila).

1.1.2.2. * implementación de la pila.

1.1.2.3. * creación de la instancia específica de la pila (por ejemplo, datos de tipo entero -int- o carácter -char-).

1.1.3. Definición de una plantilla de clase: al igual que en las plantillas de funciones, se escribe una plantilla clase y a continuación el compilador generara el código real cuando se este utilizando la plantilla por primera vez y incluso la sintaxis de la misma plantilla :

2. Modelos de compilación de plantillas

2.1. modelos de compilación de plantillas

2.1.1. cuando el compilador ve una definición de plantilla, no se genera código inmediatamente. El compilador produce instancias específicas de tipos de la plantilla sólo cuando vea una llamada de la plantilla, tal como cuando se llama una plantilla de función, o un objeto de una plantilla de clase y Normalmente, cuando se invoca a una función, el compilador necesita ver sólo una declaración de esa función de modo similar, cuando se define un objeto de un tipo clase, la definición de la clase debe estar disponible, pero las definiciones de las funciones miembro no necesitan estar presentes como resultado se ponen las declaraciones de la función y las definiciones de la clase en archivos cabecera y las definiciones de funciones ordinarias y miembros de la clase en archivos fuente.

2.1.1.1. Modelo de compilación de inclusión

2.1.1.1.1. En el modelo de inclusión el compilador debe ver la definición de cualquier plantilla que se utilice la solución que se adopta es incluir en el archivo de cabecera no sólo las declaraciones, sino también las definiciones esta estrategia permite mantener la separación de los archivos de cabecera y los archivos de implementación, aunque se incluye una directiva #include en el archivo de cabecera para que inserte las definiciones del archivo .ccp este método permite mantener la separación de los archivos de cabecera y los archivos de implementación pero asegura que el compilador verá ambos archivos cuando se compila el código que utiliza la plantilla algunos compiladores que utilizan el modelo de inclusión pueden generar instanciaciones múltiples si dos o más archivos fuente compilados por separado utilizan la misma plantilla, estos compiladores generan una instanciación para la plantilla en cada archivo. Esto supondrá que una plantilla se puede instanciar más de una vez.

2.1.1.2. modelo de compilacion separada

2.1.1.2.1. Este modelo de compilación es muy parecido al modelo típico de C++ y permite escribir las declaraciones y funciones en dos archivos (extensiones .h y .cpp) la única condición es que se debe utilizar la palabra reservada export para conseguir la compilación separada de definiciones de plantillas y declaraciones de funciones de plantillas sin embargo, este modelo de compilación no está implementada en la mayoría de los compiladores la palabra reservada export indica que una definición dada puede ser necesaria para generar instanciaciones en otros archivos una plantilla puede ser definida como exportada solamente una vez en un programa el compilador decide cómo localizar la definición de la plantilla cuando se necesiten generar estas implantaciones la palabra reservada export no necesita aparecer en la declaración de la plantilla normalmente, se indica que una plantilla de funciones sea exportada como parte de su definición se debe incluir la palabra reservada export antes de la palabra reservada template.

3. Genericidad

3.1. concepto de genericidad: es una propiedad que permite definir una clase sin especificar el tipo de datos de uno o más de sus miembros. De esta forma se puede cambiar la clase para adaptarla a los usos sin tener que reescribirla. La genericidad ha sido definida de diversas formas; en nuestro caso hemos seleccionado la definición dada por Bertrand Meyer,En el caso más común, los parámetros representan tipos denominados instancias del módulo genérico, se obtienen proporcionando tipos reales para cada uno de los parámetros genéricos.

4. Plantilla de funciones

4.1. Una plantilla de funciones especifica un conjunto infinito de funciones sobrecargadas. Cada función de este conjunto es una función plantilla y una instancia de la plantilla de función. Una función plantilla apropiada se produce automáticamente por el compilador cuando sea necesario.

4.1.1. Fundamentos teóricos: se define mediante códigos, ver pagina #133 del libro guía (estructura de datos en c++ de Luis Joyanes Aguilar, Lucas Sánchez García y Ignacio zahonero Martínez ).

4.1.1.1. Definición de plantillas de la función: Una plantilla de función o función plantilla especifica un conjunto infinito de funciones sobrecargadas y describe las propiedades genéricas de una función. La innovación clave en las plantillas de funciones es representar el tipo de dato utilizado por la función no como un tipo específico tal como int, sino por un nombre que representa a cualquier tipo. Normalmente, este tipo se representa por T (aunque puede ser cualquier nombre que decida el programador, tal como Tipo, UnTipo, Complejo o similar; es decir, cualquier identificador distinto de una palabra reservada).

4.1.1.1.1. su sintaxis: 1. template <class T> 2. template <typename T> es un parámetro tipo, que puede ser reemplazado por cualquier tipo, también se conoce como un argumento de la plantilla, también se puede especificar un puntero (T * parámetro) o una referencia (T & parámetro).