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;
}
}