Herencia y polimorfismo

Solo disponible en BuenasTareas
  • Páginas : 6 (1317 palabras )
  • Descarga(s) : 0
  • Publicado : 19 de agosto de 2012
Leer documento completo
Vista previa del texto
¿Qué son la herencia y el polimorfismo?

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 artículo se ofrece una introducción a ambosconceptos. 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.

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 ladé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 uncrecimiento 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 cadavez mas sofisticados, no sólo por su tamaño, 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 aobjetos 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 herenciaconstituye, 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 deexpresar 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...
tracking img