SlideShare uma empresa 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

Mais conteúdo relacionado

Mais procurados

Algebra relacional
Algebra relacionalAlgebra relacional
Algebra relacional
Maria Garcia
 
1. modelo entidad relacion ejemplo
1. modelo entidad relacion   ejemplo1. modelo entidad relacion   ejemplo
1. modelo entidad relacion ejemplo
univ of pamplona
 
Herencia Y Polimorfismo
Herencia Y PolimorfismoHerencia Y Polimorfismo
Herencia Y Polimorfismo
Rolando Steep Quezada Martinez
 
003 sobrecarga de operadores jdchc
003 sobrecarga de operadores jdchc003 sobrecarga de operadores jdchc
003 sobrecarga de operadores jdchc
Javier Chávez Centeno
 
Asociaciones entre objetos-generalización especialización
Asociaciones entre objetos-generalización especializaciónAsociaciones entre objetos-generalización especialización
Asociaciones entre objetos-generalización especialización
UVM
 
Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseño
Abimael Desales López
 
Diagramas de flujo y pseint
Diagramas de flujo y pseint Diagramas de flujo y pseint
Diagramas de flujo y pseint
SharonRodriguez43
 
¿Cómo grabar un documento en un CD?
¿Cómo grabar un documento en un CD?¿Cómo grabar un documento en un CD?
¿Cómo grabar un documento en un CD?
EMILY CARRERAS
 
Diagramas de objetos
Diagramas de objetosDiagramas de objetos
Diagramas de objetos
still01
 
8a Curso de POO en Java - crear proyecto eclipse
8a Curso de POO en Java - crear proyecto eclipse8a Curso de POO en Java - crear proyecto eclipse
8a Curso de POO en Java - crear proyecto eclipse
Clara Patricia Avella Ibañez
 

Mais procurados (10)

Algebra relacional
Algebra relacionalAlgebra relacional
Algebra relacional
 
1. modelo entidad relacion ejemplo
1. modelo entidad relacion   ejemplo1. modelo entidad relacion   ejemplo
1. modelo entidad relacion ejemplo
 
Herencia Y Polimorfismo
Herencia Y PolimorfismoHerencia Y Polimorfismo
Herencia Y Polimorfismo
 
003 sobrecarga de operadores jdchc
003 sobrecarga de operadores jdchc003 sobrecarga de operadores jdchc
003 sobrecarga de operadores jdchc
 
Asociaciones entre objetos-generalización especialización
Asociaciones entre objetos-generalización especializaciónAsociaciones entre objetos-generalización especialización
Asociaciones entre objetos-generalización especialización
 
Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseño
 
Diagramas de flujo y pseint
Diagramas de flujo y pseint Diagramas de flujo y pseint
Diagramas de flujo y pseint
 
¿Cómo grabar un documento en un CD?
¿Cómo grabar un documento en un CD?¿Cómo grabar un documento en un CD?
¿Cómo grabar un documento en un CD?
 
Diagramas de objetos
Diagramas de objetosDiagramas de objetos
Diagramas de objetos
 
8a Curso de POO en Java - crear proyecto eclipse
8a Curso de POO en Java - crear proyecto eclipse8a Curso de POO en Java - crear proyecto eclipse
8a Curso de POO en Java - crear proyecto eclipse
 

Semelhante 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 java
Faby 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 Programmer
Oscar V
 
Greenfoot 6
Greenfoot 6Greenfoot 6
Greenfoot 6
Christian Medina
 
Taller de programación
Taller de programaciónTaller de programación
Taller de programación
María Alejandra Cañón Vivas
 
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
 
Herencia clase
Herencia claseHerencia clase
Herencia clase
Jose Antonio
 
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
Oscar 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
 
03 java poo_parte_2
03 java poo_parte_203 java poo_parte_2
03 java poo_parte_2
Renny Batista
 

Semelhante 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
 
03 java poo_parte_2
03 java poo_parte_203 java poo_parte_2
03 java poo_parte_2
 

Mais 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

Mais 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
 

Último

TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptxTARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
dayronfabricioruizmo
 
primer manual de nuestra compañía de soporte
primer manual de nuestra compañía de soporteprimer manual de nuestra compañía de soporte
primer manual de nuestra compañía de soporte
eliersin13
 
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
micarnavaltupatrimon
 
Introduccion al Lenguaje de Programación C++
Introduccion al Lenguaje de Programación  C++Introduccion al Lenguaje de Programación  C++
Introduccion al Lenguaje de Programación C++
PaulDelgadoSoto
 
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
micarnavaltupatrimon
 
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
Maria Celeste Trujillo Cruz
 
herramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcel
herramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcelherramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcel
herramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcel
Eduardo455921
 

Último (7)

TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptxTARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
 
primer manual de nuestra compañía de soporte
primer manual de nuestra compañía de soporteprimer manual de nuestra compañía de soporte
primer manual de nuestra compañía de soporte
 
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
 
Introduccion al Lenguaje de Programación C++
Introduccion al Lenguaje de Programación  C++Introduccion al Lenguaje de Programación  C++
Introduccion al Lenguaje de Programación C++
 
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
 
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
 
herramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcel
herramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcelherramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcel
herramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcel
 

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