Polimorfismo1

6
UNIVERSIDAD TECNONOLÓGICA DEL ESTADO DE ZACATECAS UNIDAD ACADÉMICA DE PINOS TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN Programación De Aplicaciones Tema POLIMORFISMO Nombre de alumno: Rocío Marbelín Zapata Palomo Grado: 9 Grupo: “A” Nombre del Docente : ISC. Omar Emmanuel Lara Juárez Fecha de entrega : 03/07/2015

Transcript of Polimorfismo1

Page 1: Polimorfismo1

UNIVERSIDAD TECNONOLÓGICA DEL ESTADO DE ZACATECAS UNIDAD ACADÉMICA DE PINOS

TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN

Programación De Aplicaciones

Tema

POLIMORFISMO

Nombre de alumno: Rocío Marbelín Zapata Palomo

Grado: 9 Grupo: “A” Nombre del Docente : ISC. Omar Emmanuel Lara Juárez Fecha de entrega : 03/07/2015

Page 2: Polimorfismo1

UNIVERSIDAD TECNONOLÓGICA DEL ESTADO DE ZACATECAS UNIDAD ACADÉMICA DE PINOS

TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN

POLIMORMISMO

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.

El polimorfismo se puede implementar en jerarquías de clasificación que se dan a

través de la herencia. Por ejemplo, en 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?

Un lenguaje fuertemente tipado, como es el caso de Java o C, es cuando se define

una variable, siempre el tipo de datos va a contener dicha variable. Por ejemplo: int miNumero;.

Así le indicamos que la variable declarada "miNumero" va a contener siempre un entero.

Se puede asignar diversos valores, pero siempre deben de ser números enteros. De lo contrario el compilador lanzará un mensaje de error y permitirá compilar el programa que

se ha realizado.

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".

Polimorfismo en objetos

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.

Ejemplo:

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".

Page 3: Polimorfismo1

UNIVERSIDAD TECNONOLÓGICA DEL ESTADO DE ZACATECAS UNIDAD ACADÉMICA DE PINOS

TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN

El 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 que ver con las clasificaciones de herencia que tengas en tus sistemas de clases. 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. Si declaras que una

función recibe como parámetros objetos de una determinada clase, el compilador

también te aceptará que le envíes en la invocación objetos de una clase derivada de aquella que fue declarada.

En el array de vehículos, gracias al polimorfismo se puede contener 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?

Imagina una clase "Cine" creando un método que se llama "reproducir()". Este método

podrá recibir como parámetro aquello que quieras emitir en una sala de cine y podrán

llegar 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, debes que

hacer algo como esto:

reproducir(Pelicula peliculaParaReproducir)

Pero si luego tienes que reproducir documentales, tendrás que declarar:

reproducir(Documental documentaParaReproducir)

VEHICULO

Coche Bus

Moto

Clase Padre

Clases Hijas o

Derivadas

Page 4: Polimorfismo1

UNIVERSIDAD TECNONOLÓGICA DEL ESTADO DE ZACATECAS UNIDAD ACADÉMICA DE PINOS

TECNOLOGÍAS DE LA INFORMACIÓN Y 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)

Volviendo a la clase Vehiculo, 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.

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 del

sistema de tipos para aceptar una gama de objetos diferente es lo que llamamos

polimorfismo.

Page 5: Polimorfismo1

UNIVERSIDAD TECNONOLÓGICA DEL ESTADO DE ZACATECAS UNIDAD ACADÉMICA DE PINOS

TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN

CONCLUSIÓN

El polimorfismo es en realidad algo muy básico. Realmente, cuando estamos

aprendiendo Programación Orientada a Objetos, muchos estudiantes nos hacemos un

embolado tremendo al tratar de entender el concepto, pero en su base es algo

extremadamente sencillo. 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í.

Los tipos de datos que se manejan en un determinado lenguaje de programación, se

refiere a los tipos y la forma en que deben usarse, cuando estamos aprendiendo a

programar en pseudocódigo no utilizamos tipado, es decir que ninguna de las variables

que definimos están ligadas a algún tipo de variable, “simplemente son variables”.

Los lenguajes fuertemente tipados son más difíciles de trabajar, pero son más comunes

y en muchos lugares más “promocionados”.

Los lenguajes tipados incrementan el tiempo de desarrollo y son más difíciles de

aprender, Los datos son compilados, es decir que se traducen directamente a lenguaje

de máquina y esto al manejar grandes cantidades de datos hace diferencia, es mucho

más rápido en la maquina seguir el proceso que debe realizar.

Page 6: Polimorfismo1

UNIVERSIDAD TECNONOLÓGICA DEL ESTADO DE ZACATECAS UNIDAD ACADÉMICA DE PINOS

TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN

Los lenguajes no tipados, o débilmente tipados, al definir una variable no requieren de

que se les asigne un tipo de variable, es más pueden cambiar el tipo de variable en

cualquier momento, creo que los casos más conocido 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.