Documentos de Académico
Documentos de Profesional
Documentos de Cultura
❖ Sobrecarga:
❖ Plantillas
Es una forma particular de redactar funcionalidades y clases para que estas logren
ser utilizadas con cualquier tipo de dato, parecido a la sobrecarga, en la situación de
las funcionalidades, sin embargo, evitando el trabajo de redactar cada versión de la
funcionalidad. Los beneficios son más grandes en la situación de las clases, debido a
que no se posibilita hacer sobrecarga de ellas y tendríamos que decidirnos por una
sola o hacer especializaciones utilizando la herencia.
¿Como funciona?
La magia de las plantillas está en no conceptualizar un tipo de dato a partir del inicio,
sino dejar esto como algo pendiente y utilizar algo que posibilite manejar algunas
posibilidades, por cierto, se utiliza una variable para este objetivo. Veamos la sintaxis
para la situación de las funcionalidades:
El identificador es el signo que guarda el tipo de dato que se ha de utilizar una vez
escogido, por lo cual en la definición de la funcionalidad tendrá que utilizarse en vez
de los nombres de los tipos de datos, tal queda realizada una funcionalidad genérica
a la cual tenemos la posibilidad de llamar función-plantilla.
➢ Plantillas de Funciones
Las plantillas de funciones son una de las características de mayor relevancia que
tiene C++, con su uso tenemos la posibilidad de producir funcionalidades
genéricas que acepten cualquier tipo de dato en sus límites, si C++ no contara
con esta propiedad, nos veríamos forzados a tener que redactar una
funcionalidad constantemente, generando código repetido.
➢ Plantillas de Clases
Permiten definir versiones de una misma clase que difieren en el tipo de dato de
alguno(s) de sus miembros. Es decir, se crea el modelo de una clase el cual permitirá
definir distintas instancias de la misma para diferentes tipos de datos. Para declarar una
plantilla de clase se usan las palabras reservadas template. El tipo T se usa en aquellos
miembros de la clase cuyos tipos tomarán un valor en el momento de crear los objetos.
❖ Polimorfismo
Supongamos que una clase base tiene una funcionalidad declarada como virtual
y una clase derivada define la misma funcionalidad. La capacidad de la clase
derivada se invoca para los objetos de la clase derivada, aunque se llame por
medio de un puntero o una alusión a la clase base.
➢ Clases abstractas
Las clases abstractas son esas que por sí mismas son imposibles de detectar con
algo 'concreto' (no hay como tal en el planeta real), empero sí tienen
determinadas propiedades que son habituales en otras clases que tienen la
posibilidad de ser creadas desde ellas.
Para que lo comprendas mejor, una ejemplificación de clase abstracta podría ser
una llamada Transporte: todos ellos hacen actividades semejantes (arrancar,
apurar, frenar, etcétera.), sin embargo no obstante hay varios tipos de vehículos
diferentes y que se comportan de manera plenamente distinta (el proceso de
arrancarlos no se hace siguiendo los mismos pasos, unos deben despegar y
vuelan como los aviones, otros se sumergen para moverse por abajo del agua
como los submarinos, todos ellos requiere ser frenado de diferente modo...).
O sea, en el planeta real no existe un objeto 'transporte' como tal sino que hay
diversos tipos de transporte, sin embargo aunque tienen propiedades habituales
y hacen las mismas actividades lo elaboran de manera bastante distinto
(pudiendo además hacer otras concretas todos ellos).