Tentei colocar um texto mais completo dentro das classes Design e Editor de Vídeo fiz a conta na parte superior para poder citar no sysout... Gostaria de saber se desse jeito é bom ou se tem outras formas para escrever dentro do método com sysout.
Classe Principal - Funcionário
public abstract class Funcionario {
private String nome;
private String cpf;
private String profissao;
private double salario;
public abstract double getBonificacao();
/*public double getBonificacao() {
return this.salario * 0.05;
}*/
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getCpf() {
return cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
public String getProfissao() {
return profissao;
}
public void setProfissao(String profissao) {
this.profissao = profissao;
}
public double getSalario() {
return salario;
}
public void setSalario(double salario) {
this.salario = salario;
}
}
Classe Designer Extendendo da classe mãe - Funcionário.
public class Designer extends Funcionario {
public double getBonificacao() {
double bonificacao = 200;
double salarioTotal = bonificacao + super.getSalario();
System.out.println("A bonificação do Designer " + super.getNome() + " é de R$ "
+ bonificacao + " Totalizando R$ " + salarioTotal);
return bonificacao;
}
}
Classe Editor de Vídeo que extende da Classe Mãe - Funcionário
public class EditorVideo extends Funcionario {
public double getBonificacao() {
double bonificacao = 150;
double salarioTotal = super.getSalario() + bonificacao;
System.out.println("A bonificação do Editor de vídeo " + super.getNome() + " é de R$ "
+ bonificacao + " Totalizando R$ " + salarioTotal);
return bonificacao;
}
}
Classe Gerente que extende da Classe Mãe - Funcionário
public class Gerente extends Funcionario {
private int senha;
public void setSenha(int senha) {
this.senha = senha;
}
public boolean autentica(int senha) {
if(this.senha == senha) {
return true;
}
return false;
}
public double getBonificacao() {
System.out.println("A bonificação da Gerente " + super.getNome() + " é o mesmo valor do seu salário R$ " + super.getSalario());
return super.getSalario();
}
}
Testando as Referências
public class TesteReferencia {
public static void main(String[] args) {
Gerente gerente1 = new Gerente();
gerente1.setNome("Joana Aparecida");
gerente1.setCpf("152.589.456-15");
gerente1.setProfissao("Gerente de Designer UX");
gerente1.setSalario(5000.0);
Funcionario gerente2 = new Gerente();
gerente2.setNome("Mateus Oliveira");
gerente2.setCpf("256.555.877-96");
gerente2.setProfissao("Gerente de Marketing");
gerente2.setSalario(2000.00);
EditorVideo editorVideo = new EditorVideo();
editorVideo.setNome("Pedro Roberto");
editorVideo.setCpf("122.555.888-18");
editorVideo.setProfissao("Editor de Vídeo II");
editorVideo.setSalario(2200.00);
Designer designer = new Designer();
designer.setNome("Moura Silva");
designer.setCpf("165.589.699-15");
designer.setProfissao("Designer Gráfico");
designer.setSalario(1500.00);
System.out.println("\n---------- BONIFICAÇÕES ENTRE FUNCIONÁRIOS - REFERÊNCIAS -----------\n");
ControleBonificacao controle = new ControleBonificacao();
controle.registra(gerente1);
controle.registra(gerente2);
controle.registra(editorVideo);
controle.registra(designer);
System.out.println("\nSoma total das bonificações: R$ " + controle.getSoma());
}
}