SlideShare una empresa de Scribd logo
1 de 6
Descargar para leer sin conexión
UNIVERSIDAD TECNONOLÓGICADEL ESTADO DE ZACATECAS
UNIDAD ACADÉMICA DE PINOS
TECNOLOGÍASDE LA INFORMACIÓNY COMUNICACIÓN
Materia
Programación de Aplicaciones
Tema
POLIMORFISMO
Nombre completo del Alumno : Azucena Pérez Gallegos
Grado: 9 Grupo: “A”
Nombre del Docente:ISC. Omar Emmanuel Lara Juárez
Fecha de entrega : 03/07/2015
UNIVERSIDAD TECNONOLÓGICADEL ESTADO DE ZACATECAS
UNIDAD ACADÉMICA DE PINOS
TECNOLOGÍASDE LA INFORMACIÓNY COMUNICACIÓN
Polimorfismo
Definición académica que nos ofrece el profesor de la UPM Luis Fernández:
El polimorfismo es una relajación del sistema de tipos, de tal manera que una
referencia a una clase (atributo, parámetro o declaración local o elemento de un
vector) acepta direcciones de objetos de dicha clase y de sus clases derivadas
(hijas, nietas,…).
Herencia y las clasificaciones en Programación Orientada a
Objetos
El polimorfismo y la herencia son dos conceptos estrechamente ligados.
Conseguimos implementar polimorfismo en jerarquías de clasificación que se dan
a través de la herencia. Por ejemplo, tenemos una clase vehículo y de ella
dependen varias clases hijas como coche, moto, autobús, etc.
Por qué el sistema de tipos es importante en Polimorfismo
Para entender la importancia del tipado de datos, conveniente entender cómo es
un lenguaje fuertemente tipado, como es el caso de Java o C.
En estos lenguajes, cuando defino una variable, siempre tengo que decir el tipo de
datos que va a contener esta variable. Por ejemplo:
int miNumero;
UNIVERSIDAD TECNONOLÓGICADEL ESTADO DE ZACATECAS
UNIDAD ACADÉMICA DE PINOS
TECNOLOGÍASDE LA INFORMACIÓNY COMUNICACIÓN
Así le indicamos que la variable declarada "miNumero" va a contener siempre un
entero. Podrás asignarle diversos valores, pero siempre deben de ser números
enteros. De lo contrario el compilador te lanzará un mensaje de error y no te
permitirá compilar el programa que has realizado.
Esto incluso pasa con los objetos. Por ejemplo, si en Java defino la clase
"Largometraje" (una cinta que se puede exhibir en la televisión o el cine), cuando
creo objetos de la clase "Largometraje" debo declarar variables en las que indique
el tipo de objeto que va a contener.
Largometraje miLargo = new Largometraje("Lo que el viento se llevó");
Esa variable "miLargo", por declaración tendrá una referencia a un objeto de la
clase "Largometraje". Pues bien, durante toda su vida, deberá tener siempre una
referencia a cualquier objeto de la misma clase.
Volviendo al ejemplo de los vehículos, si defino una variable que apunta a un
objeto de clase "Coche", durante toda la vida de esa variable tendrá que contener
un objeto de la clase Coche, no pudiendo más adelante apuntar a un objeto de la
clase Moto o de la clase Bus.
Coche miCoche = new Coche("Ford Focus 2.0");
//la variable miCoche apunta a un objeto de la clase coche
//si lo deseo, mañana podrá apuntar a otro objeto diferente,
pero siempre tendrá que ser de la clase Coche
miCoche = new Coche("Renault Megane 1.6");
Lo que nunca podré hacer es guardar en esa variable, declarada como tipo Coche,
otra cosa que no sea un objeto de la clase Coche.
//si miCoche fue declarada como tipo Coche, no puedo guardar
un objeto de la clase Moto
miCoche = new Moto("Yamaha YBR");
//la línea anterior nos daría un error en tiempo de
compilación
Nota: A veces, a los lenguajes fuertemente tipados se les llama de "tipado
estático" y a los débilmente tipados se les llama "tipado dinámico".
UNIVERSIDAD TECNONOLÓGICADEL ESTADO DE ZACATECAS
UNIDAD ACADÉMICA DE PINOS
TECNOLOGÍASDE LA INFORMACIÓNY COMUNICACIÓN
Polimorfismo en objetos
Una función cuyo parámetro se haya declarado de una clase, sólo te aceptará
recibir objetos de esa clase. Un array que se ha declarado que es de elementos de
una clase determinada, solo aceptará que rellenemos sus casillas con objetos de
esa clase declarada.
Vehiculo[] misVehiculos = new Vehiculo[3];
Esa variable misVehiculos es un array y en ella he declarado que el contenido de
las casillas serán objetos de la clase "Vehiculo". Pues bien, polimorfismo es el
mecanismo por el cual podemos "relajar el sistema de tipos", de modo que nos
acepte también objetos de las clases hijas o derivadas. Si defines un array con
casillas de una determinada clase, el compilador también te aceptará que metas
en esas casillas objetos de una clase hija de la que fue declarada.
En concreto, en nuestro array de vehículos, gracias al polimorfismo podrás
contener en los elementos del array no solo vehículos genéricos, sino también
todos los objetos de clases hijas o derivadas de la clase "Vehiculo", osea objetos
de la clase "Coche", "Moto", "Bus" o cualquier hija que se haya definido.
Para qué nos sirve en la práctica el polimorfismo
Volvamos a la clase "Largometraje" y ahora pensemos en la clase "Cine". En un
cine se reproducen largometrajes y por ello has decidido que tu clase
"Largometraje" tenga clases hijas o derivadas como "Película" y "Documental".
Imagina que en tu clase "Cine" creas un método que se llama "reproducir()". Este
método podrá recibir como parámetro aquello que quieres emitir en una sala de
cine y podrán llegarte a veces objetos de la clase "Película" y otras veces objetos
de la clase "Documental". Debido a que los métodos declaran los tipos de los
parámetros que recibes, tendrás que hacer algo como esto:
reproducir(Pelicula peliculaParaReproducir)
Pero si luego tienes que reproducir documentales, tendrás que declarar:
reproducir(Documental documentaParaReproducir)
UNIVERSIDAD TECNONOLÓGICADEL ESTADO DE ZACATECAS
UNIDAD ACADÉMICA DE PINOS
TECNOLOGÍASDE LA INFORMACIÓNY COMUNICACIÓN
Entonces lo que te permiten hacer los lenguajes es declarar el método
"reproducir()" indicando que el parámetro que vas a recibir es un objeto de la clase
padre "Largometraje", pero donde realmente el lenguaje y compilador te aceptan
cualquier objeto de la clase hija o derivada, "Película", "Documental", etc.
reproducir(Largometraje elementoParaReproducir)
Podremos crear películas y reproducirlas, también crear documentales para luego
reproducir y lo bonito de la historia es que todos estos objetos son aceptados por
el método "reproducir()", gracias a la relajación del sistema de tipos.
Pongamos otro ejemplo: Tenemos la clase Parking. Dentro de ésta tenemos un
método estacionar(). Puede que en un parking tenga que estacionar coches,
motos o autobuses. Sin polimorfismo tendría que crear un método que permitiese
estacionar objetos de la clase "Coche", otro método que acepte objetos de la clase
"Moto" para estacionarlos, etc.
Lo ideal sería que nuestro método me permita recibir todo tipo de vehículos para
estacionarlos, primero por reutilización del código, ya que es muy parecido
estacionar uno u otro vehículo, pero además porque así si mañana el mercado
trae otro tipo de vehículos, como una van, todoterreno hibrido, o una nave
espacial, mi software sea capaz de aceptarlos sin tener que modificar la clase
Parking.
Gracias al polimorfismo, cuando declaro la función estacionar() puedo decir que
recibe como parámetro un objeto de la clase "Vehiculo" y el compilador me
aceptará no solamente vehículos genéricos, sino todos aquellos objetos que
hayamos creado que hereden de la clase Vehículo, como, coches, motos, buses,
etc. Esa relajación del sistema de tipos para aceptar una gama de objetos
diferente es lo que llamamos polimorfismo.
UNIVERSIDAD TECNONOLÓGICADEL ESTADO DE ZACATECAS
UNIDAD ACADÉMICA DE PINOS
TECNOLOGÍASDE LA INFORMACIÓNY COMUNICACIÓN
Conclusión
En programación orientada a objetos se denomina polimorfismo a la capacidad
que tienen objetos de diferentes clases de responder al mismo mensaje o evento.
Esto significa que puede haber muchos mensajes con el mismo nombre, en
diferentes clases. Cada Clase responde al mensaje con su código propio (o
método).
También se puede aplicar a la propiedad que poseen algunas operaciones de
tener un comportamiento diferente dependiendo del objeto (o tipo de dato) sobre el
que se aplican.
El polimorfismo sólo es aplicable si cualquiera de los posibles tipos de objetos que
se invoquen tienen definida la operación empleada, y los tipos de datos de entrada
requeridos y los valores devueltos, más allá de cómo se empleen o calculen, son
compatibles entre sí.
Desde mi punto de vista los lenguajes fuertemente tipados son más difíciles de
trabajar, pero son más comunes y en muchos lugares mas “promocionados”. Los
lenguajes tipados incrementan el tiempo de desarrollo y son más difíciles de
aprender, pero no todo es malo, una ventaja de estos lenguajes es que
son compilados, es decir que se traducen directamente a lenguaje de maquina y
esto al manejar grandes cantidades de datos hace diferencia, es mucho mas
rápido en la maquina seguir el proceso que debe realizar.
Los lenguajes no tipados, o débilmente tipados, al definir una variable no requieren
de que se les asigne un tipo de variable, es mas pueden cambiar el tipo de
variable en cualquier momento, los casos mas conocidos se presentan en un
lenguaje muy popular. PHP, este lenguaje, no es tipado, y no hay ningún problema
en que una variable sea una Array y luego se convierta en un entero o un String.

Más contenido relacionado

La actualidad más candente (20)

Polimorfismo_PApps
Polimorfismo_PAppsPolimorfismo_PApps
Polimorfismo_PApps
 
Resumen polimorfismo
Resumen polimorfismoResumen polimorfismo
Resumen polimorfismo
 
Polimorfismo resumen
Polimorfismo resumenPolimorfismo resumen
Polimorfismo resumen
 
Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
 
polimorfismo
polimorfismopolimorfismo
polimorfismo
 
Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
 
Investigacion v unidad
Investigacion v unidadInvestigacion v unidad
Investigacion v unidad
 
Polimorfismo en Java
Polimorfismo en JavaPolimorfismo en Java
Polimorfismo en Java
 
Herencia Y Polimorfismo
Herencia Y PolimorfismoHerencia Y Polimorfismo
Herencia Y Polimorfismo
 
Java morld cap2 [CURSO JAVA]
Java morld cap2 [CURSO JAVA]Java morld cap2 [CURSO JAVA]
Java morld cap2 [CURSO JAVA]
 
Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
 
Presentacion progra
Presentacion prograPresentacion progra
Presentacion progra
 
Polimorfismo ppt
Polimorfismo  pptPolimorfismo  ppt
Polimorfismo ppt
 
10 Polimorfismo
10   Polimorfismo10   Polimorfismo
10 Polimorfismo
 
10.Polimorfismo Java
10.Polimorfismo Java10.Polimorfismo Java
10.Polimorfismo Java
 
Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
 
4 Polimorfismo
4  Polimorfismo4  Polimorfismo
4 Polimorfismo
 
Prog oo con_java
Prog oo con_javaProg oo con_java
Prog oo con_java
 
Curso Java Inicial 6 Polimorfismo, AbstraccióN E Interfaces
Curso Java Inicial   6 Polimorfismo, AbstraccióN E InterfacesCurso Java Inicial   6 Polimorfismo, AbstraccióN E Interfaces
Curso Java Inicial 6 Polimorfismo, AbstraccióN E Interfaces
 
Polimorfism oo
Polimorfism ooPolimorfism oo
Polimorfism oo
 

Destacado

Aplicación de las derivadas e integrales
Aplicación de las derivadas e integralesAplicación de las derivadas e integrales
Aplicación de las derivadas e integralesSusi Perez Gallegos
 
Aplicación móvil con acceso a datos
Aplicación móvil con acceso a datosAplicación móvil con acceso a datos
Aplicación móvil con acceso a datosSusi Perez Gallegos
 
Mobile Enterprise Trends 2015 - Emergence Capital
Mobile Enterprise Trends 2015 - Emergence CapitalMobile Enterprise Trends 2015 - Emergence Capital
Mobile Enterprise Trends 2015 - Emergence CapitalEmergence Capital
 
10 Design Trends 2015 - UX & UI Trends for Mobile Solutions
10 Design Trends 2015 - UX & UI Trends for Mobile Solutions10 Design Trends 2015 - UX & UI Trends for Mobile Solutions
10 Design Trends 2015 - UX & UI Trends for Mobile SolutionsDMI
 
App Lifecycle Engagement
App Lifecycle EngagementApp Lifecycle Engagement
App Lifecycle EngagementLocalytics
 
Unlocking App Success: How to Turn Your App Into a Mobile Growth Engine
Unlocking App Success: How to Turn Your App Into a Mobile Growth EngineUnlocking App Success: How to Turn Your App Into a Mobile Growth Engine
Unlocking App Success: How to Turn Your App Into a Mobile Growth EngineLocalytics
 

Destacado (8)

Interfaces
InterfacesInterfaces
Interfaces
 
Aplicación de las derivadas e integrales
Aplicación de las derivadas e integralesAplicación de las derivadas e integrales
Aplicación de las derivadas e integrales
 
Aplicación móvil con acceso a datos
Aplicación móvil con acceso a datosAplicación móvil con acceso a datos
Aplicación móvil con acceso a datos
 
Mobile Enterprise Trends 2015 - Emergence Capital
Mobile Enterprise Trends 2015 - Emergence CapitalMobile Enterprise Trends 2015 - Emergence Capital
Mobile Enterprise Trends 2015 - Emergence Capital
 
10 Design Trends 2015 - UX & UI Trends for Mobile Solutions
10 Design Trends 2015 - UX & UI Trends for Mobile Solutions10 Design Trends 2015 - UX & UI Trends for Mobile Solutions
10 Design Trends 2015 - UX & UI Trends for Mobile Solutions
 
Big Brand Strategies for Mobile App Marketing
Big Brand Strategies for Mobile App MarketingBig Brand Strategies for Mobile App Marketing
Big Brand Strategies for Mobile App Marketing
 
App Lifecycle Engagement
App Lifecycle EngagementApp Lifecycle Engagement
App Lifecycle Engagement
 
Unlocking App Success: How to Turn Your App Into a Mobile Growth Engine
Unlocking App Success: How to Turn Your App Into a Mobile Growth EngineUnlocking App Success: How to Turn Your App Into a Mobile Growth Engine
Unlocking App Success: How to Turn Your App Into a Mobile Growth Engine
 

Similar a Polimorfismo (19)

Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
 
RESUMEN DE POLIMORFISMO
RESUMEN DE POLIMORFISMORESUMEN DE POLIMORFISMO
RESUMEN DE POLIMORFISMO
 
Guía polimorfismo
Guía polimorfismoGuía polimorfismo
Guía polimorfismo
 
Clase numero 6
Clase numero 6Clase numero 6
Clase numero 6
 
Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes PO...
Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes PO...Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes PO...
Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes PO...
 
Herencia
HerenciaHerencia
Herencia
 
Herencia
HerenciaHerencia
Herencia
 
Laboratorio de polimorfismo
Laboratorio de  polimorfismoLaboratorio de  polimorfismo
Laboratorio de polimorfismo
 
4 unidad polimorfismo
4 unidad polimorfismo4 unidad polimorfismo
4 unidad polimorfismo
 
JAVA- basico
JAVA- basicoJAVA- basico
JAVA- basico
 
Programacion 3 unidad ii
Programacion 3   unidad iiProgramacion 3   unidad ii
Programacion 3 unidad ii
 
Programacion 3 unidad ii
Programacion 3   unidad iiProgramacion 3   unidad ii
Programacion 3 unidad ii
 
Guía Herencia PO_O
Guía Herencia PO_OGuía Herencia PO_O
Guía Herencia PO_O
 
3 d cruz_borges_aime_b1examen
3 d cruz_borges_aime_b1examen3 d cruz_borges_aime_b1examen
3 d cruz_borges_aime_b1examen
 
2011 2012-practica poo.v.1.2
2011 2012-practica poo.v.1.22011 2012-practica poo.v.1.2
2011 2012-practica poo.v.1.2
 
Presentacion de clases en c#
Presentacion de clases en c#Presentacion de clases en c#
Presentacion de clases en c#
 
UT05-POO.pdf
UT05-POO.pdfUT05-POO.pdf
UT05-POO.pdf
 
Programaciom avanzada orientada a objetos
Programaciom avanzada orientada a objetosProgramaciom avanzada orientada a objetos
Programaciom avanzada orientada a objetos
 
Lenguajes de programación
Lenguajes de programaciónLenguajes de programación
Lenguajes de programación
 

Más de Susi Perez Gallegos (15)

Plantilla trabajo final
Plantilla trabajo finalPlantilla trabajo final
Plantilla trabajo final
 
A1 u1 tabla comparativa de organizaciones normalizadoras
A1 u1 tabla comparativa de organizaciones normalizadorasA1 u1 tabla comparativa de organizaciones normalizadoras
A1 u1 tabla comparativa de organizaciones normalizadoras
 
Seguridad
SeguridadSeguridad
Seguridad
 
Manipulación de datos
Manipulación de datosManipulación de datos
Manipulación de datos
 
A3 ap _los_usb
A3 ap _los_usbA3 ap _los_usb
A3 ap _los_usb
 
My vacation
My vacationMy vacation
My vacation
 
Will
WillWill
Will
 
A2 ad ampi
A2 ad ampiA2 ad ampi
A2 ad ampi
 
P2 a5shp
P2 a5shpP2 a5shp
P2 a5shp
 
P2 a5shp
P2 a5shpP2 a5shp
P2 a5shp
 
A1 ap ampi
A1 ap ampiA1 ap ampi
A1 ap ampi
 
Ingles.iii susy
Ingles.iii susyIngles.iii susy
Ingles.iii susy
 
Base de datos ii
Base de datos iiBase de datos ii
Base de datos ii
 
A2 u1gb etapa 1 de construcciòn de sitio web
A2 u1gb etapa 1 de construcciòn de sitio webA2 u1gb etapa 1 de construcciòn de sitio web
A2 u1gb etapa 1 de construcciòn de sitio web
 
A1 u1gb azucena_tabla_comparativa
A1 u1gb azucena_tabla_comparativaA1 u1gb azucena_tabla_comparativa
A1 u1gb azucena_tabla_comparativa
 

Polimorfismo

  • 1. UNIVERSIDAD TECNONOLÓGICADEL ESTADO DE ZACATECAS UNIDAD ACADÉMICA DE PINOS TECNOLOGÍASDE LA INFORMACIÓNY COMUNICACIÓN Materia Programación de Aplicaciones Tema POLIMORFISMO Nombre completo del Alumno : Azucena Pérez Gallegos Grado: 9 Grupo: “A” Nombre del Docente:ISC. Omar Emmanuel Lara Juárez Fecha de entrega : 03/07/2015
  • 2. UNIVERSIDAD TECNONOLÓGICADEL ESTADO DE ZACATECAS UNIDAD ACADÉMICA DE PINOS TECNOLOGÍASDE LA INFORMACIÓNY COMUNICACIÓN Polimorfismo Definición académica que nos ofrece el profesor de la UPM Luis Fernández: El polimorfismo es una relajación del sistema de tipos, de tal manera que una referencia a una clase (atributo, parámetro o declaración local o elemento de un vector) acepta direcciones de objetos de dicha clase y de sus clases derivadas (hijas, nietas,…). Herencia y las clasificaciones en Programación Orientada a Objetos El polimorfismo y la herencia son dos conceptos estrechamente ligados. Conseguimos implementar polimorfismo en jerarquías de clasificación que se dan a través de la herencia. Por ejemplo, tenemos una clase vehículo y de ella dependen varias clases hijas como coche, moto, autobús, etc. Por qué el sistema de tipos es importante en Polimorfismo Para entender la importancia del tipado de datos, conveniente entender cómo es un lenguaje fuertemente tipado, como es el caso de Java o C. En estos lenguajes, cuando defino una variable, siempre tengo que decir el tipo de datos que va a contener esta variable. Por ejemplo: int miNumero;
  • 3. UNIVERSIDAD TECNONOLÓGICADEL ESTADO DE ZACATECAS UNIDAD ACADÉMICA DE PINOS TECNOLOGÍASDE LA INFORMACIÓNY COMUNICACIÓN Así le indicamos que la variable declarada "miNumero" va a contener siempre un entero. Podrás asignarle diversos valores, pero siempre deben de ser números enteros. De lo contrario el compilador te lanzará un mensaje de error y no te permitirá compilar el programa que has realizado. Esto incluso pasa con los objetos. Por ejemplo, si en Java defino la clase "Largometraje" (una cinta que se puede exhibir en la televisión o el cine), cuando creo objetos de la clase "Largometraje" debo declarar variables en las que indique el tipo de objeto que va a contener. Largometraje miLargo = new Largometraje("Lo que el viento se llevó"); Esa variable "miLargo", por declaración tendrá una referencia a un objeto de la clase "Largometraje". Pues bien, durante toda su vida, deberá tener siempre una referencia a cualquier objeto de la misma clase. Volviendo al ejemplo de los vehículos, si defino una variable que apunta a un objeto de clase "Coche", durante toda la vida de esa variable tendrá que contener un objeto de la clase Coche, no pudiendo más adelante apuntar a un objeto de la clase Moto o de la clase Bus. Coche miCoche = new Coche("Ford Focus 2.0"); //la variable miCoche apunta a un objeto de la clase coche //si lo deseo, mañana podrá apuntar a otro objeto diferente, pero siempre tendrá que ser de la clase Coche miCoche = new Coche("Renault Megane 1.6"); Lo que nunca podré hacer es guardar en esa variable, declarada como tipo Coche, otra cosa que no sea un objeto de la clase Coche. //si miCoche fue declarada como tipo Coche, no puedo guardar un objeto de la clase Moto miCoche = new Moto("Yamaha YBR"); //la línea anterior nos daría un error en tiempo de compilación Nota: A veces, a los lenguajes fuertemente tipados se les llama de "tipado estático" y a los débilmente tipados se les llama "tipado dinámico".
  • 4. UNIVERSIDAD TECNONOLÓGICADEL ESTADO DE ZACATECAS UNIDAD ACADÉMICA DE PINOS TECNOLOGÍASDE LA INFORMACIÓNY COMUNICACIÓN Polimorfismo en objetos Una función cuyo parámetro se haya declarado de una clase, sólo te aceptará recibir objetos de esa clase. Un array que se ha declarado que es de elementos de una clase determinada, solo aceptará que rellenemos sus casillas con objetos de esa clase declarada. Vehiculo[] misVehiculos = new Vehiculo[3]; Esa variable misVehiculos es un array y en ella he declarado que el contenido de las casillas serán objetos de la clase "Vehiculo". Pues bien, polimorfismo es el mecanismo por el cual podemos "relajar el sistema de tipos", de modo que nos acepte también objetos de las clases hijas o derivadas. Si defines un array con casillas de una determinada clase, el compilador también te aceptará que metas en esas casillas objetos de una clase hija de la que fue declarada. En concreto, en nuestro array de vehículos, gracias al polimorfismo podrás contener en los elementos del array no solo vehículos genéricos, sino también todos los objetos de clases hijas o derivadas de la clase "Vehiculo", osea objetos de la clase "Coche", "Moto", "Bus" o cualquier hija que se haya definido. Para qué nos sirve en la práctica el polimorfismo Volvamos a la clase "Largometraje" y ahora pensemos en la clase "Cine". En un cine se reproducen largometrajes y por ello has decidido que tu clase "Largometraje" tenga clases hijas o derivadas como "Película" y "Documental". Imagina que en tu clase "Cine" creas un método que se llama "reproducir()". Este método podrá recibir como parámetro aquello que quieres emitir en una sala de cine y podrán llegarte a veces objetos de la clase "Película" y otras veces objetos de la clase "Documental". Debido a que los métodos declaran los tipos de los parámetros que recibes, tendrás que hacer algo como esto: reproducir(Pelicula peliculaParaReproducir) Pero si luego tienes que reproducir documentales, tendrás que declarar: reproducir(Documental documentaParaReproducir)
  • 5. UNIVERSIDAD TECNONOLÓGICADEL ESTADO DE ZACATECAS UNIDAD ACADÉMICA DE PINOS TECNOLOGÍASDE LA INFORMACIÓNY COMUNICACIÓN Entonces lo que te permiten hacer los lenguajes es declarar el método "reproducir()" indicando que el parámetro que vas a recibir es un objeto de la clase padre "Largometraje", pero donde realmente el lenguaje y compilador te aceptan cualquier objeto de la clase hija o derivada, "Película", "Documental", etc. reproducir(Largometraje elementoParaReproducir) Podremos crear películas y reproducirlas, también crear documentales para luego reproducir y lo bonito de la historia es que todos estos objetos son aceptados por el método "reproducir()", gracias a la relajación del sistema de tipos. Pongamos otro ejemplo: Tenemos la clase Parking. Dentro de ésta tenemos un método estacionar(). Puede que en un parking tenga que estacionar coches, motos o autobuses. Sin polimorfismo tendría que crear un método que permitiese estacionar objetos de la clase "Coche", otro método que acepte objetos de la clase "Moto" para estacionarlos, etc. Lo ideal sería que nuestro método me permita recibir todo tipo de vehículos para estacionarlos, primero por reutilización del código, ya que es muy parecido estacionar uno u otro vehículo, pero además porque así si mañana el mercado trae otro tipo de vehículos, como una van, todoterreno hibrido, o una nave espacial, mi software sea capaz de aceptarlos sin tener que modificar la clase Parking. Gracias al polimorfismo, cuando declaro la función estacionar() puedo decir que recibe como parámetro un objeto de la clase "Vehiculo" y el compilador me aceptará no solamente vehículos genéricos, sino todos aquellos objetos que hayamos creado que hereden de la clase Vehículo, como, coches, motos, buses, etc. Esa relajación del sistema de tipos para aceptar una gama de objetos diferente es lo que llamamos polimorfismo.
  • 6. UNIVERSIDAD TECNONOLÓGICADEL ESTADO DE ZACATECAS UNIDAD ACADÉMICA DE PINOS TECNOLOGÍASDE LA INFORMACIÓNY COMUNICACIÓN Conclusión En programación orientada a objetos se denomina polimorfismo a la capacidad que tienen objetos de diferentes clases de responder al mismo mensaje o evento. Esto significa que puede haber muchos mensajes con el mismo nombre, en diferentes clases. Cada Clase responde al mensaje con su código propio (o método). También se puede aplicar a la propiedad que poseen algunas operaciones de tener un comportamiento diferente dependiendo del objeto (o tipo de dato) sobre el que se aplican. El polimorfismo sólo es aplicable si cualquiera de los posibles tipos de objetos que se invoquen tienen definida la operación empleada, y los tipos de datos de entrada requeridos y los valores devueltos, más allá de cómo se empleen o calculen, son compatibles entre sí. Desde mi punto de vista los lenguajes fuertemente tipados son más difíciles de trabajar, pero son más comunes y en muchos lugares mas “promocionados”. Los lenguajes tipados incrementan el tiempo de desarrollo y son más difíciles de aprender, pero no todo es malo, una ventaja de estos lenguajes es que son compilados, es decir que se traducen directamente a lenguaje de maquina y esto al manejar grandes cantidades de datos hace diferencia, es mucho mas rápido en la maquina seguir el proceso que debe realizar. Los lenguajes no tipados, o débilmente tipados, al definir una variable no requieren de que se les asigne un tipo de variable, es mas pueden cambiar el tipo de variable en cualquier momento, los casos mas conocidos se presentan en un lenguaje muy popular. PHP, este lenguaje, no es tipado, y no hay ningún problema en que una variable sea una Array y luego se convierta en un entero o un String.