SlideShare una empresa de Scribd logo
1 de 8
UNIVERSIDAD TECNOLOGICA DEL ESTADO DE ZACATECAS
TECNOLOGIAS DE LA INFORMACION LA COMUNICACIÓN
TEMA: POLIMORFISMO
MATERIA: PROGRAMACION DE LAS TELECOMUNICACIONES
ALUMNO: FRANCISCO HERRERA GOMEZ
GRADO: 9
GRUPO: A
POLIMORFISMO
En programación orientada a objetos, el polimorfismo se refiere a la propiedad por
la que es posible enviar mensajes sintácticamente iguales a objetos de tipos
distintos. El único requisito que deben cumplir los objetos que se utilizan de
manera polimórfica es saber responder al mensaje que se les envía.
La apariencia del código puede ser muy diferente dependiendo del lenguaje que
se utilice, más allá de las obvias diferencias sintácticas.
Por ejemplo, en un lenguaje de programación que cuenta con un sistema de
tipos dinámico (en los que las variables pueden contener datos de cualquier tipo u
objetos de cualquier clase) como Smalltalk no se requiere que los objetos que se
utilizan de modo polimórfico sean parte de una jerarquía de clases.
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;
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.
Ejemplo con un objeto
Largometraje miLargo = new Largometraje ("Lo que el viento se llevó");
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.
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]; Esa variable misVehiculos es un array y en ella
he declarado que el contenido de las casillas serán objetos de la clase "Vehiculo".
Como se ha explicado, en lenguajes fuertemente tipados sólo podría contener
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. Por tanto, la "relajación" del sistema de tipos no es
total, sino que tiene.
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(Película peliculaParaReproducir) Pero si luego
tienes que reproducir documentales, tendrás que declarar: reproducir(Documental
documentaParaReproducir) Probablemente el código de ambos métodos sea
exactamente el mismo. Poner la película en el proyector, darle al play, crear un
registro con el número de entradas vendidas, parar la cinta cuando llega al final,
etc. ¿Realmente es necesario hacer dos métodos? De acuerdo, igual no te supone
tanto problema, ¿pero si mañana te mandan otro tipo de cinta a reproducir, como
la grabación de la final del mundial de fútbol en 3D? ¿Tendrás que crear un nuevo
método reproducir() sobre la clase "Cine" que te acepte ese tipo de emisión? ¿es
posible ahorrarnos todo ese mantenimiento? 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) 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. Incluso, si mañana quieres reproducir
otro tipo de cinta, no tendrás que tocar la clase "Cine" y el método "reproducir()".
Siempre que aquello que quieras reproducir sea de la clase "Largometraje" o una
clase hija, el método te lo aceptará. Pongamos otro ejemplo por si acaso no ha
quedado claro con lo visto hasta el momento, volviendo de nuevo a la clase
Vehiculo. Además nos centramos en la utilidad del polimorfismo y sus
posibilidades para reducir el mantenimiento de los programas informáticos, que es
lo que realmente me gustaría que se entienda. 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. Pero todos estaremos
de acuerdo que estacionar un coche, una moto o un bus es bastante similar:
"entrar en el parking, recoger el ticket de entrara, buscar una plaza, situar el
vehículo dentro de esa plaza...". Lo ideal sería que nuestro método me permita
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
CONCLUCION DE
POLIMORFISMO
En conclusión el polimorfismo se refiere a la posibilidad de definir múltiples clases
con una función diferente, pero con métodos o propiedades denominados de la
misma forma, que pueden utilizarse de manera intercambiable mediante código
cliente en tiempo de ejecución.
Es como 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).
Pues bueno polimorfismo es como una manera de responder variablemente algún
mensaje.
Si nosotros los UTZAC usamos polimorfismo contamos con la habilidad de tener
múltiples opciones de responder un mensaje por ejemplo:
Si Francisco le envía un mensaje a Jorge preguntando ¿Jorge tienes un perro?
Jorge al aplicar el polimorfismo tendrá la capacidad de contestar de las siguientes
maneras
-si tengo un perro
-si tengo un chucho
-si tengo un zaguate
Jorge tiene la capacidad de responder a mi respuesta de diferentes maneras pero
siempre diciendo lo mismo solo que de forma distinta.
“Es la manera de decir los mismo de diferentes maneras sin afectar el resultado”
.CONCLUCION DE LENGUAJES
TIPIADOS NO TIPADOS
Empezare por explicar un lenguaje tipado o fuete tipado como JAVA o C.
En este lenguaje cuando defino una variable, siempre tengo que decir el tipo de
datos que va a contener esta variable para hacerlo más práctico les tratare de
explicar todo con el código que está en rojo:
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");
Otro ejemplo también puede ser
int X;
Esto nos indica que x solamente puede adquirir valores enteros si se le inserta un
valor decimal marcara error el programas
En el ejemplo de arriba en un lenguaje tipiado jamás se podrá añadir otro tipo de
objeto como “pitbull” o “moto” porque solamente se pueden agregar objetos como
Nissan, Honda… con sus respectivas características a que la variable es clara yy
nos indica que solamente se puede añadir “coche” en pocas palabras toda su vida,
deberá tener siempre una referencia a cualquier objeto de la misma clase.
En un lenguaje no tipado o tipado dinámico como PHP o JAVASCRIP
Se refiere que cundo programamos en un entorno como PHP una misma variable
puede tomar valores de distinto tipo en distintos momentos también nos da la
facilidad de no definir los tipos al declarar una variable, algunos ejemplos son
PHP, entre otros, estos son los que más usamos aquí en LA UTZAC últimamente
anteriormente en java teníamos que detallar el tipo de dato.
Solamente se crea la variable la cual podrá admitir cualquier objeto asignado.

Más contenido relacionado

Destacado

Actividad 10: Reporte de polimorfismo, herencia & encapsulamiento
Actividad  10: Reporte de polimorfismo, herencia & encapsulamientoActividad  10: Reporte de polimorfismo, herencia & encapsulamiento
Actividad 10: Reporte de polimorfismo, herencia & encapsulamientograchika
 
Programación 3: clases derivadas y polimorfismo
Programación 3: clases derivadas y polimorfismoProgramación 3: clases derivadas y polimorfismo
Programación 3: clases derivadas y polimorfismoAngel Vázquez Patiño
 
Poliedros y cuerpos redondos
Poliedros y cuerpos redondosPoliedros y cuerpos redondos
Poliedros y cuerpos redondosiesvtoscaraja
 
Guajira natural extremo
Guajira natural extremoGuajira natural extremo
Guajira natural extremoRuth Erika
 
actividad5equipo2grupo264quimicaCCHNaucalpan blog blogger blogspot
actividad5equipo2grupo264quimicaCCHNaucalpan blog blogger blogspotactividad5equipo2grupo264quimicaCCHNaucalpan blog blogger blogspot
actividad5equipo2grupo264quimicaCCHNaucalpan blog blogger blogspotAbdiel Martinez
 
Poliedros y cuerpos redondos
Poliedros y cuerpos redondosPoliedros y cuerpos redondos
Poliedros y cuerpos redondosJonyGDFF
 
25 de agosto declaratoria de la independencia ribero suarez berriel
25 de agosto declaratoria de la independencia ribero suarez berriel25 de agosto declaratoria de la independencia ribero suarez berriel
25 de agosto declaratoria de la independencia ribero suarez berrielBrunoRibero2013
 
Como insertar un video a tu blog s
Como insertar un video a tu blog sComo insertar un video a tu blog s
Como insertar un video a tu blog sKevinroosas
 
Anexo iii especialidades aivi pes_2015
Anexo iii especialidades aivi pes_2015Anexo iii especialidades aivi pes_2015
Anexo iii especialidades aivi pes_2015Miriam Martin
 
Artefactos tecnologicos 801
Artefactos tecnologicos 801Artefactos tecnologicos 801
Artefactos tecnologicos 801karelusi
 
Cartilla declaracion de importacion 2012
Cartilla declaracion de importacion 2012Cartilla declaracion de importacion 2012
Cartilla declaracion de importacion 2012HECARDON
 
Corel draw finaaaaaaaaaaaaaaal
Corel draw finaaaaaaaaaaaaaaalCorel draw finaaaaaaaaaaaaaaal
Corel draw finaaaaaaaaaaaaaaalossomarinela
 
Técnicas de Estudio
Técnicas de Estudio Técnicas de Estudio
Técnicas de Estudio ismaeldsf
 

Destacado (20)

Actividad 10: Reporte de polimorfismo, herencia & encapsulamiento
Actividad  10: Reporte de polimorfismo, herencia & encapsulamientoActividad  10: Reporte de polimorfismo, herencia & encapsulamiento
Actividad 10: Reporte de polimorfismo, herencia & encapsulamiento
 
Programación 3: clases derivadas y polimorfismo
Programación 3: clases derivadas y polimorfismoProgramación 3: clases derivadas y polimorfismo
Programación 3: clases derivadas y polimorfismo
 
Poliedros y cuerpos redondos
Poliedros y cuerpos redondosPoliedros y cuerpos redondos
Poliedros y cuerpos redondos
 
Internacionalización de negocios
Internacionalización de negociosInternacionalización de negocios
Internacionalización de negocios
 
Guajira natural extremo
Guajira natural extremoGuajira natural extremo
Guajira natural extremo
 
actividad5equipo2grupo264quimicaCCHNaucalpan blog blogger blogspot
actividad5equipo2grupo264quimicaCCHNaucalpan blog blogger blogspotactividad5equipo2grupo264quimicaCCHNaucalpan blog blogger blogspot
actividad5equipo2grupo264quimicaCCHNaucalpan blog blogger blogspot
 
Medios y elementos de comunicación
Medios y elementos de comunicaciónMedios y elementos de comunicación
Medios y elementos de comunicación
 
Poliedros y cuerpos redondos
Poliedros y cuerpos redondosPoliedros y cuerpos redondos
Poliedros y cuerpos redondos
 
Oli
OliOli
Oli
 
25 de agosto declaratoria de la independencia ribero suarez berriel
25 de agosto declaratoria de la independencia ribero suarez berriel25 de agosto declaratoria de la independencia ribero suarez berriel
25 de agosto declaratoria de la independencia ribero suarez berriel
 
Como insertar un video a tu blog s
Como insertar un video a tu blog sComo insertar un video a tu blog s
Como insertar un video a tu blog s
 
Ososperezosos
OsosperezososOsosperezosos
Ososperezosos
 
Anexo iii especialidades aivi pes_2015
Anexo iii especialidades aivi pes_2015Anexo iii especialidades aivi pes_2015
Anexo iii especialidades aivi pes_2015
 
Artefactos tecnologicos 801
Artefactos tecnologicos 801Artefactos tecnologicos 801
Artefactos tecnologicos 801
 
Cartilla declaracion de importacion 2012
Cartilla declaracion de importacion 2012Cartilla declaracion de importacion 2012
Cartilla declaracion de importacion 2012
 
Corel draw finaaaaaaaaaaaaaaal
Corel draw finaaaaaaaaaaaaaaalCorel draw finaaaaaaaaaaaaaaal
Corel draw finaaaaaaaaaaaaaaal
 
Agenda francisco
Agenda franciscoAgenda francisco
Agenda francisco
 
estadistica
estadisticaestadistica
estadistica
 
Técnicas de Estudio
Técnicas de Estudio Técnicas de Estudio
Técnicas de Estudio
 
Proyecto ambiental
Proyecto ambientalProyecto ambiental
Proyecto ambiental
 

Similar a Polimorfismo (20)

Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
 
Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
 
Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
 
Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
 
Polimorfismo 14k
Polimorfismo 14kPolimorfismo 14k
Polimorfismo 14k
 
Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
 
Polimorfismo1
Polimorfismo1Polimorfismo1
Polimorfismo1
 
Polimorfismoomar
PolimorfismoomarPolimorfismoomar
Polimorfismoomar
 
Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
 
polimorfismo
polimorfismopolimorfismo
polimorfismo
 
Polimorfismo_PApps
Polimorfismo_PAppsPolimorfismo_PApps
Polimorfismo_PApps
 
Guía polimorfismo
Guía polimorfismoGuía polimorfismo
Guía polimorfismo
 
Presentacion progra
Presentacion prograPresentacion progra
Presentacion progra
 
Investigacion v unidad
Investigacion v unidadInvestigacion v unidad
Investigacion v unidad
 
Herencia
HerenciaHerencia
Herencia
 
Clase numero 6
Clase numero 6Clase numero 6
Clase numero 6
 
Polimorfismo ppt
Polimorfismo  pptPolimorfismo  ppt
Polimorfismo ppt
 
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...
 
3 d cruz_borges_aime_b1examen
3 d cruz_borges_aime_b1examen3 d cruz_borges_aime_b1examen
3 d cruz_borges_aime_b1examen
 
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
 

Más de Francisco Herrera

Más de Francisco Herrera (13)

Abstraccion
AbstraccionAbstraccion
Abstraccion
 
Abstraccion
AbstraccionAbstraccion
Abstraccion
 
normatividad de las telecomunicaciones
normatividad de las telecomunicacionesnormatividad de las telecomunicaciones
normatividad de las telecomunicaciones
 
Trancacciones eloy
Trancacciones eloyTrancacciones eloy
Trancacciones eloy
 
Plantilla trabajo final
Plantilla trabajo finalPlantilla trabajo final
Plantilla trabajo final
 
Cuadro de estandares
Cuadro de estandaresCuadro de estandares
Cuadro de estandares
 
Mapa_mental_francisco_seguridad
Mapa_mental_francisco_seguridadMapa_mental_francisco_seguridad
Mapa_mental_francisco_seguridad
 
Manual final reporte_francisco
Manual final reporte_franciscoManual final reporte_francisco
Manual final reporte_francisco
 
Manual final francisco
Manual final franciscoManual final francisco
Manual final francisco
 
Homework_ingles_FranciscoGomez
Homework_ingles_FranciscoGomezHomework_ingles_FranciscoGomez
Homework_ingles_FranciscoGomez
 
PDF_INGLES_FRANCISCOGOMEZ
PDF_INGLES_FRANCISCOGOMEZPDF_INGLES_FRANCISCOGOMEZ
PDF_INGLES_FRANCISCOGOMEZ
 
Dialogo de ingles_should
Dialogo de ingles_shouldDialogo de ingles_should
Dialogo de ingles_should
 
Ingle_francisco_eurocsys
Ingle_francisco_eurocsysIngle_francisco_eurocsys
Ingle_francisco_eurocsys
 

Polimorfismo

  • 1. UNIVERSIDAD TECNOLOGICA DEL ESTADO DE ZACATECAS TECNOLOGIAS DE LA INFORMACION LA COMUNICACIÓN TEMA: POLIMORFISMO MATERIA: PROGRAMACION DE LAS TELECOMUNICACIONES ALUMNO: FRANCISCO HERRERA GOMEZ GRADO: 9 GRUPO: A
  • 2. POLIMORFISMO En programación orientada a objetos, el polimorfismo se refiere a la propiedad por la que es posible enviar mensajes sintácticamente iguales a objetos de tipos distintos. El único requisito que deben cumplir los objetos que se utilizan de manera polimórfica es saber responder al mensaje que se les envía. La apariencia del código puede ser muy diferente dependiendo del lenguaje que se utilice, más allá de las obvias diferencias sintácticas. Por ejemplo, en un lenguaje de programación que cuenta con un sistema de tipos dinámico (en los que las variables pueden contener datos de cualquier tipo u objetos de cualquier clase) como Smalltalk no se requiere que los objetos que se utilizan de modo polimórfico sean parte de una jerarquía de clases. 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; 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.
  • 3. Ejemplo con un objeto Largometraje miLargo = new Largometraje ("Lo que el viento se llevó"); 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. 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]; Esa variable misVehiculos es un array y en ella he declarado que el contenido de las casillas serán objetos de la clase "Vehiculo". Como se ha explicado, en lenguajes fuertemente tipados sólo podría contener 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. Por tanto, la "relajación" del sistema de tipos no es total, sino que tiene.
  • 4. 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(Película peliculaParaReproducir) Pero si luego tienes que reproducir documentales, tendrás que declarar: reproducir(Documental documentaParaReproducir) Probablemente el código de ambos métodos sea exactamente el mismo. Poner la película en el proyector, darle al play, crear un registro con el número de entradas vendidas, parar la cinta cuando llega al final, etc. ¿Realmente es necesario hacer dos métodos? De acuerdo, igual no te supone tanto problema, ¿pero si mañana te mandan otro tipo de cinta a reproducir, como la grabación de la final del mundial de fútbol en 3D? ¿Tendrás que crear un nuevo método reproducir() sobre la clase "Cine" que te acepte ese tipo de emisión? ¿es posible ahorrarnos todo ese mantenimiento? 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.
  • 5. 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. Incluso, si mañana quieres reproducir otro tipo de cinta, no tendrás que tocar la clase "Cine" y el método "reproducir()". Siempre que aquello que quieras reproducir sea de la clase "Largometraje" o una clase hija, el método te lo aceptará. Pongamos otro ejemplo por si acaso no ha quedado claro con lo visto hasta el momento, volviendo de nuevo a la clase Vehiculo. Además nos centramos en la utilidad del polimorfismo y sus posibilidades para reducir el mantenimiento de los programas informáticos, que es lo que realmente me gustaría que se entienda. 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. Pero todos estaremos de acuerdo que estacionar un coche, una moto o un bus es bastante similar: "entrar en el parking, recoger el ticket de entrara, buscar una plaza, situar el vehículo dentro de esa plaza...". Lo ideal sería que nuestro método me permita 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
  • 6. CONCLUCION DE POLIMORFISMO En conclusión el polimorfismo se refiere a la posibilidad de definir múltiples clases con una función diferente, pero con métodos o propiedades denominados de la misma forma, que pueden utilizarse de manera intercambiable mediante código cliente en tiempo de ejecución. Es como 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). Pues bueno polimorfismo es como una manera de responder variablemente algún mensaje. Si nosotros los UTZAC usamos polimorfismo contamos con la habilidad de tener múltiples opciones de responder un mensaje por ejemplo: Si Francisco le envía un mensaje a Jorge preguntando ¿Jorge tienes un perro? Jorge al aplicar el polimorfismo tendrá la capacidad de contestar de las siguientes maneras -si tengo un perro -si tengo un chucho -si tengo un zaguate
  • 7. Jorge tiene la capacidad de responder a mi respuesta de diferentes maneras pero siempre diciendo lo mismo solo que de forma distinta. “Es la manera de decir los mismo de diferentes maneras sin afectar el resultado” .CONCLUCION DE LENGUAJES TIPIADOS NO TIPADOS Empezare por explicar un lenguaje tipado o fuete tipado como JAVA o C. En este lenguaje cuando defino una variable, siempre tengo que decir el tipo de datos que va a contener esta variable para hacerlo más práctico les tratare de explicar todo con el código que está en rojo: 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"); Otro ejemplo también puede ser int X; Esto nos indica que x solamente puede adquirir valores enteros si se le inserta un valor decimal marcara error el programas En el ejemplo de arriba en un lenguaje tipiado jamás se podrá añadir otro tipo de objeto como “pitbull” o “moto” porque solamente se pueden agregar objetos como Nissan, Honda… con sus respectivas características a que la variable es clara yy nos indica que solamente se puede añadir “coche” en pocas palabras toda su vida, deberá tener siempre una referencia a cualquier objeto de la misma clase.
  • 8. En un lenguaje no tipado o tipado dinámico como PHP o JAVASCRIP Se refiere que cundo programamos en un entorno como PHP una misma variable puede tomar valores de distinto tipo en distintos momentos también nos da la facilidad de no definir los tipos al declarar una variable, algunos ejemplos son PHP, entre otros, estos son los que más usamos aquí en LA UTZAC últimamente anteriormente en java teníamos que detallar el tipo de dato. Solamente se crea la variable la cual podrá admitir cualquier objeto asignado.