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

PDF
Polimorfismo
PDF
Polimorfismo
DOCX
Polimorfismoomar
PDF
Polimorfismo
PDF
Polimorfismo
PDF
Polimorfismo
PPT
Herencia Y Polimorfismo
PPTX
10 Polimorfismo
Polimorfismo
Polimorfismo
Polimorfismoomar
Polimorfismo
Polimorfismo
Polimorfismo
Herencia Y Polimorfismo
10 Polimorfismo

La actualidad más candente (20)

PDF
Resumen polimorfismo
PDF
Polimorfismo resumen
PDF
Java morld cap2 [CURSO JAVA]
PPT
Curso Java Inicial 6 Polimorfismo, AbstraccióN E Interfaces
PPTX
Polimorfismo en Java
PDF
RESUMEN DE POLIMORFISMO
PPTX
Polimorfismo ppt
PDF
INFOSAN Delphi 151- 302 PAGINAS
PDF
polimorfismo
PDF
10.Polimorfismo Java
PDF
Polimorfismo
DOCX
4 unidad polimorfismo
PPT
Herencia - Programación Orientada a Objetos
PPTX
Herencia poo
PPT
4 Polimorfismo
PDF
Polimorfismo en JAVA
PPT
Polimorfismo en Java
PDF
Poo3 java-0910
PPTX
Clasesyobjetos
PPTX
Cuarta sesion herencia y polimorfismo-explicacion anibal
Resumen polimorfismo
Polimorfismo resumen
Java morld cap2 [CURSO JAVA]
Curso Java Inicial 6 Polimorfismo, AbstraccióN E Interfaces
Polimorfismo en Java
RESUMEN DE POLIMORFISMO
Polimorfismo ppt
INFOSAN Delphi 151- 302 PAGINAS
polimorfismo
10.Polimorfismo Java
Polimorfismo
4 unidad polimorfismo
Herencia - Programación Orientada a Objetos
Herencia poo
4 Polimorfismo
Polimorfismo en JAVA
Polimorfismo en Java
Poo3 java-0910
Clasesyobjetos
Cuarta sesion herencia y polimorfismo-explicacion anibal
Publicidad

Destacado (20)

PDF
Estimación de costos
PDF
Carritodecompra ieee830 2
PDF
Normatividad en las telecomunicaciones en méxico 14k
PDF
PDF
Modelo espiral
PDF
1Antenas1
PDF
Administración trabajo
PDF
Plan de trabajo equipo sac 3.0
PDF
Abstracción 14k
PDF
Transaccion
PPTX
Seminario De Educacion En Valores
PDF
Diccionario de datos
PDF
Trabajo final
PDF
Sistemas de-comunicación-por-fibra
PDF
Tecnologías emergentes2
PDF
Interfaces 14k
PPTX
Propuesta de Plan de Trabajo de Candidatura para Presidencia Provincia Scout ...
PDF
Proyecto plan nacional iih
PDF
Tabajo final unidad ii
ODP
Presentación plan de trabajo proyecto
Estimación de costos
Carritodecompra ieee830 2
Normatividad en las telecomunicaciones en méxico 14k
Modelo espiral
1Antenas1
Administración trabajo
Plan de trabajo equipo sac 3.0
Abstracción 14k
Transaccion
Seminario De Educacion En Valores
Diccionario de datos
Trabajo final
Sistemas de-comunicación-por-fibra
Tecnologías emergentes2
Interfaces 14k
Propuesta de Plan de Trabajo de Candidatura para Presidencia Provincia Scout ...
Proyecto plan nacional iih
Tabajo final unidad ii
Presentación plan de trabajo proyecto
Publicidad

Similar a Polimorfismo 14k (20)

DOCX
Polimorfismo
PDF
Polimorfismo
PDF
Programación de aplicaciones
PDF
Polimorfismo1
PDF
Polimorfismo_PApps
PDF
Polimorfismo en java
PDF
Poliformismo
PDF
Polimorfism oo
PPTX
Presentacion progra
DOCX
Universidad regional autónoma de lo1
PDF
Tema 8 polimorfismo
PPTX
Presentacion de clases en c#
PPT
Presentación1
PDF
Laboratorio de polimorfismo
DOCX
Guía polimorfismo
PPTX
Introduccion a la poo
PDF
Polimorfismo
PPTX
Trabajo de diceño y realizacion
Polimorfismo
Polimorfismo
Programación de aplicaciones
Polimorfismo1
Polimorfismo_PApps
Polimorfismo en java
Poliformismo
Polimorfism oo
Presentacion progra
Universidad regional autónoma de lo1
Tema 8 polimorfismo
Presentacion de clases en c#
Presentación1
Laboratorio de polimorfismo
Guía polimorfismo
Introduccion a la poo
Polimorfismo
Trabajo de diceño y realizacion

Más de Darthuz Kilates (14)

PDF
Maqueta14k
PDF
Estandares de calidad
DOCX
Plantilla trabajo final estandares de calidad de TI.
PDF
Administracion de Proyecto de ti
PDF
Desempeño's activity
PDF
A3 ap the patriot team
PDF
A3 ad the patriot team
PDF
Cuadro comparativo entre moprosoft y cmmi
PDF
Preguntas de android
PDF
Puntos de caso de uso
PDF
Puntos de función de los sistemas
PDF
Manualmovil
PDF
Metricas
PDF
Metricas
Maqueta14k
Estandares de calidad
Plantilla trabajo final estandares de calidad de TI.
Administracion de Proyecto de ti
Desempeño's activity
A3 ap the patriot team
A3 ad the patriot team
Cuadro comparativo entre moprosoft y cmmi
Preguntas de android
Puntos de caso de uso
Puntos de función de los sistemas
Manualmovil
Metricas
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í.