Versão atual:

Construtores e Atributos de Classe

Olá. Estou com dificuldades nesse exercício: Adicione um atributo na classe Funcionario de tipo int que se chama identi?cador. Esse identi?cador deve ter um valor único para cada instância do tipo Funcionario. O primeiro Funcionario instanciado tem identi?cador 1, o segundo 2, e assim por diante. Você deve utilizar os recursos aprendidos aqui para resolver esse problema. Crie um getter para o identi?cador. Devemos ter um setter?

Então, meu código está assim:

Classe Funcionario:

class Funcionario{
    String nome;
    String departamento;
    private double salario;
    String dataEntrada;
    String rg;
    boolean estaNaEmpresa;
    private static int totalFuncionarios;


    public Funcionario(String nome){
        this.nome = nome;
    }

    Funcionario(){
        Funcionario.totalFuncionarios = Funcionario.totalFuncionarios + 1;
    }

    public static int getTotalFuncionarios(){
        return Funcionario.totalFuncionarios;
    }

    public double getSalario(){
        return this.salario;
    }

    public void setSalario(double salario){
        this.salario = salario;
    }

    void recebeAumento(double aumento){
        double SalarioNovo = this.salario + aumento;
        this.salario = SalarioNovo;
        System.out.println("Novo Salário: "+ this.salario);
    }

    public double getCalculaGanhoAnual(){
        return (this.salario*12);
     }

    void demite(){
        this.estaNaEmpresa = false;
        double novoSalario = 0;
        this.salario = novoSalario;
    }

    void mostra(){
        System.out.println("Nome: "+ this.nome);
        System.out.println("Departamento: "+ this.departamento);
        System.out.println("Salário: " +getSalario());
        System.out.println("RG: "+ this.rg);
        System.out.println("Data de Entrada: "+ this.dataEntrada);
        System.out.println("Ganho anual: "+ this.getCalculaGanhoAnual());
    }
}

Classe Empresa (não necessária nesse problema, creio)

class Empresa{
    Funcionario[] empregados;
    String cnpj;
    int i = 0;

    void adiciona(Funcionario f){
        if (i > 10){
            System.out.println("Cheio");
        }else {
            this.empregados[i] = f;
            this.i++;
        }
    }

    void mostraEmpregados(){
        for (int i = 0; i < this.empregados.length; i++){
            if (empregados[i] != null){
                System.out.println("\nFuncionário na posição: " + (i+1));
                this.empregados[i].mostra();
            }else {
                break;
            }
        }
    }

    boolean contem(Funcionario f){
        for (int  i = 0; i < this.empregados.length; i++){
            if (f == empregados[i]){
                System.out.println("Funcionário já trabalha nessa empresa");
                return true;
            }
        }
        System.out.println("O funcionário não trabalha na empresa");
        return false;
    }
}

E o principal:

public class Programa09{
    public static void main(String[] args){
        Empresa empresa = new Empresa();
        empresa.empregados = new Funcionario[10];

        Funcionario f1 = new Funcionario("Nalvum");
        f1.setSalario(3000);
        System.out.println(f1.nome);
        empresa.adiciona(f1);

        Funcionario f2 = new Funcionario();
        f2.setSalario(2000);
        f2.nome = "Alvin";
        empresa.adiciona(f2);

        empresa.mostraEmpregados();

        System.out.println("\nSalario f1 com get: "+f1.getSalario());

        int total = Funcionario.getTotalFuncionarios();
        System.out.println("\n"+total);
    }
}

O problema está na última linha, pois deveria aparecer 2, e não 1. Como resolver/

Versão(1):

Ver a versão formatada

Construtores e Atributos de Classe

Comentário

new question