Вы находитесь на странице: 1из 23

Herencia y Polimorfismo

www.cjavaperu.com

Teora orientada a Objetos

Definicin de Clase.
Definicin de objetos.
Herencia.
Encapsulamiento.
Polimorfismo.
Agregacin.

www.cjavaperu.com

Clase Abstracta
Contenido :
Definicin de clases y mtodos abstractos. Definicin de
clases y mtodos finales.
Interfaces de programacin.

objetivos
Entender el concepto de clase abstracta para el desarrollo de soluciones orientadas a objetos en
el lenguaje Java.

Clase Abstracta
Clases y mtodos abstractos
Una clase abstracta es una clase en la cual se define como esta se va utilizar, sin tener
que implementar sus mtodos. Un clase abstracta tiene al menos un mtodo
abstracto. Una clase abstracta no se instancia, sino que se utiliza como base para la
herencia.
Un mtodo abstracto se declara en una clase para que puedan ser definidos en una
clase derivada (sobre escritos).
SUPERCLASE

public abstract class Figura {


protected int x, y ;
public Figura ( int x, int y ) {
this.x = x ;
this.y = y ;
}
public abstract double area ( ) ;
}

Clase Abstracta
Ejemplo de Jerarqua de Clases
CLASE BASE
public abstract class Figura {
protected double x, y;
protected String name;
public Figura (double x, double y, String name) {
this.x = x;
this.y = y;
this.name = name;
}
public final String getName() {
return name;
}
public static String muestraArea(Figura fig) {
double area = fig.area();
return ("Area " + fig.getName() + ": " + area);
}
public abstract double area();

Clases y mtodos finales


Clase Final
Una clase final es una clase que no se puede derivar. Es decir no posee subclases.
final class B extends A { ... }
class C extends B // error B es final { ... }

Mtodo Final
Un mtodo final es un mtodo que no se puede redefinir en una subclase de la clase en donde se defini. Por
ejemplo el mtodo move asociado a un objeto grfico se puede declarar final en la clase Grafivo mediante:
final void move(int dx, int dy) {
x+= dx; y+= dy; }
De esta forma este mtodo no podr ser redefinido posteriormente en las clases Line, Box o ColorBox.

Atributo Final
Una atributo final es una variable a la que no se puede asignar un valor. La variable se inicializa con un valor
durante su declaracin, pero luego no puede cambiar. Cumple el papel de las constante de otros lenguajes, pero
observe que en Java se trata de constantes dinmica cuyo valor se calcula en ejecucin.

Interface
Introduccin
Interface: Clase abstracta a nivel superior.
Es una de las caractersticas mas importantes de la programacin orientada a objetos. Este mecanismo
permite abstraer los mtodos a un nivel superior, lo que permite simular la herencia mltiple y obtener ms
polimorfismo que el que se puede obtener de una simple jerarqua de clases.

Una interface es un conjunto de mtodos que indican que una clase tiene un comportamiento
particular adems del que hereda de su superclase.

Interface
Definicin
Una interface es como un molde, solamente permite declarar nombres de mtodos (pueden ser public, static
y final), listas de argumentos, tipos de retorno y adicionalmente miembros dato. (los cuales solo pueden ser
constantes de tipos bsicos de datos).
Jerarquas de clases distintas pueden utilizar la misma interface
INTERFAZ COMN

Persona

Animal

Pajaro

Hombre

Interface
Definicin
La definicin de una interfaz es semejante a la de una clase. La definicin de interfaz tiene dos componentes,
declaracin y cuerpo.

DECLARACIN

public interface nombreInterfaz {


// Constantes.

// Mtodos abstractos.
}

CUERPO

Interface
La siguiente figura muestra la implementacin de interfaces:

Interface
Ejemplo :
public interface VideoClip {

class PrgClase implements VideoClip {

// Inicio de la reproduccin del video .


void play ( ) ;

void play ( ) {
// cdigo del mtodo.
}
void bucle ( ) {
// cdigo del mtodo.
}
void astop ( ) {
// cdigo del mtodo.
}
// Otros mtodos.

// Reproduce el video clip en un bucle.


void bucle ( ) ;
// Detiene la reproduccin.
void astop ( ) ;

}
}

La ventaja principal del uso de una interface es que una clase de este tipo pueden ser implementada por cualquier nmero de clases,
permitiendo a cada clase compartir la interface de programacin sin tener que ser consciente de la implementacin que hagan las otras
clases que implementen la interface.

Problema
Implemente la clase Persona en el paquete padre con los siguientes miembros:
- Atributos protegidos: apellidos, nombres y edad
- Constructor que inicializa los atributos de la clase
- Un mtodo abstracto generarCorreo() que retorna el correo .
Implemente una subclase de Persona denominada Empleado en el paquete hijo con los siguientes miembros:
- Atributos privados: horas que trabaja por semana y tarifa por hora.
- Constructor con parmetros para inicializar todos sus atributos.
- Mtodo generarCorreo() que retorna el correo formado por el primer carcter del nombre, el apellido, el ultimo carcter del
apellido y el ao nacimiento, seguido de @isil.pe
- Mtodo calcularSueldo() que retorna horas*tarifa.
- Mtodo mostrarDatos() que retorne un String con todos los datos del empleado.
Implemente otra subclase de Persona denominada Alumno en el paquete hijo con los siguientes miembros:
- Atributos privados: tres notas tipo int
- Constructor con parmetros para inicializar todos sus atributos
- Mtodo generarCorreo() que retorna el correo formado por el primer carcter del nombre, el apellido, la edad, seguido de
@isil.pe
- Mtodo calcularPromedio() que retorna el promedio simple de las 3 notas
- Mtodo mostrarDatos() que retorne un String con todos los datos del alumno
Implemente una clase aplicacin denominada FrmPrincipal ubicada en el paquete vista. Desarrolle los mtodos necesarios para
crear y manipular un objeto de la subclase Empleado y uno objeto de Alumno.

Polimorfismo
Contenido :
Definicin.
Sobrecarga de mtodos.
Constructores sobrecargados.
Sobre escritura de mtodos.

objetivos
Entender el concepto de polimorfismo para el desarrollo de soluciones orientadas a objetos en
el lenguaje Java.

POLIMORFISMO
Definicin
Es una de las caractersticas mas importantes de la programacin orientada a
objetos constituye un mecanismo que permite implementar mtodos en forma
general.
Esta caracterstica denominada Polimorfismo funciona con
las referencias a las jerarquas de Clases.
El polimorfismo permite disear e implementar sistemas
que fcilmente se puedan extender.

Polimorfismo
Sobrecarga de constructores
La sobrecarga de mtodos constructores se da cuando una clase tiene mas de un
mtodo constructor.
Los constructores se diferencian por cantidad, tipo y orden
de parmetros.
Ejemplo : Constructores distintos de la clase Operacin.
public Operacin(){.}
public Operacin(int a){.}
public Operacin(int a, double b){.}
public Operacin(double a , int b){.}

Estos mtodos permiten instanciar objet os considerando distintos tipos de datos


disponibles.

Polimorfismo
Sobrecarga de mtodos
La sobrecarga de mtodos se da cuando una clase puede tiene mas de un mtodo con el
mismo nombre.
Los mtodos se diferencian por nombre del mtodo y cantidad, tipo
y orden de sus parmetros. Todo esto constituye la La firma del
mtodo .
Ejemplo : mtodo distinto de una clase.
public double sumaTiempo(){ }
public double sumaTiempo(int a){ }
public double sumaTiempo(double b){ }
public double sumaTiempo(int a , double b){ }
public double sumaTiempo(double a, int b){ }

Polimorfismo
Jerarqua de Clases
Las relaciones de gerencia permiten formar Jerarquas de Clases.
Una Jerarqua de clase es cuando una clase padre tiene caractersticas comunes
que pueden ser aprovechada por diversas clases derivadas.
En una Jerarqua de clases se puede observar diferentes clases que pueden tener
el papel de SuperClase y SubClase al mismo tiempo.

Polimorfismo
Ejemplo de Jerarqua de Clases
CLASE BASE
Public class Figura {
protected double x, y;
protected String name;
public Figura (double x, double y, String name) {
this.x = x;
this.y = y;
this.name = name;
}
public final String getName() {
return name;
}
//Mtodo polimorfico
public static String muestraArea(Figura fig) {
double area = fig.area();
return ("Area " + fig.getName() + ": " + area);
}

Polimorfismo
Sobre escritura de mtodos
En una jerarqua de clases, cundo un mtodo de una subclase tiene el mismo nombre, los mismos parmetros y
el mismo tipo de retorno que un mtodo de su superclase, se dice que el mtodo de la subclase sobrescribe al
mtodo de la superclase. Cundo se llama a un mtodo sobrescrito dentro de una subclase, siempre se refiere a
la versin del mtodo definida en la subclase. La versin del mtodo definida por la superclase queda oculta.

Uso de super para acceder a una variable oculta o a un mtodo sobrescrito


Si desde la subclase se quiere acceder a una variable oculta de la superclase o a un mtodo sobrescrito de la
superclase se usa la palabra super de la siguiente forma:
super.nombreDeLaVariableOculta
super.nombreDelMetodoSobreescrito (lista de argumentos)

Problema
Desarrolle la Clase Padre llamada Empleado en el paquete padre que tenga los atributos
nombre, y horas trabajadas. La Clase debe contener los siguientes mtodos:
Mtodo Constructor que inicialice los atributos
Mtodos set/get por cada atributo
Mtodo mostrarDatos() que mostrara todos los datos de Empleado
Mtodo calcularSueldo() que retorne el producto de horas trabajadas
por una tarifa de
50 soles la hora

Desarrolle la Clase Hija de Empleado:


Clase Hija llamado EmpleadoFijo que tenga los atributos propios
cdigo y cargo
(1=asistente,2=recepcionista).
Desarrolle el mtodo Constructor, metodos set y get , y sobrescriba el metodo calcularSueldo de
tal manera que el sueldo tenga un descuento del 10% si es asistente o 13% si es recepcionista.

En pocas palabras: Polimorfismo es


POLIMORFISMO: es la capacidad que tiene los objetos de responder el mismo mensaje de diferentes
formas.
Operaciones (mtodos) con el mismo nombre pero con implementacin diferente.

Persona
+ comer()
+ descansar ()

COMER

www.cjavaperu.com

Animal
+ comer()
+ descansar ()

COMER

Вам также может понравиться