Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Não consigo inicializar a partir do 1, mesmo setando 1 como valor inicial.

Olá! Não consigo inicializar a partir do 1, mesmo setando 1 como valor inicial. Segue o código:

class Funcionario {

    private String nomeFuncionario;
        /*public void setNomeFuncionario(String texto) { // set para eu digitar em ProgramaEmpresa o valor da variavel.
            this.nomeFuncionario = texto;        
        }*/

        // Construtor para atribuir nome a Funcionario
    public Funcionario(String nome) {
        this.nomeFuncionario = nome;
    }

        public String getNomeFuncionario() { // get para eu pegar o valor dessa varia e imprimir por ex.
            return this.nomeFuncionario;
        }

    private static int numeroIncremental = 1;

    private int identificadorFunc; // não preciso do set porque ele é automatizado
        public int getIdentifcadorFunc() {
            return this.identificadorFunc;
        }

        public Funcionario() { // criando o metodo incremental automatizado
            this.identificadorFunc = ++numeroIncremental; 
            //numeroIncremental++;
        }

    private String cpf;
        public void setCpf(String texto) {
            this.cpf = texto;
        }
        public String getCpf() {
            return this.cpf;
        }

    private String funcao;
        public void setFuncao(String texto) {
            this.funcao = texto;
        }
        public String getFuncao() {
            return this.funcao;
        }

    private double salario;
        public void setSalario(double valor) {
            this.salario = valor;
        }
        public double getSalario() {
            return this.salario;
        }

    private double aumento;
        public void setAumento(double valor) {
            this.aumento = valor;
        }
        public double getAumento() {
                return this.aumento;
            }

    private double calculaGanhoAnual() {
            return this.salario * 12;
        }
        public double getCalculoGanhoAnual() {
            return this.calculaGanhoAnual();
        }

    private double calculaGanhoAnualComAumento() {
            return this.getAumento() * 12;
        }
        public double getCalculoGanhoAnualComAumento() {
            return this.calculaGanhoAnualComAumento();
        }

    private Data dataDeEntrada;
        public Data getDataDeEntrada() {
            return dataDeEntrada;
        }
        public void setDataDeEntrada(int dia, int mes, int ano) {
            Data newData = new Data(); // aqui estou criando um new Data(), sem precisar criar no ProgramaEmpresa.
                newData.preencheData(dia, mes, ano); // aqui digo que o newData é o preencheData().
                this.dataDeEntrada = newData; // aqui digo que o newData é = a this.dataDeEntrada enviando o valor do setDataDeEntrada para dataDeEntrada.
        }

        private int idade() {
            return 2017 - this.dataDeEntrada.ano;
        }

    public void mostra() {

        System.out.println("===========================================================");
        System.out.println();
        System.out.println("****************************************************************");
        System.out.println(" MOSTRANDO TODAS AS INFORMACOES DO FUNCIONARIO " + this.nomeFuncionario);
        System.out.println("****************************************************************");
        System.out.println();

        System.out.println("O Funcionario: " + this.getNomeFuncionario());   
        System.out.println("Tem CPF: " + this.getCpf());
        System.out.println("Ocupa o cargo: " + this.getFuncao());
        System.out.println("Sua idade e: " + this.idade());
        System.out.println("Entrou na empresa em: " + this.dataDeEntrada.getFormatadaData());
        System.out.println("Recebe a quantia de: " + this.getSalario());
        System.out.println("Teve um aumento de: " + this.aumento);
        System.out.println("Seu salario mais aumento somam: " + this.getAumento());
        System.out.println("Tendo ganho anual de: " + getCalculoGanhoAnual() + " sem o aumento.");
        System.out.println("Com seu aumento o Ganho Anual passa a: " + this.getCalculoGanhoAnualComAumento());
        System.out.println("O numero de Identificador do funcionario e: " + this.getIdentifcadorFunc()); //Imprimindo o numero de identificação do funcionario
    }
}

class Data {
    public int dia;
    public int mes;
    public int ano;

    public void preencheData(int dia, int mes, int ano) {
        this.dia = dia;
        this.mes = mes;
        this.ano = ano;

        if(! isDataViavel(dia, mes, ano)) {
            System.out.println("A data " + getFormatadaData() + " nao existe!");
        }
    }

    private boolean isDataViavel(int dia, int mes, int ano) {
        if (dia <= 0 || mes <= 0) {
            return false;
        }

        int ultimoDiaDoMes = 31; // por padrao são 31 dias
        if (mes == 4 || mes == 6 || mes == 9 || mes == 11 ) {
            ultimoDiaDoMes = 30;
        } else if (mes == 2) {
            ultimoDiaDoMes = 28;
            if((ano % 400 == 0) || ((ano % 4 == 0) && (ano % 100 != 0))){
                ultimoDiaDoMes = 29;
            }
        }
        if (dia > ultimoDiaDoMes) {
            return false;
        }

        return true;
    }

    public String getFormatadaData() {
        return this.dia + "/" + this.mes + "/" + this.ano;
    }
}
3 respostas
solução!

Altere o construtor de Funcionario para:

public Funcionario() {automatizado
    this.identificadorFunc = numeroIncremental++; 
}

detalhe, quando crio o funcionário 2 também continuo com a posição 0

Deu certo Sávio. Ficou assim:

class Funcionario {

    private String nomeFuncionario;
        /*public void setNomeFuncionario(String texto) { // set para eu digitar em ProgramaEmpresa o valor da variavel.
            this.nomeFuncionario = texto;        
        }*/

        // Construtor para atribuir nome a Funcionario
    public Funcionario(String nome) {
        this.nomeFuncionario = nome;
        this.identificadorFunc = ++numeroIncremental; 
    }

        public String getNomeFuncionario() { // get para eu pegar o valor dessa varia e imprimir por ex.
            return this.nomeFuncionario;
        }

    private static int numeroIncremental = 0;

    private int identificadorFunc; // não preciso do set porque ele é automatizado
        public int getIdentifcadorFunc() {
            return this.identificadorFunc;
        }

        /*public Funcionario() { // criando o metodo incremental automatizado
            this.identificadorFunc = ++numeroIncremental; 
            //numeroIncremental++;
        }*/

    private String cpf;
        public void setCpf(String texto) {
            this.cpf = texto;
        }
        public String getCpf() {
            return this.cpf;
        }

    private String funcao;
        public void setFuncao(String texto) {
            this.funcao = texto;
        }
        public String getFuncao() {
            return this.funcao;
        }

    private double salario;
        public void setSalario(double valor) {
            this.salario = valor;
        }
        public double getSalario() {
            return this.salario;
        }

    private double aumento;
        public void setAumento(double valor) {
            this.aumento = valor;
        }
        public double getAumento() {
                return this.aumento;
            }

    private double calculaGanhoAnual() {
            return this.salario * 12;
        }
        public double getCalculoGanhoAnual() {
            return this.calculaGanhoAnual();
        }

    private double calculaGanhoAnualComAumento() {
            return this.getAumento() * 12;
        }
        public double getCalculoGanhoAnualComAumento() {
            return this.calculaGanhoAnualComAumento();
        }

    private Data dataDeEntrada;
        public Data getDataDeEntrada() {
            return dataDeEntrada;
        }
        public void setDataDeEntrada(int dia, int mes, int ano) {
            Data newData = new Data(); // aqui estou criando um new Data(), sem precisar criar no ProgramaEmpresa.
                newData.preencheData(dia, mes, ano); // aqui digo que o newData é o preencheData().
                this.dataDeEntrada = newData; // aqui digo que o newData é = a this.dataDeEntrada enviando o valor do setDataDeEntrada para dataDeEntrada.
        }

        private int idade() {
            return 2017 - this.dataDeEntrada.ano;
        }

    public void mostra() {

        System.out.println("===========================================================");
        System.out.println();
        System.out.println("****************************************************************");
        System.out.println(" MOSTRANDO TODAS AS INFORMACOES DO FUNCIONARIO " + this.nomeFuncionario);
        System.out.println("****************************************************************");
        System.out.println();

        System.out.println("O Funcionario: " + this.getNomeFuncionario());   
        System.out.println("Tem CPF: " + this.getCpf());
        System.out.println("Ocupa o cargo: " + this.getFuncao());
        System.out.println("Sua idade e: " + this.idade());
        System.out.println("Entrou na empresa em: " + this.dataDeEntrada.getFormatadaData());
        System.out.println("Recebe a quantia de: " + this.getSalario());
        System.out.println("Teve um aumento de: " + this.aumento);
        System.out.println("Seu salario mais aumento somam: " + this.getAumento());
        System.out.println("Tendo ganho anual de: " + getCalculoGanhoAnual() + " sem o aumento.");
        System.out.println("Com seu aumento o Ganho Anual passa a: " + this.getCalculoGanhoAnualComAumento());
        System.out.println("O numero de Identificador do funcionario e: " + this.getIdentifcadorFunc()); //Imprimindo o numero de identificação do funcionario
    }
}

class Data {
    public int dia;
    public int mes;
    public int ano;

    public void preencheData(int dia, int mes, int ano) {
        this.dia = dia;
        this.mes = mes;
        this.ano = ano;

        if(! isDataViavel(dia, mes, ano)) {
            System.out.println("A data " + getFormatadaData() + " nao existe!");
        }
    }

    private boolean isDataViavel(int dia, int mes, int ano) {
        if (dia <= 0 || mes <= 0) {
            return false;
        }

        int ultimoDiaDoMes = 31; // por padrao são 31 dias
        if (mes == 4 || mes == 6 || mes == 9 || mes == 11 ) {
            ultimoDiaDoMes = 30;
        } else if (mes == 2) {
            ultimoDiaDoMes = 28;
            if((ano % 400 == 0) || ((ano % 4 == 0) && (ano % 100 != 0))){
                ultimoDiaDoMes = 29;
            }
        }
        if (dia > ultimoDiaDoMes) {
            return false;
        }

        return true;
    }

    public String getFormatadaData() {
        return this.dia + "/" + this.mes + "/" + this.ano;
    }
}

Pra quem ficou na mesma dúvida.