Auditoria
Enviado por josejfaa • 12 de Mayo de 2012 • 1.392 Palabras (6 Páginas) • 287 Visitas
¿Qué son la herencia y el polimorfismo?
J. Valderrama Martín, R. Rivera Pastor, C. Gascón Navarro
TELEFÓNICA INVESTIGACIÓN Y DESARROLLO
El desarrollo orientado a objetos se ha revelado como una de las alternativas más prometedoras de cara a afrontar el diseño, la implementación y el mantenimiento de sistemas complejos. Sin duda, los conceptos de herencia y polimorfismo constituyen uno de los factores que más ha contribuido a ello.
En este articulo se ofrece una introducción a ambos conceptos. Asimismo, y a fin de valorar las ventajas e inconvenientes que se derivan de su utilización, se plantea un pequeño ejemplo comparativo cuya solución se aborda, por un lado, aplicando estas ideas, y por otro, prescindiendo de ellas. El lenguaje empleado para ello es C++. Su conocimiento, si bien es deseable, no constituye un obstáculo para la comprensión del ejemplo.
INTRODUCCIÓN
El origen de muchos de los conceptos básicos del desarrolla orientado a objetos (objeto y clase, entre otros) se remonta a finales de la década de los anos 60 y comienzo de los 70, con la aparición de los lenguajes Simula 1[6] y Simula67 [4] Sin embargo, hasta hace cuatro o cinco anos, tales conceptos hablar pasado prácticamente desapercibidos para la mayor parte de la comunidad informática. ¿Cuáles han sido los motivos que han provocado que en estos últimos anos el interés por los sistemas orientados a objetos haya experimentado un crecimiento tan espectacular, como lo demuestran los centenares de artículos y de libros publicados en relación con este tema? Aunque para algunos se trata simplemente de una moda pasajera, las razones son, sin duda, mucho más profundas. En nuestra opinión, deben buscarse en las crecientes demandas y expectativas depositadas en la, todavía incipiente, Ingeniería de Software:
• Los sistemas son cada vez mas sofisticados, no sólo por su tamango, sino por su complejidad (basta con pensar en los ambiciosos proyectos de las agencias espaciales o de algunos ministerios de defensa).
• Con el transcurso del tiempo, aumenta de forma significativa la preocupación por temas tales como la calidad, fiabilidad y productividad en el desarrollo de software.
No hay duda de que el desarrollo orientado a objetos se ha revelado como una de las formulas más prometedoras a la hora de afrontar el diseño, la implementaron y el mantenimiento de sistemas complejos y a gran escala. Prueba de ello es su incursión en áreas tan dispares como:
• Bases de datos [9][11]
• Inteligencia Artificial [7]
• Sistemas Distribuidos [1]
• Simulación [3][17][8]
• Interfaces de Usuario [2][14]
De acuerdo con Meyer [12], la principal aportación de esta nueva tecnología a la Ingeniería del Software es la posibilidad de reutilización de componentes software. Tal posibilidad se sustenta en una serie de mecanismos y de conceptos, entre los cuales merecen especial atención, por su carácter innovador, la herencia y el polimorfismo. A ellos esta dedicado el resto del articulo.
HERENCIA
El concepto de herencia constituye, a nuestro juicio, la principal innovación del desarrollo orientado a objetos. Se trata de un concepto bastante simple e intuitivo que, de una manera informal, puede definirse como:
"el mecanismo que permite definir una clase de objetos tomando como base la definición de otra clase"
Una clase se define en términos de atributos y de métodos (u operaciones). Por tanto, otra forma de expresar la definición anterior seria la siguiente:
"herencia es el mecanismo que permite a una clase de objetos incorporar atributos y métodos de otra clase, añadiendolos a los que ya posee".
En la terminología habitual, la clase que hereda las características de otra y la clase de partida reciben los calificativos de "subclase" y "superclase", respectivamente. De ahí que, en numerosas ocasiones, la relación de herencia aparezca también referenciada como "superclase/subclase".
Por otro lado, también suele ser muy habitual hablar en términos de "clase padre" y "clase hija", dado lo intuitivo de ambos términos.
La contribución más interesante del mecanismo de herencia al desarrollo de software, y más concretamente al objetivo de reutilización de componentes al que anteriormente hacíamos alusión, es la flexibilidad que proporciona para capturar y aprovechar al máximo las características comunes de diferentes clases de objetos. Dicha flexibilidad se manifiesta, fundamentalmente, en dos sentidos:
• Por un lado, permite recoger los
...