1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

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/

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags java ou faça a sua própria pergunta.