You are on page 1of 8

0824 Solucin Ordinario I- Desarrollo

Elaborado por el tutor:


Jorge Ml. Villalobos C.

Esto es lo solicitado en el examen:

1. Elabore una clase llamada SalarioEmpleado, debe implementar los mtodos establecer y obtener,
crear un mtodo para el clculo del salario neto y manejar excepciones a la hora de realizar los clculos.

a. (5 pts) Cree una clase llamada SalarioEmpleado la cual debe tener los siguientes atributos: cdula de
tipo String, SalarioBruto y SalarioNeto de tipo float.

b. (15 pts) Cree los mtodos establecer y obtener para cada uno de los atributos anteriores.

c. (10 pts) Cree un mtodo llamado CalcularSalarioNeto en el cul se debe recibir el salario bruto por
parmetro, dentro del mtodo se tiene que calcular las deducciones de la CCSS que corresponde a un 9% y
se tiene que deducir el aporte al Banco Popular el cual corresponde a un 1%. Adems si el salario bruto es
mayor o igual al milln de colones se le debe deducir un 10% de impuesto de renta.

El mtodo debe retornar el salario neto, el cual se calcula restndole al salario bruto las deducciones de la
CCSS, Banco Popular e impuesto de renta.

d. (5 ptos) Debe manejar excepciones a la hora de realizar los clculos.

2. Utilizando el mtodo CalcularSalarioNeto, programado en el ejercicio anterior, aplique la teora de


sobrecarga de mtodos.

a. (5 pts) Desarrolle un mtodo sobrecargado, diseado para que reciba un parmetro adicional, que
ser llamado MontoDeducir. Adicional a las operaciones realizadas en el ejercicio anterior, al salario neto
se le debe restar el monto a deducir.

b. (15 pts) Cree una clase principal en donde por medio de un men pueda llamar al mtodo del
ejercicio 1 o al mtodo desarrollado en el punto anterior segn requiera el usuario.
/**
* UNED - Ctedra de Desarrollo de Sistemas
* Curso 0824: Programacin Intermedia
* ARCHIVO PruebaSalarioEmpleado.java
* DESCRIPCION Implementa la clase SalarioEmpleado
* MODIFICACIONES J.Villalobos 24.Jul.2011 Creacin
* @author J.Villalobos
* @version 1.0
*/
public class SalarioEmpleado {

// Definicin de constantes
static final float PORC_CCSS = 0.09f; // Porcentaje de CCSS 9%
static final float PORC_BCOPOPULAR = 0.01f; // Porcentaje Bco Popular 1%
static final float TOPE_RENTA = 1000000f; // Valor tope de renta
static final float PORC_RENTA = 0.1f; // Porcentaje Renta 10%

// Definicin de variables privadas


private String cedula;
private float salarioBruto = 0;
private float salarioNeto = 0;

/**
* Constructor sin parmetros
*/
public SalarioEmpleado(){
}

/**
* Constructor con todos los atributos
* @param cedula cedula el empleado
* @param salarioBruto salario bruto
* @param salarioNeto salario neto
*/
public SalarioEmpleado( String cedula, float salarioBruto, float salarioNeto ) {
this.cedula = cedula;
this.salarioBruto = salarioBruto;
this.salarioNeto = salarioNeto;
}

/**
* Establece la cedula
* @param cedula cedula del empleado
*/
public void setCedula (String cedula) {
this.cedula = cedula;
}
/**
* Devuelve la cdula
* @return la cedula del empleado
*/
public String getCedula () {
return this.cedula;
}

/**
* Establece el monto del salario bruto
* @param salarioBruto monto del salario bruto del empleado
*/
public void setSalarioBruto(float salarioBruto) {
this.salarioBruto = salarioBruto;
}

/**
* Devuelve el monto del salario bruto
* @return el salario bruto del empleado
*/
public float getSalarioBruto() {
return salarioBruto;
}

/**
* Establece el monto del salario neto
* @param salarioNeto monto del salario neto del empleado
*/
public void setSalarioNeto(float salarioNeto) {
this.salarioNeto = salarioNeto;
}

/**
* Devuelve el salario neto
* @return el salario neto del empleado
*/
public float getSalarioNeto() {
return salarioNeto;
}
/**
* Calcula el salario neto del empleado
* @param salarioBruto salario bruto del empleado
* @return salario neto calculado
*/
public float calcularSalarioNeto(float salarioBruto) {
float vCCSS = 0; // Para el clculo de la deduccin CCSS
float vBcoPopular = 0; // Para el clculo de la deduccin del Banco Popular
float vRenta = 0; // Para el clculo del impuesto sobre la renta

try {
// Establece el salario bruto
setSalarioBruto(salarioBruto);

// Calcula las deducciones de la CCSS y el Banco Popular


vCCSS = (salarioBruto * PORC_CCSS);
vBcoPopular = (salarioBruto * PORC_BCOPOPULAR);

// Calcula la deduccin de la renta si el salario es mayor o igual al tope


// establecido.
if (salarioBruto >= TOPE_RENTA) {
vRenta = (salarioBruto * PORC_RENTA);
}

// Establece el salario neto


setSalarioNeto(salarioBruto - vCCSS - vBcoPopular - vRenta);
}
catch ( Exception exception ) {
System.err.println("Ocurri una excepcin\n" + exception.getMessage());
}
finally {
return getSalarioNeto();
}
} // Fin del mtodo calcularSalarioNeto

/**
* Sobrecarga del mtodo calcularSalarioNeto, rebaja un monto adicional
* @param salarioBruto salario bruto del empleado
* @param montoDeducir deduccin extra a realizar
* @return salario neto contemplando una rebaja adicional
*/
public float calcularSalarioNeto(float salarioBruto, float montoDeducir) {
// Se utiliza el mtodo anterior para realizar los clculos base
setSalarioNeto(calcularSalarioNeto(salarioBruto)- montoDeducir);

return getSalarioNeto();
} // Fin del mtodo calcularSalarioNeto
/**
* Despliega la informacin del objeto.
*/
public void despliegaInformacion() {
System.out.printf("+--------------------------+\n");
System.out.printf("| Informacin del empleado |\n");
System.out.printf("+--------------------------+\n");
System.out.printf("Cedula del empleado: %s\n", cedula);
System.out.printf("Salario bruto :..... %.2f\n", salarioBruto);
System.out.printf("Salario neto :...... %.2f\n", salarioNeto);
} // Fin del mtodo despliegaInformacion

} // Fin de la clase SalarioEmpleado


/**
* UNED - Ctedra de Desarrollo de Sistemas
* Curso 0824: Programacin Intermedia
* ARCHIVO PruebaSalarioEmpleado.java
* DESCRIPCION Clase utilizada para probar el funcionamiento de SalarioEmpleado.
* REQUIERE La clase SalarioEmpleado
* MODIFICACIONES
* J.Villalobos 24.Jul.2011 Creacin
* @author J.Villalobos
* @version 1.0
* @see SalarioEmpleado
*/
import java.util.Scanner;
import java.util.InputMismatchException;

public class PruebaSalarioEmpleado {

/**
* Mtodo principal
* @param args argumentos del programa
*/
public static void main(String[] args) {
int opcionMenu = 0; // Para leer la opcin de men a ejecutar
String cedula; // Para leer la cdula del empleado
float salarioBruto = 0; // Para leer el salario bruto
float montoDeduccion = 0; // Para leer el monto de la deduccin
Scanner entrada; // Para leer las opciones del men
SalarioEmpleado salarioEmpleado; // La instancia a ser probada

// Inicializa los objetos


entrada = new Scanner(System.in);
salarioEmpleado = new SalarioEmpleado();

do {
System.out.printf("\nPrueba de Clase SalarioEmpleado v1.0\n");
System.out.printf("Seleccin una opcin:\n");
System.out.printf("\t1. Ingrese el numero de cedula\n");
System.out.printf("\t2. Ingrese el salario Bruto\n");
System.out.printf("\t3. Ingrese el salario Bruto y una deduccin\n");
System.out.printf("\t4. Salir\n");
System.out.printf("Opcin: ");

// Pregunta al usuario la opcin a ejecutar


opcionMenu = leeUnEntero(1, 4);
System.out.printf("\n");

switch (opcionMenu) {
case 1:
System.out.printf("Digite la cedula del empleado: ");
cedula = entrada.next();
salarioEmpleado.setCedula(cedula);
salarioEmpleado.despliegaInformacion();
break;
case 2:
System.out.printf("Digite el salario bruto: ");
salarioBruto = leeUnFloat();
salarioEmpleado.calcularSalarioNeto(salarioBruto);
salarioEmpleado.despliegaInformacion();
break;
case 3:
System.out.printf("Digite el salario bruto: ");
salarioBruto = leeUnFloat();
System.out.printf("Monto de la deduccion:.. ");
montoDeduccion = leeUnFloat();
salarioEmpleado.calcularSalarioNeto(salarioBruto, montoDeduccion);
salarioEmpleado.despliegaInformacion();
break;
case 4:
System.out.printf("Saliendo del sistema ... ");
break;
}
} while (opcionMenu != 4); /* Fin del while*/

} // Fin del mtodo main

/**
* Mtodo utilizado para la lectura de un entero en un rango de valores.
* @param minimo Valor minimo deseado
* @param maximo Valor mximo deseado
* @return Un nmero entero digitado por el usuario en el rango deseado
*/
static int leeUnEntero( int minimo, int maximo ) {
Scanner entrada = new Scanner(System.in); // Objeto para obtener el dato
int datoUsuario = 0; // Dato digitado por el usuario

// Solicita la informacin hasta que que el dato


do {
try {
datoUsuario = entrada.nextInt();

// Si el dato no cumple con el rango especificado despliega un mensaje de error


// y vuelve a solicitar el nmero.
if ((datoUsuario < minimo) || (datoUsuario > maximo)) {
System.out.printf("*ERROR: Debe ingresar un numero entre %d y %d. *\n", minimo, maximo);
System.out.printf("Ingrese denuevo el dato: ");
}
}
catch (InputMismatchException inputMismatchException) {
System.err.printf("*ERROR: lo digitado no corresponde a un numero entero. *\n");
System.out.printf("Ingrese denuevo el dato: ");
}
finally {
// Descarta el valor actual digitado.
entrada.nextLine();
}
} while ((datoUsuario < minimo) || (datoUsuario > maximo)); // del while

return datoUsuario;
} // Mtodo leeUnEntero

/**
* Mtodo utilizado para la lectura de un nmero del tipo float mayor que cero.
* @return Un nmero tipo float positivo, mayor que cero digitado por el usuario
*/
static float leeUnFloat() {
Scanner entrada = new Scanner(System.in); // Objeto para obtener el dato
float datoUsuario = 0; // Dato digitado por el usuario

do {
try {
datoUsuario = entrada.nextFloat();
// Si el dato digitado es menor que cero, se despliega un error y se
// solicita nuevamente el dato.
if (datoUsuario <= 0) {
System.out.printf("*ERROR: Debe ingresar un numero mayor a cero. *\n");
System.out.printf("Ingrese denuevo el dato: ");
}
}
// Se maneja la excepcin en caso de que lo digitado no corresponda a un float
catch (InputMismatchException inputMismatchException) {
System.err.printf("*ERROR: lo digitado no corresponde a un numero. *\n");
System.out.printf("Ingrese denuevo el dato: ");
}
finally {
// Descarta el valor actual digitado.
entrada.nextLine();
}
} while (datoUsuario <= 0); // del while

return datoUsuario;
} // Mtodo leeUnFloat

} // Fin de la clase PruebaSalarioEmpleado

You might also like