Programación Orientada a Objetos PROGRAMACIÓN ORIENTADA A OBJETOS Sesión No. 4 Nombre: Herencia Contextualización Cuando hablamos de informática podemos contemplar varios elementos que se utilizan dentro de esta misma, por ejemplo, la herencia ayuda a disminuir los tiempos de producción de cualquier elemento y mantiene la relación de entre las versiones que se va desarrollando de cualquier software; esto es una ventaja, ya que permite la reutilización de códigos y la mejora de los mismos a lo largo del desarrollo de las nuevas actualizaciones o desarrollo de aplicaciones. Con los elementos de herencia se pueden determinar nuevas formas de desarrollar funciones o aplicaciones y de depurar sistemas y poder pasarlos a nuevas plataformas utilizando lo mejor de la codificación sin tener que transcribir todo el script. Cuando la herencia se logra exitosamente se puede trabajar de una manera más simple y alcanza el objetivo de desarrollo mucho más rápido que iniciando una aplicación desde la idea inicial. Debemos comprender los elementos que funcionan dentro de la herencia y adaptarlos a las necesidades de los usuarios que buscan soluciones. 1 PROGRAMACIÓN ORIENTADA A OBJETOS Introducción al Tema La herencia y el polimorfismo son elementos importantes que debemos analizar antes de desarrollar una idea y aplicarla. Con estos elementos podemos contemplar dentro de una aplicación un mejor resultado final. Siempre que desarrollamos nuevas aplicaciones o trabajamos sobre un nuevo elemento es importante definir los conceptos que son parte del medio, comprender los tecnicismos con que trabajamos y la manera de tener una mejor solución a lo que buscamos. Recordemos que no todos los elementos dentro de un sistema o aplicación son los mismos, estas diferencias se marcan por los lenguajes de programación que utilizamos y los medios en que buscamos sean utilizados. Cada paradigma de programación tiene sus ventajas y desventajas, por lo que siempre debemos tener presente estos elementos y relacionarlos de la mejor manera para así obtener mejores resultados, en el caso del uso de la herencia podemos utilizar ésta para desarrollar nuevas aplicaciones pero no siempre serán compatibles con todos los dispositivos, si lo que buscamos es el uso de multiplataforma debemos tener presentes lenguajes de programación basados en el uso de consolas virtuales y sistemas con mayor utilidad dentro de los ambientes Web, ya que éstos tienen actualizaciones de compatibilidad y parches para solucionar errores de manera constante. 2 PROGRAMACIÓN ORIENTADA A OBJETOS Explicación Herencia ¿Qué es la herencia? Es una propiedad dentro de la programación orientada a objetos en la cual se comprende que una clase llamada “padre” comparte atributos y métodos propios con las clases llamadas “hijas” o subclases. Esta propiedad permite la creación de objetos a partir de otros existentes, obteniendo de esta manera características similares a los demás. Este mecanismo permite crear clases derivadas de una clase base, también deja que se compartan automáticamente métodos y datos entre clases, subclases y objetos. El método de la herencia puede ser aplicado en cualquier lenguaje de programación, éste no depende de un código en específico ya que los sistemas de desarrollo utilizan clases y subclases con las cuales definen la importancia de las funciones y los componentes en un sistema o script. Este mecanismo es utilizado en la programación orientada a objetos, es importante ya que permite de cierta forma la reutilización de un código y el trabajo de las subclases de manera más eficiente por tratar con los elementos principales de las clases. En este mecanismo de trabajo podemos comprender dos tipos de herencia, las cuales son importantes de diferenciar para aplicar los elementos de una manera conveniente, estos son: • Herencia múltiple: hace referencia a una característica de los lenguajes de programación orientada a objetos, dentro de una clase se puede heredar el comportamiento y características de más de una clase. • Herencia simple: ésta sólo puede heredar de una sola superclase. 3 PROGRAMACIÓN ORIENTADA A OBJETOS Este método comúnmente es utilizado para poder implementar el polimorfismo, se hace de esta manera debido a que en muchos lenguajes de programación orientados a objetos la herencia es la única forma de implementar el polimorfismo, el método funciona de la siguiente manera: • Una clase puede heredar tantos atributos como las operaciones de una clase madre o superclase, esto implica que una nueva clase sea similar a otra en más de un aspecto, esto no necesita re-implementar todos los métodos de la segunda clase, ya que se puede heredar cualquier método y sobre escribir los que son diferentes. Cuando se realiza el proceso de herencia tenemos que; • Al extender una clase: o Se heredan todas las operaciones del padre. o Se pueden añadir nuevas operaciones. • La nueva clase puede elegir las operaciones heredadas: o Redefinir la operación. o La nueva operación puede usar la del padre y hacer más cosas. o Puede ser diferente. o La herencia puede ser aplicada múltiples veces. o Da lugar a una jerarquía de clases. Polimorfismo ¿Qué es el polimorfismo? Ésta es una propiedad de un operador o función que actúa de modo diferente en función del objeto sobre el cual se aplica. Ésta funciona en una operación con el mismo nombre en diferentes clases. Ésta es sólo interpretada por el objeto al que pertenece. 4 PROGRAMACIÓN ORIENTADA A OBJETOS Éste tiene la posibilidad de definir múltiples clases con funcionalidad diferente, con el uso de métodos o propiedades denominados de forma idéntica. Puede utilizarse de manera intercambiable por medio del código cliente en tiempo de ejecución. Al trabajar con el polimorfismo dentro de la programación orientada a objetos podemos considerar dos cosas importantes: • Se puede trabajar con un objeto de una clase sin importar de cual se trate, ya que permite que el trabajo sea igual sin importar la clase a la que pertenece el objeto. Esto se consigue mediante jerarquías de clase y clases abstractas. • Posibilita la declaración de métodos con el mismo nombre que puede tener argumentos distintos dentro de una misma clase. El comportamiento del polimorfismo se comprende o aprecia cuando se invoca el método de un objeto de la clase derivada mediante un puntero a un objeto de la clase base, ésta trata al objeto como si fuera de la clase base. Existe la posibilidad que dentro de los elementos de programación se tenga un método de una clase derivada y se llame como el método de la clase base, sólo que éste presentará un funcionamiento diferente. El polimorfismo es comúnmente utilizado dentro de los lenguajes Java y C++, esto por las facilidades que presenta en la codificación de los elementos presentados en la mayoría de los casos de desarrollo. 5 PROGRAMACIÓN ORIENTADA A OBJETOS Conclusión Los elementos como el polimorfismo y la herencia son importantes en el desarrollo y definición de la programación, éstos ayudan a tener un mejor control sobre los elementos que se crean y de igual manera un trabajo más rápido y seguro. Cuando los elementos de las clases y métodos no son bien definidos desde el inicio, es decir, que presenten errores o fallas, al heredar los elementos de la clase o el objeto sólo se estarán copiando por duplicado los errores y las fallas de los sistemas que se han desarrollado; muchas veces esto sucede en la creación de nuevas aplicaciones, por lo que siempre se realizan actualizaciones de sistema que ayuden a tener un mejor control de los procesos y mejorar la estabilidad. Todos los lenguajes de programación comprenden de métodos de herencia y polimorfismo, ya que así se ahorra código y tiempo, ofreciendo a los usuarios actualizaciones constantes y mejoras más robustas. 6 PROGRAMACIÓN ORIENTADA A OBJETOS Para aprender más Herencia ¿Qué hereda y qué no? Dentro de la herencia existen elementos que pueden utilizar los atributos de herencia y otros que no lo pueden hacer, es importante conocer cuáles sí lo logran para poder determinar relaciones de trabajo de una mejor manera y comprender el funcionamiento de los métodos. • Una subclase hereda todo los miembros de una clase excepto los constructores. • Una subclase no puede acceder a los miembros privados de su superclase. • Una subclase puede heredar a otras clases. De forma general podemos comprender que la herencia se permite entre clases y objetos respectivamente. Algunas de las ventajas que presenta este método son: • Ayuda a los programadores a ahorrar tiempo. • Permite el ahorro de código. • Permite la construcción de objetos en base a otros. • Puede heredar código y datos de una clase. • Puede heredar propiedades de otra clase que se heredan y crean clases base. Polimorfismo El polimorfismo es un elemento que se utiliza en los lenguajes de programación orientados a objetos, el cual presenta características y atributos específicos, algunos elementos que comprende son: 7 PROGRAMACIÓN ORIENTADA A OBJETOS • Capacidad que tienen los objetos de una clase de responder al mismo mensaje o evento en función de los parámetros utilizados. • Un elemento poli fórmico es una entidad que puede contener valores de diferentes tipos durante la ejecución del programa. • El polimorfismo existe gracias a la herencia. 8 PROGRAMACIÓN ORIENTADA A OBJETOS Actividad de Aprendizaje Instrucciones Con la finalidad de reforzar los conocimientos adquiridos a lo largo de esta sesión, ahora tendrás que realizar una actividad en la cual a través de un mapa conceptual indiques ejemplos de herencia, pueden ser relacionados con la vida cotidiana o la informática, recuerda que la herencia utilizada en la programación dirigida a objetos toma elementos de la vida real. Puedes realizarlo en cualquier programa, al final tendrás que guardarlo como un documento de texto con la finalidad de subirlo a la plataforma de la asignatura. 9 PROGRAMACIÓN ORIENTADA A OBJETOS Bibliografía • Cisneros E. (2009) Fundamentos de la programación orientada a objetos. Consultado en: http://aldeafraypedrodeagreda.files.wordpress.com/2009/12/desarrollo_sof tware_poo_3_parte.pdf • Damian. (s.f.) Herencia POO. Consultado en: http://damian02.wordpress.com/herencia-poo-2/ • Marina J. (s.f.) Programación orientada a objetos. Consultado en: http://www.jlmarina.net/metodos2/MET2_07_20-Polimorfismo_I.pdf • Pinelo D.(2009) Programación orientada a objetos. Consultado en: http://www.pinelo.com/blog/postimgs/2009/03/24/POO.pdf • s/a. (s.f.) Herencia. Consultado en: http://poolhjc.wordpress.com/herencia/ • Vanesa. (2011) Herencia y polimorfismo. Consultado http://vaneorientado.blogspot.mx/2011/07/proyecto-herencia-ypolimorfismo.html en: 10