Herencia en java
Año 4 – Volumen 3 – Número 1 – Octubre de 2008
ISSN 1668-7523
HERENCIA MÚLTIPLE EN JAVA
Oscar A. León, Mariana Brachetta, Julio Monetti Cátedra Paradigmas de Programación Departamento de Ingeniería en Sistemas de Información Universidad Tecnológica Nacional – Facultad Regional Mendoza. Coronel Rodríguez 273. 5500 Mendoza. www.frm.utn.edu.ar Tel. 0261 4239596.oleon@frm.utn.edu.ar, mbrachetta@mendoza.edu.ar, monetti@uncu.edu.ar
RESUMEN
En el artículo se comentan algunos aspectos de la utilización de relaciones de herencia múltiple, para el desarrollo de software orientado a objetos. En particular se analiza una alternativa de implementación de este tipo de relaciones en el lenguaje Java. Dado que el mismo no permite implementar relaciones de herenciamúltiple en forma directa, las mismas se "simulan" mediante la utilización de interfaces, lo cual se muestra a través de un ejemplo, en el cual se discuten algunos aspectos de la implementación. También se analiza el modo de soportar características como reusabilidad, polimorfismo, redefinición de métodos y definiciones de métodos “forwarding”, y se comentan algunas de las desventajas que presenta.PALABRAS CLAVE
Herencia Múltiple. Lenguaje Java. Programación Orientada a Objetos. Patrones.
11
Proyecto Leonardo
Año 4 – Volumen 3 – Número 1 – Octubre de 2008
ISSN 1668-7523
INTRODUCCIÓN
Uno de los objetivos de la programación orientada a objetos, es incrementar la productividad en el desarrollo de software. Uno de los modos de lograr ésto, es mediante la reutilización de códigoexistente, para lo cual las relaciones de herencia son uno de los medios más utilizados. Un buen diseño del esquema de relaciones de herencia resulta crítico, ya que si el mismo está bien hecho facilitará la reutilización de código, permitiendo mantener al mismo tiempo el control del desarrollo del software. Por otra parte, un mal diseño, hará que la reutilización de código se vea dificultada oimpedida. El diseño del lenguaje Java, imposibilita pensar el diseño de un programa aplicando herencia múltiple (Eckel, 2000), como se podría hacer por ejemplo en C++. Java permite únicamente una forma cercana al concepto de herencia múltiple, a través de la implementación de interfaces. Esta restricción de los diseñadores del lenguaje, les ha permitido simplificar la implementación del compilador.Cuando se utilizan lenguajes como C++, frecuentemente se hace un uso indebido de las relaciones de herencia múltiple, lo cual hace que el mismo pierda integridad. En Java esto no ocurre, ya que no ofrece soporte para este tipo de relaciones. Si bien las relaciones de herencia múltiple, aparecen muy pocas veces frente a las de herencia simple, ambos esquemas tienen ventajas y desventajas (Ghan BirSingh, 1995); en ocasiones se presentan situaciones en las cuales la utilización de relaciones de herencia múltiple resulta conveniente.
HERENCIA MÚLTIPLE
Dentro de los lenguajes O.O. (orientados a objetos) existen algunos que soportan herencia múltiple, como C++ (Stroustrup, 2000) y Eiffel (Meyer, 2001); en cambio otros no, como en el caso de Smalltalk y Java. Si bien, la mayoría de lassituaciones pueden resolverse sin recurrir a herencia múltiple, en algunos casos es conveniente contar con esta característica, a fin de lograr una mejor implementación de la aplicación. Desde el punto de vista del diseño de un lenguaje, soportar herencia múltiple complica la tarea de implementación, ya que hay que prever cómo resolver situaciones como la que se muestra en la Figura 1, mediante eldiagrama UML de relaciones de herencia múltiple entre las clases A, B y C (Fowler y Scott 2000). Cuando un objeto de clase C tiene que acceder al atributo p, el lenguaje debe tener algún medio de discriminar a cuál atributo p se quiere referir, si al de la clase A o la B.
Figura 1: Herencia múltiple
12
Proyecto Leonardo
Año 4 – Volumen 3 – Número 1 – Octubre de 2008
ISSN 1668-7523...
Regístrate para leer el documento completo.