Académique Documents
Professionnel Documents
Culture Documents
FJP Unidad 8
Diseo de clases
Encapsulamiento
El encapsulamiento provee proteccin de atributos y
mtodos definidos en una clase de forma tal que
comportamiento de objetos de una clase sea
predecible.
Herencia
La herencia aumenta la flexibilidad en el diseo de
clases a travs de la creacin de clases generales a
partir de las cuales otras clases pueden derivar
comportamiento y atributos.
Academia Local Cisco UTN Facultad Regional Santa Fe http://www.santafecna.org.ar
Jerarqua de clases
Terminologa: superclases y subclases
Superclase
Subclase
---------------------------
mtodosEmpleado
Gerente es un
Empleado
Programador es un
Empleado
Gerente
Programador
--------------------------
--------------------------
nroEmpleados
nroFax
....
lenguaje
modulosACargo
....
---------------------------
---------------------------
mtodosGerente
mtodosProgramador
extends Empleado
Paquete 1
Paquete 2
Sobreescritura de mtodos
La sobreescritura (overriding) de mtodos es la
redefinicin o customizacin de mtodos heredados de la
superclase.
Cualquier mtodo heredado puede ser sobreescrito, excepto los que
fueron declarados como final.
Reglas para la sobreescritura de mtodos:
la lista de argumentos (tipos, orden y cantidad) y el tipo de retorno
deben ser idnticos
los modificadores de acceso no pueden ser ms restrictivos que los
del mtodo heredado.
las excepciones arrojadas deben ser de la misma clase o subclase
que las del mtodo heredado.
Academia Local Cisco UTN Facultad Regional Santa Fe http://www.santafecna.org.ar
this y super
public class SportsCoupe extends AutoModeloBase
protected String accessories = cd-car";
public String getAccessories() //overridden method
{
return super.getAccessories() + accessories;
}
public String getAccessories(String options) //overloaded
method
{
return this.getAccessories() + options;
}
....
}
Constructores y Herencia
Una subclase no hereda los constructores de la
superclase.
La primer sentencia en el cuerpo del constructor para una
subclase debera invocar al constructor de la superclase.
class Parent
{
String name;
Parent (String s)
{
super(nombre);
name = s;
...otras sentencias
}
...
}
...
}
}
Abstraccin
Cuando una clase de alto nivel en la jerarqua de
clases sirve como framework o gua para la
definicin de otras clases, la misma es declarada
abstracta
No est pensada para la creacin de objetos
Es utilizada para definir lmites en la definicin de otras
subclases
Framework comn para un conjunto de subclases relacionadas
Mtodos abstractos
Un mtodo abstracto se define en Java a travs de
la palabra clave abstract
No posee cuerpo
Se define mediante una sentencia de signatura de mtodo
Sintaxis:
<modificadores> abstract <tipo_retorno>
nombre_metodo (argumentos);
Clases abstractas
Es posible declarar clases abstractas que no
contengan mtodos abstractos
Una subclase de una superclase abstracta debe
ser declarada abstracta si no provee definiciones
para todos los mtodos abstractos de la
superclase
Sintaxis:
<modificadores> abstract class Nombre_Clase{};
Interfases
Las interfases son clases abstractas que definen
mtodos abstractos y constantes.
El propsito de una interfase es servir como un
documento de diseo para las caractersticas
externas de una clase
Todos los mtodos en una interfase deben ser
pblicos
Interfases ((cont.)
cont.)
Proveen un mecanismo a travs del cual una
subclase define comportamiento
La declaracin de una interfase es vista como un contrato
entre la clase que implementa la interfase y la interfase en
s.
El compilador fuerza el cumplimiento de dicho contrato
asegurndose que todos los mtodos declarados en la
interfase sean implementados en la clase
En algunos casos, puede ser requerida la implementacin
nula de un mtodo (mtodo sin cdigo procedural)
Academia Local Cisco UTN Facultad Regional Santa Fe http://www.santafecna.org.ar
Interfases ((cont.)
cont.)
Una interfase slo puede contener mtodos
abstractos y atributos constantes.
Una clase puede implementar ms de una
interfase y una interfase puede ser implementada
por clases no relacionadas.
Una clase debe definir todos los mtodos de la
interfase que la misma implementa
De lo contrario, debe ser declarada abstracta
Academia Local Cisco UTN Facultad Regional Santa Fe http://www.santafecna.org.ar
SeguirGuia
Gua
Polimorfismo
Provee flexibilidad en la utilizacin de un tipo de
clase general en definiciones e invocaciones de
mtodos
Posibilita que el mismo cdigo posea efectos
diferentes en tiempo de ejecucin dependiendo del
contexto
JVM utiliza invocacin de mtodos virtuales y
binding dinmico para resolver el objeto actual y su
correspondiente implementacin de mtodos
durante el tiempo de ejecucin
Academia Local Cisco UTN Facultad Regional Santa Fe http://www.santafecna.org.ar
Binding dinmico de
mtodos
Tcnica de resolucin del comportamiento de un
objeto en tiempo de ejecucin
Sinnimo: invocacin de mtodos virtuales
Ej
Ej:: Polimorfismo
Empleado
public class Escuela
{
public String display(Empleado e)
Profesor
{
System.out.println("La informacin del
empleado es: ");
System.out.println(e.getDetails());
}
Ej
cont.)
Ej:: Polimorfismo ((cont.)
public static void main(String args [ ])
{
Empleado e1 = new Empleado();
Profesor t1 = new Profesor();
Empleado e2 = new Profesor();
School
s1 = new Escuela();
s1.display(t1);
s1.display(e1);
s1.display(e2);
}
Academia Local Cisco UTN Facultad Regional Santa Fe http://www.santafecna.org.ar
10