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

PostgreSQL
PostgreSQLPostgreSQL
PostgreSQLbrobelo
 
encapsulamiento
encapsulamientoencapsulamiento
encapsulamientozeta2015
 
ASP.NET MVC Presentation
ASP.NET MVC PresentationASP.NET MVC Presentation
ASP.NET MVC PresentationVolkan Uzun
 
Polimorfismo ppt
Polimorfismo  pptPolimorfismo  ppt
Polimorfismo pptivanvillar7
 
Arquitectura y diseño de aplicaciones Java EE
Arquitectura y diseño de aplicaciones Java EEArquitectura y diseño de aplicaciones Java EE
Arquitectura y diseño de aplicaciones Java EECarlos Gavidia-Calderon
 
ASP.NET MVC.
ASP.NET MVC.ASP.NET MVC.
ASP.NET MVC.Ni
 
Java 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas InterfacesJava 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas InterfacesRegis Magalhães
 
Introducción a HTML5 y CSS3
Introducción a HTML5 y CSS3Introducción a HTML5 y CSS3
Introducción a HTML5 y CSS3Paradigma Digital
 
Aplicación de escritorio con java
Aplicación de escritorio con javaAplicación de escritorio con java
Aplicación de escritorio con javaEmerson Garay
 
VB.NET:An introduction to Namespaces in .NET framework
VB.NET:An introduction to  Namespaces in .NET frameworkVB.NET:An introduction to  Namespaces in .NET framework
VB.NET:An introduction to Namespaces in .NET frameworkRicha Handa
 
3. Utilización de los objetos predefinidos del lenguaje
3. Utilización de los objetos predefinidos del lenguaje3. Utilización de los objetos predefinidos del lenguaje
3. Utilización de los objetos predefinidos del lenguajeLaura Folgado Galache
 
Arquitectura N-Capas y ADo.NET
Arquitectura N-Capas y ADo.NETArquitectura N-Capas y ADo.NET
Arquitectura N-Capas y ADo.NETRoberto Taborda
 
polimorfismo
polimorfismopolimorfismo
polimorfismomiguel a
 
05 Creating Stored Procedures
05 Creating Stored Procedures05 Creating Stored Procedures
05 Creating Stored Proceduresrehaniltifat
 

La actualidad más candente (20)

PostgreSQL
PostgreSQLPostgreSQL
PostgreSQL
 
encapsulamiento
encapsulamientoencapsulamiento
encapsulamiento
 
Spring Data JPA
Spring Data JPASpring Data JPA
Spring Data JPA
 
ASP.NET MVC Presentation
ASP.NET MVC PresentationASP.NET MVC Presentation
ASP.NET MVC Presentation
 
Polimorfismo ppt
Polimorfismo  pptPolimorfismo  ppt
Polimorfismo ppt
 
Arquitectura y diseño de aplicaciones Java EE
Arquitectura y diseño de aplicaciones Java EEArquitectura y diseño de aplicaciones Java EE
Arquitectura y diseño de aplicaciones Java EE
 
Java interfaces
Java interfacesJava interfaces
Java interfaces
 
Collections and generics
Collections and genericsCollections and generics
Collections and generics
 
16 Curso de POO en java - arreglos unidimensionales
16 Curso de POO en java - arreglos unidimensionales16 Curso de POO en java - arreglos unidimensionales
16 Curso de POO en java - arreglos unidimensionales
 
ASP.NET MVC.
ASP.NET MVC.ASP.NET MVC.
ASP.NET MVC.
 
Java 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas InterfacesJava 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas Interfaces
 
Introducción a HTML5 y CSS3
Introducción a HTML5 y CSS3Introducción a HTML5 y CSS3
Introducción a HTML5 y CSS3
 
Aplicación de escritorio con java
Aplicación de escritorio con javaAplicación de escritorio con java
Aplicación de escritorio con java
 
Greenfoot 5
Greenfoot 5Greenfoot 5
Greenfoot 5
 
VB.NET:An introduction to Namespaces in .NET framework
VB.NET:An introduction to  Namespaces in .NET frameworkVB.NET:An introduction to  Namespaces in .NET framework
VB.NET:An introduction to Namespaces in .NET framework
 
3. Utilización de los objetos predefinidos del lenguaje
3. Utilización de los objetos predefinidos del lenguaje3. Utilización de los objetos predefinidos del lenguaje
3. Utilización de los objetos predefinidos del lenguaje
 
Arquitectura N-Capas y ADo.NET
Arquitectura N-Capas y ADo.NETArquitectura N-Capas y ADo.NET
Arquitectura N-Capas y ADo.NET
 
patron composite
patron compositepatron composite
patron composite
 
polimorfismo
polimorfismopolimorfismo
polimorfismo
 
05 Creating Stored Procedures
05 Creating Stored Procedures05 Creating Stored Procedures
05 Creating Stored Procedures
 

Destacado

Java - Sintaxis Básica 2015
Java - Sintaxis Básica 2015Java - Sintaxis Básica 2015
Java - Sintaxis Básica 2015Renny Batista
 
Programación Orientada a Objetos en Java - Parte I 2015
Programación Orientada a Objetos en Java - Parte I 2015Programación Orientada a Objetos en Java - Parte I 2015
Programación Orientada a Objetos en Java - Parte I 2015Renny Batista
 
Fundamentos de Sistema- >Tema II
Fundamentos de Sistema- >Tema IIFundamentos de Sistema- >Tema II
Fundamentos de Sistema- >Tema IIRenny Batista
 
Diseño adaptativo y responsive
Diseño adaptativo y responsiveDiseño adaptativo y responsive
Diseño adaptativo y responsiveRenny Batista
 
Presentación Spring Boot en Autentia
Presentación Spring Boot en AutentiaPresentación Spring Boot en Autentia
Presentación Spring Boot en AutentiaJorge Pacheco Mengual
 
1 2 2 Relaciones Entre Clases
1 2 2 Relaciones Entre Clases1 2 2 Relaciones Entre Clases
1 2 2 Relaciones Entre ClasesUVM
 
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 ListasRenny Batista
 
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 ObjetosEmilio Aviles Avila
 

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
 
Programación Orientada a Objetos en Java - Parte I 2015
Programación Orientada a Objetos en Java - Parte I 2015Programación Orientada a Objetos en Java - Parte I 2015
Programación Orientada a Objetos en Java - Parte I 2015
 
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
 

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

Html Tema 4 - Formularios
Html Tema 4 - FormulariosHtml Tema 4 - Formularios
Html Tema 4 - FormulariosRenny 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 (8)

Css - Tema 1
Css - Tema 1Css - Tema 1
Css - Tema 1
 
Html Tema 4 - Formularios
Html Tema 4 - FormulariosHtml Tema 4 - Formularios
Html Tema 4 - Formularios
 
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

4° SES COM MAR 09 Leemos una noticia del dengue e identificamos sus partes (1...
4° SES COM MAR 09 Leemos una noticia del dengue e identificamos sus partes (1...4° SES COM MAR 09 Leemos una noticia del dengue e identificamos sus partes (1...
4° SES COM MAR 09 Leemos una noticia del dengue e identificamos sus partes (1...MagalyDacostaPea
 
PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2
PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2
PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2Eliseo Delgado
 
Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...Angélica Soledad Vega Ramírez
 
Fichas de matemática DE PRIMERO DE SECUNDARIA.pdf
Fichas de matemática DE PRIMERO DE SECUNDARIA.pdfFichas de matemática DE PRIMERO DE SECUNDARIA.pdf
Fichas de matemática DE PRIMERO DE SECUNDARIA.pdfssuser50d1252
 
Presentación Bloque 3 Actividad 2 transversal.pptx
Presentación Bloque 3 Actividad 2 transversal.pptxPresentación Bloque 3 Actividad 2 transversal.pptx
Presentación Bloque 3 Actividad 2 transversal.pptxRosabel UA
 
BITÁCORA DE ESTUDIO DE PROBLEMÁTICA. TUTORÍA V. PDF 2 UNIDAD.pdf
BITÁCORA DE ESTUDIO DE PROBLEMÁTICA. TUTORÍA V. PDF 2 UNIDAD.pdfBITÁCORA DE ESTUDIO DE PROBLEMÁTICA. TUTORÍA V. PDF 2 UNIDAD.pdf
BITÁCORA DE ESTUDIO DE PROBLEMÁTICA. TUTORÍA V. PDF 2 UNIDAD.pdfsolidalilaalvaradoro
 
Cuadernillo de actividades eclipse solar.pdf
Cuadernillo de actividades eclipse solar.pdfCuadernillo de actividades eclipse solar.pdf
Cuadernillo de actividades eclipse solar.pdflizcortes48
 
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE 9-4-24 (1).docx
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE     9-4-24 (1).docx4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE     9-4-24 (1).docx
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE 9-4-24 (1).docxMagalyDacostaPea
 
NUEVO PLAN Y PROGRAMAS DE ESTUDIO 2022.pdf
NUEVO PLAN Y PROGRAMAS DE ESTUDIO  2022.pdfNUEVO PLAN Y PROGRAMAS DE ESTUDIO  2022.pdf
NUEVO PLAN Y PROGRAMAS DE ESTUDIO 2022.pdfEDNAMONICARUIZNIETO
 
PPT_ Prefijo homo tema para trabajar los prefijos en razonamiento verbal
PPT_ Prefijo homo tema para trabajar los prefijos en razonamiento verbalPPT_ Prefijo homo tema para trabajar los prefijos en razonamiento verbal
PPT_ Prefijo homo tema para trabajar los prefijos en razonamiento verbalRosarioChoque3
 
ENSEÑAR ACUIDAR EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.
ENSEÑAR ACUIDAR  EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.ENSEÑAR ACUIDAR  EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.
ENSEÑAR ACUIDAR EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.karlazoegarciagarcia
 
TEMA 13. LOS GOBIERNOS DEMOCRÁTICOS (1982-2018)
TEMA 13. LOS GOBIERNOS DEMOCRÁTICOS (1982-2018)TEMA 13. LOS GOBIERNOS DEMOCRÁTICOS (1982-2018)
TEMA 13. LOS GOBIERNOS DEMOCRÁTICOS (1982-2018)jlorentemartos
 
Desarrollo de habilidades del siglo XXI - Práctica Educativa en una Unidad-Ca...
Desarrollo de habilidades del siglo XXI - Práctica Educativa en una Unidad-Ca...Desarrollo de habilidades del siglo XXI - Práctica Educativa en una Unidad-Ca...
Desarrollo de habilidades del siglo XXI - Práctica Educativa en una Unidad-Ca...Carol Andrea Eraso Guerrero
 
PROGRAMACIÓN CURRICULAR - DPCC- 5°-2024.pdf
PROGRAMACIÓN CURRICULAR - DPCC- 5°-2024.pdfPROGRAMACIÓN CURRICULAR - DPCC- 5°-2024.pdf
PROGRAMACIÓN CURRICULAR - DPCC- 5°-2024.pdfMaritza438836
 
describimos como son afectados las regiones naturales del peru por la ola de ...
describimos como son afectados las regiones naturales del peru por la ola de ...describimos como son afectados las regiones naturales del peru por la ola de ...
describimos como son afectados las regiones naturales del peru por la ola de ...DavidBautistaFlores1
 
Secuencia didáctica.DOÑA CLEMENTINA.2024.docx
Secuencia didáctica.DOÑA CLEMENTINA.2024.docxSecuencia didáctica.DOÑA CLEMENTINA.2024.docx
Secuencia didáctica.DOÑA CLEMENTINA.2024.docxNataliaGonzalez619348
 

Último (20)

4° SES COM MAR 09 Leemos una noticia del dengue e identificamos sus partes (1...
4° SES COM MAR 09 Leemos una noticia del dengue e identificamos sus partes (1...4° SES COM MAR 09 Leemos una noticia del dengue e identificamos sus partes (1...
4° SES COM MAR 09 Leemos una noticia del dengue e identificamos sus partes (1...
 
PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2
PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2
PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2
 
Aedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptxAedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptx
 
Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...
 
Fichas de matemática DE PRIMERO DE SECUNDARIA.pdf
Fichas de matemática DE PRIMERO DE SECUNDARIA.pdfFichas de matemática DE PRIMERO DE SECUNDARIA.pdf
Fichas de matemática DE PRIMERO DE SECUNDARIA.pdf
 
Presentación Bloque 3 Actividad 2 transversal.pptx
Presentación Bloque 3 Actividad 2 transversal.pptxPresentación Bloque 3 Actividad 2 transversal.pptx
Presentación Bloque 3 Actividad 2 transversal.pptx
 
BITÁCORA DE ESTUDIO DE PROBLEMÁTICA. TUTORÍA V. PDF 2 UNIDAD.pdf
BITÁCORA DE ESTUDIO DE PROBLEMÁTICA. TUTORÍA V. PDF 2 UNIDAD.pdfBITÁCORA DE ESTUDIO DE PROBLEMÁTICA. TUTORÍA V. PDF 2 UNIDAD.pdf
BITÁCORA DE ESTUDIO DE PROBLEMÁTICA. TUTORÍA V. PDF 2 UNIDAD.pdf
 
Aedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptxAedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptx
 
Cuadernillo de actividades eclipse solar.pdf
Cuadernillo de actividades eclipse solar.pdfCuadernillo de actividades eclipse solar.pdf
Cuadernillo de actividades eclipse solar.pdf
 
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE 9-4-24 (1).docx
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE     9-4-24 (1).docx4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE     9-4-24 (1).docx
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE 9-4-24 (1).docx
 
NUEVO PLAN Y PROGRAMAS DE ESTUDIO 2022.pdf
NUEVO PLAN Y PROGRAMAS DE ESTUDIO  2022.pdfNUEVO PLAN Y PROGRAMAS DE ESTUDIO  2022.pdf
NUEVO PLAN Y PROGRAMAS DE ESTUDIO 2022.pdf
 
Sesión ¿Amor o egoísmo? Esa es la cuestión
Sesión  ¿Amor o egoísmo? Esa es la cuestiónSesión  ¿Amor o egoísmo? Esa es la cuestión
Sesión ¿Amor o egoísmo? Esa es la cuestión
 
PPT_ Prefijo homo tema para trabajar los prefijos en razonamiento verbal
PPT_ Prefijo homo tema para trabajar los prefijos en razonamiento verbalPPT_ Prefijo homo tema para trabajar los prefijos en razonamiento verbal
PPT_ Prefijo homo tema para trabajar los prefijos en razonamiento verbal
 
ENSEÑAR ACUIDAR EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.
ENSEÑAR ACUIDAR  EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.ENSEÑAR ACUIDAR  EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.
ENSEÑAR ACUIDAR EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.
 
TEMA 13. LOS GOBIERNOS DEMOCRÁTICOS (1982-2018)
TEMA 13. LOS GOBIERNOS DEMOCRÁTICOS (1982-2018)TEMA 13. LOS GOBIERNOS DEMOCRÁTICOS (1982-2018)
TEMA 13. LOS GOBIERNOS DEMOCRÁTICOS (1982-2018)
 
El Bullying.
El Bullying.El Bullying.
El Bullying.
 
Desarrollo de habilidades del siglo XXI - Práctica Educativa en una Unidad-Ca...
Desarrollo de habilidades del siglo XXI - Práctica Educativa en una Unidad-Ca...Desarrollo de habilidades del siglo XXI - Práctica Educativa en una Unidad-Ca...
Desarrollo de habilidades del siglo XXI - Práctica Educativa en una Unidad-Ca...
 
PROGRAMACIÓN CURRICULAR - DPCC- 5°-2024.pdf
PROGRAMACIÓN CURRICULAR - DPCC- 5°-2024.pdfPROGRAMACIÓN CURRICULAR - DPCC- 5°-2024.pdf
PROGRAMACIÓN CURRICULAR - DPCC- 5°-2024.pdf
 
describimos como son afectados las regiones naturales del peru por la ola de ...
describimos como son afectados las regiones naturales del peru por la ola de ...describimos como son afectados las regiones naturales del peru por la ola de ...
describimos como son afectados las regiones naturales del peru por la ola de ...
 
Secuencia didáctica.DOÑA CLEMENTINA.2024.docx
Secuencia didáctica.DOÑA CLEMENTINA.2024.docxSecuencia didáctica.DOÑA CLEMENTINA.2024.docx
Secuencia didáctica.DOÑA CLEMENTINA.2024.docx
 

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.