Documente Academic
Documente Profesional
Documente Cultură
OOP
Tecnologa y Conceptos
Orientado a Objetos
4
1
Herencia
La herencia es una caracterstica ms importante en
la POO.
Permite construir una clase incorporando de manera
implcita todas las caractersticas de una clase previa
existente
Estas caractersticas incluyen tanto los atributos como
los mtodos.
Herencia
En el mundo real
En OOP
CLASE
datos d1 y d2
mtodos m1,m2 y m3
SUBCLASE
datos d1, d2, d3 y d4
mtodos m1, m2, m3 y m4
Herencia
Cilindro
altura
area
Circulo
extends
radio
area
circunsferencia
volumen
Circulo
dibujar()
Cuadrado
dibujar()
Triangulo
dibujar()
Ventajas de la Herencia
Modelado de la realidad: La herencia entre clases se relaciona
con la realidad del mundo, por eso existe la relacin de
Generalizacin y Especializacin entre clases.
Ejemplo:
Una Figura es una generalizacin de Circulo.
Un Circulo es una especializacin de Figura.
Evita Redundancias: Se evita escribir cdigo repetitivo entre
clases semejantes.
Reutilizacin: El cdigo usado en una clase puede ser adaptado
para otras clases.
Extensibilidad: Posibilidad de ampliar la funcionalidad de la
aplicacin de manera sencilla.
Ing. Jess Bernardo Olavarria Paz
Implementacin en Java
Sintaxis
class IdentificadorDeClase extends IdentificadorDeSuperClase{
cuerpo-de-la-clase
}
La subclase as definida hereda las variables (porpiedades) y mtodos
(funciones) de la superclase que extiende o de la cual se deriva.
La real potencia de la herencia no es solo el hecho de adquisicin de
propiedades y mtodos de la superclase, sino la facilidad de
especializacin la subclase con propiedades y mtodos adicionales.
En el caso de los mtodos se permitir incluso redefinir los heredados
(polimorfismo con sobreescritura de mtodos en subclases).
Ing. Jess Bernardo Olavarria Paz
Implementacin en Java
Una clase hereda desde su inmediata super clase todas las
declaraciones de los campos en en mbito de la superclase,
excepto:
Campos y constructores privados no son heredados.
Campos idnticamente declarados, sobre aquellos en la super clase.
SuperClase
Sobreescritura de Mtodos
Cuando definimos en una subclase un mtodo del mismo
nombre y tipo que en la superclase, por lo tanto el mtodo de
la superclase queda oculto.
Ejemplo
public class Instrumento{ //SuperClase
public void tocar(){ //Mtodo
System.out.println(Tacar instrumento);
}
}
Tipos de Herencia
Herencia Simple:
Una clase puede heredar de una unica
Clase.
Herencia Mltiple:
Una clase puede heredar de varia clases
Clases forman un grafo dirigido acclico
Base
void f()
void g()
Upcast
Downcast
Subclase
void f()
void g()
void u()
void v()
void w()
Polimorfismo
Polimorfismo significa que una misma operacin puede
comportarse de modo distinto en clases distintas.
El Polimorfismo se traduce como un objeto y muchas formas.
Es la abstraccin o similitud con el caso de la realidad donde
un objeto reacciona ante un mismo mensaje de diversas
formas.
En realidad puede observarse polimorfismo en dos
circunstancia:
Polimorfismo en subclases
En realidad, objetos de la misma clase pueden reaccionar ante un mismo mensaje de manera diferente
solo por el hecho de pertenecer a subclases diferentes. En POO se denomina: Polimorfismo dinmicos
por niveles (sobre escritura de mtodos en la subclases) esto significa que usando subclases puede
construirse por niveles un polimorfismo dinmico y en tiempo de ejecucin.
class Pato{
..
}
class Perro{
..
}
class PerroDeCasa extends Perro{
public void ver(Pato p){System.out.println(Que lindo perrito...);}
}
class PerroDeCaza extends Perro{
public void ver(Pato p){System.out.println(Amo, disparale de una vez...);}
}
abstract
Una clase abstracta es cuando se pueden declarar clases que tan solo definan parte
de una implementacin, y dejar las clases extendidas para proporcionar
implementacin especfica de algunos de los mtodos o todos ellos.
La abstraccin es til cuando parte del comportamiento es verdadero para la
mayora o el total de los objetos de determinado tipo, pero cierto comportamiento
slo tiene sentido para tipos particulares de objetos y no para una superclase
general.
En Java, una clase abstract y cada mtodo no implementado en la clase se marca
especficamente como abstract.
10
Triangulo
area()
Circulo
area()
Rectngulo
area()
11
12