Documente Academic
Documente Profesional
Documente Cultură
FUNDAMENTOS DE LA HERENCIA.
Hasta ahora hemos definido el concepto de clase como una estructura de datos que
posee miembros tipo dato y mtodo, que son manejados por un objeto o un conjunto
de objetos, que tienen las mismas caractersticas.
Cada integrante del conjunto puede funcionar con la misma estructura de clase.
Clase CONJUNTO DE OBJETOS
pedro
PERSONA
mario
-nombre
-ced
- edad
+ asignar ()
+calcularedad ()
Ahora en el mundo real podemos apreciar que no todos los objetos de una clase
presentan exactamente el mismo comportamiento que hasta aqu usted a manejado.
Que sucede cuando se tiene objetos con caractersticas comunes a otros objetos
pero que a su vez tambin poseen caractersticas propias. Como las que se muestran
en la figura#2.
Clase Base S
MEDICO
U
B
C
L
INTERNISTA CIRUJANO ODONTOLOGO A
S
E
S
Se observa que la clase Mdico es el nivel ms alto en esta jerarqua pero a su vez
se relaciona con las otras clases Internista, Cirujano y Odontlogo, que
comparten caractersticas comunes a los mdicos, pero que tambin presentan
caractersticas muy propias que los hacen diferentes uno de otro, como por ejemplo
los objetos de la clase Odontologo, calzarM(), sacarM(), limpiarD(), son funciones
que no son manejadas por la clase Internista, pero si son funciones comunes a
los Mdico las siguientes: atenderpacientes(), recetarmedicamentos(), pagarC(),
entre otras. Estas caractersticas las van a manejar todas las subclases de Mdico.
Con el uso de la herencia puede crearse una clase general llamada super clase o
clase base, que define caractersticas comunes o genricas a un conjunto de
elementos relacionados. Esta clase puede ser heredada por otras clases ms
especficas o especializada. Cada una de stas, se le pueden agregar caractersticas
(miembros atributos y/o miembros mtodos), que le sean nicas a las mismas. La
clase que hereda es llamada subclase, clase derivada o extendida, hereda todos
los miembros definidos por la superclase y de todos sus ascendentes, dependiendo
de los modificadores de acceso definidos para cada miembro.
La herencia es una relacin entre clases donde una clase comparte la estructura y/o
comportamiento de otras clases. Es a su vez un mecanismo importante de extensin
que permite la reutilizacin de cdigos existentes.
TIPOS DE HERENCIA.
Herencia Simple.
Herencia Mltiple.
CLASES BASES
EMPLEADO PERSONA
ESTUDIANTE PROFESOR
DIRECTIVOS
a)
SUBCLASE TIEMPO
Figura #4. Representacin Jerrquica de la herencia (a y b)
COMPLETO
b)
CARACTERSTICAS DE LA HERENCIA.
Una clase puede ser superclase y subclase al mismo tiempo, en la figura #4(b)
se ve expresado esto, ya que PROFESOR pasa a ser clase base de TIEMPO
COMPLETO, pero a su vez PROFESOR es subclase de PERSONA.
EJEMPLO DE HERENCIA:
cdula
nombreapellido
direccin
edad
ndice asignar()
grupo calcularedad
horario PERSONAS fechadeingreso
ho-rastrabajadas
matricular () tarifa
retiro/inclusin () deducciones
pagar matricula() calcularS()
calcularXIII()
ESTUDIANTES
EMPLEADOS
aoservicio fincontrato
calcularvacaciones
calcularvacaciones() proporcionales()
calculartiempo()
PERMANENTE
TEMPORAL
josue
Cdula asignar()
Nombre calcularedad()
apellido calcularS()
direccin calcularXIII()
edad calcularvacaciones()
horastrabajadas
tarifa
miembros
deducciones
definidos en
fechadeingreso
la clase
aoservicio
EL USO DE LA HERENCIA.
Debemos usar herencia cuando hay una clase de un tipo ms especfico que
una superclase. Es decir, se trata de una especialidad.
Las clases cuadrado, crculo y tringulo tienen que calcular su rea y permetro
luego tiene sentido poner esa funcionabilidad en una clase genrica como Figura.
Implemente esto.
____________
___________ Miembros de la clase
Dentro de las llaves: se escribirn los miembros necesarios que pueden modificar
o aadir comportamientos a la nueva clase.
EJEMPLO:
PERSONA
import javax.swing.JOptionPane;
class Persona {
private String nombre;
private int edad;
public void asignar (String n, int e)
{ nombre = n; edad = e; }
public String traerN() {
return nombre;}
}
ALUMNO
class Alumno extends Persona {
return indice ; } }
1. Agregue la clase Empleado como subclase de Persona, debe definir que atributos
y mtodos son propios de esta clase.
2. Realice los siguientes procesos: calcular salario, calcular aos de laborar en la
empresa y calcular bonificacin de navidad dependiendo de los aos de servicio
de laborar en la empresa.
3. Muestre la jerarqua de clases, luego de realizar el paso 2
Los miembros que se heredan por una subclase son aquellos declarados como
public, protected o defecto.
Pblicos: si los miembros de la clase base son pblicos la subclase los hereda todos.
Protected: proporciona acceso pblico para las subclases y acceso privado para el
resto de las clases.
Ahora por norma los atributos de las clases se manejan privados, con el objetivo de
salvaguardar su integridad.
Ejemplo:
class Sumar {
import javax.swing.JOptionPane;
int a, b ; double n,
n1;
String num, op;
Importancia de la sobrecarga.
Habr que tener muy en cuenta los parmetros que se envan y las conversiones por
defecto para saber que mtodo se ejecuta.
Si tenemos a los mtodos public void calcular (float x) y public void calcular (double
x) en dos clases diferentes.
A pesar de tener el mismo nombre, Java los considera como mtodos distintos
porque manejan parmetros distintos por lo tanto los hereda.
import javax.swing.JOptionPane;
class Persona {
private String nombre;
private int edad;
public void asignar (String n, int e)
{ nombre = n; edad = e; }
public String traerN() {
return nombre;}
}
class Alumno extends Persona {
private int totcredito, puntos;
private String carrera;
public void asignar ( int t, int p, String carr)
{ totcredito = t;
puntos = p;
carrera = carr;
}
public double calcularIndice () {
double indice; indice =
puntos/totcredito;
return indice ; } }
public class HerenciaS {
public static void main(String[] args) {
Alumno obj = new Alumno (); int edad, cre, punto ; String input , carr ,nom;
el objeto trian
area () asignar(4 5)
4*5/2 ancho = 4
retorna altura = 5
10
SALIDA:
AREA DEL TRAINGULO = 10
Ahora exprese usted grficamente cual sera la ejecucin del objeto recta.
CONSTRUCTORES Y LA HERENCIA.
La primera lnea del constructor de la subclase debe incluir una llamada al constructor
de la clase base, esta llamada se hace a travs de super(). Los argumentos que se
vayan a transmitir se incluyen como lista de argumentos actuales.
Ejemplo:
class Persona {
protected String nom;
public Persona (String n) {
nom = n;
}
SOBREESCRITURA DE MTODOS.
Por lo tanto:
FORMATOS:
super.miembro
Ejemplo: super.cuenta // atributo de la superclase que ha sido sobrescrito por
// una subclase