Sunteți pe pagina 1din 17

Fundamentos de la Herencia.

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 ()

Figura#1. Relacion de clase vs objetos


alejandra

En la representacin tenemos varios objetos alejandra, pedro y mario, todos ellos


toman la estructura de la clase Persona y todos pueden utilizar a asignar() y a
calcularedad(), los objetos posee datos propios por lo tanto los comportamientos del
mtodo calcularedad() probablemente no sern los mismos, pero lo que si es cierto es
que los tres objetos se les puede calcular la edad.

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

FIGURA # 2. Representacin de la herencia

Preparado por: Msc Ludia Gmez de Melndez 1


Fundamentos de la Herencia.

En esta figura se observan varias clases Medico, Internista, Cirujano y


Odontologo representadas de manera jerrquica. Esta representacin jerrquica
dentro de la relacin entre clases se le denominada herencia, lo cual se define
como la capacidad de crear nuevas clases a partir de clases existentes.
Este es la segunda caracterstica de la POO.

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.

Si se desea ms detalle podemos crear muchos ms niveles de especializacin al


indicar otros subconjuntos del conjunto Cirujano, por ejemplo, se puede hablar
de cirujanos cardiovasculares, cirujanos plsticos, cirujanos obstetra, que siendo
Mdicos poseen funciones y caractersticas muy particulares o especficas, a las
antes mencionadas.

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.

Una clase slo puede heredar de una Superclase.

Preparado por: Msc Ludia Gmez de Melndez 2


Fundamentos de la Herencia.

Herencia Mltiple.

Una subclase puede heredar de varias superclases.


Java no maneja herencia mltiple.
.

Figura # 3. Tipos de herencia

REPRESENTACIN JERRQUICA DE LA HERENCIA.

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.

Se basa en la existencia de relaciones de generalizacin/especializacin entre


clases. En la figura #4 la generalizacin est en EMPLEADO y la
especializacin en DIRECTIVOS.

Preparado por: Msc Ludia Gmez de Melndez 3


Fundamentos de la Herencia.

La herencia se expresa a travs de jerarqua de clases, donde una clase va a


hereda los atributos y mtodos de las clases superiores en esa jerarqua y a
esto se le denomina herencia transitiva, la cual se observa en la figura #4
(b), donde la clase TIEMPO COMPLETO heredara los miembros de PROFESOR
y de PERSONA.

La subclase hereda la estructura y el comportamiento de la clase base, pero


puede tener sus propios atributos y mtodos adicionales a lo heredado.

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.

Al poseer miembros propios cada clase puede ser tratada de forma


independiente es decir que se pueden instanciar objetos de cada una de ellas
segn sea la necesidad.

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

Preparado por: Msc Ludia Gmez de Melndez 4


Fundamentos de la Herencia.

Clase Base: PERSONAS


Subclases: ESTUDIANTES, EMPLEADOS, PERMANENTE, TEMPORAL EMPLEADO
es clase base de PERMANENTE Y TEMPORAL.

En tiempo de ejecucin la estructura del objeto (josue) que pertenezca a la clase


PERMANENTE, puede acceder a los miembros que a continuacin vemos:

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.

Cirujano es ms especfico que Mdico. Luego tiene sentido que Cirujano


herede de Medico.
Debemos usar herencia cuando tenemos un comportamiento que se puede
reutilizar entre varias otras clases del mismo tipo genrico.

Preparado por: Msc Ludia Gmez de Melndez 5


Fundamentos de la Herencia.

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.

En Java la implementacin de la herencia se realiza mediante la palabra reservada


extends.
DECLARACIN DE LA HERENCIA EN JAVA.

class claseDerivada extends claseBase {

____________
___________ Miembros de la clase

claseBase: es el nombre de la clase de la cual se va a extender una clase derivada.


ClaseDerivada: es una clase compuesta con miembros de la
superclase(miembros heredados) y miembros propios definidos en ella.

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 {

private int totcredito, puntos;


private String carrera;
public void asignarAlumno ( int t, int p, String carr)
{ totcredito = t; puntos = p; carrera = carr; }
public double calcularIndice () {
double indice;
indice = puntos/totcredito;

Preparado por: Msc Ludia Gmez de Melndez 6


Fundamentos de la Herencia.

return indice ; } }

public class Herencia { public static void main(String[] args) {


Alumno obj = new Alumno ();
int edad, cre, punto ; String input ,
carr ,nom;

nom = JOptionPane.showInputDialog("Introduzca el nombre");


input = JOptionPane.showInputDialog("Introduzca la edad");
edad = Integer.parseInt(input);
carr = JOptionPane.showInputDialog("Introduzca su CARRERA");
input = JOptionPane.showInputDialog("Introduzca TOTAL DE CREDITOS");
cre = Integer.parseInt(input);
input = JOptionPane.showInputDialog("Introduzca TOTAL DE PUNTOS
OBTENIDOS") ;
punto = Integer.parseInt(input);
obj.asignar(nom , edad) ;
obj.asignarAlumno(cre, punto, carr);
JOptionPane.showMessageDialog(null,"NOMBRE: " + obj.traerN() + "\n INDICE
="+ obj.calcularIndice() );
System.exit(0);
}}

Realice los siguientes procesos, considerando la clase anterior

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

MODIFICADORES DE ACCESO Y LA HERENCIA.

Los miembros que se heredan por una subclase son aquellos declarados como
public, protected o defecto.

Por defecto siempre y cuando estn en el mismo paquete de la superclase, sern


pblicos a las subclases.

Privados: las subclases no heredan miembros privados de la superclase.

Preparado por: Msc Ludia Gmez de Melndez 7


Fundamentos de la Herencia.

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.

Para tener acceso a los miembros privados que se encapsulan en la superclase, la


superclase debe poseer mtodos intermediarios (traerXXX), que tienen como
nica funcin retornar el contenido del dato o del proceso que se realiza en el
mtodo. Este mtodo debe ser pblico dentro de la clase base.

Las subclases no heredan un miembro de la superclase si la subclase declara


miembros con el mismo nombre (sobreescritura). En el caso de los atributos, el
atributo de la subclase oculta al correspondiente de la superclase y en el caso de los
mtodos, el mtodo de la subclase anula el de la superclase.

SOBRECARGAR DE MTODOS EN LA HERENCIA.

Al proceso de definir dos o ms mtodos que compartan el mismo nombre, se le


conoce como sobrecarga de mtodos. Se puede dar dentro de una misma clase o
cuando se maneja la herencia. La sobrecarga sin la herencia, se da cuando se tienen
dos o ms mtodos, dentro de una misma clase con el mismo nombre, pero con
cantidad de argumentos y tipo de datos diferentes. La sobrecarga no considera el
tipo de dato que devuelva el mtodo, para identificar la sobrecarga

Ejemplo:

class Sumar {

public static int calcular(int num, int num1 ) {


int sum;
sum = num + num1;
return sum; }
public static double calcular(double num, double num1 ) {
double sum;
sum = num + num1;
return sum; } }

import javax.swing.JOptionPane;

class Sobrecarga { public static void main (String arg[]){

Preparado por: Msc Ludia Gmez de Melndez 8


Fundamentos de la Herencia.

int a, b ; double n,
n1;
String num, op;

op = JOptionPane.showInputDialog("\n 1. Suma de Enteros \n 2. Suma de Reales \n\n\n\nQue


suma deseas realizar"); switch (Integer.parseInt(op)){
case 1: { num = JOptionPane.showInputDialog("Introduzca el
primer numero"); a = Integer.parseInt(num);
num = JOptionPane.showInputDialog("Introduzca el segundo numero");
b = Integer.parseInt(num);
JOptionPane.showMessageDialog(null,"LA SUMA =" +
Sumar.calcular(a,b),"Respuesta",JOptionPane.PLAIN_MESSAGE);
break;}
case 2: {

num = JOptionPane.showInputDialog("Introduzca el primer numero");


n = Double.parseDouble(num);
num = JOptionPane.showInputDialog("Introduzca el segundo numero");
n1 = Double.parseDouble(num);
JOptionPane.showMessageDialog(null,"LA SUMA ="
+Sumar.calcular(n,n1),"Respuesta",JOptionPane.PLAIN_MESSAGE);
break; } }
System.exit(0); } }

Cuando Java encuentra una llamada a mtodos sobrecargados, se ejecutar la


versin del mtodo cuyos parmetros coincidan con la argumentacin utilizada en la
llamada.

En el ejemplo anterior la sobrecarga del mtodo calcular(..), se da para realizar


sumas tanto de nmeros enteros como reales; donde calcular((..) es la accin
general que se va a llevar a cabo. Queda para el compilador la eleccin de la versin
adecuada dada las circunstancias particulares de lgica de cada usuario.

Regla: cuando se sobrecarga un mtodo cada versin de ese mtodo debe


relacionarse con las dems. Por principio de programacin la sobrecarga de mtodos
debe implicar una relacin. Aunque se puede utilizar el mismo nombre para
sobrecargar mtodos que no estn relacionados no se debe hacer

Importancia de la sobrecarga.

La importancia de la sobrecarga se da cuando se requiere en el mundo real realizar


actividades que siendo funcionalmente lo mismo no lo son en los procesos que
involucran a los datos que lo conforman y los lenguaje de programacin permite
canalizar esta relacin creando mtodos a los que se pueden acceder mediante el
uso de un nombre comn. Ejemplo tpico de ello lo vemos en la clase Math la cual
maneja varios mtodos sobrecargados para determinar el valor absoluto de un
nmero.

Preparado por: Msc Ludia Gmez de Melndez 9


Fundamentos de la Herencia.

public static int abs(int a) { public static long abs(long a) {


return (a < 0) ? -a : a; return (a < 0) ? -a : a;
} }

public static double abs(double a) {


public static float abs(float a) { return (a <=0.0D) ? 0.0D - a : a;
return (a <=0.0F) ? 0.0F - a : a; }
}

Veamos ahora la sobrecarga en la herencia

La sobrecarga de mtodos significa tener varias implementaciones del mismo


mtodo con parmetros distintos, tanto en la clase base como en las subclases.

El nombre a de ser el mismo.


El tipo de retorno puede ser el mismo o distinto.
La lista de parmetros tiene que ser distintos (en cantidad y tipo de
dato).
El modificador de acceso puede ser distinto.

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.

public void calcular (float x) public void calcular (double x) {


{ : :
: :
} }
Ejemplo a Ejemplo b

Al ejecutar obj.calcular (4.7F) se ejecutar el ejemplo a y si tenemos ahora


obj.calcular (4.7) se ejecutar el ejemplo b. Recordemos que un nmero real por
defecto es double.

A pesar de tener el mismo nombre, Java los considera como mtodos distintos
porque manejan parmetros distintos por lo tanto los hereda.

Preparado por: Msc Ludia Gmez de Melndez 10


Fundamentos de la Herencia.

Veamos a continuacin un ejemplo completo:

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;

nom = JOptionPane.showInputDialog("Introduzca el nombre"); input


= JOptionPane.showInputDialog("Introduzca la edad"); edad =
Integer.parseInt(input);
carr = JOptionPane.showInputDialog("Introduzca su CARRERA");
input = JOptionPane.showInputDialog("Introduzca TOTAL DE CREDITOS"); cre
= Integer.parseInt(input); input = JOptionPane.showInputDialog("Introduzca
TOTAL DE PUNTOS OBTENIDOS") ; punto =
Integer.parseInt(input); obj.asignar(nom , edad) ; obj.asignar(cre,
punto, carr);
JOptionPane.showMessageDialog(null,"NOMBRE: " + obj.traerN() + "\n INDICE
="+ obj.calcularIndice() );
System.exit(0);
}}

Se sobrecarga el mtodo asignar y ambos miembros pueden ser manejados por el


mismo objeto sin ninguna restriccin.

Preparado por: Msc Ludia Gmez de Melndez 11


Fundamentos de la Herencia.

class Poligono { REPRESENTACION JERARQUICA

protected int ancho , altura;


POLIGONO
public void asignar (int a, int b) {
ancho=a; altura=b;} }

class Rectangulo extends Poligono {


public int area() {
return (ancho * altura); } } RECTANGULO TRIANGULO
class Triangulo extends Poligono
{ public int area() { return
(ancho * altura / 2);
}
}
class Herencia2 { public static void main(String[] args) {
Rectangulo recta; Triangulo trian;
recta= new Rectangulo(); trian = new
Triangulo(); recta.asignar (4,5); trian.asignar
(4,5);
System.out.print("AREA DEL RECTANGULO: " + recta.area()
+ "\nAREA DEL TRIANGULO: "+ trian.area () );
}}

Al ejecutar este programa desde la clase Principal se crean 2 objetos y se reutiliza


el mtodo asignar(), por cada objeto y cada clase maneja sus propios mtodos
para calcular el rea respectiva. En este ejemplo no se da sobrecarga de mtodos,
ya que la misma se da sobre una misma clase o sobre herencia entre clase. Si
trabajamos con trian su ejecucin sera:

Preparado por: Msc Ludia Gmez de Melndez 12


Fundamentos de la Herencia.

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.

Las subclases no heredan los constructores de la superclase.

SINTAXIS DEL CONSTRUCTOR:

La sintaxis del constructor de una subclase sera:

Modificador subclase ( lista de parmetros) {

super (lista de parmetro actual de la clase base)

// cuerpo del constructor de la subclase


}

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:

Preparado por: Msc Ludia Gmez de Melndez 13


Fundamentos de la Herencia.

class Persona {
protected String nom;
public Persona (String n) {
nom = n;
}

class Juvenil extends Persona { private


int edad;
public Juvenil (String n, int ed) super
(n);
edad = ed;}
}

El constructor de la clase base se llama antes de que se ejecute el cuerpo del


constructor de la subclase. Tiene sentido esto, ya que el objeto base constituye el
fundamento del objeto derivado (se necesita el objeto base antes de convertirse en
objeto derivado). De existir varios constructores (sobrecarga), el constructor
ejecutado ser el primero al que corresponda los parmetros en cantidad y/o tipo
de dato.
El constructor de la subclase debe:

inicializar el objeto base


inicializar todos los miembros datos.

SOBRECARGA DE CONSTRUCTORES EN LA HERENCIA.

Los constructores tambin se pueden sobrecargar. Y ser ejecutado el primero


al que corresponda la cantidad de parmetros y tipos de datos de los mismos.
Es posible crear objetos con diferentes inicializaciones, dependiendo de la
cantidad de parmetros que se enven al momento de crear el objeto.

Ventaja permite crear objetos inicializados de diferente forma, dependiendo de lo


que el programador necesite.

SOBREESCRITURA DE MTODOS.

Sobrescribir un mtodo significa que una subclase re implementa un mtodo


heredado. Para sobrescribir un mtodo hay que respetar totalmente la declaracin
del mtodo.

Preparado por: Msc Ludia Gmez de Melndez 14


Fundamentos de la Herencia.

El nombre a de ser el mismo


El parmetro y tipo de retorno han de ser los mismos.
El modificador de acceso no puede ser ms restrictivo que el de la
clase base.

Al ejecutar un mtodo se busca su implementacin de abajo hacia arriba en la


jerarqua de clase.

Por lo tanto:

Miembros tipo atributo con el mismo nombre en la subclase y en la clase base


se ocultan para la subclase. En el caso de los mtodos si el nombre y la lista
de parmetros es la misma tambin se ocultan
Cuando se presenta una relacin de herencia el hijo puede redefinir el
comportamiento de un mtodo en particular.
Si instanciamos un objeto a la subclase los miembros con el mismo nombre
que correspondan a la clase base se ocultan para el objeto.

Si el mtodo de la subclase necesita invocar al mtodo de la superclase que ha sido


ocultado debe utilizar a la palabra reservada super.

FORMATOS:

Para miembros tipo datos

super.miembro
Ejemplo: super.cuenta // atributo de la superclase que ha sido sobrescrito por
// una subclase

Para miembros tipo mtodos.

super.nombredelmtodo (lista de parmetros)

super.asignar ( int num, int num2);

Preparado por: Msc Ludia Gmez de Melndez 15


Fundamentos de la Herencia.

EJEMPLO DE MANEJO DE HERENCIA EN JAVA.


private Date fechaa;
import java.util.*; private int aservicio;
public class Empleado {
Date fechadeingreso; public Permanente(int year , int mes, int day , int ht,
int horast; double double t, double d , int year1 , int mes1, int day1 ) {
tarifa,deduc;
public Empleado (int year , int mes, int day , int ht, super ( year , mes, day , ht, t, d );
double t, double d
){
GregorianCalendar actual = new
GregorianCalendar (year1 ,mes1 , day1 );
GregorianCalendar ingreso = new fechaa = actual.getTime();
GregorianCalendar (year ,mes , day aservicio = 0 ; }
); fechadeingreso =
ingreso.getTime(); horast = ht; public void calcularas() {
tarifa= t; deduc = d; } aservicio = fechaa.getYear() -
fechadeingreso.getYear();
public double calcularsalario() {
return (horast*tarifa * 30 - deduc); } }
public double calcularvac(){
public double calcularXIII(double salario){ double salariovac; salariovac =
return salario / 3; } calcularsalario() * 2; return salariovac;
} }

public int traerAS() {


return aservicio; }
}
import java.util.*; public class
Permanente extends Empleado{
import
javax.swing.*;
public class Principal { public static void main(String[] args) {
int year=0,mes=0,day=0,ht=0;
int year1=0,mes1=0,day1=0 ;
int i;
Boolean leido;
double t=0, d=0;
String input; for
(i=1; i<=1; i++){
do{
try{
input = JOptionPane.showInputDialog ("Introduzca el AO DE INGRESO ");
year = Integer.parseInt(input);
input = JOptionPane.showInputDialog ("Introduzca el MES DE INGRESO ");
mes = Integer.parseInt(input);
input = JOptionPane.showInputDialog ("Introduzca el DIA DE INGRESO ");
day = Integer.parseInt(input);
input = JOptionPane.showInputDialog ("Introduzca la cantidad de HORAS TRABAJADAS:");
ht = Integer.parseInt (input);
input = JOptionPane.showInputDialog ("Introduzca la TARIFA POR HORAS:");
t = Double.parseDouble (input);

Preparado por: Msc Ludia Gmez de Melndez 16


Fundamentos de la Herencia.

input = JOptionPane.showInputDialog ("Introduzca las DEDUCCIONES:");


d = Double.parseDouble (input);
input = JOptionPane.showInputDialog ("Introduzca el AO ACTUAL ");
year1 = Integer.parseInt(input);
input = JOptionPane.showInputDialog ("Introduzca el MES ACTUAL ");
mes1 = Integer.parseInt(input);
input = JOptionPane.showInputDialog ("Introduzca el DIA ACTUAL "); day1 =
Integer.parseInt(input);
leido = true;
Permanente empe = new Permanente (year ,mes,day , ht, t, d, year1 , mes1,day1) ;
empe.calcularas();
JOptionPane.showMessageDialog (null, " \n\n AOS DE SERVICIO = "+ empe.traerAS() +" \n\n
SALARIO MENSUAL ACTUAL = "+ empe.calcularsalario());
}//try
catch (Exception error){
leido = false;
JOptionPane.showMessageDialog(null,"ERROR: " + error);
} //catch
} while (!leido); //do
}//for }}

Preparado por: Msc Ludia Gmez de Melndez 17

S-ar putea să vă placă și