SlideShare une entreprise Scribd logo
1  sur  20
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

Polimorfismo em java
Polimorfismo em javaPolimorfismo em java
Polimorfismo em javaManoel Afonso
 
Java: Inheritance
Java: InheritanceJava: Inheritance
Java: InheritanceTareq Hasan
 
Multiple Inheritance
Multiple InheritanceMultiple Inheritance
Multiple Inheritanceadil raja
 
Curso de Java (Parte 4)
Curso de Java (Parte 4)Curso de Java (Parte 4)
Curso de Java (Parte 4)Mario Sergio
 
Metodos de programacion
Metodos de programacionMetodos de programacion
Metodos de programacionadvmct
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a ObjetosIgor Takenami
 
Aula 5 encapsulamento, associação, polimorfismo, interfaces
Aula 5   encapsulamento, associação, polimorfismo, interfacesAula 5   encapsulamento, associação, polimorfismo, interfaces
Aula 5 encapsulamento, associação, polimorfismo, interfacesRafael Pinheiro
 
Inheritance in c++
Inheritance in c++Inheritance in c++
Inheritance in c++Paumil Patel
 
Exercícios - Herança - Java
Exercícios - Herança - JavaExercícios - Herança - Java
Exercícios - Herança - JavaArthur Emanuel
 
Polimorfismo
PolimorfismoPolimorfismo
PolimorfismoCaveiras
 
Polymorphism in C# Function overloading in C#
Polymorphism in C# Function overloading in C#Polymorphism in C# Function overloading in C#
Polymorphism in C# Function overloading in C#Abid Kohistani
 
Std 12 computer chapter 6 object oriented concepts (part 2)
Std 12 computer chapter 6 object oriented concepts (part 2)Std 12 computer chapter 6 object oriented concepts (part 2)
Std 12 computer chapter 6 object oriented concepts (part 2)Nuzhat Memon
 
Metodos Constructor Y Destructor
Metodos Constructor Y DestructorMetodos Constructor Y Destructor
Metodos Constructor Y Destructorrezzaca
 
Virtual Functions | Polymorphism | OOP
Virtual Functions | Polymorphism | OOPVirtual Functions | Polymorphism | OOP
Virtual Functions | Polymorphism | OOPshubham ghimire
 

Tendances (20)

Polimorfismo em java
Polimorfismo em javaPolimorfismo em java
Polimorfismo em java
 
Java: Inheritance
Java: InheritanceJava: Inheritance
Java: Inheritance
 
Multiple Inheritance
Multiple InheritanceMultiple Inheritance
Multiple Inheritance
 
inheritance
inheritanceinheritance
inheritance
 
Curso de Java (Parte 4)
Curso de Java (Parte 4)Curso de Java (Parte 4)
Curso de Java (Parte 4)
 
Metodos de programacion
Metodos de programacionMetodos de programacion
Metodos de programacion
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a Objetos
 
Aula 5 encapsulamento, associação, polimorfismo, interfaces
Aula 5   encapsulamento, associação, polimorfismo, interfacesAula 5   encapsulamento, associação, polimorfismo, interfaces
Aula 5 encapsulamento, associação, polimorfismo, interfaces
 
Inheritance in c++
Inheritance in c++Inheritance in c++
Inheritance in c++
 
Exercícios - Herança - Java
Exercícios - Herança - JavaExercícios - Herança - Java
Exercícios - Herança - Java
 
Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
 
POO - Aula 10 - Polimorfismo
POO - Aula 10 - PolimorfismoPOO - Aula 10 - Polimorfismo
POO - Aula 10 - Polimorfismo
 
Polymorphism in C# Function overloading in C#
Polymorphism in C# Function overloading in C#Polymorphism in C# Function overloading in C#
Polymorphism in C# Function overloading in C#
 
Inheritance In Java
Inheritance In JavaInheritance In Java
Inheritance In Java
 
Java Inheritance
Java InheritanceJava Inheritance
Java Inheritance
 
Modulo Algorítmica III - Julio Vasquez
Modulo Algorítmica III - Julio VasquezModulo Algorítmica III - Julio Vasquez
Modulo Algorítmica III - Julio Vasquez
 
Std 12 computer chapter 6 object oriented concepts (part 2)
Std 12 computer chapter 6 object oriented concepts (part 2)Std 12 computer chapter 6 object oriented concepts (part 2)
Std 12 computer chapter 6 object oriented concepts (part 2)
 
Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
 
Metodos Constructor Y Destructor
Metodos Constructor Y DestructorMetodos Constructor Y Destructor
Metodos Constructor Y Destructor
 
Virtual Functions | Polymorphism | OOP
Virtual Functions | Polymorphism | OOPVirtual Functions | Polymorphism | OOP
Virtual Functions | Polymorphism | OOP
 

Similaire à JAVA ORIENTADO A OBJETOS - INTERFACES

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 polimorfismoAlvaro Enrique Ruano
 
Tema 7 polimorfismo en java
Tema 7 polimorfismo en javaTema 7 polimorfismo en java
Tema 7 polimorfismo en javaFaby Páez
 
Clean code 10-11
Clean code 10-11Clean code 10-11
Clean code 10-11540deg
 
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 objetosJosé 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 objetosJosé 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
 
Certificación java 6 cap 2
Certificación java 6 cap 2Certificación java 6 cap 2
Certificación java 6 cap 2srBichoRaro
 
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 Ijjegonzalezf
 
polimorfismo
polimorfismopolimorfismo
polimorfismomiguel a
 

Similaire à 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
 

Plus 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
 

Plus 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