Metodología de la Programación

Anuncio
Metodología de la Programación
Herencia
F. J. Martı́n Mateos
Dpto. Ciencias de la Computación e Inteligencia Artificial
Universidad de Sevilla
Metodología de la Programación - Tema 5 – p. 1/12
Composición
• Una clase tiene datos miembro que son instancias de otras clases:
public class Recta {
private Punto p;
private Vector v;
...
}
• Una Recta tiene un Punto y un Vector
Metodología de la Programación - Tema 5 – p. 2/12
Herencia
• Una clase es como otra y además tiene algún tipo de característica
propia que la distingue
• Ejemplo:
Un Empleado tiene un nombre, un sueldo y un número de empleado
• Un Ejecutivo es un Empleado que tiene asignado un presupuesto
•
• Empleado es la clase base o superclase
• Ejecutivo es la clase derivada o subclase
Metodología de la Programación - Tema 5 – p. 3/12
Herencia: Ejemplo
• Clase Empleado:
public class Empleado {
String nombre;
int numEmpleado, sueldo;
static private int contador = 0;
public void aumentarSueldo ( int porcentaje ) {
sueldo += sueldo * porcentaje / 100;
}
public String toString() {
return nombre + " (" + numEmpleado + ") >" +
sueldo;
}
}
Metodología de la Programación - Tema 5 – p. 4/12
Herencia: Ejemplo
• Clases derivadas: Sintaxis
public class Subclase extends Superclase {
...
}
Metodología de la Programación - Tema 5 – p. 5/12
Herencia: Ejemplo
• Clases derivadas: Sintaxis
public class Subclase extends Superclase {
...
}
•
Nombre de la clase derivada
Metodología de la Programación - Tema 5 – p. 5/12
Herencia: Ejemplo
• Clases derivadas: Sintaxis
public class Subclase extends Superclase {
...
}
Nombre de la clase derivada
• Relación de herencia: extends
•
Metodología de la Programación - Tema 5 – p. 5/12
Herencia: Ejemplo
• Clases derivadas: Sintaxis
public class Subclase extends Superclase {
...
}
Nombre de la clase derivada
• Relación de herencia: extends
• Nombre de la clase base
•
Metodología de la Programación - Tema 5 – p. 5/12
Herencia: Ejemplo
• Clases derivadas: Sintaxis
public class Subclase extends Superclase {
...
}
• Clase Ejecutivo:
public class Ejecutivo extends Empleado {
int presupuesto;
public void asignarPresupuesto ( int p ) {
presupuesto = p;
}
}
Metodología de la Programación - Tema 5 – p. 5/12
Herencia: Ejemplo
• Ejemplos de uso:
Ejecutivo jefe = new Ejecutivo();
jefe.nombre = "Armando Mucho";
jefe.sueldo = 1000;
jefe.asignarPresupuesto(1500);
jefe.aumentarSueldo(10);
jefe
// => "Armando Mucho (0) >1100"
Empleado c1 = new Empleado();
c1.nombre = "Esteban Poco";
c1.sueldo = 100;
c1.asignarPresupuesto(5000); // => Error
c1.aumentarSueldo(10);
c1.presupuesto
c1
// => Error
// => "Esteban Poco (0) >110"
Metodología de la Programación - Tema 5 – p. 6/12
La referencia this
• Referencia al objeto que se está manipulando: this
• Ejemplo:
public class Empleado {
...
public Empleado ( String nombre, int sueldo ) {
this.nombre = nombre;
this.sueldo = sueldo;
numEmpleado = ++contador;
}
...
}
Metodología de la Programación - Tema 5 – p. 7/12
nicialización de clases derivadas
• Invocación al constructor de la clase base: super(...)
• Ha de aparecer en primer lugar
• Ejemplo:
public class Ejecutivo extends Empleado {
...
public Ejecutivo( String n, int s ) {
super(n,s);
}
...
}
Metodología de la Programación - Tema 5 – p. 8/12
La referencia super
• Referencia a la clase base: super
• Ejemplo:
public class Ejecutivo extends Empleado {
...
public String toString() {
return "Ejecutivo: " + super.toString();
}
...
}
Metodología de la Programación - Tema 5 – p. 9/12
Modificador de acceso protected
• Acceso público para las clases derivadas
• Acceso privado para el resto de las clases
• Ejemplo:
public class Empleado {
protected int sueldo;
...
}
Metodología de la Programación - Tema 5 – p. 10/12
Modificador de uso final
• Una clase final no puede extenderse
public final class Ejecutivo extends Empleado {
...
}
• Un método final no puede redefinirse
public class Empleado {
...
public final void aumentarSueldo ( int p ) {
...
}
...
}
Metodología de la Programación - Tema 5 – p. 11/12
La clase Object
•
•
•
•
Jerarquía de objetos
Raíz de la jerarquía: la clase Object
Por defecto todas las clases heredan de Object
El método toString se define en la clase Object y es redefinido en
las implementaciones de las clases derivadas
Metodología de la Programación - Tema 5 – p. 12/12
Descargar