Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Extensión – Guacara
Unidad 4:
Herencia y polimorfismo
Ing. En sistemas
6 to Semestre
La apariencia del código puede ser muy diferente dependiendo del lenguaje que se utilice,
más allá de las obvias diferencias sintácticas.
No obstante, algunos lenguajes de programación (Java, C++) permiten que dos objetos de
distintas jerarquías de clases respondan a los mismos mensajes, a través de las
denominadas interfaces (esta técnica se conoce como composición de objetos). Dos objetos
que implementen la misma interfaz podrán ser tratados de forma idéntica, como un mismo
tipo de objeto, el tipo definido por la interfaz. Así, distintos objetos podrán intercambiarse en
tiempo de ejecución –siempre que sean del mismo tipo–, y además con dependencias
mínimas entre ellos. Por estos motivos se considera un buen principio de diseño en
programación orientada a objetos el favorecer la composición de objetos frente a la herencia
de clases.Polimorfismo y ligadura
Ligadura estática:
Ligadura dinámica:
Ligadura Dinámica:
3. Significa que la forma dinámica del objeto determina la versión de la operación que
se aplicará.
4. Esta capacidad de las operaciones para adaptarse automáticamente a los objetos a
los cuales se aplican es una de las propiedades más importantes de la orientación a
objetos.
Clases interfaz
Interfaz (Java)
En las interfaces se especifica qué se debe hacer pero no su implementación. Serán las
clases que implementen estas interfaces las que describen la lógica del comportamiento de
los métodos.
Ventajas
Organizar la programación.
permiten declarar constantes que van a estar disponibles para todas las clases que
queramos (implementando esa interfaz)
Obligar a que ciertas clases utilicen los mismos métodos (nombres y parámetros).
Uso
Java proporciona dos palabras reservadas para trabajar con interfaces: interface e
implements.
Una clase puede implementar varias interfaces de los paquetes que se han importado
dentro del programa, separando los nombres por comas.
Ejemplo
Extensión de Clases
Cuando se construye una clase se hace atendiendo a unas necesidades concretas. Así, un
objeto de la clase A se comportará de una determinada manera. Pero resulta bastante
común que la clase A dada no se acomode a las necesidades concretas sino que en
algunos casos se necesitaría una clase A1 que, manteniendo las propiedades de la clase A,
se comporte como un caso particular de ésta. Esto es, que la clase A1 sea una extensión de
la clase A. Esta es una de las ventajas de la programación orientada a objetos que hace
posible la reutilización de código. Así, si alguien programó perfectamente la clase A,
nosotros no tendremos que realizar todo el trabajo otra vez para conseguir la clase A1, sólo
tendremos que añadir la funcionalidad que no esté en A.
Una Clase Extendida: Herencia
Las funciones del reloj construido son un poco limitadas y el siguiente paso podría consistir
en conseguir un reloj construido para que sea capaz de considerar también el año, el mes y
el día. Este proceso se denomina extensión de una clase para obtener una subclase que
hereda los campos y métodos de la superclase de la que parte.
La clase RelojAnual, una subclase de Reloj, hereda automáticamente todos los campos y
miembros de la clase Reloj.
La herencia nos hace mucho más fácil la generación y el mantenimiento del código al poder
reutilizar código escrito y depurado con anterioridad. Pero vamos a estudiar con un poco
más de detalle el procedimiento seguido para extender la clase Reloj.
Jerarquía y Herencia
La herencia permite crear una nueva clase a partir de una clase existente, esto quiere decir
que la clase nueva (hija) hereda todos los atributos y métodos de la clase principal (padre)
siempre y cuando el nivel de acceso lo permita.
La herencia tiene muchas ventajas una de ellas es el reutilizar código ya que no necesitas
escribir de nuevo el código si no, solamente heredar de la clase padre.
La herencia es la que permite crear una estructura jerárquica de clases más especializadas.
Herencia Simple
Esta se puede representar como una jerarquía de clases, como una vista en un árbol ya que
está comienza con la superclase que es quien contiene la abstracción principal del objeto y
de allí se derivan varias clases con el fin de lograr ciertas características especiales en el
objeto y es así como se descubre que la herencia implica una relación de especialización y
denota una relación de << es un >> la siguiente imagen puede aclarar aún más el concepto.
Tipos de conversión
En la conversión explícita, el compilador no es capaz de realizarla por sí solo y por ello debe
definirse explícitamente en el programa.