Está en la página 1de 18

TECNICAS DE PROGRAMACION

Universidad Católica Los Angeles de Chimbote

PROGRAMACION Universidad Católica Los Angeles de Chimbote HERENCIA DE CLASES A través de la herencia, una

HERENCIA DE CLASES

Católica Los Angeles de Chimbote HERENCIA DE CLASES A través de la herencia, una clase nueva

A través de la herencia, una clase nueva hereda los atributos y métodos de una superclase previamente definida. En este caso decimos que la nueva clase es una subclase. En la herencia simple, una clase se hereda de una superclase. Java no reconoce la herencia múltiple, pero si maneja el concepto de interfaces. Las interfaces ayudan a java a lograr muchas de las ventajas de la herencia múltiple. Una subclase normalmente agrega sus propios atributos y métodos. De modo que una subclase generalmente es mayor que su superclase. Una subclase es más específica que su superclase y representa un grupo más pequeño de objetos. El verdadero valor de la herencia radica en la capacidad de definir en la subclase

TECNICAS DE PROGRAMACION

Universidad Católica Los Angeles de Chimbote

adiciones a las características heredadas de la superclase o sustituciones de estas. Todo objeto de una subclase es también un objeto de la superclase de esa subclase. Sin embargo no se cumple lo opuesto: los objetos de una superclase no son objetos de las subclases de esa superclase. Las relaciones de herencia forman estructuras jerárquicas similares a un árbol. Una superclase existe en una relación Jerárquica con sus subclases. Sin duda, una clase puede existir sola, pero es cuando una clase se emplea con el mecanismo de herencia que se convierte ya sea en una superclase que proporciona atributos y comportamientos a otras clases, o en una subclase que hereda dichos atributos y comportamientos. Ejemplos:

Persona

dichos atributos y comportamientos. Ejemplos: Persona Empleado Profesor Contador Estudiante Religiosos
dichos atributos y comportamientos. Ejemplos: Persona Empleado Profesor Contador Estudiante Religiosos
Empleado Profesor Contador
Empleado
Profesor
Contador
Estudiante Religiosos
Estudiante
Religiosos

Universitario

Instituto Colegio

Por ejemplo en una ciudad existen Personas las cuales pueden ser Empleados, Estudiantes, Religiosos. Los Empleados pueden ser Profesor, Contador. Los estudiantes pueden ser Universitarios, de Institutos y Colegios. Las subclases heredan el estado y el comportamiento en forma de las variables y los métodos de su superclase. La subclase puede utilizar los ítems heredados de su superclase tal y como son, o puede modificarlos o sobreescribirlos. Por eso, según se va bajando por el árbol de la herencia, las clases se convierten en más y más especializadas.

TECNICAS DE PROGRAMACION

Universidad Católica Los Angeles de Chimbote

Miembros Protected

Los miembros protected de una superclase sólo están accesibles para los

métodos de la superclase, los métodos de las subclases y los métodos de otras

clases del mismo paquete.

Relacion entre Objetos de superclase y objetos de subclase

Un objeto de una subclase se puede tratar como objeto de su superclase

correspondiente. Esto hace posible ciertas manipulaciones interesantes. Por

ejemplo, a pesar del hecho de que los objetos de diversas clases derivadas de

una superclase en particular pueden ser muy diferentes entre sí, podemos crear

un arreglo de ellos, en tanto los tratemos como objetos de la superclase. Lo

contrario no se cumple un objeto de una superclase no es automáticamente

también un objeto de la subclase.

import java.io.*;

class Punto{ protected double x; protected double y;

public Punto()

{

}

x=0;

y=0;

public Punto(double a, double b)

{

x=a;

y=b;

}

public void setX(double a)

TECNICAS DE PROGRAMACION

Universidad Católica Los Angeles de Chimbote

{

x=a;

}

public void setY(double b)

{

y=b;

}

public double getX()

{

return x;

}

public double getY()

{

return y;

}

public String toString()

{

return "("+x+","+y+")";

}

}

class Circulo extends Punto{ protected double radio;

public Circulo()

{

}

super();

radio=0;

TECNICAS DE PROGRAMACION

Universidad Católica Los Angeles de Chimbote

public Circulo(double a, double b, double r)

{

 

super(a,b);

radio=r;

}

public void setRadio(double a)

{

}

radio=a;

public double getRadio()

{

return radio;

}

public double area()

{

return Math.PI*Math.pow(radio,2);

}

public String toString()

{

return "Centro = "+super.toString()+" Radio = "+radio;

}

}

public class HerenciaPuntoCirculo{ public static void main(String args[]) throws IOException

{

Punto P= new Punto(3,4); Circulo C=new Circulo(6,9,12); System.out.println(P); System.out.println(C);

TECNICAS DE PROGRAMACION

Universidad Católica Los Angeles de Chimbote

System.out.println("Area del Circulo : "+C.area());

}

}

La clase Circulo hereda de la clase Punto esto se especifica en:

class Circulo extends Punto{ La palabra clave extends (extiende) de la definición de clase indica herencia. Todos los miembros (no private) de la clase Punto se heredan en la clase Circulo. Los constructores de Circulo deben invocar al constructor de Punto para inicializar la porción de superclase de un objeto de la clase Circulo. La primer línea del cuerpo de cada constructor invoca al constructor de Punto mediante la referencia a super. Una subclase pude redefinir un método de superclase empleando el mismo nombre, esto se denomina supeditar un método de superclase. Se puede usar la referencia super seguida por el operador punto para acceder a la versión de superclase de ese método desde la subclase.

Veamos un ejemplo gráfico:

de ese método desde la subclase. Veamos un ejemplo gráfico: Docente: Ing. Martín Salcedo Quiñones Pagina:

TECNICAS DE PROGRAMACION

Universidad Católica Los Angeles de Chimbote

Trabajador es una clase genérica que sirve para almacenar datos como el nombre, la dirección, el número de teléfono o el número de la seguridad social de un trabajador. Empleado es una clase especializada para representar los empleados que tienen una nómikna mensual (encapsula datos como su salario anual) Consultor es una clase especializada para representar a aquellos trabajadores que cobran por horas (por ejemplo, registra el número de horas que ha trabajado un consultor y su tarifa horaria).

de horas que ha trabajado un consultor y su tarifa horaria). Las clases Empleado y Consultor,

Las clases Empleado y Consultor, además de los atributos y de las operaciones que definen, heredan de Trabajador todos sus atributos y operaciones.

TECNICAS DE PROGRAMACION

Universidad Católica Los Angeles de Chimbote

PROGRAMACION Universidad Católica Los Angeles de Chimbote Un empleado concreto tendrá, además de sus atributos y

Un empleado concreto tendrá, además de sus atributos y operaciones como

Empleado, todos los atributos correpondientes a la superclase Trabajador.

El diagrama indicado se debe escribir en programacion en Java de la siguiente

manera:

import java.util.Date; class Trabajador

{

private String nombre; private String puesto; private String direccion; private String telefono; private Date fecha_nacimiento; private Date fecha_contrato; private String NSS;

//constructor public Trabajador (String nombre,String NSS)

{

this.nombre=nombre;

TECNICAS DE PROGRAMACION

Universidad Católica Los Angeles de Chimbote

this.NSS=NSS;

}

//comparación de objetos

Public boolean equals (Trabajador t)

{

return this.NSS.equals(t.NSS);

}

//conversión en una cadena de caracteres public String toString()

{

return nombre + “ (NSS “ + NSS + “ ) “;

}

}

class Empleado extends Trabajador

{

double sueldo; private double impuestos; private final int PAGAS=14;

//constructor public Empleado(String nombre, String NSS, double sueldo)

{

super(nombre, NSS); this.sueldo=sueldo; this.impuestos=0.2 * sueldo;

}

public double calcularPaga()

{

return (sueldo - impuestos) / PAGAS;

}

TECNICAS DE PROGRAMACION

Universidad Católica Los Angeles de Chimbote

public String toString()

{

return “Empleado “+super.toString();

}

}

Con la palabra reservada extends indicamos que Empleado es una subclase de

Trabajador. Con la palabra super accedemos a miembros de la superclase desde

la subclase.

Generalmente, en un método constructor, lo primero que nos encontramos es una

llamada al constructor de la clase padre con super(…). Si no ponemos nada, se

llama al constructor por defecto de la superclase antes de ejecutar el constructor

de la subclase.

class Consultor extends Trabajador

{

private int horas; private double tarifa;

//constructor public Consultor(String nombre, String NSS, int horas, double tarifa)

{

super(nombre, NSS); this.horas=horas; this.tarifa=tarifa;

}

public double calcularPaga()

{

return horas * tarifa;

}

public String toString()

{

TECNICAS DE PROGRAMACION

Universidad Católica Los Angeles de Chimbote

return “Consultor ”+super.toString();

}

}

La clase Consultor también define un método llamado calcularPaga(), si bien en este caso el cálculo se hace de una forma diferente por tratarse de un trabajador de un tipo distinto. Tanto la clase Empleado como la clase Consultor redefinen el método toString() que convierte un objeto en una cadena de caracteres. De hecho, Trabajador también redifine éste método, que se hereda de la clase Object, la clase base de la que heredan todas las clases de Java.

Redifinición de métodos Como hemos visto en el ejemplo con el método toString(), cada subclase hereda las operaciones de su superclase pero tiene la posibilidad de modificar localmente el comportamiento de dichas operaciones (redifiniendo métodos). Continuamos con el caso Trabajador, Empleado y Consultor.

public class UsandoHerencia

{

public static void main(String args[ ])

{

//Declaracion de variables Trabajador trabajador; Empleado empleado; Consultor consultor; //Creación de objetos trabajador = new Trabajador(“Juan”,”456”); empleado = new Empleado(“Jose”,”123”,24000.0); consultor = new Consultor(“Juan”,”456”, 10, 50.0);

TECNICAS DE PROGRAMACION

Universidad Católica Los Angeles de Chimbote

System.out.println(trabajador); System.out. println(empleado); System.out.println(consultor); System.out.println(trabajador.equals(empleado)); System.out.println(trabajador.equals(consultor));

}

}

EJECUTANDO LA APLICACIÓN EN NETBEANS

1. Crea un proyecto denominado: Sesion09_Aplicaciones

1. Crea un proyecto denominado: Sesion09_Aplicaciones Observa que debes crear la clase principal UsandoHerencia

Observa que debes crear la clase principal UsandoHerencia dentro del paquete sesion09_aplicaciones. Luego dar clic en el botón de comando Terminar

2. Ahora se observa el entorno de NetBeans listo para colocar la programación de la reciente aplicación.

TECNICAS DE PROGRAMACION

Universidad Católica Los Angeles de Chimbote

PROGRAMACION Universidad Católica Los Angeles de Chimbote 3. Selecciona el paquete sesion09_aplicaciones y dar clic el

3.

Selecciona el paquete sesion09_aplicaciones y dar clic el botón derecho del mouse y selecciona Clase Java.

y dar clic el botón derecho del mouse y selecciona Clase Java . Docente: Ing. Martín

TECNICAS DE PROGRAMACION

Universidad Católica Los Angeles de Chimbote

4. Procede a crear la clase Trabajador. 5. Colocar el código corresponidente a la clase
4.
Procede a crear la clase Trabajador.
5.
Colocar el código corresponidente a la clase Trabajador.
5. Colocar el código corresponidente a la clase Trabajador. Docente: Ing. Martín Salcedo Quiñones Pagina: 14

TECNICAS DE PROGRAMACION

Universidad Católica Los Angeles de Chimbote

6. Luego, procede a crear la clase Empleado desde el paquete sesion09_aplicaciones tal como se
6.
Luego,
procede
a
crear
la
clase
Empleado
desde
el
paquete
sesion09_aplicaciones tal como se hizo con la clase Trabajador.
7.
Colocar el código correspondiente a la clase Empleado.
7. Colocar el código correspondiente a la clase Empleado. Docente: Ing. Martín Salcedo Quiñones Pagina: 15

TECNICAS DE PROGRAMACION

Universidad Católica Los Angeles de Chimbote

8. Luego, procede a crear la clase Consultor desde el paquete sesion09_aplicaciones tal como se
8.
Luego,
procede
a
crear
la
clase
Consultor
desde
el
paquete
sesion09_aplicaciones tal como se hizo con la clase Trabajador.
9.
Colocar el código correspondiente a la clase Consultor.
9. Colocar el código correspondiente a la clase Consultor. Docente: Ing. Martín Salcedo Quiñones Pagina: 16

TECNICAS DE PROGRAMACION

Universidad Católica Los Angeles de Chimbote

10. Posteriormente colocar la programación en la clase UsandoHerencia.

colocar la programación en la clase UsandoHerencia. 11. Como la clase UsandoHerencia contiene al metodo main

11. Como la clase UsandoHerencia contiene al metodo main procedemos a ejecutar este programa.

contiene al metodo main procedemos a ejecutar este programa. Docente: Ing. Martín Salcedo Quiñones Pagina: 17

TECNICAS DE PROGRAMACION

Universidad Católica Los Angeles de Chimbote

La ejecución arroja lo siguiente:

Católica Los Angeles de Chimbote La ejecución arroja lo siguiente: Docente: Ing. Martín Salcedo Quiñones Pagina: