2. Cdigo Fuente
/Fig.10.4:Empleado.java //estableceelapellidopaterno
//LasuperclaseabstractaEmpleado. publicvoidestablecerApellidoPaterno(Stringapellido)
{
publicabstractclassEmpleado apellidoPaterno=apellido;
{ }//findelmtodoestablecerApellidoPaterno
privateStringprimerNombre; //devuelveelapellidopaterno
privateStringapellidoPaterno; publicStringobtenerApellidoPaterno()
privateStringnumeroSeguroSocial; {
returnapellidoPaterno;
//constructorcontresargumentos }//findelmtodoobtenerApellidoPaterno
publicEmpleado(Stringnombre,Stringapellido,Stringnss) //estableceelnmerodesegurosocial
{ publicvoidestablecerNumeroSeguroSocial(Stringnss)
primerNombre=nombre; {
apellidoPaterno=apellido; numeroSeguroSocial=nss;//debevalidar
numeroSeguroSocial=nss; }//findelmtodoestablecerNumeroSeguroSocial
}//findelconstructordeEmpleadocontresargumentos //devuelveelnmerodesegurosocial
publicStringobtenerNumeroSeguroSocial()
//estableceelprimernombre {
publicvoidestablecerPrimerNombre(Stringnombre) returnnumeroSeguroSocial;
{ }//findelmtodoobtenerNumeroSeguroSocial
primerNombre=nombre; //devuelverepresentacinStringdeunobjetoEmpleado
}//findelmtodoestablecerPrimerNombre publicStringtoString()
{
//devuelveelprimernombre returnString.format("%s%s\nnumerodesegurosocial:%s",
publicStringobtenerPrimerNombre() obtenerPrimerNombre(),obtenerApellidoPaterno(),
{ obtenerNumeroSeguroSocial());
returnprimerNombre; }//findelmtodotoString
}//findelmtodoobtenerPrimerNombre //mtodoabstractosobrescritoporlassubclases
publicabstractdoubleingresos();//aqunohayimplementacin
}//findelaclaseabstractaEmpleado
No. Control 16081846 Nombre del Alumno GARCA GMEZ MARITZA DAYHANA
2. Cdigo Fuente
//Fig.10.5:EmpleadoAsalariado.java //Fig.10.8:EmpleadoBaseMasComision.java
//LaclaseEmpleadoAsalariadoextiendeaEmpleado. //LaclaseEmpleadoBaseMasComisionextiendeaEmpleadoPorComision.
publicclassEmpleadoBaseMasComisionextendsEmpleadoPorComision
publicclassEmpleadoAsalariadoextendsEmpleado {
{ privatedoublesalarioBase;//salariobaseporsemana
privatedoublesalarioSemanal; //constructorconseisargumentos
publicEmpleadoBaseMasComision(Stringnombre,Stringapellido,
//constructordecuatroargumentos Stringnss,doubleventas,doubletarifa,doublesalario)
publicEmpleadoAsalariado(Stringnombre,Stringapellido,Stringnss, {
doublesalario) super(nombre,apellido,nss,ventas,tarifa);
{ establecerSalarioBase(salario);//validayalmacenaelsalariobase
super(nombre,apellido,nss);//lospasaalconstructordeEmpleado }//findelconstructordeEmpleadoBaseMasComisionconseisargumentos
establecerSalarioSemanal(salario);//validayalmacenaelsalario //estableceelsalariobase
}//findelconstructordeEmpleadoAsalariadoconcuatroargumentos publicvoidestablecerSalarioBase(doublesalario)
{
//estableceelsalario salarioBase=(salario<0.0)?0.0:salario;//positivo
publicvoidestablecerSalarioSemanal(doublesalario) }//findelmtodoestablecerSalarioBase
{ //devuelveelsalariobase
salarioSemanal=salario<0.0?0.0:salario; publicdoubleobtenerSalarioBase()
}//findelmtodoestablecerSalarioSemanal {
//devuelveelsalario returnsalarioBase;
publicdoubleobtenerSalarioSemanal() }//findelmtodoobtenerSalarioBase
{ //calculalosingresos;sobrescribeelmtodoingresosen
returnsalarioSemanal; EmpleadoPorComision
}//findelmtodoobtenerSalarioSemanal publicdoubleingresos()
//calculalosingresos;sobrescribeelmtodoabstractoingresosenEmpleado {
publicdoubleingresos() returnobtenerSalarioBase()+super.ingresos();
{ }//findelmtodoingresos
returnobtenerSalarioSemanal(); //devuelverepresentacinStringdeunobjetoEmpleadoBaseMasComision
}//findelmtodoingresos publicStringtoString()
//devuelverepresentacinStringdeunobjetoEmpleadoAsalariado {
publicStringtoString() returnString.format("%s%s;%s:$%,.2f",
{ "consalariobase",super.toString(),
returnString.format("empleadoasalariado:%s\n%s:$%,.2f", "salariobase",obtenerSalarioBase());
super.toString(),"salariosemanal",obtenerSalarioSemanal()); }//findelmtodotoString
}//findelmtodotoString }//findelaclaseEmpleadoBaseMasComision
}//findelaclaseEmpleadoAsalariado
Ingeniera en Animacin Digital Asignatura: Programacin Orientada a Objetos
2. Cdigo Fuente
//Fig.10.8:EmpleadoBaseMasComision.java //Fig.10.8:EmpleadoBaseMasComision.java
//LaclaseEmpleadoBaseMasComisionextiendeaEmpleadoPorComision. //LaclaseEmpleadoBaseMasComisionextiendeaEmpleadoPorComision.
publicclassEmpleadoBaseMasComision3extendsEmpleadoPorComision publicclassEmpleadoBaseMasComision4extendsEmpleadoPorComision
{ {
privatedoublesalarioBase;//salariobaseporsemana privatedoublesalarioBase;//salariobaseporsemana
//constructorconseisargumentos //constructorconseisargumentos
publicEmpleadoBaseMasComision3(Stringnombre,Stringapellido, publicEmpleadoBaseMasComision4(Stringnombre,Stringapellido,
Stringnss,doubleventas,doubletarifa,doublesalario) Stringnss,doubleventas,doubletarifa,doublesalario)
{ {
super(nombre,apellido,nss,ventas,tarifa); super(nombre,apellido,nss,ventas,tarifa);
establecerSalarioBase(salario);//validayalmacenaelsalariobase establecerSalarioBase(salario);//validayalmacenaelsalariobase
}//findelconstructordeEmpleadoBaseMasComisionconseisargumentos }//findelconstructordeEmpleadoBaseMasComisionconseisargumentos
//estableceelsalariobase //estableceelsalariobase
publicvoidestablecerSalarioBase(doublesalario) publicvoidestablecerSalarioBase(doublesalario)
{ {
salarioBase=(salario<0.0)?0.0:salario;//positivo salarioBase=(salario<0.0)?0.0:salario;//positivo
}//findelmtodoestablecerSalarioBase }//findelmtodoestablecerSalarioBase
//devuelveelsalariobase //devuelveelsalariobase
publicdoubleobtenerSalarioBase() publicdoubleobtenerSalarioBase()
{ {
returnsalarioBase; returnsalarioBase;
}//findelmtodoobtenerSalarioBase }//findelmtodoobtenerSalarioBase
//calculalosingresos;sobrescribeelmtodoingresosen //calculalosingresos;sobrescribeelmtodoingresosen
EmpleadoPorComision EmpleadoPorComision
publicdoubleingresos() publicdoubleingresos()
{ {
returnobtenerSalarioBase()+super.ingresos(); returnobtenerSalarioBase()+super.ingresos();
}//findelmtodoingresos }//findelmtodoingresos
//devuelverepresentacinStringdeunobjetoEmpleadoBaseMasComision //devuelverepresentacinStringdeunobjetoEmpleadoBaseMasComision
publicStringtoString() publicStringtoString()
{ {
returnString.format("%s%s;%s:$%,.2f", returnString.format("%s%s;%s:$%,.2f",
"consalariobase",super.toString(), "consalariobase",super.toString(),
"salariobase",obtenerSalarioBase()); "salariobase",obtenerSalarioBase());
}//findelmtodotoString }//findelmtodotoString
}//findelaclaseEmpleadoBaseMasComision }//findelaclaseEmpleadoBaseMasComision
Ingeniera en Animacin Digital Asignatura: Programacin Orientada a Objetos
2. Cdigo Fuente
//Fig.10.7:EmpleadoPorComision.java //Fig.10.7:EmpleadoPorComision.java
//LaclaseEmpleadoPorComisionextiendeaEmpleado. //LaclaseEmpleadoPorComision3extiendeaEmpleado.
publicclassEmpleadoPorComisionextendsEmpleado publicclassEmpleadoPorComision3extendsEmpleado
{ {
privatedoubleventasBrutas;//ventastotalesporsemana privatedoubleventasBrutas;//ventastotalesporsemana
privatedoubletarifaComision;//porcentajedecomisin privatedoubletarifaComision;//porcentajedecomisin
//constructorconcincoargumentos //constructorconcincoargumentos
publicEmpleadoPorComision(Stringnombre,Stringapellido,Stringnss, publicEmpleadoPorComision3(Stringnombre,Stringapellido,Stringnss,
doubleventas,doubletarifa) doubleventas,doubletarifa)
{ {
super(nombre,apellido,nss); super(nombre,apellido,nss);
establecerVentasBrutas(ventas); establecerVentasBrutas(ventas);
establecerTarifaComision(tarifa); establecerTarifaComision(tarifa);
}//findelconstructordeEmpleadoPorComisionconcincoargumentos }//findelconstructordeEmpleadoPorComisionconcincoargumentos
//establecelatarifadecomisin //establecelatarifadecomisin
publicvoidestablecerTarifaComision(doubletarifa) publicvoidestablecerTarifaComision(doubletarifa)
{ {
tarifaComision=(tarifa>0.0&&tarifa<1.0)?tarifa:0.0; tarifaComision=(tarifa>0.0&&tarifa<1.0)?tarifa:0.0;
}//findelmtodoestablecerTarifaComision }//findelmtodoestablecerTarifaComision
//devuelvelatarifadecomisin //devuelvelatarifadecomisin
publicdoubleobtenerTarifaComision() publicdoubleobtenerTarifaComision()
{ {
returntarifaComision; returntarifaComision;
}//findelmtodoobtenerTarifaComision }//findelmtodoobtenerTarifaComision
//estableceelmontodeventasbrutas //estableceelmontodeventasbrutas
publicvoidestablecerVentasBrutas(doubleventas) publicvoidestablecerVentasBrutas(doubleventas)
{ {
ventasBrutas=(ventas<0.0)?0.0:ventas; ventasBrutas=(ventas<0.0)?0.0:ventas;
}//findelmtodoestablecerVentasBrutas }//findelmtodoestablecerVentasBrutas
//devuelveelmontodeventasbrutas //devuelveelmontodeventasbrutas
publicdoubleobtenerVentasBrutas() publicdoubleobtenerVentasBrutas()
{ {
returnventasBrutas; returnventasBrutas;
}//findelmtodoobtenerVentasBrutas }//findelmtodoobtenerVentasBrutas
//calculalosingresos;sobrescribeelmtodoabstractoingresosenEmpleado //calculalosingresos;sobrescribeelmtodoabstractoingresosenEmpleado
publicdoubleingresos() publicdoubleingresos()
{ {
returnobtenerTarifaComision()*obtenerVentasBrutas(); returnobtenerTarifaComision()*obtenerVentasBrutas();
}//findelmtodoingresos }//findelmtodoingresos
//devuelverepresentacinStringdeunobjetoEmpleadoPorComision //devuelverepresentacinStringdeunobjetoEmpleadoPorComision
publicStringtoString() publicStringtoString()
{ {
returnString.format("%s:%s\n%s:$%,.2f;%s:%.2f", returnString.format("%s:%s\n%s:$%,.2f;%s:%.2f",
"empleadoporcomision",super.toString(), "empleadoporcomision",super.toString(),
"ventasbrutas",obtenerVentasBrutas(), "ventasbrutas",obtenerVentasBrutas(),
"tarifadecomision",obtenerTarifaComision()); "tarifadecomision",obtenerTarifaComision());
}//findelmtodotoString }//findelmtodotoString
}//findelaclaseEmpleadoPorComision }//findelaclaseEmpleadoPorComision
Ingeniera en Animacin Digital Asignatura: Programacin Orientada a Objetos
2. Cdigo Fuente
//Fig.10.7:EmpleadoPorComision.java //Fig.10.6:EmpleadoPorHoras.java
//LaclaseEmpleadoPorComision3extiendeaEmpleado. //LaclaseEmpleadoPorHorasextiendeaEmpleado.
publicclassEmpleadoPorComision4extendsEmpleado publicclassEmpleadoPorHorasextendsEmpleado
{ {
privatedoubleventasBrutas;//ventastotalesporsemana privatedoublesueldo;//sueldoporhora
privatedoubletarifaComision;//porcentajedecomisin privatedoublehoras;//horastrabajadasporsemana
//constructorconcincoargumentos //constructorconcincoargumentos
publicEmpleadoPorComision4(Stringnombre,Stringapellido,Stringnss, publicEmpleadoPorHoras(Stringnombre,Stringapellido,Stringnss,
doubleventas,doubletarifa) doublesueldoPorHoras,doublehorasTrabajadas)
{ {
super(nombre,apellido,nss); super(nombre,apellido,nss);
establecerVentasBrutas(ventas); establecerSueldo(sueldoPorHoras);//validayalmacenaelsueldopor
establecerTarifaComision(tarifa); horas
}//findelconstructordeEmpleadoPorComisionconcincoargumentos establecerHoras(horasTrabajadas);//validayalmacenalashoras
trabajadas
//establecelatarifadecomisin }//findelconstructordeEmpleadoPorHorasconcincoargumentos
publicvoidestablecerTarifaComision(doubletarifa)
{ //estableceelsueldo
tarifaComision=(tarifa>0.0&&tarifa<1.0)?tarifa:0.0; publicvoidestablecerSueldo(doublesueldoPorHoras)
}//findelmtodoestablecerTarifaComision {
sueldo=(sueldoPorHoras<0.0)?0.0:sueldoPorHoras;
//devuelvelatarifadecomisin }//findelmtodoestablecerSueldo
publicdoubleobtenerTarifaComision()
{ //devuelveelsueldo
returntarifaComision; publicdoubleobtenerSueldo()
}//findelmtodoobtenerTarifaComision {
returnsueldo;
//estableceelmontodeventasbrutas }//findelmtodoobtenerSueldo
publicvoidestablecerVentasBrutas(doubleventas)
{ //establecelashorastrabajadas
ventasBrutas=(ventas<0.0)?0.0:ventas; publicvoidestablecerHoras(doublehorasTrabajadas)
}//findelmtodoestablecerVentasBrutas {
horas=((horasTrabajadas>=0.0)&&(horasTrabajadas<=168.0))?
//devuelveelmontodeventasbrutas horasTrabajadas:0.0;
publicdoubleobtenerVentasBrutas() }//findelmtodoestablecerHoras
{
returnventasBrutas; //devuelvelashorastrabajadas
}//findelmtodoobtenerVentasBrutas publicdoubleobtenerHoras()
{
//calculalosingresos;sobrescribeelmtodoabstractoingresosenEmpleado returnhoras;
publicdoubleingresos() }//findelmtodoobtenerHoras
{
returnobtenerTarifaComision()*obtenerVentasBrutas(); //calculalosingresos;sobrescribeelmtodoabstractoingresosen
}//findelmtodoingresos Empleado
publicdoubleingresos()
//devuelverepresentacinStringdeunobjetoEmpleadoPorComision {
publicStringtoString() if(obtenerHoras()<=40)//nohaytiempoextra
{ returnobtenerSueldo()*obtenerHoras();
returnString.format("%s:%s\n%s:$%,.2f;%s:%.2f", else
"empleadoporcomision",super.toString(), return40*obtenerSueldo()+(obtenerHoras()-40)*obtenerSueldo()*
"ventasbrutas",obtenerVentasBrutas(), 1.5;
"tarifadecomision",obtenerTarifaComision()); }//findelmtodoingresos
}//findelmtodotoString
}//findelaclaseEmpleadoPorComision //devuelverepresentacinStringdeunobjetoEmpleadoPorHoras
publicStringtoString()
{
returnString.format("empleadoporhoras:%s\n%s:$%,.2f;%s:%,.2f",
super.toString(),"sueldoporhora",obtenerSueldo(),
"horastrabajadas",obtenerHoras());
}//findelmtodotoString
}//findelaclaseEmpleadoPorHoras
Ingeniera en Animacin Digital Asignatura: Programacin Orientada a Objetos
2. Cdigo Fuente
//Fig.10.1:PruebaPolimorfismo.java //Fig.10.9:PruebaSistemaNomina.java
//Asignacindereferenciasalasuperclaseylasubclase,a //ProgramadepruebaparalajerarquadeEmpleado.
//variablesdelasuperclaseylasubclase.
publicclassPruebaSistemaNomina
publicclassPruebaPolimorfismo {
{ publicstaticvoidmain(Stringargs[])
publicstaticvoidmain(Stringargs[]) {
{ //creaobjetosdelassubclases
//asignalareferenciaalasuperclaseaunavariabledelasuperclase EmpleadoAsalariadoempleadoAsalariado=
EmpleadoPorComision3empleadoPorComision=new newEmpleadoAsalariado("John","Smith","111-11-1111",800.00);
EmpleadoPorComision3("Sue","Jones","222-22-2222",10000,.06); EmpleadoPorHorasempleadoPorHoras=
newEmpleadoPorHoras("Karen","Price","222-22-2222",16.75,40);
//asignalareferenciaalasubclaseaunavariabledelasubclase EmpleadoPorComisionempleadoPorComision=
EmpleadoBaseMasComision4empleadoBaseMasComision=new newEmpleadoPorComision(
EmpleadoBaseMasComision4("Bob","Lewis","333-33-3333",5000,.04,300); "Sue","Jones","333-33-3333",10000,.06);
EmpleadoBaseMasComisionempleadoBaseMasComision=
//invocaatoStringenunobjetodelasuperclase,usandounavariabledela newEmpleadoBaseMasComision(
superclase "Bob","Lewis","444-44-4444",5000,.04,300);
System.out.printf("%s%s:\n\n%s\n\n",
"LlamadaatoStringdeEmpleadoPorComision3conreferenciadesuperclase", System.out.println("Empleadosprocesadosporseparado:\n");
"aunobjetodelasuperclase",empleadoPorComision.toString());
System.out.printf("%s\n%s:$%,.2f\n\n",
//invocaatoStringenunobjetodelasubclase,usandounavariabledelasubclase empleadoAsalariado,"ingresos",empleadoAsalariado.ingresos());
System.out.printf("%s%s:\n\n%s\n\n", System.out.printf("%s\n%s:$%,.2f\n\n",
"LlamadaatoStringdeEmpleadoBaseMasComision4conreferencia", empleadoPorHoras,"ingresos",empleadoPorHoras.ingresos());
"desubclaseaunobjetodelasubclase",empleadoBaseMasComision.toString()); System.out.printf("%s\n%s:$%,.2f\n\n",
empleadoPorComision,"ingresos",empleadoPorComision.ingresos());
//invocaatoStringenunobjetodelasubclase,usandounavariabledela System.out.printf("%s\n%s:$%,.2f\n\n",
superclase empleadoBaseMasComision,
EmpleadoPorComision3empleadoPorComision4=empleadoPorComision; "ingresos",empleadoBaseMasComision.ingresos());
System.out.printf("%s%s:\n\n%s\n",
"LlamadaatoStringdeEmpleadoBaseMasComision4conreferenciade //creaunarregloEmpleadodecuatroelementos
superclase", Empleadoempleados[]=newEmpleado[4];
"aunobjetodelasubclase",empleadoPorComision.toString());
}//findemain //inicializaelarregloconobjetosEmpleado
}//findelaclasePruebaPolimorfismo empleados[0]=empleadoAsalariado;
empleados[1]=empleadoPorHoras;
empleados[2]=empleadoPorComision;
empleados[3]=empleadoBaseMasComision;
System.out.println("Empleadosprocesadosenformapolimorfica:\n");
//procesaenformagenricaacadaelementoenelarreglodeempleados
for(EmpleadoempleadoActual:empleados)
{
System.out.println(empleadoActual);//invocaatoString
//determinasielelementoesunEmpleadoBaseMasComision
if(empleadoActualinstanceofEmpleadoBaseMasComision)
{
//conversindescendentedelareferenciadeEmpleado
//aunareferenciadeEmpleadoBaseMasComision
EmpleadoBaseMasComisionempleado=
(EmpleadoBaseMasComision)empleadoActual;
doublesalarioBaseAnterior=empleado.obtenerSalarioBase();
empleado.establecerSalarioBase(1.10*salarioBaseAnterior);
System.out.printf(
"elnuevosalariobasecon10%%deaumentoes:$%,.2f\n",
empleado.obtenerSalarioBase());
}//findeif
System.out.printf(
"ingresos$%,.2f\n\n",empleadoActual.ingresos());
}//findefor
//obtieneelnombredeltipodecadaobjetoenelarreglodeempleados
for(intj=0;j<empleados.length;j++)
System.out.printf("Elempleado%desun%s\n",j,
empleados[j].getClass().getName());
}//findemain
}//findelaclasePruebaSistemaNomina
Ingeniera en Animacin Digital Asignatura: Programacin Orientada a Objetos
2. Cdigo Fuente