Sunteți pe pagina 1din 10

Polimorfismo

Ligadura
Funciones virtuales
Polimorfismo
Uso del polimorfismo
Ligadura esttica frente a la esttica
Ventajas del polimorfismo

Ligadura
Presenta:
Una conexin entre una entidad y sus propiedades.
Si la propiedad son funciones, ligadura es la conexin
entre la llamada a la funcin y el cdigo que se
ejecuta tras ellas.
Desde el punto de vista de un atributo ligadura es la
el proceso de asociar un atributo a un nombre.
tiempo de ligadura. es el momento que un atributo y
una funcin se asocia a sus valores o funciones. Se
clasifica en : ligadura esttica y dinmica
En C++ por defecto es esttica. Slo cuando se
utiliza el receptor como un apuntador o como
referencia es dinmica

Funciones virtuales
Si la palabra reservada virtual procede a la
declaracin de una funcin, esta funcin se
llama virtual y le indica al compilador que puede
ser definida en una clase derivada y que en esta
caso la funcin se invocar directamente a
travs de punteros.
Un uso comn de las funciones virtuales es la
declaracin de clases abstracta y la
implementacin del polimorfismo

Ligadura dinmica mediante


funciones virtuales
Las funciones virtuales se tratan igual que
cualquier otra funcin miembro de una clase.
Un puntero a una clase derivada es tambin un
puntero a la clase base. Se puede usar una
referencia o un puntero a cualquier clase
derivada, en lugar de una referencia o puntero a
la clase base, sin una conversin explcita de
tipo.
No se puede usar una referencia a un puntero
de la clase base, en lugar de una referencia o
un puntero a una instancia de una clase
derivada. Ver ejemplo.

Polimorfismo
Permite que diferentes objetos respondan de
modo diferente al mismo mensaje. Se utiliza con
la herencia.
Polimorfismo sin ligadura dinmica
Usar mtodos con nombres iguales y definiciones
diferentes de los mismo en las clases derivadas.

Polimorfismos con ligadura dinmica


Se decide el objeto en el momento de la ejecucin.
Figura *figuras[]={new circulo, new rectngulo, new
triangulo}.
Figura[i].dibujar(); La palabra reservada virtual se ha
colado en la funcin dibujar de la clase base figura.

Ejemplo
class figura{
tipoenum tenum;
public:
virtual void Copiar();
virtual void Dibujar();
virtual void double Area(); };
class circulo:public figura{
public:
void Copiar();
void Dibujar();
void double Area();
class circulo:public figura{
public:
void Copiar();
void Dibujar();
void double Area();

Ejemplo sin ligadura


Swith()
{..
Case circulo:
micirculo.Dibujar();
D= micirculo.Area()
break
Case rectangulo:
mirectangulo.Dibujar();
D= mirectangulo.Area()
Break
}

Uso del polimorfismo


La forma mas adecuada de usar el polimorfismo
es a travs de punteros.
Reglas de uso del polimorfismo.
Crear una jerarqua de clase con las operaciones
importantes definidas por las funciones miembros
declaras como virtuales en la clase base.
Las implementaciones especificas de las funciones
virtuales se la debe hacer en las clases derivadas
La instancia de estas clases se manipulan a travs de
una referencia o un puntero. Es la esencia del
polimorfismo.

Ligadura dinmica frente a la ligadura


esttica
La ligadura dinmica o postergada se produce
cuando una funcin polimrfica se define para
clases diferentes de una familia pero el cdigo
real de la funcin no se conecta o enlaza hasta
el tiempo de ejecucin.
Una funcin polimrfica que se enlaza
dinmicamente se llama funcin virtual.
La ligadura esttica se produce cuando se
define una funcin polimrfica para diferentes
clases de una familia y el cdigo real de la
funcin se conecta o enlaza en el tiempo de
compilacin. Las funciones sobrecargadas se
enlazan estticamente.

Ventajas del polimorfismo


Especializacin de clases derivas.
Estructuras de datos heterogneos.
Gestin de una jerarqua de clases
Nota: El polimorfismo se ejecuta utilizando
funciones sobrecargadas o funciones virtuales.
Las funciones sobrecargadas se llaman
utilizando ligadura esttica y las funciones
virtuales se llaman utilizando ligadura dinmica

S-ar putea să vă placă și