[ Foro de Java ]

Programación Orientada a Objetos

24-Mar-2023 23:43
Invitado (Joe)
0 Respuestas

Desarrollar una aplicación que simule los pagos de una empresa. Considerando las instrucciones
3. Definir una interface “Pagable” con las siguientes consideraciones:
a. Debe tener 2 atributos constantes de tipo double que indiquen los porcentajes de descuentos a aplicar por la empresa. 8% = 0.08 y 7% = 0.07.
b. Debe tener 2 métodos abstractos: registrarFaltas() y asignarSeguro(), como se muestra en la figura.
4. Definir una clase “Empleado” con las siguientes consideraciones:
a. Debe ser una clase abstracta “abstract” y debe implementar la interface “Pagable”. También debe ser una clase sellada “sealed” y permitir las subclases “Gerente” y “Vendedor”.
b. Debe tener los atributos indicados en la figura encapsulados.
c. Debe tener un método constructor con 2 parámetros donde se reciban los valores de los atributos “nombre” y “sueldoBase”. Los atributos restantes recibarán sus valores por defecto.
d. Los métodos que implemente de la interface deben ser finales “final”. El método registrarFaltas() debe incrementar el valor del atributo “diasFaltas”, recibiendo un parámetro con el número de faltas a incrementar. El método asignarSeguro() debe asignar el valor contrario al que tiene el atributo “seguro”, es decir si tiene seguro,  se le debe quitar y si no tiene se le debe asignar.
e. Debe tener los métodos getters y setters necesarios. Todos los atributos con excepción de “nombre” deben ser de solo lectura.
f. Debe tener un método abstracto: calcularSueldo().
5. Definir una clase “Gerente” con las siguientes consideraciones:
a. Debe ser una subclase de la clase “Empleado” y debe definirse como no sellada “non-sealed”.
b. Debe tener los atributos indicados en la figura encapsulados.
c. Debe tener un método constructor con 4 parámetros donde se reciban los valores de los atributos “nombre”, “sueldoBase”, “area” y “bonificacion”. Con los parámetros de la clase padre se debe llamar al constructor de la clase padre. A los atributos propios se le asignará su valor directamente con los parámetros recibidos.
d. Debe sobrescribir el método calcularSueldo() y devolver el valor calculado. El cálculo se realiza de la siguiente forma:
sueldoBase + bonificacion – (sueldoBase/30*diasFaltas) – (sueldoBase*IMPUESTO) – (sueldoBase*SEGURO)
El seguro solo se descuenta si al empleado se le asignó seguro. El atributo “seguro” debe estar en verdadero.
“IMPUESTO” y ”SEGURO” son las constantes heredadas de la interface.
e. Debe sobrescribir el método “toString” y devolver una cadena de caracteres de la siguiente forma:
[Gerente: Raul Sosa, Area: RRHH, Sueldo Base: 2500.0, Seguro: Sí, Faltas: 0, Bonificación: 1000.0, Sueldo Neto: 3125.0]
* Los valores mostrados son solo ejemplos.
Se debe utilizar un arreglo dinámico de tipo String almacenando en cada elemento una cadena de caracteres con el correspondiente atributo convertido en String, con el formato: “nombreAtributo: valorAtributo”. Para los valores booleanos convertir en “Sí” para verdadero y en “No” para falso. Por último, devolver el arreglo, utilizando de forma explicita su método “toString”.
6. Definir una clase “Vendedor” con las siguientes consideraciones:
a. Debe ser una subclase de la clase “Empleado” y debe definirse como “final”.
b. Debe tener los atributos indicados en la figura encapsulados.
c. Debe tener un método constructor con 3 parámetros donde se reciban los valores de los atributos “nombre”, “sueldoBase” y “comision”. Con los parámetros de la clase padre se debe llamar al constructor de la clase padre. Al atributo “meta” se le asignará su valor por defecto y al atributo “comision” se le asignará su valor directamente con el parámetro recibido.
d. Debe sobrescribir el método calcularSueldo() y devolver el valor calculado. El cálculo se realiza de la siguiente forma:
sueldoBase + comision – (sueldoBase/30*diasFaltas) – (sueldoBase*IMPUESTO) – (sueldoBase*SEGURO)
La comisión solo se asigna si llegó a la meta. El atributo “meta” debe tener el valor de verdadero.
El seguro solo se descuenta si al empleado se le asignó seguro. El atributo “seguro” debe estar en el valor de verdadero.
“IMPUESTO” y ”SEGURO” son las constantes heredadas de la interface.
e. Debe sobrescribir el método “toString” y devolver una cadena de caracteres de la siguiente forma:
[Vendedor: Ana Diaz, Sueldo Base: 900.0, Seguro: No, Faltas: 5, Meta: No, Comision: 1000.0, Sueldo Neto: 678.0]
* Los valores mostrados son solo ejemplos.
Se debe utilizar un arreglo dinámico de tipo String almacenando en cada elemento una cadena de caracteres con el correspondiente atributo convertido en String, con el formato: “nombreAtributo: valorAtributo”. Para los valores booleanos convertir en “Sí” para verdadero y en “No” para falso. Por último, devolver el arreglo, utilizando de forma explicita su método “toString”.
7. El método “main” debe tener las siguientes consideraciones:
a. Debe crear un arreglo estático del tipo “Empleado” con 6 elementos,  3 instancias de la clase “Gerente” y 3 instancias de la clase “Vendedor”.
b. Se debe modificar algunos de los elementos del arreglo utilizando los métodos asignarSeguro() y registrarFaltas().
c. Se debe recorrer el arreglo para mostrar todos sus elementos.
d. Todo el código debe estar protegido de suceder una excepción. De suceder una excepción debe mostrar el mensaje de error y el programa debe terminar correctamente.




(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)