1
resposta

Solução do consolidando meu conhecimento

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());
    }
}
1 resposta

Oie Jessica, tudo bem contigo?

Ficou muito legal seu código, fico feliz que tenha decidido compartilhar aqui com a gente :)

Sempre existem outras formas de se fazer a mesma coisa na programação, mas do jeito que você fez não deixa de estar certo, segue abaixo outro jeito de se fazer print com o sysout:

Primeira forma:

String frase = "A bonificação do Editor de vídeo " + super.getNome() + " é de R$ " +  bonificacao + " Totalizando R$ " + salarioTotal;
System.out.println(frase);

Segunda forma (sem o sysout):

public class EditorVideo extends Funcionario {

    double bonificacao = 150;
    double salarioTotal = super.getSalario() + bonificacao;

    public double getBonificacao() {
           return bonificacao;
    }

    @Override
    public String toString(){
            return "A bonificação do Editor de vídeo " + super.getNome() + " é de R$ " +  bonificacao + " Totalizando R$ " + salarioTotal);
    }
}

Espero ter ajudado, qualquer outra dúvida fico a disposição :)

Bons estudos!