Hola Andres, como estas? a ver si puedo ayudar con tu duda:
El salario de Diego es 2000. La bonificación de Diego, esta estipulada en la clase Funcionario, y es del 5%, lo que da como resultado = 100.
La clase ControlBonificacion tiene el atributo "suma", el cual se inicializa con el valor 0. Pero tras la primer ejecución del metodo registrarSalario que utiliza la clase TestControlBonificacion para "Diego", el atributo de "suma" cambia su valor de 0 a 100:
public double registrarSalario(Funcionario funcionario) { ---> //public double registrarSalario(Funcionario diego) {
this.suma = funcionario.getBonificacion() + this.suma; ---> //this.suma(0) = diego.getBonificacion(100) + this.suma(0)
System.out.println("Calculo actual: " + this.suma); ---> //System.out.println("Calculo actual: " + 100);
return this.suma; ---> //return 100;
El salario de Jimena es de 10000. La bonificación de Jimena esta estipulada en la clase Gerente, el cual es de un salario completo (10000) más otro 5% de su salario (500), lo que da como resultado = 10500.
Cuando volvemos a consultar "controlBonificacion.registrarSalario(jimena); volvemos a ejecutar el metodo "registrarSalario":
public double registrarSalario(Funcionario funcionario) { ---> //public double registrarSalario(Gerente Jimena) {
this.suma = funcionario.getBonificacion() + this.suma; ---> //this.suma(100) = jimena.getBonificacion(10500) + this.suma(100)
System.out.println("Calculo actual: " + this.suma); ---> //System.out.println("Calculo actual: " + 10600);
return this.suma; ---> //return 10600;
Tras la segunda ejecución del metodo registrarSalario que utiliza la clase TestControlBonificacion para "Jimena", el atributo de "suma" cambia su valor de 100 a 10600.
Por ultimo, la bonificación de Alexiz esta estipulada en la clase Contador, y solo retorna 200. Por lo que al consultar por ultima vez "controlBonificacion.registrarSalario(alexiz);", esto vuelve a utilizar el metodo "registrarSalario":
public double registrarSalario(Funcionario funcionario) { ---> //public double registrarSalario(Contador alexiz) {
this.suma = funcionario.getBonificacion() + this.suma; ---> //this.suma(10600) = alexiz.getBonificacion(200) + this.suma(10600)
System.out.println("Calculo actual: " + this.suma); ---> //System.out.println("Calculo actual: " + 10800);
return this.suma; ---> //return 10800;
Al valor del atributo "suma" que estaba en 10600 ahora se le suman los 200 del contador, por lo que el método termina retornando el valor 10800.
Espero haberme explicado bien. Las ideas estan en la cabeza pero al momento de pasarlas por escrito se vuelve complicado de plasmar. Ojala te sea de ayuda para salvar tu duda. Cualquier cosa no dudes en volver a consultar. Saludos.