SlideShare una empresa de Scribd logo
1 de 19
Descargar para leer sin conexión
ENTERPRISE JAVA DEVELOPER
JAVA ORIENTADO A OBJETOS
Eric Gustavo Coronel Castillo
gcoronelc.blogspot.com
HERENCIA
Temas
 Objetivo
 Introducción
 Definición
 Características
 Diseño
 Implementación
 Herencia y Constructores
 Acceso Protegido
 Redefinición
 Modificador final
 Clases Abstractas
 Clases Parcialmente Abstractas
 Proyecto Ejemplo
OBJETIVO
Aplicar la herencia para:
– Reutilizar código.
– Extender la funcionalidad de
clases (Especialización).
– Aprovechar el polimorfismo.
De esta manera:
– Mejoramos la productividad.
– Disminuimos el esfuerzo de
mantenimiento.
– Aumentamos la fiabilidad y
eficiencia.
INTRODUCCIÓN
 Las clases no son suficientes para conseguir los objetivos de:
– REUTILIZACIÓN: Necesidad de mecanismos para generar código
genérico:
• Capturar aspectos comunes en grupos de estructuras
similares
• Independencia de la representación e implementación
• Variación en estructuras de datos y algoritmos
– EXTENSIBILIDAD: Necesidad de mecanismos para favorecer:
• “Principio abierto-cerrado” y “Principio Elección Única”
• Estructuras polimórficas.
DEFINICIÓN
 La herencia es el mecanismo mediante el cual podemos definir una clase
(Subclase) en función de otra ya existe (Superclase).
 Las subclases heredan los atributos y operaciones de sus superclases.
 Existen dos tipos de herencia (simple y múltiple)
Clase2
Clase3 Clase4
Clase1
Clase2
Clase3
Clase1
Herencia Simple Herencia Múltiple
No se puede implementar la
herencia múltiple en Java.
Superclase
Subclase
Superclase
Subclase
CARACTERÍSTICAS
 Si Clase2 hereda de Clase1, entonces Clase2 incorpora
la estructura (atributos) y comportamiento (métodos) de
Clase1, pero puede incluir adaptaciones:
– Clase2 puede añadir nuevos atributos.
– Clase2 puede añadir nuevos métodos.
– Clase2 puede redefinir métodos heredados (refinar o
reemplazar).
 La herencia es transitiva
– Clase2 hereda de Clase1
• Clase1 es la superclase y Clase2 la subclase
– Clase3 hereda de Clase2 y Clase1
– Clase2 y Clase3 son subclases de Clase1
– Clase2 es un descendiente directo de Clase1
– Clase3 es un descendiente indirecto de Clase1
DISEÑO
 Generalización (Factorización): Se detectan dos clases con características
comunes y se crea una clase padre con esas características.
– Ejemplo: Libro, Revista  Publicación
 Especialización: Se detecta que una clase es un caso especial de otra.
– Ejemplo: Rectángulo es un tipo de Polígono.
No hay receta mágica
para crear buenas
jerarquías de herencia.
IMPLEMENTACIÓN
public class Clase1 {
}
public class Clase2 extends Clase1 {
}
Clase2
Clase3 Clase4
Clase1
public class Clase3 extends Clase2 {
}
public class Clase4 extends Clase2 {
}
Recuerde usar:
this: referencia a métodos del objeto actual.
super: referencia a métodos de la superclase.
public class Clase2 extend Clase1 {
public Clase2() {
super();
. . .
}
}
HERENCIA Y CONSTRUCTORES
 En Java, los constructores no se heredan.
 Java permite invocar a los constructores de la clase padre dentro de
un constructor utilizando la llamada super(…).
 Cuando se aplica herencia, la llamada a un constructor de la clase
padre es obligatoria.
 Debe ser la primera sentencia del código del constructor.
 Si se omite la llamada, el compilador asume que la primera llamada
es super().
ACCESO PROTEGIDO
 Una subclase hereda todos los miembros definidos en la superclase, pero no
puede acceder a los miembros privados.
 Para permitir que un método de la subclase pueda acceder a un miembro
(variable/método) de la superclase, éste tiene que declararse como protected.
– private: visible sólo en la clase donde se define.
– Sin modificador (por defecto): visible a las clases del mismo paquete.
– protected: características visibles en las subclases y al resto de clases
del paquete.
– public: visible a todas las clases.
REDEFINICIÓN
 La redefinición reconcilia la reutilización con la extensibilidad.
 Las variables no se pueden redefinir, sólo se ocultan
– Si la clase hija define una variable con el mismo nombre que un variable de la
clase padre, éste no está accesible.
– La variable de la superclase todavía existe pero no se puede acceder
 Un método de la subclase con la misma firma (nombre y parámetros) que un
método de la superclase lo está redefiniendo.
– Si se cambia el tipo de los parámetros se está sobrecargando el método original.
 Si un método redefinido refina el comportamiento del método original puede
necesitar hacer referencia a este comportamiento.
– super: se utiliza para invocar a un método de la clase padre:
• super.metodo ( … ) ;
MODIFICADOR final
 Aplicado a una variable lo convierte en una constante.
protected final String NOMBRE= "Gustavo Coronel" ;
 Aplicado a un método impide su redefinición en una clase hija.
public final int suma( int a, int b ) { … }
 Aplicado a una clase indica que no se puede heredar.
public final class Clase1 {
. . .
}
CLASES ABSTRACTAS
 Una clase abstracta define un tipo, como cualquier otra
clase.
 Sin embargo, no se pueden construir objetos de una clase
abstracta.
 Los constructores sólo tienen sentido para ser utilizados en
las subclases.
public abstract class Clase1 {
public abstract void metodo1();
public abstract void metodo2();
}
 Especifica una funcionalidad que es
común a un conjunto de subclases
aunque no es completa.
 Justificación de una clase abstracta:
 Declara o hereda métodos
abstractos.
 Representa un concepto abstracto
para el que no tiene sentido crear
objetos.
CLASES PARCIALMENTE ABSTRACTAS
 Contienen métodos abstractos y concretos.
 Los métodos concretos pueden hacer uso de los métodos
abstractos.
 Importante mecanismo para incluir código genérico.
 Incluyen comportamiento abstracto común a todos los
descendientes.
public abstract class Clase1 {
public abstract void metodo1();
public abstract void metodo2();
public void metodo3() {
. . .
}
public void metodo4() {
. . .
}
}
OPERADOR instanceof
 Comprueba si el tipo de una variable es compatible con un tipo dado.
– Es de ese tipo o alguna de sus subclases
 Si no se hace la comprobación, en el caso de que fallara el casting (en tiempo
de ejecución) se abortaría el programa.
 No es lo mismo hacer la comprobación con instanceof que con el método
getClass heredado de la clase.
if ( variable instanceof Clase ) {
// Script
}
PROYECTO EJEMPLO
 El restaurante "El Buen Sabor" necesita implementar una aplicación que permita a sus empleados calcular los
datos que se deben registrar en el comprobante de pago.
 Los conceptos que se manejan cuando se trata de una factura son los siguientes:
– Consumo 100.00
– Impuesto 19.00
– Total 119.00
– Servicio (10%) 11.90
– Total General 130.90
 Cuando se trata de una boleta son los siguientes:
– Total 119.00
– Servicio (10%) 11.90
– Total General 130.90
 Diseñe y desarrolle la aplicación que automatice el requerimiento solicitado por el restaurante.
 Se sabe que el dato que debe proporcionar el empleado es el Total.
Dirección de descarga: https://goo.gl/TDgc5R
ENTERPRISE JAVA DEVELOPER
JAVA ORIENTADO A OBJETOS
Eric Gustavo Coronel Castillo
gcoronelc.blogspot.com
Gracias

Más contenido relacionado

La actualidad más candente (20)

JAVA ORIENTADO A OBJETOS - HERENCIA
JAVA ORIENTADO A OBJETOS - HERENCIAJAVA ORIENTADO A OBJETOS - HERENCIA
JAVA ORIENTADO A OBJETOS - HERENCIA
 
JAVA ORIENTADO A OBJETOS - INTERFACES
JAVA ORIENTADO A OBJETOS - INTERFACESJAVA ORIENTADO A OBJETOS - INTERFACES
JAVA ORIENTADO A OBJETOS - INTERFACES
 
JAVA ORIENTADO A OBJETOS - MIEMBROS DE CLASE
JAVA ORIENTADO A OBJETOS - MIEMBROS DE CLASEJAVA ORIENTADO A OBJETOS - MIEMBROS DE CLASE
JAVA ORIENTADO A OBJETOS - MIEMBROS DE CLASE
 
Poo
PooPoo
Poo
 
Java OO: Introducción
Java OO: IntroducciónJava OO: Introducción
Java OO: Introducción
 
Prog oo con_java
Prog oo con_javaProg oo con_java
Prog oo con_java
 
Polimorfismo en Java
Polimorfismo en JavaPolimorfismo en Java
Polimorfismo en Java
 
Clases y subclases
Clases y subclasesClases y subclases
Clases y subclases
 
Definicion De Subclases Y Herencia H F M
Definicion De Subclases Y Herencia  H F MDefinicion De Subclases Y Herencia  H F M
Definicion De Subclases Y Herencia H F M
 
Clase viii
Clase viiiClase viii
Clase viii
 
Laboratorio clase abstract
Laboratorio clase abstractLaboratorio clase abstract
Laboratorio clase abstract
 
Clase 2 Poo
Clase 2 PooClase 2 Poo
Clase 2 Poo
 
Laboratorio interfaces
Laboratorio interfacesLaboratorio interfaces
Laboratorio interfaces
 
Laboratorio de polimorfismo
Laboratorio de  polimorfismoLaboratorio de  polimorfismo
Laboratorio de polimorfismo
 
Mapa conceptual del contenido de la unidad 4
Mapa conceptual del contenido de la unidad 4Mapa conceptual del contenido de la unidad 4
Mapa conceptual del contenido de la unidad 4
 
Programación Orientada a Objetos - herencia y polimorfismo
Programación Orientada a Objetos - herencia y polimorfismoProgramación Orientada a Objetos - herencia y polimorfismo
Programación Orientada a Objetos - herencia y polimorfismo
 
Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
 
Programación orientada a objetos con c++
Programación orientada a objetos con c++Programación orientada a objetos con c++
Programación orientada a objetos con c++
 
Polimorfismo ppt
Polimorfismo  pptPolimorfismo  ppt
Polimorfismo ppt
 
Herencia y Polimorfismo
Herencia y PolimorfismoHerencia y Polimorfismo
Herencia y Polimorfismo
 

Destacado

JAVA SERVER FACES - LECCION 02 - NAVEGACION Y LENGUAJES DE EXPRESIONES
JAVA SERVER FACES - LECCION 02 - NAVEGACION Y LENGUAJES DE EXPRESIONESJAVA SERVER FACES - LECCION 02 - NAVEGACION Y LENGUAJES DE EXPRESIONES
JAVA SERVER FACES - LECCION 02 - NAVEGACION Y LENGUAJES DE EXPRESIONESEric Gustavo Coronel Castillo
 
JAVA SERVER FACES - LECCION 04 - VALIDADORES Y CONVERTIDORES
JAVA SERVER FACES - LECCION 04 - VALIDADORES Y CONVERTIDORESJAVA SERVER FACES - LECCION 04 - VALIDADORES Y CONVERTIDORES
JAVA SERVER FACES - LECCION 04 - VALIDADORES Y CONVERTIDORESEric Gustavo Coronel Castillo
 
Clase oo
Clase ooClase oo
Clase ooazrael1
 
JBoss Forge y Eclipse Neon para aplicaciones Java EE 7
JBoss Forge y Eclipse Neon para aplicaciones Java EE 7JBoss Forge y Eclipse Neon para aplicaciones Java EE 7
JBoss Forge y Eclipse Neon para aplicaciones Java EE 7Víctor Leonel Orozco López
 
Principios Basicos Del Poo
Principios Basicos Del PooPrincipios Basicos Del Poo
Principios Basicos Del Pooguido conto
 
Mecanismos celulares de la herencia. tarea 3
Mecanismos celulares de la herencia. tarea 3Mecanismos celulares de la herencia. tarea 3
Mecanismos celulares de la herencia. tarea 3ANY GRISEL
 

Destacado (20)

Java Fundamentos 01 - Introducción
Java Fundamentos 01 - IntroducciónJava Fundamentos 01 - Introducción
Java Fundamentos 01 - Introducción
 
SEMINARIO: ACCESO A BASE DE DATOS CON JDBC
SEMINARIO: ACCESO A BASE DE DATOS CON JDBCSEMINARIO: ACCESO A BASE DE DATOS CON JDBC
SEMINARIO: ACCESO A BASE DE DATOS CON JDBC
 
Java Lambda
Java LambdaJava Lambda
Java Lambda
 
JAVA SERVER FACES - LECCION 01 - PRIMEROS PASOS
JAVA SERVER FACES - LECCION 01 - PRIMEROS PASOSJAVA SERVER FACES - LECCION 01 - PRIMEROS PASOS
JAVA SERVER FACES - LECCION 01 - PRIMEROS PASOS
 
JAVA SERVER FACES - LECCION 03 - COMPONENTES HTML
JAVA SERVER FACES - LECCION 03 - COMPONENTES HTMLJAVA SERVER FACES - LECCION 03 - COMPONENTES HTML
JAVA SERVER FACES - LECCION 03 - COMPONENTES HTML
 
JAVA SERVER FACES - LECCION 02 - NAVEGACION Y LENGUAJES DE EXPRESIONES
JAVA SERVER FACES - LECCION 02 - NAVEGACION Y LENGUAJES DE EXPRESIONESJAVA SERVER FACES - LECCION 02 - NAVEGACION Y LENGUAJES DE EXPRESIONES
JAVA SERVER FACES - LECCION 02 - NAVEGACION Y LENGUAJES DE EXPRESIONES
 
Java web 01 - servlets
Java web 01 - servletsJava web 01 - servlets
Java web 01 - servlets
 
Java Web Lección 02 - JSP
Java Web Lección 02 - JSPJava Web Lección 02 - JSP
Java Web Lección 02 - JSP
 
Java Web Lección 03 - MVC
Java Web Lección 03 - MVCJava Web Lección 03 - MVC
Java Web Lección 03 - MVC
 
Java OO - Tema 07 - Arreglos
Java OO - Tema 07 - ArreglosJava OO - Tema 07 - Arreglos
Java OO - Tema 07 - Arreglos
 
Manual de Open Shift
Manual de Open ShiftManual de Open Shift
Manual de Open Shift
 
Buenas Prácticas en el Desarrollo de Software
Buenas Prácticas en el Desarrollo de SoftwareBuenas Prácticas en el Desarrollo de Software
Buenas Prácticas en el Desarrollo de Software
 
Java web Lección 04 - JSTL
Java web Lección 04 - JSTLJava web Lección 04 - JSTL
Java web Lección 04 - JSTL
 
Git y GitHub
Git y GitHubGit y GitHub
Git y GitHub
 
JAVA SERVER FACES - LECCION 04 - VALIDADORES Y CONVERTIDORES
JAVA SERVER FACES - LECCION 04 - VALIDADORES Y CONVERTIDORESJAVA SERVER FACES - LECCION 04 - VALIDADORES Y CONVERTIDORES
JAVA SERVER FACES - LECCION 04 - VALIDADORES Y CONVERTIDORES
 
Java Web 00 - Contexto
Java Web 00 - ContextoJava Web 00 - Contexto
Java Web 00 - Contexto
 
Clase oo
Clase ooClase oo
Clase oo
 
JBoss Forge y Eclipse Neon para aplicaciones Java EE 7
JBoss Forge y Eclipse Neon para aplicaciones Java EE 7JBoss Forge y Eclipse Neon para aplicaciones Java EE 7
JBoss Forge y Eclipse Neon para aplicaciones Java EE 7
 
Principios Basicos Del Poo
Principios Basicos Del PooPrincipios Basicos Del Poo
Principios Basicos Del Poo
 
Mecanismos celulares de la herencia. tarea 3
Mecanismos celulares de la herencia. tarea 3Mecanismos celulares de la herencia. tarea 3
Mecanismos celulares de la herencia. tarea 3
 

Similar a JAVA 00 - TEMA 05 - HERENCIA

Programación 3: clases derivadas y polimorfismo
Programación 3: clases derivadas y polimorfismoProgramación 3: clases derivadas y polimorfismo
Programación 3: clases derivadas y polimorfismoAngel Vázquez Patiño
 
Capitulo 7 moving features between objects
Capitulo 7  moving features between objectsCapitulo 7  moving features between objects
Capitulo 7 moving features between objectsJ Pablo Rivera
 
Jyoc java-cap08 principios poo
Jyoc java-cap08 principios pooJyoc java-cap08 principios poo
Jyoc java-cap08 principios pooJyoc X
 
secme-23192.pdf
secme-23192.pdfsecme-23192.pdf
secme-23192.pdf202100941c
 
Java morld cap2 [CURSO JAVA]
Java morld cap2 [CURSO JAVA]Java morld cap2 [CURSO JAVA]
Java morld cap2 [CURSO JAVA]Hack '
 
Herencia en java
Herencia en javaHerencia en java
Herencia en javajbersosa
 
Programacion 3 unidad ii
Programacion 3   unidad iiProgramacion 3   unidad ii
Programacion 3 unidad iiIrving Trigo
 
Programacion 3 unidad ii
Programacion 3   unidad iiProgramacion 3   unidad ii
Programacion 3 unidad iiIrving Trigo
 
8 Mecanismos-de-abstraccion-en-Java.pptx
8 Mecanismos-de-abstraccion-en-Java.pptx8 Mecanismos-de-abstraccion-en-Java.pptx
8 Mecanismos-de-abstraccion-en-Java.pptxjuan gonzalez
 
DAW - Desarrollo de clases
DAW - Desarrollo de clasesDAW - Desarrollo de clases
DAW - Desarrollo de clasesvay82
 
Lenguaje de programacion unidad 2 clases y objetos
Lenguaje de programacion unidad 2 clases y objetosLenguaje de programacion unidad 2 clases y objetos
Lenguaje de programacion unidad 2 clases y objetosAndres Herrera Rodriguez
 
Presentacion Java
Presentacion JavaPresentacion Java
Presentacion Javamaeusogo
 
METODOS HEREDADOS EN LA PROGRAMACION .pptx
METODOS HEREDADOS EN LA PROGRAMACION .pptxMETODOS HEREDADOS EN LA PROGRAMACION .pptx
METODOS HEREDADOS EN LA PROGRAMACION .pptxjuan gonzalez
 

Similar a JAVA 00 - TEMA 05 - HERENCIA (20)

Programación 3: clases derivadas y polimorfismo
Programación 3: clases derivadas y polimorfismoProgramación 3: clases derivadas y polimorfismo
Programación 3: clases derivadas y polimorfismo
 
03 java poo_parte_2
03 java poo_parte_203 java poo_parte_2
03 java poo_parte_2
 
Capitulo 7 moving features between objects
Capitulo 7  moving features between objectsCapitulo 7  moving features between objects
Capitulo 7 moving features between objects
 
Unidad II_1.pptx
Unidad II_1.pptxUnidad II_1.pptx
Unidad II_1.pptx
 
Guía Herencia PO_O
Guía Herencia PO_OGuía Herencia PO_O
Guía Herencia PO_O
 
Jyoc java-cap08 principios poo
Jyoc java-cap08 principios pooJyoc java-cap08 principios poo
Jyoc java-cap08 principios poo
 
metodos de clases
metodos de clasesmetodos de clases
metodos de clases
 
secme-23192.pdf
secme-23192.pdfsecme-23192.pdf
secme-23192.pdf
 
Java morld cap2 [CURSO JAVA]
Java morld cap2 [CURSO JAVA]Java morld cap2 [CURSO JAVA]
Java morld cap2 [CURSO JAVA]
 
Herencia en java
Herencia en javaHerencia en java
Herencia en java
 
Unidad_01_04.pdf
Unidad_01_04.pdfUnidad_01_04.pdf
Unidad_01_04.pdf
 
Programacion 3 unidad ii
Programacion 3   unidad iiProgramacion 3   unidad ii
Programacion 3 unidad ii
 
Programacion 3 unidad ii
Programacion 3   unidad iiProgramacion 3   unidad ii
Programacion 3 unidad ii
 
8 Mecanismos-de-abstraccion-en-Java.pptx
8 Mecanismos-de-abstraccion-en-Java.pptx8 Mecanismos-de-abstraccion-en-Java.pptx
8 Mecanismos-de-abstraccion-en-Java.pptx
 
Herencia
HerenciaHerencia
Herencia
 
DAW - Desarrollo de clases
DAW - Desarrollo de clasesDAW - Desarrollo de clases
DAW - Desarrollo de clases
 
SuperClase.pdf
SuperClase.pdfSuperClase.pdf
SuperClase.pdf
 
Lenguaje de programacion unidad 2 clases y objetos
Lenguaje de programacion unidad 2 clases y objetosLenguaje de programacion unidad 2 clases y objetos
Lenguaje de programacion unidad 2 clases y objetos
 
Presentacion Java
Presentacion JavaPresentacion Java
Presentacion Java
 
METODOS HEREDADOS EN LA PROGRAMACION .pptx
METODOS HEREDADOS EN LA PROGRAMACION .pptxMETODOS HEREDADOS EN LA PROGRAMACION .pptx
METODOS HEREDADOS EN LA PROGRAMACION .pptx
 

Más de Eric Gustavo Coronel Castillo

EL MODELO DIRECTO DE DELL: TODO LO QUE HAY SOBRE LA INFORMACION
EL MODELO DIRECTO DE DELL: TODO LO QUE HAY SOBRE LA INFORMACIONEL MODELO DIRECTO DE DELL: TODO LO QUE HAY SOBRE LA INFORMACION
EL MODELO DIRECTO DE DELL: TODO LO QUE HAY SOBRE LA INFORMACIONEric Gustavo Coronel Castillo
 

Más de Eric Gustavo Coronel Castillo (20)

Java Web JSTL
Java Web JSTLJava Web JSTL
Java Web JSTL
 
Model View Controller - MVC
Model View Controller - MVCModel View Controller - MVC
Model View Controller - MVC
 
JavaServer Page
JavaServer PageJavaServer Page
JavaServer Page
 
Java Web: Servlets
Java Web: ServletsJava Web: Servlets
Java Web: Servlets
 
Java Web - Presentación
Java Web - PresentaciónJava Web - Presentación
Java Web - Presentación
 
JAVA ORIENTADO A OBJETOS - EXCEPCIONES
JAVA ORIENTADO A OBJETOS - EXCEPCIONESJAVA ORIENTADO A OBJETOS - EXCEPCIONES
JAVA ORIENTADO A OBJETOS - EXCEPCIONES
 
JAVA ORIENTADO A OBJETOS - COLECCIONES
JAVA ORIENTADO A OBJETOS - COLECCIONESJAVA ORIENTADO A OBJETOS - COLECCIONES
JAVA ORIENTADO A OBJETOS - COLECCIONES
 
JAVA ORIENTADO A OBJETOS - ARREGLOS
JAVA ORIENTADO A OBJETOS - ARREGLOSJAVA ORIENTADO A OBJETOS - ARREGLOS
JAVA ORIENTADO A OBJETOS - ARREGLOS
 
Cursos Virtuales con Gustavo Coronel en UDEMY
Cursos Virtuales con Gustavo Coronel en UDEMYCursos Virtuales con Gustavo Coronel en UDEMY
Cursos Virtuales con Gustavo Coronel en UDEMY
 
JAVA ORIENTADO A OBJETOS - INTRODUCCIÓN
JAVA ORIENTADO A OBJETOS - INTRODUCCIÓNJAVA ORIENTADO A OBJETOS - INTRODUCCIÓN
JAVA ORIENTADO A OBJETOS - INTRODUCCIÓN
 
Buenas practicas para el Desarrollo de Software
Buenas practicas para el Desarrollo de SoftwareBuenas practicas para el Desarrollo de Software
Buenas practicas para el Desarrollo de Software
 
JAVA OO - TEMA 08 - COLECCIONES
JAVA OO - TEMA 08 - COLECCIONESJAVA OO - TEMA 08 - COLECCIONES
JAVA OO - TEMA 08 - COLECCIONES
 
EL MODELO DIRECTO DE DELL: TODO LO QUE HAY SOBRE LA INFORMACION
EL MODELO DIRECTO DE DELL: TODO LO QUE HAY SOBRE LA INFORMACIONEL MODELO DIRECTO DE DELL: TODO LO QUE HAY SOBRE LA INFORMACION
EL MODELO DIRECTO DE DELL: TODO LO QUE HAY SOBRE LA INFORMACION
 
ORACLE SQL
ORACLE SQLORACLE SQL
ORACLE SQL
 
CONSULTAS BASICAS
CONSULTAS BASICASCONSULTAS BASICAS
CONSULTAS BASICAS
 
ORACLE SQL
ORACLE SQLORACLE SQL
ORACLE SQL
 
INTRODUCCIÓN A ORACLE SQL
INTRODUCCIÓN A ORACLE SQLINTRODUCCIÓN A ORACLE SQL
INTRODUCCIÓN A ORACLE SQL
 
MEJORANDO LA CALIDAD DEL SOFTWARE
MEJORANDO LA CALIDAD DEL SOFTWAREMEJORANDO LA CALIDAD DEL SOFTWARE
MEJORANDO LA CALIDAD DEL SOFTWARE
 
ORACLE 10g ADMINISTRACION I
ORACLE 10g ADMINISTRACION IORACLE 10g ADMINISTRACION I
ORACLE 10g ADMINISTRACION I
 
Ms project 2013 Lección 03
Ms project 2013 Lección 03Ms project 2013 Lección 03
Ms project 2013 Lección 03
 

JAVA 00 - TEMA 05 - HERENCIA

  • 1. ENTERPRISE JAVA DEVELOPER JAVA ORIENTADO A OBJETOS Eric Gustavo Coronel Castillo gcoronelc.blogspot.com HERENCIA
  • 2. Temas  Objetivo  Introducción  Definición  Características  Diseño  Implementación  Herencia y Constructores  Acceso Protegido  Redefinición  Modificador final  Clases Abstractas  Clases Parcialmente Abstractas  Proyecto Ejemplo
  • 3. OBJETIVO Aplicar la herencia para: – Reutilizar código. – Extender la funcionalidad de clases (Especialización). – Aprovechar el polimorfismo. De esta manera: – Mejoramos la productividad. – Disminuimos el esfuerzo de mantenimiento. – Aumentamos la fiabilidad y eficiencia.
  • 4. INTRODUCCIÓN  Las clases no son suficientes para conseguir los objetivos de: – REUTILIZACIÓN: Necesidad de mecanismos para generar código genérico: • Capturar aspectos comunes en grupos de estructuras similares • Independencia de la representación e implementación • Variación en estructuras de datos y algoritmos – EXTENSIBILIDAD: Necesidad de mecanismos para favorecer: • “Principio abierto-cerrado” y “Principio Elección Única” • Estructuras polimórficas.
  • 5. DEFINICIÓN  La herencia es el mecanismo mediante el cual podemos definir una clase (Subclase) en función de otra ya existe (Superclase).  Las subclases heredan los atributos y operaciones de sus superclases.  Existen dos tipos de herencia (simple y múltiple) Clase2 Clase3 Clase4 Clase1 Clase2 Clase3 Clase1 Herencia Simple Herencia Múltiple No se puede implementar la herencia múltiple en Java. Superclase Subclase Superclase Subclase
  • 6. CARACTERÍSTICAS  Si Clase2 hereda de Clase1, entonces Clase2 incorpora la estructura (atributos) y comportamiento (métodos) de Clase1, pero puede incluir adaptaciones: – Clase2 puede añadir nuevos atributos. – Clase2 puede añadir nuevos métodos. – Clase2 puede redefinir métodos heredados (refinar o reemplazar).  La herencia es transitiva – Clase2 hereda de Clase1 • Clase1 es la superclase y Clase2 la subclase – Clase3 hereda de Clase2 y Clase1 – Clase2 y Clase3 son subclases de Clase1 – Clase2 es un descendiente directo de Clase1 – Clase3 es un descendiente indirecto de Clase1
  • 7. DISEÑO  Generalización (Factorización): Se detectan dos clases con características comunes y se crea una clase padre con esas características. – Ejemplo: Libro, Revista  Publicación  Especialización: Se detecta que una clase es un caso especial de otra. – Ejemplo: Rectángulo es un tipo de Polígono. No hay receta mágica para crear buenas jerarquías de herencia.
  • 8. IMPLEMENTACIÓN public class Clase1 { } public class Clase2 extends Clase1 { } Clase2 Clase3 Clase4 Clase1 public class Clase3 extends Clase2 { } public class Clase4 extends Clase2 { } Recuerde usar: this: referencia a métodos del objeto actual. super: referencia a métodos de la superclase.
  • 9. public class Clase2 extend Clase1 { public Clase2() { super(); . . . } } HERENCIA Y CONSTRUCTORES  En Java, los constructores no se heredan.  Java permite invocar a los constructores de la clase padre dentro de un constructor utilizando la llamada super(…).  Cuando se aplica herencia, la llamada a un constructor de la clase padre es obligatoria.  Debe ser la primera sentencia del código del constructor.  Si se omite la llamada, el compilador asume que la primera llamada es super().
  • 10. ACCESO PROTEGIDO  Una subclase hereda todos los miembros definidos en la superclase, pero no puede acceder a los miembros privados.  Para permitir que un método de la subclase pueda acceder a un miembro (variable/método) de la superclase, éste tiene que declararse como protected. – private: visible sólo en la clase donde se define. – Sin modificador (por defecto): visible a las clases del mismo paquete. – protected: características visibles en las subclases y al resto de clases del paquete. – public: visible a todas las clases.
  • 11. REDEFINICIÓN  La redefinición reconcilia la reutilización con la extensibilidad.  Las variables no se pueden redefinir, sólo se ocultan – Si la clase hija define una variable con el mismo nombre que un variable de la clase padre, éste no está accesible. – La variable de la superclase todavía existe pero no se puede acceder  Un método de la subclase con la misma firma (nombre y parámetros) que un método de la superclase lo está redefiniendo. – Si se cambia el tipo de los parámetros se está sobrecargando el método original.  Si un método redefinido refina el comportamiento del método original puede necesitar hacer referencia a este comportamiento. – super: se utiliza para invocar a un método de la clase padre: • super.metodo ( … ) ;
  • 12. MODIFICADOR final  Aplicado a una variable lo convierte en una constante. protected final String NOMBRE= "Gustavo Coronel" ;  Aplicado a un método impide su redefinición en una clase hija. public final int suma( int a, int b ) { … }  Aplicado a una clase indica que no se puede heredar. public final class Clase1 { . . . }
  • 13. CLASES ABSTRACTAS  Una clase abstracta define un tipo, como cualquier otra clase.  Sin embargo, no se pueden construir objetos de una clase abstracta.  Los constructores sólo tienen sentido para ser utilizados en las subclases. public abstract class Clase1 { public abstract void metodo1(); public abstract void metodo2(); }  Especifica una funcionalidad que es común a un conjunto de subclases aunque no es completa.  Justificación de una clase abstracta:  Declara o hereda métodos abstractos.  Representa un concepto abstracto para el que no tiene sentido crear objetos.
  • 14. CLASES PARCIALMENTE ABSTRACTAS  Contienen métodos abstractos y concretos.  Los métodos concretos pueden hacer uso de los métodos abstractos.  Importante mecanismo para incluir código genérico.  Incluyen comportamiento abstracto común a todos los descendientes. public abstract class Clase1 { public abstract void metodo1(); public abstract void metodo2(); public void metodo3() { . . . } public void metodo4() { . . . } }
  • 15. OPERADOR instanceof  Comprueba si el tipo de una variable es compatible con un tipo dado. – Es de ese tipo o alguna de sus subclases  Si no se hace la comprobación, en el caso de que fallara el casting (en tiempo de ejecución) se abortaría el programa.  No es lo mismo hacer la comprobación con instanceof que con el método getClass heredado de la clase. if ( variable instanceof Clase ) { // Script }
  • 16. PROYECTO EJEMPLO  El restaurante "El Buen Sabor" necesita implementar una aplicación que permita a sus empleados calcular los datos que se deben registrar en el comprobante de pago.  Los conceptos que se manejan cuando se trata de una factura son los siguientes: – Consumo 100.00 – Impuesto 19.00 – Total 119.00 – Servicio (10%) 11.90 – Total General 130.90  Cuando se trata de una boleta son los siguientes: – Total 119.00 – Servicio (10%) 11.90 – Total General 130.90  Diseñe y desarrolle la aplicación que automatice el requerimiento solicitado por el restaurante.  Se sabe que el dato que debe proporcionar el empleado es el Total.
  • 17.
  • 18. Dirección de descarga: https://goo.gl/TDgc5R
  • 19. ENTERPRISE JAVA DEVELOPER JAVA ORIENTADO A OBJETOS Eric Gustavo Coronel Castillo gcoronelc.blogspot.com Gracias