sim isso mesmo, são atributos.
segundo, eu tenho que ler do teclado o departamento que a pessoa deve entrar.
terceiro, não não é ao contrario, sempre que um funcionario novo tiver como parametro determinado departamento, eu tenho que somar 1 no nº de funcionario do departamento. o problema todo esta nisso :/
seguem os códigos:
import java.util.GregorianCalendar;
public class Data{
private int dia;
private int mes;
private int ano;
// constrói o objeto Data com os valores recebidos via parâmetros
public Data(int d, int m, int a){
setAno(a);
setMes(m);
setDia(d);
}
// constrói o objeto Data com a data recebida no formato inteiro AAAAMMDD
public Data (int data){
setAno(data / 10000);
setDia (data % 100);
setMes( data % 10000 / 100);
}
// constrói o objeto Data com a data atual
public Data(){
GregorianCalendar c = new GregorianCalendar();
dia = c.get(GregorianCalendar.DAY_OF_MONTH);
mes = c.get(GregorianCalendar.MONTH)+1;
ano = c.get(GregorianCalendar.YEAR);
}
public String getDataPadrao(){
return dia + "/" + mes + "/" + ano;
}
public int getDataInvertida(){
return ano * 10000 + mes * 100 + dia;
}
public boolean ehBissexto(){
if (ano % 4 == 0){
return true;
}else{
return false;
}
}
public void setDia(int d){
dia = d;
}
public void setMes(int m){
mes = m;
}
public void setAno(int a){
ano = a;
}
public int getDia(){
return dia;
}
public int getMes(){
return mes;
}
public int getAno(){
return ano;
}
}
public class Departamento{
private int codDepto;
private String nomeDepto;
private int qtdFunc;
public Departamento(int codigoDepto, String nomeDoDepto){
codDepto = codigoDepto;
nomeDepto = nomeDoDepto;
}
public void setCodDepto(int codigoNovo){
if (codigoNovo > 0 && codigoNovo < 6){
codDepto = codigoNovo;
}else{
codDepto = 1;
}
}
public void setNomeDepto(String novoNome){
nomeDepto = novoNome;
}
public int getCodDepto(){
return codDepto;
}
public String getNomeDepto(){
return nomeDepto;
}
public int getQtdFunc(){
return qtdFunc;
}
public void saiFuncionarioDoDepto(){
qtdFunc--;
}
public void entraFuncionarioNoDepto(){
qtdFunc++;
}
public String dadosDoDepartamento(){
return ("Nome do departamento: " + nomeDepto + "; Código do departamento: " + codDepto + "; Quantidade de funcionarios: " + qtdFunc);
}
}
public class Funcionario{
private String nome;
private double salario;
private Data dataDeNasc;
private Data dataDeAdmissao;
private Departamento departamento;
public Funcionario(String n, double sal, Departamento depto, Data dataNasc, Data dataAdmissao){
nome = n;
salario = sal;
dataDeNasc = dataNasc;
dataDeAdmissao = dataAdmissao;
departamento = depto;
departamento.entraFuncionarioNoDepto();
}
public Funcionario(String n, double sal, Departamento depto, Data dataNasc, int diaAdmissao, int mesAdmissao, int anoAdmissao){
nome = n;
salario = sal;
dataDeNasc = dataNasc;
dataDeAdmissao = new Data(diaAdmissao, mesAdmissao, anoAdmissao);
departamento = depto;
departamento.entraFuncionarioNoDepto();
}
public Funcionario(String n, double sal, Data dataNasc, Data dataAdmissao){
nome = n;
salario = sal;
dataDeNasc = dataNasc;
dataDeAdmissao = dataAdmissao;
}
public void setSalario(double novoSalario){
salario = novoSalario;
}
public void aloca(Departamento novoDepto){
departamento = novoDepto;
}
public int calculaIdade(){
return new Data().getDataInvertida() - dataDeNasc.getDataInvertida();
}
public int calculaTempoDeServico(){
return new Data().getAno() - dataDeAdmissao.getAno();
}
public void aumentaSalario(double taxa){
double tax = taxa / 100;
salario *= tax;
}
public void aumentaSalario(double taxa1, double taxa2, double taxa3){
if (calculaIdade() < 27){
aumentaSalario(taxa1);
}else if(calculaIdade() >= 27 && calculaIdade() <= 38){
if (calculaTempoDeServico() < 7){
aumentaSalario(taxa2);
}else{
aumentaSalario(taxa3);
}
}else{
aumentaSalario(taxa3);
}
}
public void aumentaSalario(int cod, double taxa){
if (departamento.getCodDepto() == cod){
aumentaSalario(taxa);
}
}
public String getNome(){
return nome;
}
public double getSalario(){
return salario;
}
public Data getDataDeNasc(){
return dataDeNasc;//.getDataPadrao();
}
public Data getDataDeAdmissao(){
return dataDeAdmissao;//.getDataPadrao();
}
public Departamento getDepartamento(){
return departamento;
}
}