SlideShare una empresa de Scribd logo
1 de 33
Descargar para leer sin conexión
Prof. Renny Batista Programación IIIOctubre, 2015
Programación Orientada a Objetos - Parte II
Herencia
¿Qué es la Herencia?
Es la capacidad de crear clases que adquieran de manera automática los
miembros (atributos y métodos) de otras clases que ya existen, pudiendo al
mismo tiempo añadir atributos y métodos propios.
Clase Padre
Superclase
Clase base
Clase Hija
Subclase
Clase derivada
Herencia
Representación UML
Herencia
Ventajas de la Herencia
Reutilización de código: En aquellos casos dónde se necesite crear una clase que,
además de otros propios, deba incluir lo métodos definidos en otra, la herencia
evita tener que reescribir todos esos métodos en la nueva clase.
Mantenimiento de aplicaciones existentes: Usando la herencia, si tenemos una
clase con una determinada funcionalidad y tenemos la necesidad de ampliar dicha
funcionalidad, no necesitamos modificar la clase existente, sino que podemos
crear una clase que herede de la primera, adquiriendo toda su funcionalidad y
añadiendo sólo las nuevas.
Java proporciona gran cantidad de clases (bibliotecas) al programador, en el API
(Aplication Programming Interface) Java.
Herencia
Reglas de la herencia
En Java no esta permitida la herencia múltiple, es decir, una subclase no
puede heredar más de una clase.
Si es posible la herencia multinivel, es decir, “A” puede ser heredada por
“B” y “C” puede heredar “B”.
Una clase puede ser heredada por varias clases.
Por defecto, todas las clases derivan de java.lang.Object , a no ser que se
especifique otra clase padre.
Herencia
Reglas de la herencia
Clase A
Clase C
Clase B
Clase A
Clase CClase B
Clase A
Clase C
Clase B
Herencia
Constructores y Herencia
El constructor de una clase hija puede llamar al constructor de su clase padre
mediante el operador: super.
Como norma universal, cada vez que en Java se crea un objeto de una clase, antes
de ejecutarse el constructor de dicha clase se ejecutará primero el de su
superclase. public class Padre {
public Padre() {
System.out.println("Constructor de Padre");
}
}
public class Hija extends Padre{
public Hija() {
super();
System.out.println("Constructor de Hija");
}
}
Invoca al constructor de
la clase Padre
Clases finales
Si queremos evitar que una clase sea heredada por otra, deberá ser declarada
con el modificador final delante de superclase.
Si otra clase intenta heredar de una clase final se producirá un error de
compilación.
public final class ClaseA {
//Código de la clase
...
}
public class ClaseB extends ClaseA {
//Esta clase no compilará y va a generar un error
...
}
Sobrescritura de métodos
Cuando una clase hereda de otra, el comportamiento de los métodos que
hereda no siempre se ajusta a las necesidades de la nueva clase. En estos
casos, la subclase puede optar por volver a reescribir el método heredado, es
lo que se conoce como sobrescritura de un método.
Reglas a la hora de sobre escribir un método:
Cuando se sobrescribe un método de una subclase, éste debe tener el mismo
formato que el método de la superclase que sobrescribe.(igual nombre, iguales
parámetros e igual tipo de devolución).
El método sobrescrito puede tener un modificador menos restrictivo que el de la
superclase. Por ejemplo, el método de la superclase puede ser protected y la
versión sobrescrita en la subclase puede ser public, pero nunca uno mas
restrictivo.
Sobreescritura de métodos
public class ClaseA {
public void imprimirMesaje(String mensaje) {
System.out.println(mensaje);
}
}
public class ClaseB extends ClaseA{
public void imprimirMesaje(String mensaje) {
System.out.println(“El mensaje es: ”);
System.out.println(mensaje);
}
}
Método original
Método sobrescrito
Sobrescritra del método toString()
Aquí vamos a examinar el método toString(), porque es la manera de
obtener la representación en cadena de objetos de clases creadas por el
programador.
Todas las clases implementan el método toString( ) porque este método está
definido en la clase Object. Sin embargo, la implementación por omisión de
toString( ) raramente es suficiente.
Para la mayoría de las clases importantes creadas por el programador, será
deseable sobrescribir el método toString() y proporcionar nuestras propias
representaciones en forma de cadena.
Para implementar toString( ), basta simplemente con devolver un objeto
String que contenga la cadena legible que describa apropiadamente al objeto
de la clase.
Sobrescritra del método toString()
Ejemplo :
public class Caja {
double anchura;
double altura;
double profundidad;
public Caja(double w, double h, double d) {
anchura = w;
altura = h;
profundidad =d;
}
}
public class Ejemplo {
public static void main(String args[]){
Caja caja = new Caja(100, 50, 40);
System.out.println(caja);
}
}
paquete.Caja@139a55
Sobrescritra del método toString()
public class Caja {
double anchura;
double altura;
double profundidad;
public Caja(double w, double h, double d) {
anchura = w;
altura = h;
profundidad =d;
}
@Override
public String toString() {
return anchura+" "+altura+" "+profundidad;
}
} public class Ejemplo {
public static void main(String args[]){
Caja caja = new Caja(100, 50, 40);
System.out.println(caja);
}
}100.0 50.0 40.0
Clases abstractas
Es una clase en la que alguno de sus métodos está declarado pero no está
definido, es decir, se especifica su nombre, parámetros y tipo de devolución
pero no incluye código. A este tipo de métodos se les conoce como métodos
abstractos.
Un método se define como abstracto porque en ese momento no se conoce
como ha de ser su implementación; serán las subclases de la clase abstracta
las responsables de darle “cuerpo” mediante la sobrescritura del mismo.
Clases abstractas
Sintaxis para la creación de una clase abstracta:
public abstract class nombre_Clase {
public abstract tipo nombre_metodo(argumentos);
...
// otros métodos
}
Clases abstractas
Sobre la creación y utilización de clases abstractas hay que tener en cuenta
los siguientes aspectos:
Una clase abstracta puede tener métodos abstractos y no abstractos.
No es posible crear objetos de una clase abstracta, al haber métodos que no
estén definidos en la clase, no está permitido crear objetos de ella.
Las subclases de una clase abstracta están obligadas a sobrescribir todos los
métodos abstractos que heredan. En caso de que no interese sobrescribir
alguno de esos métodos, la subclase deberá ser declara también abstracta.
Una clase abstracta puede tener constructores.
Clases abstractas
Crear en Java las siguientes clases:
Clase Abstracta
Método abstracto
Implementa
el método
(sobrescribe)
Clases abstractas
//Figura.java
public abstract class Figura {
private String color;
public Figura(String color){
this.color=color;
}
public String obtenerColor(){
return color;
}
public abstract double area();
}
//Circulo.java
public class Circulo extends Figura{
private int radio;
public Circulo(int radio, String color){
super(color);
this.radio = radio;
}
public double area(){
return Math.PI*radio*radio;
}
public int obtenerRadio(){
return radio;
}
}
Implementa y sobrescribe el
método abstracto area()
(Polimorfismo)
Clases abstractas
//Triangulo.java
public class Triangulo extends Figura{
private int base;
private int altura;
public Triangulo(int base,int altura,String color){
super(color);
this.base = base;
this.altura = altura;
}
public double area(){
return (base*altura)/2;
}
public int obtenerBase(){
return base;
}
public int obtenerAltura(){
return altura;
}
}
Polimorfismo
Se define como la posibilidad de utilizar una misma expresión para invocar a
diferentes versiones de un mismo método. En Java, es posible asignar un
objeto de una clase a una variable de su superclase. Es aplicable, incluso,
cuando la superclase es una clase abstracta.
Ejemplo:
A partir de aquí, puede utilizarse está variable para invocar a aquellos métodos
del objeto que también estén definidos o declarados en la superclase, pero no a
aquellos que sólo existan en la clase a la que pertenece el objeto.
Figura objFig;
objFig = new Triangulo(5,7,”verde”);
objFig.obtenerColor(); //invoca al método de Triangulo
objFig.area(); //invoca al método área de Triangulo
objFig.obtenerBase(); //genera un error de compilación
objFig.obtenerAltura(); // genera un error de compilación
Polimorfismo
Java permite apuntar a un objeto con una variable definida como tipo de
clase padre.
En Java hay una clase que es la clase padre de todas las demás:
java.lang.Object. Un método de esta clase (por ejemplo: toString() que
convierte cualquier elemento de Java a cadena de caracteres), puede ser
utilizada por todos.
Figura objFig;
objFig = new Triangulo(5,7,”verde”);
Sólo se puede acceder a las partes del objeto que pertenecen a la clase Figura; las
partes específicas de la clase Triangulo no se ven. Este efecto se consigue porque,
para el compilador, objFig es sólo una variable de tipo Figura, no Triangulo.
Polimorfismo - Ejercicio
Una compañía paga a sus empleados en forma semanal. La compañía tiene 3 tipos de
empleados: empleados asalariados que reciben un sueldo semanal fijo, sin importar
el número de horas trabajadas; empleados por hora, que reciben un sueldo por hora
y pago por tiempo extra; empleados por comisión, que reciben un porcentaje de sus
ventas Para este período de pago, la compañía ha decidido compensar a los
empleados por comisión agregando un 10% a sus salarios.
La compañía desea implementar una aplicación en Java que realice sus cálculos de
nómina en forma polimórfica.
Utilizaremos la clase Empleado para representar a un empleado “genérico”. Las clases
que extienden a Empleado son EmpleadoAsalariado, EmpleadoPorComision y
EmpleadoPorHoras. Un método ingresos se aplica genéricamente a todos los
empleados. Pero el cálculo de los ingresos de cada empleado depende de su clase.
Polimorfismo - Ejercicio
Es un conjunto de métodos abstractos y de constantes públicos definidos en un
archivo .java. Una interfaz es similar a una clase abstracta llevada al límite, en la
que todos sus métodos son abstractos.
La finalidad de una interfaz es la de definir el formato que deben de tener
determinados métodos que han de implementar ciertas clases.
Interfaz
Clase A Clase B Clase C
Interfaces
public void click(){
.
..
}
public void click(){
.
..
}
public void click(){
.
..
}
public void click();
Se representa con el símbolo de un clasificador (rectángulo), precediendo el
nombre con el estereotipo <<interface>>, o con una línea con un círculo en el
extremo, etiquetado con el nombre de la interfaz.
Una interfaz puede participar en relaciones de generalización, asociación y
dependencia establecidas en el diseño de los diagramas de clases.
Interfaces
Clase A
-Atributos
+Métodos()
Clase B
-Atributos
+Métodos()
Clase A
-Atributos
+Métodos()
Clase B
-Atributos
+Métodos()
<<Interface>>
Nombre_Interfaz
Nombre_Interfaz
<<uses>><<uses>>
Una interfaz se define mediante la palabra interface, utilizando la siguiente
sintaxis:
Ejemplo:
Interfaces
public interface Nombre_interfaz {
Tipo metodo1(argumentos);
Tipo metodo2(argumentos);
...
}
public interface Operaciones {
public void rotar();
public String serializar();
}
<<Interface>>
Operaciones
+rotar(): void
+serializar(): String
Por lo general, una interfaz se utiliza cuando clases dispares (es decir, no
relacionadas) necesitan compartir métodos y constantes comunes. Esto
permite que los objetos de clases no relacionadas se procesen en forma
polimórfica; los objetos de clases que implementan la misma interfaz pueden
responder a las mismas llamadas a métodos.
Interfaces
Interfaces
class interfaces
Empleado
- apellido: String
- cedula: String
- nombre: String
+ Empleado(String, String, String)
+ getApellido(): String
+ getCedula(): String
+ getNombre(): String
+ setApellido(String): void
+ setCedula(String): void
+ setNombre(String): void
+ toString(): String
EmpleadoAsalariado
- salarioSemanal: double
+ EmpleadoAsalariado(String, String, String, double)
+ getSalarioSemanal(): double
+ obtenerMontoPago(): double
+ setSalarioSemanal(double): void
+ toString(): String
Factura
- cantidad: int
- codigo: String
- descripcion: String
- precio: double
+ Factura(String, String, int, double)
+ getCantidad(): int
+ getCodigo(): String
+ getDescripcion(): String
+ getPrecio(): double
+ obtenerMontoPago(): double
+ setCantidad(int): void
+ setCodigo(String): void
+ setDescripcion(String): void
+ setPrecio(double): void
+ toString(): String
«interface»
PorPagar
+ obtenerMontoPago(): double
Principal
+ main(String[]): void
Método abstracto
Implementación
(sobrescribe)
Implementación en
la clase que hereda
A la hora de crear una interfaz hay que tener en cuenta las siguientes
consideraciones:
Todos los métodos definidos en una interfaz son públicos y abstractos, aunque no
se indique explícitamente (abstract).
En una interfaz es posible definir constantes.
Ejemplo: public static final int valor_maximo = 100;
Una interfaz no es una clase. Las interfaces tan sólo pueden contener: métodos
abstractos y constantes. No pueden contener métodos con códigos,
constructores o variables, y por supuesto no es posible crear objetos de una
interfaz
Interfaces
Implementar una interfaz
En la definición de una clase, se utiliza la palabra implements para indicar
que interfaz se ha de implementar
Ejemplo:
public class Nombre_Clase implements Nombre_Interfaz {
//Código de la clase
...
}
public class Triangulo implements Operaciones {
public void rotar(){
//Código del método
...
}
public String serializar(){
//Código del método
...
}
}
Implementar una interfaz
A la hora de implementar una interfaz hay que tener en cuenta lo siguiente:
Cuando una clase implementa una interfaz, esta obligada a definir el código
(implementar) de todos los métodos existentes en la misma. De no ser así la clase
debe declararse como abstracta.
Una clase puede implementar más de una interfaz. En cuyo caso debe implementar
los métodos existentes en todas las interfaces.
public class NombreClase implements Interface1, Interface2,…{
}
Una clase puede heredar otra clase e implementar al mismo tiempo una o varias
interfaces
public class ClaseB extends ClaseA implements Interface1, Interface2{
}
Una interfaz puede heredar de otras interfaces.
public interface MiInterfaz extends Interface1, Interface2 {
}
Algunas Interfaces en java…
java.lang.Runnable. Contiene un método para ser implementado por aquellas
aplicaciones que van a funcionar en modo multitarea.
java.util.Enumeration. Proporciona métodos que son implementados por
objetos utilizados para recorrer colecciones.
java.awt.event.WindowListener. Proporciona métodos que deben ser
implementados por las clases que van a gestionar los eventos (clases
manejadoras) producidos en la ventana, dentro de una aplicación basada en
entorno gráfico.
java.sql.Connection. Interfaz implementada por los objetos utilizados para
manejar conexiones a bases de datos.
java.io.serializable. Esta interfaz requiere que el contenido de los objetos
tengan que ser trasferidos a algún dispositivo del almacenamiento, por
ejemplo un archivo de disco.
Bibliografía
Deitel, Paul J. Y Harvey M. Deitel. CÓMO PROGRAMAR EN JAVA. Séptima
edición PEARSON EDUCACIÓN, México 2008.
Martín, Antonio. PROGRAMADOR CERTIFICADO JAVA 2. CURSO PRÁCTICO.
Editorial RA-MA. 2da Edición.

Más contenido relacionado

La actualidad más candente

Modelos Prescriptivos del Desarrollo del Sistema de Información
Modelos Prescriptivos del Desarrollo del Sistema de InformaciónModelos Prescriptivos del Desarrollo del Sistema de Información
Modelos Prescriptivos del Desarrollo del Sistema de InformaciónIsaias Toledo
 
Eficiencia de algoritmos - Vanessa Ramirez
Eficiencia de algoritmos - Vanessa RamirezEficiencia de algoritmos - Vanessa Ramirez
Eficiencia de algoritmos - Vanessa RamirezVanessa Ramirez
 
Poo 3 herencia
Poo 3 herenciaPoo 3 herencia
Poo 3 herenciajlmanmons
 
Estructuras de datos en Introducción a la Programación
Estructuras de datos en Introducción a la ProgramaciónEstructuras de datos en Introducción a la Programación
Estructuras de datos en Introducción a la ProgramaciónFacultad de Ciencias y Sistemas
 
Paradigma de Programación Orientado a Objetos
Paradigma de Programación Orientado a ObjetosParadigma de Programación Orientado a Objetos
Paradigma de Programación Orientado a ObjetosAlberto Blumberg
 
Programacion orientada a objetos - unidad 3 herencia
Programacion orientada a objetos - unidad 3 herenciaProgramacion orientada a objetos - unidad 3 herencia
Programacion orientada a objetos - unidad 3 herenciaJosé Antonio Sandoval Acosta
 
Programación Modular
Programación ModularProgramación Modular
Programación Modularlisbeca
 
Herencia y Polimorfismo en Java
Herencia y Polimorfismo en JavaHerencia y Polimorfismo en Java
Herencia y Polimorfismo en JavaAme Linares Vivas
 
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
 
Programación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructoresProgramación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructoresAlvaro Enrique Ruano
 
Clases y objetos de java
Clases y objetos de javaClases y objetos de java
Clases y objetos de javainnovalabcun
 
Introduccion al paradigma de la programacion orientado a objetos original
Introduccion al paradigma de la programacion orientado a objetos originalIntroduccion al paradigma de la programacion orientado a objetos original
Introduccion al paradigma de la programacion orientado a objetos originalJose Angel Rodriguez
 
Fundamentos básicos de la programación orientada a objetos
Fundamentos básicos de la programación orientada a objetosFundamentos básicos de la programación orientada a objetos
Fundamentos básicos de la programación orientada a objetosALGLYS RAMIREZ
 
POO Unidad 3: Interfaz gráfica de usuario e hilos
POO Unidad 3: Interfaz gráfica de usuario e hilosPOO Unidad 3: Interfaz gráfica de usuario e hilos
POO Unidad 3: Interfaz gráfica de usuario e hilosFranklin Parrales Bravo
 

La actualidad más candente (20)

Modelos Prescriptivos del Desarrollo del Sistema de Información
Modelos Prescriptivos del Desarrollo del Sistema de InformaciónModelos Prescriptivos del Desarrollo del Sistema de Información
Modelos Prescriptivos del Desarrollo del Sistema de Información
 
Eficiencia de algoritmos - Vanessa Ramirez
Eficiencia de algoritmos - Vanessa RamirezEficiencia de algoritmos - Vanessa Ramirez
Eficiencia de algoritmos - Vanessa Ramirez
 
Poo 3 herencia
Poo 3 herenciaPoo 3 herencia
Poo 3 herencia
 
Estructuras de datos en Introducción a la Programación
Estructuras de datos en Introducción a la ProgramaciónEstructuras de datos en Introducción a la Programación
Estructuras de datos en Introducción a la Programación
 
Paradigma de Programación Orientado a Objetos
Paradigma de Programación Orientado a ObjetosParadigma de Programación Orientado a Objetos
Paradigma de Programación Orientado a Objetos
 
Programacion orientada a objetos - unidad 3 herencia
Programacion orientada a objetos - unidad 3 herenciaProgramacion orientada a objetos - unidad 3 herencia
Programacion orientada a objetos - unidad 3 herencia
 
Programación Modular
Programación ModularProgramación Modular
Programación Modular
 
Uml clase 04_uml_clases
Uml clase 04_uml_clasesUml clase 04_uml_clases
Uml clase 04_uml_clases
 
10 Polimorfismo
10   Polimorfismo10   Polimorfismo
10 Polimorfismo
 
Herencia y polimorfismo
Herencia y polimorfismoHerencia y polimorfismo
Herencia y polimorfismo
 
Herencia poo
Herencia pooHerencia poo
Herencia poo
 
Herencia y Polimorfismo en Java
Herencia y Polimorfismo en JavaHerencia y Polimorfismo en Java
Herencia y Polimorfismo en Java
 
Polimorfismo y herencia
Polimorfismo y herenciaPolimorfismo y herencia
Polimorfismo y herencia
 
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
 
Programación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructoresProgramación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructores
 
Clases y objetos de java
Clases y objetos de javaClases y objetos de java
Clases y objetos de java
 
Introduccion al paradigma de la programacion orientado a objetos original
Introduccion al paradigma de la programacion orientado a objetos originalIntroduccion al paradigma de la programacion orientado a objetos original
Introduccion al paradigma de la programacion orientado a objetos original
 
Fundamentos básicos de la programación orientada a objetos
Fundamentos básicos de la programación orientada a objetosFundamentos básicos de la programación orientada a objetos
Fundamentos básicos de la programación orientada a objetos
 
Poo en java herencia
Poo en java   herenciaPoo en java   herencia
Poo en java herencia
 
POO Unidad 3: Interfaz gráfica de usuario e hilos
POO Unidad 3: Interfaz gráfica de usuario e hilosPOO Unidad 3: Interfaz gráfica de usuario e hilos
POO Unidad 3: Interfaz gráfica de usuario e hilos
 

Destacado (20)

Java - Sintaxis Básica 2015
Java - Sintaxis Básica 2015Java - Sintaxis Básica 2015
Java - Sintaxis Básica 2015
 
Java colecciones
Java coleccionesJava colecciones
Java colecciones
 
Fundamentos de Sistema- >Tema II
Fundamentos de Sistema- >Tema IIFundamentos de Sistema- >Tema II
Fundamentos de Sistema- >Tema II
 
05 java excepciones
05 java excepciones05 java excepciones
05 java excepciones
 
Diseño adaptativo y responsive
Diseño adaptativo y responsiveDiseño adaptativo y responsive
Diseño adaptativo y responsive
 
Taller MVC
Taller MVCTaller MVC
Taller MVC
 
Presentación Spring Boot en Autentia
Presentación Spring Boot en AutentiaPresentación Spring Boot en Autentia
Presentación Spring Boot en Autentia
 
1 2 2 Relaciones Entre Clases
1 2 2 Relaciones Entre Clases1 2 2 Relaciones Entre Clases
1 2 2 Relaciones Entre Clases
 
SERVLET BASICS
SERVLET BASICSSERVLET BASICS
SERVLET BASICS
 
Java oo tema09_excepciones
Java oo tema09_excepcionesJava oo tema09_excepciones
Java oo tema09_excepciones
 
JQuery-Tema 1
JQuery-Tema 1JQuery-Tema 1
JQuery-Tema 1
 
Java Fundamentos 01 - Introducción
Java Fundamentos 01 - IntroducciónJava Fundamentos 01 - Introducción
Java Fundamentos 01 - Introducción
 
Manual de Open Shift
Manual de Open ShiftManual de Open Shift
Manual de Open Shift
 
Sistemas Operativos
Sistemas OperativosSistemas Operativos
Sistemas Operativos
 
Servlet
ServletServlet
Servlet
 
Css - Tema 2
Css -  Tema 2Css -  Tema 2
Css - Tema 2
 
Html - Tema 2: Enlaces, Imágenes y Listas
Html - Tema 2: Enlaces, Imágenes y ListasHtml - Tema 2: Enlaces, Imágenes y Listas
Html - Tema 2: Enlaces, Imágenes y Listas
 
Curso Java Inicial 5 Relaciones Entre Objetos
Curso Java Inicial   5 Relaciones Entre ObjetosCurso Java Inicial   5 Relaciones Entre Objetos
Curso Java Inicial 5 Relaciones Entre Objetos
 
PROGRAMACIÓN ORIENTADA A OBJETOS
PROGRAMACIÓN ORIENTADA A OBJETOSPROGRAMACIÓN ORIENTADA A OBJETOS
PROGRAMACIÓN ORIENTADA A OBJETOS
 
Html Tema 4 - Formularios
Html Tema 4 - FormulariosHtml Tema 4 - Formularios
Html Tema 4 - Formularios
 

Similar a POO Herencia Clases Abstractas Polimorfismo

Clases abstractas java metodos abstract class api ejemplo ejercicio
Clases abstractas java metodos abstract class api ejemplo ejercicioClases abstractas java metodos abstract class api ejemplo ejercicio
Clases abstractas java metodos abstract class api ejemplo ejercicioJose Luis Moreno Arcos
 
Programación 3: clases derivadas y polimorfismo
Programación 3: clases derivadas y polimorfismoProgramación 3: clases derivadas y polimorfismo
Programación 3: clases derivadas y polimorfismoAngel Vázquez Patiño
 
Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02
Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02
Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02Kositha Jimhiz G
 
Clases abstractas e interfaces (AlexandraPerez)
Clases abstractas e interfaces (AlexandraPerez)Clases abstractas e interfaces (AlexandraPerez)
Clases abstractas e interfaces (AlexandraPerez)Alexandra Pérez
 
Sesion 07 nivel_acceso_miembros_clases
Sesion 07 nivel_acceso_miembros_clasesSesion 07 nivel_acceso_miembros_clases
Sesion 07 nivel_acceso_miembros_clasesecodereck
 
Presentacion Java
Presentacion JavaPresentacion Java
Presentacion Javamaeusogo
 
Net1 oop vbnet
Net1 oop vbnetNet1 oop vbnet
Net1 oop vbnetjhordy2000
 
U8.- Programacion Orientada a objetos II (2).pdf
U8.- Programacion Orientada a objetos II (2).pdfU8.- Programacion Orientada a objetos II (2).pdf
U8.- Programacion Orientada a objetos II (2).pdfJCarlosCrespo
 
Clases abstractas interfaces
Clases abstractas interfacesClases abstractas interfaces
Clases abstractas interfacesAlexitoPeralta
 
Constructor Y Destructor
Constructor Y DestructorConstructor Y Destructor
Constructor Y DestructorTecnologico
 
secme-23192.pdf
secme-23192.pdfsecme-23192.pdf
secme-23192.pdf202100941c
 

Similar a POO Herencia Clases Abstractas Polimorfismo (20)

Clases abstractas java metodos abstract class api ejemplo ejercicio
Clases abstractas java metodos abstract class api ejemplo ejercicioClases abstractas java metodos abstract class api ejemplo ejercicio
Clases abstractas java metodos abstract class api ejemplo ejercicio
 
Laboratorio clase abstract
Laboratorio clase abstractLaboratorio clase abstract
Laboratorio clase abstract
 
Programación 3: clases derivadas y polimorfismo
Programación 3: clases derivadas y polimorfismoProgramación 3: clases derivadas y polimorfismo
Programación 3: clases derivadas y polimorfismo
 
Semana 3 Herencia en Java
Semana 3   Herencia en JavaSemana 3   Herencia en Java
Semana 3 Herencia en Java
 
Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02
Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02
Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02
 
Clases abstractas e interfaces (AlexandraPerez)
Clases abstractas e interfaces (AlexandraPerez)Clases abstractas e interfaces (AlexandraPerez)
Clases abstractas e interfaces (AlexandraPerez)
 
Unidad II_1.pptx
Unidad II_1.pptxUnidad II_1.pptx
Unidad II_1.pptx
 
JAVA 00 - TEMA 05 - HERENCIA
JAVA 00 - TEMA 05 - HERENCIAJAVA 00 - TEMA 05 - HERENCIA
JAVA 00 - TEMA 05 - HERENCIA
 
Conceptos basicos POO
Conceptos basicos POOConceptos basicos POO
Conceptos basicos POO
 
Sesion 07 nivel_acceso_miembros_clases
Sesion 07 nivel_acceso_miembros_clasesSesion 07 nivel_acceso_miembros_clases
Sesion 07 nivel_acceso_miembros_clases
 
Presentacion Java
Presentacion JavaPresentacion Java
Presentacion Java
 
Java
JavaJava
Java
 
Net1 oop vbnet
Net1 oop vbnetNet1 oop vbnet
Net1 oop vbnet
 
U8.- Programacion Orientada a objetos II (2).pdf
U8.- Programacion Orientada a objetos II (2).pdfU8.- Programacion Orientada a objetos II (2).pdf
U8.- Programacion Orientada a objetos II (2).pdf
 
Clases abstractas interfaces
Clases abstractas interfacesClases abstractas interfaces
Clases abstractas interfaces
 
Clase viii
Clase viiiClase viii
Clase viii
 
Constructor Y Destructor
Constructor Y DestructorConstructor Y Destructor
Constructor Y Destructor
 
secme-23192.pdf
secme-23192.pdfsecme-23192.pdf
secme-23192.pdf
 
Unidad o informatica
Unidad o informaticaUnidad o informatica
Unidad o informatica
 
Tema5
Tema5Tema5
Tema5
 

Más de Renny Batista

Modelos de desarrollo del software
Modelos de desarrollo del softwareModelos de desarrollo del software
Modelos de desarrollo del softwareRenny Batista
 
Diagramas de Flujos de Datos
Diagramas de Flujos de DatosDiagramas de Flujos de Datos
Diagramas de Flujos de DatosRenny Batista
 
Introduccion al java script
Introduccion al java scriptIntroduccion al java script
Introduccion al java scriptRenny Batista
 
Introducción a la programación orientada objetos
Introducción a la programación orientada objetosIntroducción a la programación orientada objetos
Introducción a la programación orientada objetosRenny Batista
 

Más de Renny Batista (7)

Css - Tema 1
Css - Tema 1Css - Tema 1
Css - Tema 1
 
Html - Tema 3
Html - Tema 3Html - Tema 3
Html - Tema 3
 
Html - Tema 1
Html - Tema 1Html - Tema 1
Html - Tema 1
 
Modelos de desarrollo del software
Modelos de desarrollo del softwareModelos de desarrollo del software
Modelos de desarrollo del software
 
Diagramas de Flujos de Datos
Diagramas de Flujos de DatosDiagramas de Flujos de Datos
Diagramas de Flujos de Datos
 
Introduccion al java script
Introduccion al java scriptIntroduccion al java script
Introduccion al java script
 
Introducción a la programación orientada objetos
Introducción a la programación orientada objetosIntroducción a la programación orientada objetos
Introducción a la programación orientada objetos
 

Último

PPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdfPPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdfEDILIAGAMBOA
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleJonathanCovena1
 
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdfEstrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdfAlfredoRamirez953210
 
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxOscarEduardoSanchezC
 
Plan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPEPlan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPELaura Chacón
 
Día de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialDía de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialpatriciaines1993
 
La evolucion de la especie humana-primero de secundaria
La evolucion de la especie humana-primero de secundariaLa evolucion de la especie humana-primero de secundaria
La evolucion de la especie humana-primero de secundariamarco carlos cuyo
 
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptxc3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptxMartín Ramírez
 
CIENCIAS NATURALES 4 TO ambientes .docx
CIENCIAS NATURALES 4 TO  ambientes .docxCIENCIAS NATURALES 4 TO  ambientes .docx
CIENCIAS NATURALES 4 TO ambientes .docxAgustinaNuez21
 
Mapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdfMapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdfvictorbeltuce
 
periodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicasperiodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicas123yudy
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFAROJosé Luis Palma
 
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOTUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOweislaco
 
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDUFICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDUgustavorojas179704
 
Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024IES Vicent Andres Estelles
 
Tarea 5-Selección de herramientas digitales-Carol Eraso.pdf
Tarea 5-Selección de herramientas digitales-Carol Eraso.pdfTarea 5-Selección de herramientas digitales-Carol Eraso.pdf
Tarea 5-Selección de herramientas digitales-Carol Eraso.pdfCarol Andrea Eraso Guerrero
 
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxdanalikcruz2000
 
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...JAVIER SOLIS NOYOLA
 

Último (20)

PPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdfPPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdf
 
DIA INTERNACIONAL DAS FLORESTAS .
DIA INTERNACIONAL DAS FLORESTAS         .DIA INTERNACIONAL DAS FLORESTAS         .
DIA INTERNACIONAL DAS FLORESTAS .
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo Sostenible
 
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdfEstrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
 
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
 
Plan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPEPlan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPE
 
Día de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialDía de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundial
 
La evolucion de la especie humana-primero de secundaria
La evolucion de la especie humana-primero de secundariaLa evolucion de la especie humana-primero de secundaria
La evolucion de la especie humana-primero de secundaria
 
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptxc3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
 
CIENCIAS NATURALES 4 TO ambientes .docx
CIENCIAS NATURALES 4 TO  ambientes .docxCIENCIAS NATURALES 4 TO  ambientes .docx
CIENCIAS NATURALES 4 TO ambientes .docx
 
Mapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdfMapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdf
 
periodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicasperiodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicas
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
 
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOTUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
 
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDUFICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
 
Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024
 
Tarea 5-Selección de herramientas digitales-Carol Eraso.pdf
Tarea 5-Selección de herramientas digitales-Carol Eraso.pdfTarea 5-Selección de herramientas digitales-Carol Eraso.pdf
Tarea 5-Selección de herramientas digitales-Carol Eraso.pdf
 
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
 
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
 
PPTX: La luz brilla en la oscuridad.pptx
PPTX: La luz brilla en la oscuridad.pptxPPTX: La luz brilla en la oscuridad.pptx
PPTX: La luz brilla en la oscuridad.pptx
 

POO Herencia Clases Abstractas Polimorfismo

  • 1. Prof. Renny Batista Programación IIIOctubre, 2015 Programación Orientada a Objetos - Parte II
  • 2. Herencia ¿Qué es la Herencia? Es la capacidad de crear clases que adquieran de manera automática los miembros (atributos y métodos) de otras clases que ya existen, pudiendo al mismo tiempo añadir atributos y métodos propios. Clase Padre Superclase Clase base Clase Hija Subclase Clase derivada
  • 4. Herencia Ventajas de la Herencia Reutilización de código: En aquellos casos dónde se necesite crear una clase que, además de otros propios, deba incluir lo métodos definidos en otra, la herencia evita tener que reescribir todos esos métodos en la nueva clase. Mantenimiento de aplicaciones existentes: Usando la herencia, si tenemos una clase con una determinada funcionalidad y tenemos la necesidad de ampliar dicha funcionalidad, no necesitamos modificar la clase existente, sino que podemos crear una clase que herede de la primera, adquiriendo toda su funcionalidad y añadiendo sólo las nuevas. Java proporciona gran cantidad de clases (bibliotecas) al programador, en el API (Aplication Programming Interface) Java.
  • 5. Herencia Reglas de la herencia En Java no esta permitida la herencia múltiple, es decir, una subclase no puede heredar más de una clase. Si es posible la herencia multinivel, es decir, “A” puede ser heredada por “B” y “C” puede heredar “B”. Una clase puede ser heredada por varias clases. Por defecto, todas las clases derivan de java.lang.Object , a no ser que se especifique otra clase padre.
  • 6. Herencia Reglas de la herencia Clase A Clase C Clase B Clase A Clase CClase B Clase A Clase C Clase B
  • 7. Herencia Constructores y Herencia El constructor de una clase hija puede llamar al constructor de su clase padre mediante el operador: super. Como norma universal, cada vez que en Java se crea un objeto de una clase, antes de ejecutarse el constructor de dicha clase se ejecutará primero el de su superclase. public class Padre { public Padre() { System.out.println("Constructor de Padre"); } } public class Hija extends Padre{ public Hija() { super(); System.out.println("Constructor de Hija"); } } Invoca al constructor de la clase Padre
  • 8. Clases finales Si queremos evitar que una clase sea heredada por otra, deberá ser declarada con el modificador final delante de superclase. Si otra clase intenta heredar de una clase final se producirá un error de compilación. public final class ClaseA { //Código de la clase ... } public class ClaseB extends ClaseA { //Esta clase no compilará y va a generar un error ... }
  • 9. Sobrescritura de métodos Cuando una clase hereda de otra, el comportamiento de los métodos que hereda no siempre se ajusta a las necesidades de la nueva clase. En estos casos, la subclase puede optar por volver a reescribir el método heredado, es lo que se conoce como sobrescritura de un método. Reglas a la hora de sobre escribir un método: Cuando se sobrescribe un método de una subclase, éste debe tener el mismo formato que el método de la superclase que sobrescribe.(igual nombre, iguales parámetros e igual tipo de devolución). El método sobrescrito puede tener un modificador menos restrictivo que el de la superclase. Por ejemplo, el método de la superclase puede ser protected y la versión sobrescrita en la subclase puede ser public, pero nunca uno mas restrictivo.
  • 10. Sobreescritura de métodos public class ClaseA { public void imprimirMesaje(String mensaje) { System.out.println(mensaje); } } public class ClaseB extends ClaseA{ public void imprimirMesaje(String mensaje) { System.out.println(“El mensaje es: ”); System.out.println(mensaje); } } Método original Método sobrescrito
  • 11. Sobrescritra del método toString() Aquí vamos a examinar el método toString(), porque es la manera de obtener la representación en cadena de objetos de clases creadas por el programador. Todas las clases implementan el método toString( ) porque este método está definido en la clase Object. Sin embargo, la implementación por omisión de toString( ) raramente es suficiente. Para la mayoría de las clases importantes creadas por el programador, será deseable sobrescribir el método toString() y proporcionar nuestras propias representaciones en forma de cadena. Para implementar toString( ), basta simplemente con devolver un objeto String que contenga la cadena legible que describa apropiadamente al objeto de la clase.
  • 12. Sobrescritra del método toString() Ejemplo : public class Caja { double anchura; double altura; double profundidad; public Caja(double w, double h, double d) { anchura = w; altura = h; profundidad =d; } } public class Ejemplo { public static void main(String args[]){ Caja caja = new Caja(100, 50, 40); System.out.println(caja); } } paquete.Caja@139a55
  • 13. Sobrescritra del método toString() public class Caja { double anchura; double altura; double profundidad; public Caja(double w, double h, double d) { anchura = w; altura = h; profundidad =d; } @Override public String toString() { return anchura+" "+altura+" "+profundidad; } } public class Ejemplo { public static void main(String args[]){ Caja caja = new Caja(100, 50, 40); System.out.println(caja); } }100.0 50.0 40.0
  • 14. Clases abstractas Es una clase en la que alguno de sus métodos está declarado pero no está definido, es decir, se especifica su nombre, parámetros y tipo de devolución pero no incluye código. A este tipo de métodos se les conoce como métodos abstractos. Un método se define como abstracto porque en ese momento no se conoce como ha de ser su implementación; serán las subclases de la clase abstracta las responsables de darle “cuerpo” mediante la sobrescritura del mismo.
  • 15. Clases abstractas Sintaxis para la creación de una clase abstracta: public abstract class nombre_Clase { public abstract tipo nombre_metodo(argumentos); ... // otros métodos }
  • 16. Clases abstractas Sobre la creación y utilización de clases abstractas hay que tener en cuenta los siguientes aspectos: Una clase abstracta puede tener métodos abstractos y no abstractos. No es posible crear objetos de una clase abstracta, al haber métodos que no estén definidos en la clase, no está permitido crear objetos de ella. Las subclases de una clase abstracta están obligadas a sobrescribir todos los métodos abstractos que heredan. En caso de que no interese sobrescribir alguno de esos métodos, la subclase deberá ser declara también abstracta. Una clase abstracta puede tener constructores.
  • 17. Clases abstractas Crear en Java las siguientes clases: Clase Abstracta Método abstracto Implementa el método (sobrescribe)
  • 18. Clases abstractas //Figura.java public abstract class Figura { private String color; public Figura(String color){ this.color=color; } public String obtenerColor(){ return color; } public abstract double area(); } //Circulo.java public class Circulo extends Figura{ private int radio; public Circulo(int radio, String color){ super(color); this.radio = radio; } public double area(){ return Math.PI*radio*radio; } public int obtenerRadio(){ return radio; } } Implementa y sobrescribe el método abstracto area() (Polimorfismo)
  • 19. Clases abstractas //Triangulo.java public class Triangulo extends Figura{ private int base; private int altura; public Triangulo(int base,int altura,String color){ super(color); this.base = base; this.altura = altura; } public double area(){ return (base*altura)/2; } public int obtenerBase(){ return base; } public int obtenerAltura(){ return altura; } }
  • 20. Polimorfismo Se define como la posibilidad de utilizar una misma expresión para invocar a diferentes versiones de un mismo método. En Java, es posible asignar un objeto de una clase a una variable de su superclase. Es aplicable, incluso, cuando la superclase es una clase abstracta. Ejemplo: A partir de aquí, puede utilizarse está variable para invocar a aquellos métodos del objeto que también estén definidos o declarados en la superclase, pero no a aquellos que sólo existan en la clase a la que pertenece el objeto. Figura objFig; objFig = new Triangulo(5,7,”verde”); objFig.obtenerColor(); //invoca al método de Triangulo objFig.area(); //invoca al método área de Triangulo objFig.obtenerBase(); //genera un error de compilación objFig.obtenerAltura(); // genera un error de compilación
  • 21. Polimorfismo Java permite apuntar a un objeto con una variable definida como tipo de clase padre. En Java hay una clase que es la clase padre de todas las demás: java.lang.Object. Un método de esta clase (por ejemplo: toString() que convierte cualquier elemento de Java a cadena de caracteres), puede ser utilizada por todos. Figura objFig; objFig = new Triangulo(5,7,”verde”); Sólo se puede acceder a las partes del objeto que pertenecen a la clase Figura; las partes específicas de la clase Triangulo no se ven. Este efecto se consigue porque, para el compilador, objFig es sólo una variable de tipo Figura, no Triangulo.
  • 22. Polimorfismo - Ejercicio Una compañía paga a sus empleados en forma semanal. La compañía tiene 3 tipos de empleados: empleados asalariados que reciben un sueldo semanal fijo, sin importar el número de horas trabajadas; empleados por hora, que reciben un sueldo por hora y pago por tiempo extra; empleados por comisión, que reciben un porcentaje de sus ventas Para este período de pago, la compañía ha decidido compensar a los empleados por comisión agregando un 10% a sus salarios. La compañía desea implementar una aplicación en Java que realice sus cálculos de nómina en forma polimórfica. Utilizaremos la clase Empleado para representar a un empleado “genérico”. Las clases que extienden a Empleado son EmpleadoAsalariado, EmpleadoPorComision y EmpleadoPorHoras. Un método ingresos se aplica genéricamente a todos los empleados. Pero el cálculo de los ingresos de cada empleado depende de su clase.
  • 24. Es un conjunto de métodos abstractos y de constantes públicos definidos en un archivo .java. Una interfaz es similar a una clase abstracta llevada al límite, en la que todos sus métodos son abstractos. La finalidad de una interfaz es la de definir el formato que deben de tener determinados métodos que han de implementar ciertas clases. Interfaz Clase A Clase B Clase C Interfaces public void click(){ . .. } public void click(){ . .. } public void click(){ . .. } public void click();
  • 25. Se representa con el símbolo de un clasificador (rectángulo), precediendo el nombre con el estereotipo <<interface>>, o con una línea con un círculo en el extremo, etiquetado con el nombre de la interfaz. Una interfaz puede participar en relaciones de generalización, asociación y dependencia establecidas en el diseño de los diagramas de clases. Interfaces Clase A -Atributos +Métodos() Clase B -Atributos +Métodos() Clase A -Atributos +Métodos() Clase B -Atributos +Métodos() <<Interface>> Nombre_Interfaz Nombre_Interfaz <<uses>><<uses>>
  • 26. Una interfaz se define mediante la palabra interface, utilizando la siguiente sintaxis: Ejemplo: Interfaces public interface Nombre_interfaz { Tipo metodo1(argumentos); Tipo metodo2(argumentos); ... } public interface Operaciones { public void rotar(); public String serializar(); } <<Interface>> Operaciones +rotar(): void +serializar(): String
  • 27. Por lo general, una interfaz se utiliza cuando clases dispares (es decir, no relacionadas) necesitan compartir métodos y constantes comunes. Esto permite que los objetos de clases no relacionadas se procesen en forma polimórfica; los objetos de clases que implementan la misma interfaz pueden responder a las mismas llamadas a métodos. Interfaces
  • 28. Interfaces class interfaces Empleado - apellido: String - cedula: String - nombre: String + Empleado(String, String, String) + getApellido(): String + getCedula(): String + getNombre(): String + setApellido(String): void + setCedula(String): void + setNombre(String): void + toString(): String EmpleadoAsalariado - salarioSemanal: double + EmpleadoAsalariado(String, String, String, double) + getSalarioSemanal(): double + obtenerMontoPago(): double + setSalarioSemanal(double): void + toString(): String Factura - cantidad: int - codigo: String - descripcion: String - precio: double + Factura(String, String, int, double) + getCantidad(): int + getCodigo(): String + getDescripcion(): String + getPrecio(): double + obtenerMontoPago(): double + setCantidad(int): void + setCodigo(String): void + setDescripcion(String): void + setPrecio(double): void + toString(): String «interface» PorPagar + obtenerMontoPago(): double Principal + main(String[]): void Método abstracto Implementación (sobrescribe) Implementación en la clase que hereda
  • 29. A la hora de crear una interfaz hay que tener en cuenta las siguientes consideraciones: Todos los métodos definidos en una interfaz son públicos y abstractos, aunque no se indique explícitamente (abstract). En una interfaz es posible definir constantes. Ejemplo: public static final int valor_maximo = 100; Una interfaz no es una clase. Las interfaces tan sólo pueden contener: métodos abstractos y constantes. No pueden contener métodos con códigos, constructores o variables, y por supuesto no es posible crear objetos de una interfaz Interfaces
  • 30. Implementar una interfaz En la definición de una clase, se utiliza la palabra implements para indicar que interfaz se ha de implementar Ejemplo: public class Nombre_Clase implements Nombre_Interfaz { //Código de la clase ... } public class Triangulo implements Operaciones { public void rotar(){ //Código del método ... } public String serializar(){ //Código del método ... } }
  • 31. Implementar una interfaz A la hora de implementar una interfaz hay que tener en cuenta lo siguiente: Cuando una clase implementa una interfaz, esta obligada a definir el código (implementar) de todos los métodos existentes en la misma. De no ser así la clase debe declararse como abstracta. Una clase puede implementar más de una interfaz. En cuyo caso debe implementar los métodos existentes en todas las interfaces. public class NombreClase implements Interface1, Interface2,…{ } Una clase puede heredar otra clase e implementar al mismo tiempo una o varias interfaces public class ClaseB extends ClaseA implements Interface1, Interface2{ } Una interfaz puede heredar de otras interfaces. public interface MiInterfaz extends Interface1, Interface2 { }
  • 32. Algunas Interfaces en java… java.lang.Runnable. Contiene un método para ser implementado por aquellas aplicaciones que van a funcionar en modo multitarea. java.util.Enumeration. Proporciona métodos que son implementados por objetos utilizados para recorrer colecciones. java.awt.event.WindowListener. Proporciona métodos que deben ser implementados por las clases que van a gestionar los eventos (clases manejadoras) producidos en la ventana, dentro de una aplicación basada en entorno gráfico. java.sql.Connection. Interfaz implementada por los objetos utilizados para manejar conexiones a bases de datos. java.io.serializable. Esta interfaz requiere que el contenido de los objetos tengan que ser trasferidos a algún dispositivo del almacenamiento, por ejemplo un archivo de disco.
  • 33. Bibliografía Deitel, Paul J. Y Harvey M. Deitel. CÓMO PROGRAMAR EN JAVA. Séptima edición PEARSON EDUCACIÓN, México 2008. Martín, Antonio. PROGRAMADOR CERTIFICADO JAVA 2. CURSO PRÁCTICO. Editorial RA-MA. 2da Edición.