SlideShare una empresa de Scribd logo
ENTERPRISE JAVA DEVELOPER
JAVA ORIENTADO A OBJETOS
Eric Gustavo Coronel Castillo
www.youtube.com/DesarrollaSoftware
gcoronelc.blogspot.com
INTERFACES
Temas
▪ Objetivo
▪ Interface
▪ Diferencia entre Clase Concreta, Abstracta
e Interface
▪ Polimorfismo
▪ Operador instanceof
▪ Casting
▪ Ligadura Estática y Dinámica
▪ Control de Acceso a los Miembros de una
Clase
▪ Proyecto Ejemplo
OBJETIVOS
▪ Aplicar interfaces en el diseño de componentes software.
▪ Aplicar el polimorfismo en el diseño de componentes software
Empleado
+ getSueldo() : Single
Contratado
+ getSueldo() : Single
+ getBonificacion() : Single
SinContrato
+ getSueldo() : Single
• Solo contienen operaciones (métodos) sin implementación, es decir solo la firma (signature).
• Las clases son las encargadas de implementar las operaciones (métodos) de una o varias
interfaces (Herencia múltiple).
• Se dice que se crean Interface cuando sabemos que queremos y no sabemos como hacerlo, y lo
hará otro o lo harán de varias formas (polimorfismo).
public interface IPersona {
void operacion1();
void operacion2();
}
public class Empleado implements IPersona {
public void operacion1() {
//implementa el método de la interface
}
public void operacion2() {
//implementa el método de la interface
}
public void operacion3() {
//implementación
}
}
Interface
Métodos sin
implementación
(Clase Concreta)
tiene la obligación
de implementar
los métodos de la
Interface
Realización
INTERFACE
Ejemplo de Herencia múltiple de Interface.
public interface IPersona {
void operacion1();
void operacion2();
}
public class Empleado
implements Ipersona, IMantenimiento {
// Implementa los métodos de las interfaces
// . . .
// . . .
// . . .
}
public interface IMantenimiento {
void insertar();
void eliminar();
void modificar();
}
INTERFACE
CLASE CONCRETA, ABSTRACTA E INTERFACE
CARACTERISTICA CLASE CONCRETA CLASE ABSTRACTA INTERFACE
HERENCIA
extends
(simple)
extends
(simple)
implements
(múltiple)
INSTANCIABLE
Si No No
IMPLEMENTA
Métodos Algunos métodos Nada
DATOS
Se permite Se permite No se permite*
* Las variables que se declaran en una interface son implícitamente estáticas, finales y publicas.
• Se dice que existe polimorfismo cuando un método definido en una clase o interface es
implementado de varias formas en otras clases.
• Algunos ejemplos de polimorfismos de herencia son: sobre-escritura, implementación de métodos
abstractos (clase abstracta e interface).
• Es posible apuntar a un objeto con una variable de tipo de clase padre (supercalse), esta sólo podrá
acceder a los miembros (campos y métodos) que le pertenece.
// Variable de tipo Empleado y apunta a un
// objeto de tipo Contratado.
Empleado objEmp = new Contratado();
// Invocando sus métodos
double s = objEmp.getSueldo(); //OK
double b = objEmp.getBonificacion(); //Error
Empleado
+ getSueldo() : Single
Contratado
+ getSueldo() : Single
+ getBonificacion() : Single
SinContrato
+ getSueldo() : Single
POLIMORFISMO
• El método getGratificacion puede recibir objetos de Empleado o subtipos a este.
• Cuando invoque el método getSueldo se ejecutará la versión correspondiente al objeto referenciado.
public class Planilla {
public static double
getGratificacion(Empleado emp){
return emp.getSueldo() * 1.5;
}
}
// Usando la clase Planilla
double g1 = Planilla.getGratificacion(new Contratado());
double g2 = Planilla.getGratificacion(new SinContratado());
POLIMORFISMO
• Este operador permite verificar si el objeto es de un tipo determinado, es decir, el objeto debe
pasar por la verificación ES-UN para una determinada clase o interface.
public class Planilla {
public static double getGratificacion(Empleado emp){
if (emp instanceof Contratado)
return Emp.getSueldo() * 1.5;
if (emp instanceof SinContratado)
return Emp.getSueldo() * 1.2;
}
}
//Usando la clase Planilla
double g1 = Planilla.getGratificacion(new Contratado());
double g2 = Planilla.getGratificacion(new SinContratado());
OPERADOR instanceof
• Para restablecer la funcionalidad completa de un objeto, que es de un tipo y hace referencia a otro
tipo, debe realizar una conversión (Cast).
• UpCasting: Conversión a clases superiores de la jerarquía de clases (Herencia), es automático
(conversión implícita), basta realizar la asignación.
• DownCasting: Conversión hacia abajo, es decir hacia las subclases de la jerarquía (Herencia), es
recomendable realizar Cast (conversión explicita), si no es compatible genera un error (Excepción).
// UpCasting (Conversión implícita)
Contratado a = new Contratado();
Empleado b = a;
// DownCasting (Conversión explícita)
Empleado a = new Contrtado();
Contratado b = (Contratado) a;
// Error de compilación
SinContrato a = new SinContrato();
Contratado b = (Contratado) a;
CASTING
LIGADURA ESTÁTICA Y DINÁMICA
▪ La ligadura dinámica se encarga de ligar o relacionar la llamada a un método con el
cuerpo del método que se ejecuta finalmente.
▪ Ligadura estática:
– Consiste en realizar el proceso de ligadura en tiempo de compilación según el tipo
del objeto que se ha declarado al que se le envía el mensaje.
– Lo utilizan los métodos de clase y los métodos de instancia que son privados o final,
ya que estos últimos no pueden ser sobrescritos.
▪ Ligadura dinámica:
– Consiste en realizar el proceso de ligadura en tiempo de ejecución siendo la forma
dinámica del objeto la que determina la versión del método a ejecutar.
– Se utiliza en todos los métodos de instancia de Java que no son privados, ni final.
LIGADURA ESTÁTICA Y DINÁMICA
FUNCIONAMIENTO DE LA LIGADURA DINÁMICA
▪ Resolución de conflictos entre Superclases y Subclases:
– Cuando existe un conflicto entre un método de una superclase y un método de la
subclase, el comportamiento correcto es que el método de la subclase sobrescriba
al de la superclase.
– Si estamos llamando a un método de la subclase desde una variable que ha sido
declarada del tipo de la superclase. ¿Cómo se consigue que funcione
correctamente?
▪ Ligadura Dinámica:
– Significa que la forma dinámica del objeto determina la versión de la operación que
se aplicará.
– 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.
LIGADURA ESTÁTICA Y DINÁMICA
CARACTERÍSTICAS DE LA LIGADURA DINÁMICA
▪ Puede variar de un lenguaje a otro, pero básicamente presentan
características comunes.
▪ Los métodos que necesitan ligadura dinámica:
– Deben presentar ligadura dinámica solo aquellos que pueden
ser redefinidos.
– Por ejemplo, en Java, los métodos de clase y los métodos de
instancia privados y/o finales no presentan ligadura dinámica.
– En Java, si no se especifica nada se entenderá que el método
puede ser redefinido y por tanto debe presentar ligadura
dinámica.
LIGADURA ESTÁTICA Y DINÁMICA
Ejercicio 1
LIGADURA ESTÁTICA Y DINÁMICA
Ejercicio 2
▪ Se conoce 4 formas de controlar el acceso a los campos (atributos) y métodos (operaciones) de las clases.
➢ private ( - ): Acceso sólo dentro de la clase.
➢ package (~) : Acceso sólo dentro del paquete.
➢ protected ( # ): Acceso en la clase, dentro del paquete y en subclases (herencia dentro o fuera del
paquete).
➢ public ( + ): Acceso desde cualquier parte.
CONTROL DE ACCESO A LOS MIEMBROS DE UNA CLASE
Acceso
Visibilidad
Misma
Clase
Mismo Paquete SubClases
y
Mismo Paquete
Universal
public ( + ) Sí Sí Sí Sí
protected ( # ) Sí Sí Sí No
package (~) Sí Sí No No
private ( - ) Sí No No No
PROYECTO EJEMPLO
▪ La institución educativa EduTec cuenta con
dos tipos de trabajadores: Empleados y
Docentes.
▪ Los empleados cuentan con un sueldo fijo y
depende del cargo que ocupa, según la tabla
SUELDO DE EMPLEADOS.
▪ El sueldo del docente está en función de las
horas que dicta, el pago por hora es de 150
Soles.
▪ El departamento de recursos humanos
necesita una aplicación para calcular el pago
de un trabajador incluyendo su bonificación
según la tabla BONIFICACIÓN DE
TRABAJADORES.
CARGO SUELDO
Coordinador 5,000.00
Asistente 4,000.00
Secretaria 3,000.00
TRABAJADOR BONIFICACIÓN
Empleado 100% del Sueldo
Docente 70% del Sueldo
SUELDO DE EMPLEADOS
BONIFICACIÓN DE TRABAJADORES
ENTERPRISE JAVA DEVELOPER
JAVA ORIENTADO A OBJETOS
Eric Gustavo Coronel Castillo
gcoronelc.blogspot.com
Gracias
FUNDAMENTOS DE
PROGRAMACIÓN CON JAVA
Aprende las mejores prácticas
PROGRAMACIÓN ORIENTADA
A OBJETOS CON JAVA
Aprende programación en capas,
patrones y buenas prácticas
PROGRAMACIÓN DE BASE
DE DATOS ORACLE CON
PL/SQL
Aprende a obtener el mejor
rendimiento de tú base de datos
PROGRAMACIÓN DE BASE
DE DATOS ORACLE CON
JDBC
Aprende a programar
correctamente con JDBC
https://github.com/gcoronelc/UDEMY

Más contenido relacionado

La actualidad más candente

7 Curso de POO en java - diagrama de clases
7 Curso de POO en java - diagrama de clases7 Curso de POO en java - diagrama de clases
7 Curso de POO en java - diagrama de clases
Clara Patricia Avella Ibañez
 
Protocolo de Enrutamiento IGRP
Protocolo de Enrutamiento IGRPProtocolo de Enrutamiento IGRP
Protocolo de Enrutamiento IGRP
Ángel Leonardo Torres
 
Conceptos y protocolos de enrutamiento: 9. EIGRP
Conceptos y protocolos de enrutamiento: 9. EIGRPConceptos y protocolos de enrutamiento: 9. EIGRP
Conceptos y protocolos de enrutamiento: 9. EIGRPFrancesc Perez
 
Spanning tree protocol CCNA
Spanning tree protocol CCNASpanning tree protocol CCNA
Spanning tree protocol CCNA
Juan Zambrano Burgos
 
Caso de Uso
Caso de UsoCaso de Uso
Caso de Uso
utrilla
 
Exposición Diagrama de Clases
Exposición Diagrama de ClasesExposición Diagrama de Clases
Exposición Diagrama de Clases
Universidad Técnica del Norte
 
Programacion Orientada a Objetos
Programacion Orientada a ObjetosProgramacion Orientada a Objetos
Programacion Orientada a Objetos
Cesar David Fernandez Grueso
 
Clases Genéricas en Java
Clases Genéricas en JavaClases Genéricas en Java
Clases Genéricas en Java
Alejandro Colomer Everett
 
Normalización de Base de Datos
Normalización de Base de DatosNormalización de Base de Datos
Normalización de Base de Datos
Jorge Luis Chalén
 
Spanning Tree Protocol
Spanning Tree ProtocolSpanning Tree Protocol
Spanning Tree Protocol
Angel Evelio Sanchez Javier
 
Capa de aplicación
Capa de aplicaciónCapa de aplicación
Capa de aplicación
Dayank Muñoz Almeida
 
Lógica secuencial asignatura electrónica digital para ingeniería electromecánica
Lógica secuencial asignatura electrónica digital para ingeniería electromecánicaLógica secuencial asignatura electrónica digital para ingeniería electromecánica
Lógica secuencial asignatura electrónica digital para ingeniería electromecánica
Israel Magaña
 
programacion orientada a objetos
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetosale8819
 
MODIFICADORES Y METODOS DE ACCESO
MODIFICADORES Y METODOS DE ACCESOMODIFICADORES Y METODOS DE ACCESO
MODIFICADORES Y METODOS DE ACCESO
mellcv
 
03 java poo_parte_2
03 java poo_parte_203 java poo_parte_2
03 java poo_parte_2
Renny Batista
 
programacion orientada a objetos
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetosjent46
 
9.subrutinas
9.subrutinas9.subrutinas
9.subrutinas
cantabrobots30
 
Capa de Enlace y Capa de Red
Capa de Enlace y Capa de RedCapa de Enlace y Capa de Red
Capa de Enlace y Capa de Redstalynsilva21
 

La actualidad más candente (20)

7 Curso de POO en java - diagrama de clases
7 Curso de POO en java - diagrama de clases7 Curso de POO en java - diagrama de clases
7 Curso de POO en java - diagrama de clases
 
Protocolo de Enrutamiento IGRP
Protocolo de Enrutamiento IGRPProtocolo de Enrutamiento IGRP
Protocolo de Enrutamiento IGRP
 
Conceptos y protocolos de enrutamiento: 9. EIGRP
Conceptos y protocolos de enrutamiento: 9. EIGRPConceptos y protocolos de enrutamiento: 9. EIGRP
Conceptos y protocolos de enrutamiento: 9. EIGRP
 
Spanning tree protocol CCNA
Spanning tree protocol CCNASpanning tree protocol CCNA
Spanning tree protocol CCNA
 
Caso de Uso
Caso de UsoCaso de Uso
Caso de Uso
 
Exposición Diagrama de Clases
Exposición Diagrama de ClasesExposición Diagrama de Clases
Exposición Diagrama de Clases
 
Programacion Orientada a Objetos
Programacion Orientada a ObjetosProgramacion Orientada a Objetos
Programacion Orientada a Objetos
 
Clases Genéricas en Java
Clases Genéricas en JavaClases Genéricas en Java
Clases Genéricas en Java
 
Normalización de Base de Datos
Normalización de Base de DatosNormalización de Base de Datos
Normalización de Base de Datos
 
Spanning Tree Protocol
Spanning Tree ProtocolSpanning Tree Protocol
Spanning Tree Protocol
 
Capa de aplicación
Capa de aplicaciónCapa de aplicación
Capa de aplicación
 
Lógica secuencial asignatura electrónica digital para ingeniería electromecánica
Lógica secuencial asignatura electrónica digital para ingeniería electromecánicaLógica secuencial asignatura electrónica digital para ingeniería electromecánica
Lógica secuencial asignatura electrónica digital para ingeniería electromecánica
 
programacion orientada a objetos
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetos
 
MODIFICADORES Y METODOS DE ACCESO
MODIFICADORES Y METODOS DE ACCESOMODIFICADORES Y METODOS DE ACCESO
MODIFICADORES Y METODOS DE ACCESO
 
03 java poo_parte_2
03 java poo_parte_203 java poo_parte_2
03 java poo_parte_2
 
Protocolo de capa 5
Protocolo de capa 5Protocolo de capa 5
Protocolo de capa 5
 
programacion orientada a objetos
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetos
 
Dispositivos e interfases wan
Dispositivos e interfases wanDispositivos e interfases wan
Dispositivos e interfases wan
 
9.subrutinas
9.subrutinas9.subrutinas
9.subrutinas
 
Capa de Enlace y Capa de Red
Capa de Enlace y Capa de RedCapa de Enlace y Capa de Red
Capa de Enlace y Capa de Red
 

Similar a JAVA ORIENTADO A OBJETOS - INTERFACES

Java OO - Tema 06 - Interfaces
Java OO - Tema 06 -  InterfacesJava OO - Tema 06 -  Interfaces
Java OO - Tema 06 - Interfaces
Eric Gustavo Coronel Castillo
 
JAVA ORIENTADO A OBJETOS - HERENCIA
JAVA ORIENTADO A OBJETOS - HERENCIAJAVA ORIENTADO A OBJETOS - HERENCIA
JAVA ORIENTADO A OBJETOS - HERENCIA
Eric Gustavo Coronel Castillo
 
JAVA 00 - TEMA 05 - HERENCIA
JAVA 00 - TEMA 05 - HERENCIAJAVA 00 - TEMA 05 - HERENCIA
JAVA 00 - TEMA 05 - HERENCIA
Eric Gustavo Coronel Castillo
 
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
Alvaro Enrique Ruano
 
Tema 7 polimorfismo en java
Tema 7 polimorfismo en javaTema 7 polimorfismo en java
Tema 7 polimorfismo en javaFaby Páez
 
Unidad_01_04.pdf
Unidad_01_04.pdfUnidad_01_04.pdf
Unidad_01_04.pdf
FelipeFarfn2
 
Clean code 10-11
Clean code 10-11Clean code 10-11
Clean code 10-11
540deg
 
Programación Orientada a Objetos - Unidad 2: clases y objetos
Programación Orientada a Objetos - Unidad 2: clases y objetosProgramación Orientada a Objetos - Unidad 2: clases y objetos
Programación Orientada a Objetos - Unidad 2: clases y objetos
José Antonio Sandoval Acosta
 
Programacion Orientada a Objetos - Unidad 2 clases y objetos
Programacion Orientada a Objetos - Unidad 2 clases y objetosProgramacion Orientada a Objetos - Unidad 2 clases y objetos
Programacion Orientada a Objetos - Unidad 2 clases y objetos
José Antonio Sandoval Acosta
 
Guia de estudio OCP Java SE 7 Programmer
Guia de estudio OCP Java SE 7 ProgrammerGuia de estudio OCP Java SE 7 Programmer
Guia de estudio OCP Java SE 7 ProgrammerOscar V
 
Greenfoot 6
Greenfoot 6Greenfoot 6
Greenfoot 6
Christian Medina
 
Certificación java 6 cap 2
Certificación java 6 cap 2Certificación java 6 cap 2
Certificación java 6 cap 2
srBichoRaro
 
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
Miguel Ángel Sánchez Chordi
 
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 5 de 7(OO) v1
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 5 de 7(OO) v1OCP, JSE 6 Programmer (1Z0-851) - Guia practica 5 de 7(OO) v1
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 5 de 7(OO) v1Oscar V
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño I
jjegonzalezf
 
Software Clips
Software ClipsSoftware Clips
Software Clips
Kevin Medina
 
polimorfismo
polimorfismopolimorfismo
polimorfismo
miguel a
 
Jyoc java-cap08 principios poo
Jyoc java-cap08 principios pooJyoc java-cap08 principios poo
Jyoc java-cap08 principios poo
Jyoc X
 

Similar a JAVA ORIENTADO A OBJETOS - INTERFACES (20)

Java OO - Tema 06 - Interfaces
Java OO - Tema 06 -  InterfacesJava OO - Tema 06 -  Interfaces
Java OO - Tema 06 - Interfaces
 
JAVA ORIENTADO A OBJETOS - HERENCIA
JAVA ORIENTADO A OBJETOS - HERENCIAJAVA ORIENTADO A OBJETOS - HERENCIA
JAVA ORIENTADO A OBJETOS - HERENCIA
 
JAVA 00 - TEMA 05 - HERENCIA
JAVA 00 - TEMA 05 - HERENCIAJAVA 00 - TEMA 05 - HERENCIA
JAVA 00 - TEMA 05 - HERENCIA
 
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
 
Tema 7 polimorfismo en java
Tema 7 polimorfismo en javaTema 7 polimorfismo en java
Tema 7 polimorfismo en java
 
Unidad_01_04.pdf
Unidad_01_04.pdfUnidad_01_04.pdf
Unidad_01_04.pdf
 
Clean code 10-11
Clean code 10-11Clean code 10-11
Clean code 10-11
 
Programación Orientada a Objetos - Unidad 2: clases y objetos
Programación Orientada a Objetos - Unidad 2: clases y objetosProgramación Orientada a Objetos - Unidad 2: clases y objetos
Programación Orientada a Objetos - Unidad 2: clases y objetos
 
Programacion Orientada a Objetos - Unidad 2 clases y objetos
Programacion Orientada a Objetos - Unidad 2 clases y objetosProgramacion Orientada a Objetos - Unidad 2 clases y objetos
Programacion Orientada a Objetos - Unidad 2 clases y objetos
 
Guia de estudio OCP Java SE 7 Programmer
Guia de estudio OCP Java SE 7 ProgrammerGuia de estudio OCP Java SE 7 Programmer
Guia de estudio OCP Java SE 7 Programmer
 
Greenfoot 6
Greenfoot 6Greenfoot 6
Greenfoot 6
 
Taller de programación
Taller de programaciónTaller de programación
Taller de programación
 
Certificación java 6 cap 2
Certificación java 6 cap 2Certificación java 6 cap 2
Certificación java 6 cap 2
 
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
 
Herencia clase
Herencia claseHerencia clase
Herencia clase
 
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 5 de 7(OO) v1
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 5 de 7(OO) v1OCP, JSE 6 Programmer (1Z0-851) - Guia practica 5 de 7(OO) v1
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 5 de 7(OO) v1
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño I
 
Software Clips
Software ClipsSoftware Clips
Software Clips
 
polimorfismo
polimorfismopolimorfismo
polimorfismo
 
Jyoc java-cap08 principios poo
Jyoc java-cap08 principios pooJyoc java-cap08 principios poo
Jyoc java-cap08 principios poo
 

Más de Eric Gustavo Coronel Castillo

Java Web JSTL
Java Web JSTLJava Web JSTL
Model View Controller - MVC
Model View Controller - MVCModel View Controller - MVC
Model View Controller - MVC
Eric Gustavo Coronel Castillo
 
JavaServer Page
JavaServer PageJavaServer Page
Java Web: Servlets
Java Web: ServletsJava Web: Servlets
Java Web: Servlets
Eric Gustavo Coronel Castillo
 
Java Web - Presentación
Java Web - PresentaciónJava Web - Presentación
Java Web - Presentación
Eric Gustavo Coronel Castillo
 
JAVA ORIENTADO A OBJETOS - EXCEPCIONES
JAVA ORIENTADO A OBJETOS - EXCEPCIONESJAVA ORIENTADO A OBJETOS - EXCEPCIONES
JAVA ORIENTADO A OBJETOS - EXCEPCIONES
Eric Gustavo Coronel Castillo
 
JAVA ORIENTADO A OBJETOS - COLECCIONES
JAVA ORIENTADO A OBJETOS - COLECCIONESJAVA ORIENTADO A OBJETOS - COLECCIONES
JAVA ORIENTADO A OBJETOS - COLECCIONES
Eric Gustavo Coronel Castillo
 
JAVA ORIENTADO A OBJETOS - ARREGLOS
JAVA ORIENTADO A OBJETOS - ARREGLOSJAVA ORIENTADO A OBJETOS - ARREGLOS
JAVA ORIENTADO A OBJETOS - ARREGLOS
Eric Gustavo Coronel Castillo
 
JAVA ORIENTADO A OBJETOS - ALCANCE DE CLASE
JAVA ORIENTADO A OBJETOS - ALCANCE DE CLASEJAVA ORIENTADO A OBJETOS - ALCANCE DE CLASE
JAVA ORIENTADO A OBJETOS - ALCANCE DE CLASE
Eric Gustavo Coronel Castillo
 
JAVA ORIENTADO A OBJETOS - SOBRECARGA
JAVA ORIENTADO A OBJETOS - SOBRECARGAJAVA ORIENTADO A OBJETOS - SOBRECARGA
JAVA ORIENTADO A OBJETOS - SOBRECARGA
Eric Gustavo Coronel Castillo
 
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
Eric Gustavo Coronel Castillo
 
JAVA ORIENTADO A OBJETOS - CLASES Y OBJETOS
JAVA ORIENTADO A OBJETOS - CLASES Y OBJETOSJAVA ORIENTADO A OBJETOS - CLASES Y OBJETOS
JAVA ORIENTADO A OBJETOS - CLASES Y OBJETOS
Eric Gustavo Coronel Castillo
 
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
Eric Gustavo Coronel Castillo
 
JAVA ORIENTADO A OBJETOS - INTRODUCCIÓN
JAVA ORIENTADO A OBJETOS - INTRODUCCIÓNJAVA ORIENTADO A OBJETOS - INTRODUCCIÓN
JAVA ORIENTADO A OBJETOS - INTRODUCCIÓN
Eric Gustavo Coronel Castillo
 
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
Eric Gustavo Coronel Castillo
 
JAVA OO - TEMA 08 - COLECCIONES
JAVA OO - TEMA 08 - COLECCIONESJAVA OO - TEMA 08 - COLECCIONES
JAVA OO - TEMA 08 - COLECCIONES
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 INFORMACION
Eric Gustavo Coronel Castillo
 
ORACLE SQL
ORACLE SQLORACLE SQL
CONSULTAS BASICAS
CONSULTAS BASICASCONSULTAS BASICAS
ORACLE SQL
ORACLE SQLORACLE SQL

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
 
JAVA ORIENTADO A OBJETOS - ALCANCE DE CLASE
JAVA ORIENTADO A OBJETOS - ALCANCE DE CLASEJAVA ORIENTADO A OBJETOS - ALCANCE DE CLASE
JAVA ORIENTADO A OBJETOS - ALCANCE DE CLASE
 
JAVA ORIENTADO A OBJETOS - SOBRECARGA
JAVA ORIENTADO A OBJETOS - SOBRECARGAJAVA ORIENTADO A OBJETOS - SOBRECARGA
JAVA ORIENTADO A OBJETOS - SOBRECARGA
 
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
 
JAVA ORIENTADO A OBJETOS - CLASES Y OBJETOS
JAVA ORIENTADO A OBJETOS - CLASES Y OBJETOSJAVA ORIENTADO A OBJETOS - CLASES Y OBJETOS
JAVA ORIENTADO A OBJETOS - CLASES Y OBJETOS
 
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
 

JAVA ORIENTADO A OBJETOS - INTERFACES

  • 1. ENTERPRISE JAVA DEVELOPER JAVA ORIENTADO A OBJETOS Eric Gustavo Coronel Castillo www.youtube.com/DesarrollaSoftware gcoronelc.blogspot.com INTERFACES
  • 2. Temas ▪ Objetivo ▪ Interface ▪ Diferencia entre Clase Concreta, Abstracta e Interface ▪ Polimorfismo ▪ Operador instanceof ▪ Casting ▪ Ligadura Estática y Dinámica ▪ Control de Acceso a los Miembros de una Clase ▪ Proyecto Ejemplo
  • 3. OBJETIVOS ▪ Aplicar interfaces en el diseño de componentes software. ▪ Aplicar el polimorfismo en el diseño de componentes software Empleado + getSueldo() : Single Contratado + getSueldo() : Single + getBonificacion() : Single SinContrato + getSueldo() : Single
  • 4. • Solo contienen operaciones (métodos) sin implementación, es decir solo la firma (signature). • Las clases son las encargadas de implementar las operaciones (métodos) de una o varias interfaces (Herencia múltiple). • Se dice que se crean Interface cuando sabemos que queremos y no sabemos como hacerlo, y lo hará otro o lo harán de varias formas (polimorfismo). public interface IPersona { void operacion1(); void operacion2(); } public class Empleado implements IPersona { public void operacion1() { //implementa el método de la interface } public void operacion2() { //implementa el método de la interface } public void operacion3() { //implementación } } Interface Métodos sin implementación (Clase Concreta) tiene la obligación de implementar los métodos de la Interface Realización INTERFACE
  • 5. Ejemplo de Herencia múltiple de Interface. public interface IPersona { void operacion1(); void operacion2(); } public class Empleado implements Ipersona, IMantenimiento { // Implementa los métodos de las interfaces // . . . // . . . // . . . } public interface IMantenimiento { void insertar(); void eliminar(); void modificar(); } INTERFACE
  • 6. CLASE CONCRETA, ABSTRACTA E INTERFACE CARACTERISTICA CLASE CONCRETA CLASE ABSTRACTA INTERFACE HERENCIA extends (simple) extends (simple) implements (múltiple) INSTANCIABLE Si No No IMPLEMENTA Métodos Algunos métodos Nada DATOS Se permite Se permite No se permite* * Las variables que se declaran en una interface son implícitamente estáticas, finales y publicas.
  • 7. • Se dice que existe polimorfismo cuando un método definido en una clase o interface es implementado de varias formas en otras clases. • Algunos ejemplos de polimorfismos de herencia son: sobre-escritura, implementación de métodos abstractos (clase abstracta e interface). • Es posible apuntar a un objeto con una variable de tipo de clase padre (supercalse), esta sólo podrá acceder a los miembros (campos y métodos) que le pertenece. // Variable de tipo Empleado y apunta a un // objeto de tipo Contratado. Empleado objEmp = new Contratado(); // Invocando sus métodos double s = objEmp.getSueldo(); //OK double b = objEmp.getBonificacion(); //Error Empleado + getSueldo() : Single Contratado + getSueldo() : Single + getBonificacion() : Single SinContrato + getSueldo() : Single POLIMORFISMO
  • 8. • El método getGratificacion puede recibir objetos de Empleado o subtipos a este. • Cuando invoque el método getSueldo se ejecutará la versión correspondiente al objeto referenciado. public class Planilla { public static double getGratificacion(Empleado emp){ return emp.getSueldo() * 1.5; } } // Usando la clase Planilla double g1 = Planilla.getGratificacion(new Contratado()); double g2 = Planilla.getGratificacion(new SinContratado()); POLIMORFISMO
  • 9. • Este operador permite verificar si el objeto es de un tipo determinado, es decir, el objeto debe pasar por la verificación ES-UN para una determinada clase o interface. public class Planilla { public static double getGratificacion(Empleado emp){ if (emp instanceof Contratado) return Emp.getSueldo() * 1.5; if (emp instanceof SinContratado) return Emp.getSueldo() * 1.2; } } //Usando la clase Planilla double g1 = Planilla.getGratificacion(new Contratado()); double g2 = Planilla.getGratificacion(new SinContratado()); OPERADOR instanceof
  • 10. • Para restablecer la funcionalidad completa de un objeto, que es de un tipo y hace referencia a otro tipo, debe realizar una conversión (Cast). • UpCasting: Conversión a clases superiores de la jerarquía de clases (Herencia), es automático (conversión implícita), basta realizar la asignación. • DownCasting: Conversión hacia abajo, es decir hacia las subclases de la jerarquía (Herencia), es recomendable realizar Cast (conversión explicita), si no es compatible genera un error (Excepción). // UpCasting (Conversión implícita) Contratado a = new Contratado(); Empleado b = a; // DownCasting (Conversión explícita) Empleado a = new Contrtado(); Contratado b = (Contratado) a; // Error de compilación SinContrato a = new SinContrato(); Contratado b = (Contratado) a; CASTING
  • 11. LIGADURA ESTÁTICA Y DINÁMICA ▪ La ligadura dinámica se encarga de ligar o relacionar la llamada a un método con el cuerpo del método que se ejecuta finalmente. ▪ Ligadura estática: – Consiste en realizar el proceso de ligadura en tiempo de compilación según el tipo del objeto que se ha declarado al que se le envía el mensaje. – Lo utilizan los métodos de clase y los métodos de instancia que son privados o final, ya que estos últimos no pueden ser sobrescritos. ▪ Ligadura dinámica: – Consiste en realizar el proceso de ligadura en tiempo de ejecución siendo la forma dinámica del objeto la que determina la versión del método a ejecutar. – Se utiliza en todos los métodos de instancia de Java que no son privados, ni final.
  • 12. LIGADURA ESTÁTICA Y DINÁMICA FUNCIONAMIENTO DE LA LIGADURA DINÁMICA ▪ Resolución de conflictos entre Superclases y Subclases: – Cuando existe un conflicto entre un método de una superclase y un método de la subclase, el comportamiento correcto es que el método de la subclase sobrescriba al de la superclase. – Si estamos llamando a un método de la subclase desde una variable que ha sido declarada del tipo de la superclase. ¿Cómo se consigue que funcione correctamente? ▪ Ligadura Dinámica: – Significa que la forma dinámica del objeto determina la versión de la operación que se aplicará. – 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.
  • 13. LIGADURA ESTÁTICA Y DINÁMICA CARACTERÍSTICAS DE LA LIGADURA DINÁMICA ▪ Puede variar de un lenguaje a otro, pero básicamente presentan características comunes. ▪ Los métodos que necesitan ligadura dinámica: – Deben presentar ligadura dinámica solo aquellos que pueden ser redefinidos. – Por ejemplo, en Java, los métodos de clase y los métodos de instancia privados y/o finales no presentan ligadura dinámica. – En Java, si no se especifica nada se entenderá que el método puede ser redefinido y por tanto debe presentar ligadura dinámica.
  • 14. LIGADURA ESTÁTICA Y DINÁMICA Ejercicio 1
  • 15. LIGADURA ESTÁTICA Y DINÁMICA Ejercicio 2
  • 16. ▪ Se conoce 4 formas de controlar el acceso a los campos (atributos) y métodos (operaciones) de las clases. ➢ private ( - ): Acceso sólo dentro de la clase. ➢ package (~) : Acceso sólo dentro del paquete. ➢ protected ( # ): Acceso en la clase, dentro del paquete y en subclases (herencia dentro o fuera del paquete). ➢ public ( + ): Acceso desde cualquier parte. CONTROL DE ACCESO A LOS MIEMBROS DE UNA CLASE Acceso Visibilidad Misma Clase Mismo Paquete SubClases y Mismo Paquete Universal public ( + ) Sí Sí Sí Sí protected ( # ) Sí Sí Sí No package (~) Sí Sí No No private ( - ) Sí No No No
  • 17. PROYECTO EJEMPLO ▪ La institución educativa EduTec cuenta con dos tipos de trabajadores: Empleados y Docentes. ▪ Los empleados cuentan con un sueldo fijo y depende del cargo que ocupa, según la tabla SUELDO DE EMPLEADOS. ▪ El sueldo del docente está en función de las horas que dicta, el pago por hora es de 150 Soles. ▪ El departamento de recursos humanos necesita una aplicación para calcular el pago de un trabajador incluyendo su bonificación según la tabla BONIFICACIÓN DE TRABAJADORES. CARGO SUELDO Coordinador 5,000.00 Asistente 4,000.00 Secretaria 3,000.00 TRABAJADOR BONIFICACIÓN Empleado 100% del Sueldo Docente 70% del Sueldo SUELDO DE EMPLEADOS BONIFICACIÓN DE TRABAJADORES
  • 18.
  • 19. ENTERPRISE JAVA DEVELOPER JAVA ORIENTADO A OBJETOS Eric Gustavo Coronel Castillo gcoronelc.blogspot.com Gracias
  • 20. FUNDAMENTOS DE PROGRAMACIÓN CON JAVA Aprende las mejores prácticas PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA Aprende programación en capas, patrones y buenas prácticas PROGRAMACIÓN DE BASE DE DATOS ORACLE CON PL/SQL Aprende a obtener el mejor rendimiento de tú base de datos PROGRAMACIÓN DE BASE DE DATOS ORACLE CON JDBC Aprende a programar correctamente con JDBC https://github.com/gcoronelc/UDEMY