Programación Orientada a Objetos Herencia Ing Ing.. Julio Ernesto Carreño Vargas MsC.. MsC Herencia Proceso mediante el cual una clase adquiere las propiedades (atributos) y comportamiento (métodos) de otra. Programación Orientada a Objetos 2 1 Ejemplo de Herencia Student Graduate Programación Orientada a Objetos Undergrad 3 Herencia Se puede definir una clase a partir de otra ya existente Heredando sus atributos y métodos, Y siendo posible añadir nuevos elementos (atributos ó métodos) ó redefinir los elementos existentes. Programación Orientada a Objetos 4 2 Beneficios de la Herencia Permite mediante la clasificación jerárquica gestionar de forma sencilla la abstracción. Student Graduate Masters Doctoral Undergrad Law Commuting Programación Orientada a Objetos Resident 5 Beneficios de la Herencia Facilita el mantenimiento y desarrollo de los programas. La herencia es un mecanismo de reutilización de código y diseño Programación Orientada a Objetos 6 3 Beneficios de la Herencia Permite aprovechar semejanzas de los elementos del mundo y eliminar redundancias que existan en el modelo de análisis. Programación Orientada a Objetos 7 Relaciones de Herencia Generalización Realización Programación Orientada a Objetos 8 4 Relación de Generalización Una asociación de herencia indicando que una clase es una superclase de otra. (“es un”) Programación Orientada a Objetos 9 Relación de Generalización Consiste en factorizar las propiedades comunes de un conjunto de clases en una clase más general. Programación Orientada a Objetos 10 5 Relación de Generalización La generalización tiene un triángulo apuntando a la superclase. Programación Orientada a Objetos 11 Relación de Generalización Programación Orientada a Objetos Pago es superclase Efectivo y Credito son subclases. “Efectivo” es un tipo de “Pago” 12 6 Elementos de la Herencia Se distinguen en la herencia: Superclase Subclase Es la clase base. Es la clase derivada Una subclase incluye todo el comportamiento y propiedades de sus antecesores. Programación Orientada a Objetos 13 Visibilidad Protegida Observe que el atributo categoria está marcado con el signo # Programación Orientada a Objetos 14 7 Visibilidad Protegida En esta clase de visibilidad, la subclase puede acceder y modificar a los atributos marcados en la superclase como protected. Programación Orientada a Objetos 15 Visibilidad Protegida Si un atributo ó método de la superclase es privado, no podría ser accedido ni modificado por la subclase. Programación Orientada a Objetos 16 8 Relación de Generalización SuperClase Visibilidad protegida Las subclases Cliente y Empleado tienen en total 3 atributos Programación Orientada a Objetos SubClases 17 Relación de Generalización en Java Programación Orientada a Objetos 18 9 Reglas de Herencia Se heredan todos los miembros (atributos y métodos): aunque sólo son accesibles los declarados public o protected ( no los private), en caso de no tener calificador de acceso (visibilidad de paquete) es posible el acceso si la subclase se declara en el mismo directorio. Programación Orientada a Objetos 19 Reglas de Herencia No se hereda un miembro de la superclase si la subclase declara un miembro idéntico (sobrescritura). Programación Orientada a Objetos 20 10 Reglas de Herencia Las clases con el modificador final no pueden ser heredadas. Ó mejor, de dichas clases no se puede heredar Programación Orientada a Objetos 21 this y super this Es una referencia al objeto (instancia de la clase) que se está ejecutando en ese momento. super Es una referencia a la superclase desde la que una clase hereda, pudiendo así, ejecutar métodos de la superclase (incluyendo constructores). Programación Orientada a Objetos 22 11 Constructores en la Herencia Al crear un objeto los constructores se ejecutan en orden de derivación: desde la superclase a la subclase. En cada superclase se ejecuta el constructor por defecto salvo que se indique uno concreto con la palabra super. Programación Orientada a Objetos 23 Constructores en la Herencia Programación Orientada a Objetos 24 12 Constructores en la Herencia Programación Orientada a Objetos 25 Llamando Métodos desde las subclases Se podría usar this ó no usar prefijo. Programación Orientada a Objetos 26 13 Sobreescribir Métodos en Herencia Sobreescribir métodos permite redefinir los métodos de la superclase, esto es, reemplazar el comportamiento del método de la superclase con el mismo método en la subclase. Programación Orientada a Objetos 27 Sobreescribir Métodos en Herencia Una subclase puede redefinir un método de la superclase a efectos de especializar dicha clase. Programación Orientada a Objetos 28 14 Sobreescribir Métodos en Generalización Observe que el método Tocar, puede ser usado en Flauta y en Tambor gracias al mecanismo de herencia El comportamiento de Afinar es diferente en Tambor, por ello dicho método es sobreescrito, esto es, sustituye al de la superclase Programación Orientada a Objetos 29 Sobreescritura en la Herencia Tipos de Métodos que no pueden sobrescribirse: private static final Programación Orientada a Objetos 30 15 Sobreescritura en la Herencia Programación Orientada a Objetos 31 Bibliografía Paul Deitel. Deitel. Como programar en Java 7/e. Pearson Education Education.. 2007. C. Thomas Wu. Wu. An Introduction to Object Oriented Programming with Java Programación Orientada a Objetos 32 16