La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Unidad Didáctica 11 Reutilización Versión 1.0.0

Presentaciones similares


Presentación del tema: "Unidad Didáctica 11 Reutilización Versión 1.0.0"— Transcripción de la presentación:

1 Unidad Didáctica 11 Reutilización Versión 1.0.0
Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.0

2 Índice I. Reutilización I.1 Reutilización de código I.2 Herencia
I.3 Composición

3 1.1 Reutilización de Código - Mecanismos
Herencia de clases Implementamos una clase B heredando de otra clase A. Un objeto de tipo B será un objeto de tipo A Ejemplo: un píxel es un punto Composición Implementamos una clase B utilizando otra clase A como uno de sus atributos privados. Un objeto de tipo B contendrá a un objeto de tipo A Ejemplo: un círculo tiene un punto (centro) Algún método del tipo B delega su funcionalidad en un método del tipo A, invocado a través del objeto de tipo A (atributo)

4 1.2 Herencia Permite establecer relaciones tipo-subtipo
Se representa en Java mediante la cláusula extends Herencia de Interfaces o Refinamiento de tipos Todos los métodos declarados en la interfaz padre son heredados por la interfaz hija Se permite la herencia múltiple de interfaces Herencia de Clases o Reutilización de código Todos los métodos y atributos de la clase padre son automáticamente heredados en la subclase Solamente se permite la herencia simple de clases

5 1.2 Herencia de Clases Si la clase B hereda de la clase A, solamente serán accesibles en la clase B aquellos atributos y métodos con visibilidad protected o public en la clase A public class A { public String atr1; protected Integer atr2; private Boolean atr3; public void metodo1(){…} private void metodo2(){…} protected void metodo3(){…} } public class B extends A{ private String atr4; public void metodo4(); } Atributos accesibles en la clase B: atr1, atr2 y atr4 Métodos accesibles en la clase B: metodo1(), metodo3() y metodo4()

6 1.2 Herencia de Clases Acceso a atributos y métodos de la superclase: super Invocación a constructores de la superclase: Se invocan con la palabra super y los parámetros reales correspondientes entre paréntesis Se invocan en los constructores de la clase hija y deberá hacerse siempre en la primera línea. Posteriormente se realizará la inicialización de los atributos propios public class A { public String atr1; protected Integer atr2; private Boolean atr3; public A(String a1, Integer a2, Boolean a3){…} } public class B extends A{ private String atr4; public B(String a1, Integer a2, Boolean a3, String a4){ super(a1,a2,a3); atr4=a4; }

7 1.2 Herencia de Clases Acceso a atributos e invocación a métodos de la superclase Acceso a atributos: con la palabra super seguida de un punto y el nombre del atributo Invocación a métodos: con la palabra super seguida de un punto, el nombre del método y los parámetros reales entre paréntesis Redefinición de métodos Cuando la definición de un método de la superclase no es la adecuada en la subclase Los métodos redefinidos poseen el mismo nombre, número y tipo de parámetros que un método de la clase padre Es común utilizar en la redefinición una llamada al método de la clase padre

8 1.2 Herencia - Ejemplo public interface Persona { String getNombre();
String getApellidos(); } public class EmpleadoImpl extends PersonaImpl implements Empleado{ private Integer añosDeServicio; private String departamento; public EmpleadoImpl(String nombre, String apellidos, Integer años, String dep){ super(nombre,apellidos); añosDeServicio=años; departamento=dep; } public Integer getAñosDeServicio(){ return añosDeServicio; public String getDepartamento(){ return departamento; public String toString(){ return super.toString() + “ ” +getAñosDeServicio() + “ ” + getDepartamento(); public class PersonaImpl implements Persona{ public PersonaImpl(String nombre, String apellidos){ } public String toString(){ return getNombre()+ “ ” +getApellidos(); public interface Empleado extends Persona{ Integer getAñosDeServicio(); String getDepartamento(); }

9 1.2 Herencia – La clase Object
En Java todas las clases heredan de la clase Object, aunque no se diga explícitamente con extends Todos los objetos en Java serán de tipo Object La clase Object contiene algunos métodos básicos, que podrán ser redefinidos por las clases hijas Object PixelImpl PuntoImpl CirculoImpl

10 1.3 Composición Implementación de una clase a partir de la funcionalidad ofrecida por otras Se declaran tantos atributos como clases a componer y se delegan los métodos a implementar de la nueva clase en alguno de los objetos declarados Es una buena costumbre usar la composición en lugar de la herencia si no es necesario hacer conversiones hacia arriba La composición se utiliza si se necesita un subconjunto de la parte pública de un tipo (delegación)

11 1.3 Composición – Ejemplo public interfaz Punto { Double getX();
Double getY(); } public class CirculoImpl implements Circulo{ private Punto centro; private Double radio; public CirculoImpl(Double xc, Double yc,Double r){ centro=new PuntoImpl(xc,yc); radio=r; } public Double getCentroX(){ return centro.getX(); public Double getCentroY(){ return centro.getY(); public String toString(){ return “Centro:”+centro.toString() +”; Radio: “+radio; public class PuntoImpl implements Punto{ public PuntoImpl(Double x,Double y){ } public String toString(){ return “(“+getX()+”,”+getY()+”)”; public interfaz Circulo { Double getCentroX(); Double getCentroY(); Double getRadio(); }


Descargar ppt "Unidad Didáctica 11 Reutilización Versión 1.0.0"

Presentaciones similares


Anuncios Google