Polimorfismo

Páginas: 13 (3072 palabras) Publicado: 10 de agosto de 2012
TEMA 5

PO LIM O RFISM O
Cristina Cachero, Pedro J. Ponce de León
4 Sesiones (6 horas)
Versión 1.1

POO

Tema 4. Polimorfismo
Objetivos básicos








Comprender el concepto de polimorfismo
Conocer y saber utilizar los diferentes tipos de polimorfismo.
Comprender el concepto de enlazado estático y dinámico en los
lenguajes OO.
Comprender la relación entrepolimorfismo y herencia en los lenguajes
fuertemente tipados.
Apreciar la manera en que el polimorfismo hace que los sistemas sean
extensibles y mantenibles.

Curso 10-11

2

Indice
1.

2.

3.

4.

5.

6.

Motivación y conceptos previos
 Signatura
 Ámbito
 Sistema de tipos
Polimorfismo y reutilización

Definición

Tipos de polimorfismo
Sobrecarga

Sobrecarga basada enámbito

Sobrecarga basada en signatura de tipo

Alternativas a la sobrecarga
Polimorfismo en jerarquías de herencia

Redefinición

Shadowing

Sobrescritura
Variables polimórficas

La variable receptora

Downcasting

Polimorfismo puro
Genericidad

Funciones genéricas en C++

Plantillas de clase en C++

Herencia en clases genéricas

Curso 10-11

3

1. Motivación
Objetivo de la POO




Aproximarse al modo de resolver problemas en el mundo
real.

El polimorfismo es el modo en que los lenguajes OO
implementan el concepto de polisemia del mundo
real:


Curso 10-11

Un único nombre para muchos significados, según el
c o nt e x t o .

4

1. Conceptos previos
Signatura


S ig n a tu r a d e tip o d e u n m é t o d o :
Descripción de los tipos de sus argumentos, su orden y
el tipo devuelto por el método.





Notación: 
Omitimos el nombre del método y de la clase a la que pertenece

Ejemplos
double power (double base, int exp)

double * int  double
double Posicion::distanciaA(const Posicion& p)
 Posicion  double


Curso 10-11

5

1. Conceptos previos:
Ámbito


Ámbito de unnombre:




Porción del programa en la cual un nombre puede ser utilizado de una determinada
manera.
Ejemplo:

double power ( d ouble b ase, i nt exp )




La variable base sólo puede ser utilizada dentro del método power

Ámbitos activos: puede haber varios simultáneamente


Las clases, los cuerpos de métodos, cualquier bloque de código define un ámbito:

class A {
int x,y;public:
void f() {
// Ámbitos activos:
// GLOBAL
// CLASE (atribs. de clase y de instancia)
// METODO (argumentos, var. locales)
i f (…) {
string s;
// ámbito LOCAL (var. locales)
}
}
Curso 10-11

6

1. Conceptos previos:
Ámbito: Espacio de nombres


Un espacio de nombres es un ámbito con nombre


Agrupa declaraciones (clases, métodos, objetos…) que forman una unidadlógica.


C++: n amespace

Graficos.h

(declaraciones agrupadas)

namespace Graficos {
class Circulo {…};
class Rectangulo { … } ;
class Lienzo {…};

}

Circulo.h

namespace Graficos {
class Circulo {…};
}

Rectangulo.h

namespace Graficos {
class Rectangulo { … } ;
}

(cada clase en su .h)

Curso 10-11

7

1. Conceptos previos:
Ámbito: Espacio de nombres


Unespacio de nombres es un ámbito con nombre


Agrupa declaraciones (clases, métodos, objetos…) que forman una unidad lógica.


Ja v a : p a q u e t e s (p a c k a g e )

Circulo.java

package Graficos;
class Circulo {…}

Rectangulo.java

package Graficos;
c l a s s R e c t a n g u l o {… }

Curso 10-11

8

1. Conceptos previos:
Ámbito: Espacio de nombres


C++: cláusulausing
#include “ G raficos.h ”
int main() {
Graficos::Circulo c;
Graficos::Rectangulo r;
c.setRadio(4);
double a = r.getArea();
}
#include “ G raficos.h ”
using Graficos::Circulo ;
int main() {
C irculo c;
Graficos::Rectangulo r;
c.setRadio(4);
double a = r.getArea();
}

Curso 10-11

9

1. Conceptos previos:
Ámbito: Espacio de nombres


C++ : cláusula using...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Polimorfismo
  • Polimorfismo
  • Polimorfismo
  • Polimorfismo
  • Polimorfismos
  • Polimorfismo
  • Polimorfismos
  • Polimorfismo

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS