Está en la página 1de 4

Estructura de Datos

Control de lectura III


Leudy Randy Nolasco
100576672

Sobrecarga, plantillas y polimorfismo.

❖ Sobrecarga:

La sobrecarga de Procedimientos se apoya de procedimientos y constructores, los


destructores son imposibles de sobrecargar debido a que solamente debería haber uno
por clase.
La sobrecarga de procedimientos provoca que un mismo nombre logre representar
diversos procedimientos con diferente tipo y número de fronteras, manejados en la
misma clase. Dentro de la POO, la sobrecarga de procedimientos tiene relación con la
probabilidad de tener 2 o más procedimientos con el mismo nombre empero distinta
funcionalidad. O sea, 2 o más procedimientos con el mismo nombre hacen actividades
diferentes y el compilador utilizará una u otra dependiendo de los límites utilizados. Esto
además se aplica a los constructores (de hecho, es la aplicación más reconocida de la
sobrecarga).

tienen la posibilidad de distinguir diversos procedimientos sobrecargados por medio de


sus fronteras, así sea por la porción, el tipo o el orden de los mismos.
Debido a la sobrecarga de procedimientos, una clase puede tener diferente
comportamiento dependiendo de cual procedimiento sobrecargado se utilice, a esta
característica se le conoce como Polimorfismo por sobrecarga. El término Polimorfismo
procede de la capacidad que tiene una clase de modificar su comportamiento. En la
situación del polimorfismo por sobrecarga, el cambio del comportamiento de una clase
se define sobrecargando los procedimientos necesarios para poder hacer el
polimorfismo.

➢ Sobrecarga de los operadores de entrada >> y salida <<

Un caso especial es la sobrecarga de los operadores << y >> utilizados en la salida y


entrada de datos respectivamente. Estos operadores se encuentran en la biblio teca de
C++. En el caso de la entrada de datos del teclado a la aplicación, se establece una
relación entre una referencia a un objeto de la clase istream y una referencia a un objeto
de la clase en la cual se está incluyendo la 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:

1. // Para una función, ambas opciones son equivalentes


2. template <class identificador> definición_de_función;
3. template <typename identificador> definición_de_función;

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.

Las plantillas resultan muy utilizadas en la programación y se emplean una vez


que es necesario usar la misma funcionalidad sin embargo con diferentes
argumentos. Ejemplificando, supongamos que poseemos una funcionalidad que
recibe el costo absoluto de un número, si refrescamos la memoria,
comprendemos que el costo absoluto de x constantemente va a ser x, o sea, si x
es negativo, su costo absoluto va a ser el mismo número sin embargo en positivo,
si x es positivo, su costo absoluto va a ser el mismo.

➢ 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

El concepto polimorfismo se refiere a la función de adoptar distintas formas. Por


consiguiente, un objeto polimórfico es ese que tiene varios puntos. El polimorfismo
posibilita que un mismo procedimiento adquiera diversos contenidos declarando
funcionalidades o procedimientos virtuales en la clase base y otras maneras de los
mismos en las clases derivadas.

Por medio del polimorfismo se puede conceptualizar un solo procedimiento para


objetos diferentes, o sea, objetos que son instancias de diversas clases. En C++ el
polimorfismo se define por medio de funcionalidades virtuales. Por consiguiente,
anterior a exponer una ejemplificación de polimorfismo se va a hacer una breve
introducción a las funcionalidades virtuales.
➢ Funciones Virtuales

Una funcionalidad virtual es una funcionalidad integrante que se espera volver a


conceptualizar en clases derivadas. Una vez que se se refiere a un objeto de clase
derivada por medio de un puntero o una alusión a la clase base, se puede llamar
a una funcionalidad virtual para aquel objeto y realizar la versión de la clase
derivada de la funcionalidad.

Las funcionalidades virtuales avalan que se llame a la funcionalidad idónea para


un objeto, con libertad de la expresión usada para llamarla.

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

También podría gustarte