SlideShare una empresa de Scribd logo
UNIVERSIDAD TECNOLÓGICA DEL ESTADO DE ZACATECAS
UNIDAD ACADEMICA DE PINOS
T E C N O L O G Í A S D E L A I N F O R M A C I Ó N Y C O M U N I C A C I Ó N
TEMA:
Polimorfismo
MATERIA:
Programación de Aplicaciones
PROFESOR:
ISC. Omar Emmanuel Lara Juárez
ALUMNO(A):
OCTAVIO ARTURO SALAS ESQUIVEL
CARRERA:
INGENIERÍA EN TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN
GRADO Y GRUPO
9° CUATRIMESTRE “B”
PINOS, ZACATECAS. 03 DE JULIO DEL 2015
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, …).
Nos dice que ara poder entender este concepto de POO necesitas entender otras cosas
previas, como es el caso de la herencia.
Un Ejemplo de polimorfismo
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;
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. O sea, mañana no podremos guardar un entero en la variable, ni una cadena u otro objeto de
otra 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. Esta rigidez, como
decimos, no existe en los lenguajes débilmente tipados como es el caso de Javascript o PHP, sin
embargo es una característica habitual de lenguajes como Java, que son fuertemente tipados.
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
Entendida esa premisa, pensemos en el concepto de función y su uso en lenguajes de tipado
estático.
Polimorfismo en objetos
Tal como funcionan los lenguajes fuertemente tipados, una variable siempre deberá apuntar a un
objeto de la clase que se indicó en el momento de su declaración. 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];
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. Puedes, no obstante, tener varios tipos de largometrajes, como películas o
documentales, etc. Quizás las películas y documentales tienen diferentes características, distintos
horarios de audiencia, distintos precios para los espectadores 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". Si has entendido
el sistema de tipos, y sin entrar todavía en polimorfismo, 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:
Aquí es donde el polimorfismo nos ayuda. Podrías crear perfectamente un método "reproducir()" que
recibe un largometraje y donde podrás recibir todo tipo de elementos, películas, documentales y
cualquier otra cosa similar que sea creada en el futuro.
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)
Este un ejemplo de la utilización de polimorfismo
La utilización 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 softwa re 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, osea,
coches, motos, buses, etc. Esa relajación
Conclusión
El polimorfismo es un concepto de la programación orientada a objetos que nos permite programar
en forma general, en lugar de hacerlo en forma específica. En generalnos sirve para programar
objetos con características comunes y que todos estos compartan la misma superclase en una
jerarquía de clases, como si todas fueran objetos de la superclase. Esto nossimplifica la
programación.
Recordemos el ejemplo del ecosistema, en donde todos los objetos de las distintas especies
heredaban de una superclase llamada Animal, que brindaba la información general decualquier
animal, independiente de su especie. Sin embargo, cada especie hace un uso particular de cada uno
de los métodos u operaciones de la clase Animal. El método comer() no se ejecutará de la
mismamanera en un León() o en un Pavo(). Lo mismo ocurre para métodos moverse() en objetos de
tipo Tiburón() o Gallina(), aunque todas las especies realicen estos métodos. A la sobre escritura
oimplementación específica de métodos es la clave del polimorfismo.
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í.

Más contenido relacionado

La actualidad más candente

Polimorfismo resumen
Polimorfismo resumenPolimorfismo resumen
Polimorfismo resumen
wouyrmz
 
Java morld cap2 [CURSO JAVA]
Java morld cap2 [CURSO JAVA]Java morld cap2 [CURSO JAVA]
Java morld cap2 [CURSO JAVA]Hack '
 
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
Emilio Aviles Avila
 
Polimorfismo en Java
Polimorfismo en JavaPolimorfismo en Java
Polimorfismo en Java
Estefani Lucero
 
RESUMEN DE POLIMORFISMO
RESUMEN DE POLIMORFISMORESUMEN DE POLIMORFISMO
RESUMEN DE POLIMORFISMO
Jesus Cisneros Morales
 
Polimorfismo ppt
Polimorfismo  pptPolimorfismo  ppt
Polimorfismo ppt
ivanvillar7
 
INFOSAN Delphi 151- 302 PAGINAS
INFOSAN Delphi  151-  302 PAGINASINFOSAN Delphi  151-  302 PAGINAS
INFOSAN Delphi 151- 302 PAGINAS
FRANCIACOCO
 
polimorfismo
polimorfismopolimorfismo
polimorfismo
miguel a
 
Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
Paola Madrid
 
Herencia - Programación Orientada a Objetos
Herencia - Programación Orientada a ObjetosHerencia - Programación Orientada a Objetos
Herencia - Programación Orientada a ObjetosMario Villaseñor
 
Herencia poo
Herencia pooHerencia poo
Herencia poo
karina NAVA
 
4 Polimorfismo
4  Polimorfismo4  Polimorfismo
4 Polimorfismo
HectorMamani
 
Polimorfismo en JAVA
Polimorfismo en JAVAPolimorfismo en JAVA
Polimorfismo en JAVAByron David
 
Polimorfismo en Java
Polimorfismo en JavaPolimorfismo en Java
Polimorfismo en Java
ricardomore94
 
Clasesyobjetos
ClasesyobjetosClasesyobjetos
Clasesyobjetos
Christian Simbaña
 
Cuarta sesion herencia y polimorfismo-explicacion anibal
Cuarta sesion herencia y polimorfismo-explicacion anibalCuarta sesion herencia y polimorfismo-explicacion anibal
Cuarta sesion herencia y polimorfismo-explicacion anibal
Carlos Anibal Riascos Hurtado
 

La actualidad más candente (20)

Resumen polimorfismo
Resumen polimorfismoResumen polimorfismo
Resumen polimorfismo
 
Polimorfismo resumen
Polimorfismo resumenPolimorfismo resumen
Polimorfismo resumen
 
Java morld cap2 [CURSO JAVA]
Java morld cap2 [CURSO JAVA]Java morld cap2 [CURSO JAVA]
Java morld cap2 [CURSO 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
 
Polimorfismo en Java
Polimorfismo en JavaPolimorfismo en Java
Polimorfismo en Java
 
RESUMEN DE POLIMORFISMO
RESUMEN DE POLIMORFISMORESUMEN DE POLIMORFISMO
RESUMEN DE POLIMORFISMO
 
Polimorfismo ppt
Polimorfismo  pptPolimorfismo  ppt
Polimorfismo ppt
 
INFOSAN Delphi 151- 302 PAGINAS
INFOSAN Delphi  151-  302 PAGINASINFOSAN Delphi  151-  302 PAGINAS
INFOSAN Delphi 151- 302 PAGINAS
 
polimorfismo
polimorfismopolimorfismo
polimorfismo
 
10.Polimorfismo Java
10.Polimorfismo Java10.Polimorfismo Java
10.Polimorfismo Java
 
Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
 
4 unidad polimorfismo
4 unidad polimorfismo4 unidad polimorfismo
4 unidad polimorfismo
 
Herencia - Programación Orientada a Objetos
Herencia - Programación Orientada a ObjetosHerencia - Programación Orientada a Objetos
Herencia - Programación Orientada a Objetos
 
Herencia poo
Herencia pooHerencia poo
Herencia poo
 
4 Polimorfismo
4  Polimorfismo4  Polimorfismo
4 Polimorfismo
 
Polimorfismo en JAVA
Polimorfismo en JAVAPolimorfismo en JAVA
Polimorfismo en JAVA
 
Polimorfismo en Java
Polimorfismo en JavaPolimorfismo en Java
Polimorfismo en Java
 
Poo3 java-0910
Poo3 java-0910Poo3 java-0910
Poo3 java-0910
 
Clasesyobjetos
ClasesyobjetosClasesyobjetos
Clasesyobjetos
 
Cuarta sesion herencia y polimorfismo-explicacion anibal
Cuarta sesion herencia y polimorfismo-explicacion anibalCuarta sesion herencia y polimorfismo-explicacion anibal
Cuarta sesion herencia y polimorfismo-explicacion anibal
 

Destacado

Carritodecompra ieee830 2
Carritodecompra ieee830 2Carritodecompra ieee830 2
Carritodecompra ieee830 2
Darthuz Kilates
 
Normatividad en las telecomunicaciones en méxico 14k
Normatividad en las telecomunicaciones en méxico 14kNormatividad en las telecomunicaciones en méxico 14k
Normatividad en las telecomunicaciones en méxico 14kDarthuz Kilates
 
Administración trabajo
Administración trabajo  Administración trabajo
Administración trabajo
Darthuz Kilates
 
Plan de trabajo equipo sac 3.0
Plan de trabajo equipo sac 3.0Plan de trabajo equipo sac 3.0
Plan de trabajo equipo sac 3.0sac30
 
Seminario De Educacion En Valores
Seminario De Educacion En ValoresSeminario De Educacion En Valores
Seminario De Educacion En Valores
AmbellGiron
 
Sistemas de-comunicación-por-fibra
Sistemas de-comunicación-por-fibraSistemas de-comunicación-por-fibra
Sistemas de-comunicación-por-fibra
Darthuz Kilates
 
Tecnologías emergentes2
Tecnologías emergentes2Tecnologías emergentes2
Tecnologías emergentes2
Darthuz Kilates
 
Propuesta de Plan de Trabajo de Candidatura para Presidencia Provincia Scout ...
Propuesta de Plan de Trabajo de Candidatura para Presidencia Provincia Scout ...Propuesta de Plan de Trabajo de Candidatura para Presidencia Provincia Scout ...
Propuesta de Plan de Trabajo de Candidatura para Presidencia Provincia Scout ...
Erika Tobilla Garrido
 
Presentación plan de trabajo proyecto
Presentación plan de trabajo proyectoPresentación plan de trabajo proyecto
Presentación plan de trabajo proyectoAlfonso Troyano
 

Destacado (20)

Estimación de costos
Estimación de costosEstimación de costos
Estimación de costos
 
Carritodecompra ieee830 2
Carritodecompra ieee830 2Carritodecompra ieee830 2
Carritodecompra ieee830 2
 
Normatividad en las telecomunicaciones en méxico 14k
Normatividad en las telecomunicaciones en méxico 14kNormatividad en las telecomunicaciones en méxico 14k
Normatividad en las telecomunicaciones en méxico 14k
 
Lucy11
Lucy11Lucy11
Lucy11
 
Modelo espiral
Modelo espiral Modelo espiral
Modelo espiral
 
1Antenas1
1Antenas11Antenas1
1Antenas1
 
Administración trabajo
Administración trabajo  Administración trabajo
Administración trabajo
 
Plan de trabajo equipo sac 3.0
Plan de trabajo equipo sac 3.0Plan de trabajo equipo sac 3.0
Plan de trabajo equipo sac 3.0
 
Abstracción 14k
Abstracción 14kAbstracción 14k
Abstracción 14k
 
Transaccion
TransaccionTransaccion
Transaccion
 
Seminario De Educacion En Valores
Seminario De Educacion En ValoresSeminario De Educacion En Valores
Seminario De Educacion En Valores
 
Diccionario de datos
Diccionario de datosDiccionario de datos
Diccionario de datos
 
Trabajo final
Trabajo finalTrabajo final
Trabajo final
 
Sistemas de-comunicación-por-fibra
Sistemas de-comunicación-por-fibraSistemas de-comunicación-por-fibra
Sistemas de-comunicación-por-fibra
 
Tecnologías emergentes2
Tecnologías emergentes2Tecnologías emergentes2
Tecnologías emergentes2
 
Interfaces 14k
Interfaces 14kInterfaces 14k
Interfaces 14k
 
Propuesta de Plan de Trabajo de Candidatura para Presidencia Provincia Scout ...
Propuesta de Plan de Trabajo de Candidatura para Presidencia Provincia Scout ...Propuesta de Plan de Trabajo de Candidatura para Presidencia Provincia Scout ...
Propuesta de Plan de Trabajo de Candidatura para Presidencia Provincia Scout ...
 
Proyecto plan nacional iih
Proyecto plan nacional iihProyecto plan nacional iih
Proyecto plan nacional iih
 
Tabajo final unidad ii
Tabajo final unidad iiTabajo final unidad ii
Tabajo final unidad ii
 
Presentación plan de trabajo proyecto
Presentación plan de trabajo proyectoPresentación plan de trabajo proyecto
Presentación plan de trabajo proyecto
 

Similar a Polimorfismo 14k

Programación de aplicaciones
Programación de aplicacionesProgramación de aplicaciones
Programación de aplicacionesEdward Contreras
 
Guía polimorfismo
Guía polimorfismoGuía polimorfismo
Guía polimorfismo
lissette_torrealba
 
Universidad regional autónoma de lo1
Universidad regional autónoma de lo1Universidad regional autónoma de lo1
Universidad regional autónoma de lo1
Jonathan Israel
 
Investigacion v unidad
Investigacion v unidadInvestigacion v unidad
Investigacion v unidadElena Perz
 
Herencia
HerenciaHerencia
Herencia
thais0511
 
JAVA- basico
JAVA- basicoJAVA- basico
JAVA- basico
Jose Antonio
 
Programaciom avanzada orientada a objetos
Programaciom avanzada orientada a objetosProgramaciom avanzada orientada a objetos
Programaciom avanzada orientada a objetos
Jonathan Macías
 
Polimorfismo en java
Polimorfismo en javaPolimorfismo en java
Polimorfismo en javaSa_Van
 
Poliformismo
PoliformismoPoliformismo
PoliformismoSa_Van
 
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...Didier Granados
 
Presentacion progra
Presentacion prograPresentacion progra
Presentacion progra
zeta2015
 
Introducción a la programación orientada a objetos en java
Introducción a la programación orientada a objetos en javaIntroducción a la programación orientada a objetos en java
Introducción a la programación orientada a objetos en java
Franco Morante Rodriguez
 
Explicacion de interface
Explicacion de interfaceExplicacion de interface
Explicacion de interfaceBoris Salleg
 
Programación Orientada a Objetos.ppt
Programación Orientada a Objetos.pptProgramación Orientada a Objetos.ppt
Programación Orientada a Objetos.ppt
Julio Ƌndrǝs Pǝraltƌ Torres
 

Similar a Polimorfismo 14k (20)

Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
 
Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
 
Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
 
Programación de aplicaciones
Programación de aplicacionesProgramación de aplicaciones
Programación de aplicaciones
 
polimorfismo
polimorfismopolimorfismo
polimorfismo
 
Polimorfismo1
Polimorfismo1Polimorfismo1
Polimorfismo1
 
Polimorfismo_PApps
Polimorfismo_PAppsPolimorfismo_PApps
Polimorfismo_PApps
 
Guía polimorfismo
Guía polimorfismoGuía polimorfismo
Guía polimorfismo
 
Universidad regional autónoma de lo1
Universidad regional autónoma de lo1Universidad regional autónoma de lo1
Universidad regional autónoma de lo1
 
Investigacion v unidad
Investigacion v unidadInvestigacion v unidad
Investigacion v unidad
 
Herencia
HerenciaHerencia
Herencia
 
JAVA- basico
JAVA- basicoJAVA- basico
JAVA- basico
 
Programaciom avanzada orientada a objetos
Programaciom avanzada orientada a objetosProgramaciom avanzada orientada a objetos
Programaciom avanzada orientada a objetos
 
Polimorfismo en java
Polimorfismo en javaPolimorfismo en java
Polimorfismo en java
 
Poliformismo
PoliformismoPoliformismo
Poliformismo
 
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...
 
Presentacion progra
Presentacion prograPresentacion progra
Presentacion progra
 
Introducción a la programación orientada a objetos en java
Introducción a la programación orientada a objetos en javaIntroducción a la programación orientada a objetos en java
Introducción a la programación orientada a objetos en java
 
Explicacion de interface
Explicacion de interfaceExplicacion de interface
Explicacion de interface
 
Programación Orientada a Objetos.ppt
Programación Orientada a Objetos.pptProgramación Orientada a Objetos.ppt
Programación Orientada a Objetos.ppt
 

Más de Darthuz Kilates

Plantilla trabajo final estandares de calidad de TI.
Plantilla trabajo final estandares de calidad de TI.Plantilla trabajo final estandares de calidad de TI.
Plantilla trabajo final estandares de calidad de TI.
Darthuz Kilates
 
Administracion de Proyecto de ti
Administracion de Proyecto de tiAdministracion de Proyecto de ti
Administracion de Proyecto de tiDarthuz Kilates
 
Cuadro comparativo entre moprosoft y cmmi
Cuadro comparativo entre moprosoft y cmmi Cuadro comparativo entre moprosoft y cmmi
Cuadro comparativo entre moprosoft y cmmi Darthuz Kilates
 
Puntos de función de los sistemas
Puntos de función de los sistemasPuntos de función de los sistemas
Puntos de función de los sistemasDarthuz Kilates
 

Más de Darthuz Kilates (14)

Maqueta14k
Maqueta14kMaqueta14k
Maqueta14k
 
Estandares de calidad
Estandares de calidadEstandares de calidad
Estandares de calidad
 
Plantilla trabajo final estandares de calidad de TI.
Plantilla trabajo final estandares de calidad de TI.Plantilla trabajo final estandares de calidad de TI.
Plantilla trabajo final estandares de calidad de TI.
 
Administracion de Proyecto de ti
Administracion de Proyecto de tiAdministracion de Proyecto de ti
Administracion de Proyecto de ti
 
Desempeño's activity
Desempeño's activityDesempeño's activity
Desempeño's activity
 
A3 ap the patriot team
A3 ap the patriot teamA3 ap the patriot team
A3 ap the patriot team
 
A3 ad the patriot team
A3 ad the patriot teamA3 ad the patriot team
A3 ad the patriot team
 
Cuadro comparativo entre moprosoft y cmmi
Cuadro comparativo entre moprosoft y cmmi Cuadro comparativo entre moprosoft y cmmi
Cuadro comparativo entre moprosoft y cmmi
 
Preguntas de android
Preguntas de androidPreguntas de android
Preguntas de android
 
Puntos de caso de uso
Puntos de caso de usoPuntos de caso de uso
Puntos de caso de uso
 
Puntos de función de los sistemas
Puntos de función de los sistemasPuntos de función de los sistemas
Puntos de función de los sistemas
 
Manualmovil
ManualmovilManualmovil
Manualmovil
 
Metricas
MetricasMetricas
Metricas
 
Metricas
MetricasMetricas
Metricas
 

Polimorfismo 14k

  • 1. UNIVERSIDAD TECNOLÓGICA DEL ESTADO DE ZACATECAS UNIDAD ACADEMICA DE PINOS T E C N O L O G Í A S D E L A I N F O R M A C I Ó N Y C O M U N I C A C I Ó N TEMA: Polimorfismo MATERIA: Programación de Aplicaciones PROFESOR: ISC. Omar Emmanuel Lara Juárez ALUMNO(A): OCTAVIO ARTURO SALAS ESQUIVEL CARRERA: INGENIERÍA EN TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN GRADO Y GRUPO 9° CUATRIMESTRE “B” PINOS, ZACATECAS. 03 DE JULIO DEL 2015
  • 2. 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, …). Nos dice que ara poder entender este concepto de POO necesitas entender otras cosas previas, como es el caso de la herencia. Un Ejemplo de polimorfismo 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; 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. O sea, mañana no podremos guardar un entero en la variable, ni una cadena u otro objeto de otra 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. Esta rigidez, como decimos, no existe en los lenguajes débilmente tipados como es el caso de Javascript o PHP, sin embargo es una característica habitual de lenguajes como Java, que son fuertemente tipados. Coche miCoche = new Coche("Ford Focus 2.0");
  • 3. //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 Entendida esa premisa, pensemos en el concepto de función y su uso en lenguajes de tipado estático. Polimorfismo en objetos Tal como funcionan los lenguajes fuertemente tipados, una variable siempre deberá apuntar a un objeto de la clase que se indicó en el momento de su declaración. 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]; 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. Puedes, no obstante, tener varios tipos de largometrajes, como películas o documentales, etc. Quizás las películas y documentales tienen diferentes características, distintos horarios de audiencia, distintos precios para los espectadores 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". Si has entendido el sistema de tipos, y sin entrar todavía en polimorfismo, 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: Aquí es donde el polimorfismo nos ayuda. Podrías crear perfectamente un método "reproducir()" que recibe un largometraje y donde podrás recibir todo tipo de elementos, películas, documentales y cualquier otra cosa similar que sea creada en el futuro.
  • 4. 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) Este un ejemplo de la utilización de polimorfismo La utilización 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 softwa re 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, osea, coches, motos, buses, etc. Esa relajación Conclusión El polimorfismo es un concepto de la programación orientada a objetos que nos permite programar en forma general, en lugar de hacerlo en forma específica. En generalnos sirve para programar objetos con características comunes y que todos estos compartan la misma superclase en una jerarquía de clases, como si todas fueran objetos de la superclase. Esto nossimplifica la programación. Recordemos el ejemplo del ecosistema, en donde todos los objetos de las distintas especies heredaban de una superclase llamada Animal, que brindaba la información general decualquier animal, independiente de su especie. Sin embargo, cada especie hace un uso particular de cada uno de los métodos u operaciones de la clase Animal. El método comer() no se ejecutará de la mismamanera en un León() o en un Pavo(). Lo mismo ocurre para métodos moverse() en objetos de tipo Tiburón() o Gallina(), aunque todas las especies realicen estos métodos. A la sobre escritura oimplementación específica de métodos es la clave del polimorfismo. 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í.