Fala galera, tow com um problema e gostaria da ajuda de vocês, estou com uma classe abstrata chamada Empregado onde tenho várias classes concretas que herdam dela,
também tenho uma classe chamada Data onde cada Empregado tem uma data de Nascimento. Tenho outros métodos em Empregado, mas uma coisa que não estou conseguindo
enxergar o erro é no método da classe Data checkDay que recebe um inteiro como parâmetro, o resultado não está correto de acordo com a lógica do método, gostaria que
vocês dessem uma olhada e se alguém ver onde estou errando comentar, acredito que o if de checkDay não está sendo obedecido. Desde já agradeço.
Classe Data
public class Data {
private int mes;
private int dia;
private int ano;
public Data (int oDia, int oMes, int oAno){
dia = checkDay(oDia);
mes = checkMes(oMes);
ano = oAno;
}
//gets and sets
public int getMes() {
return mes;
}
public void setMes(int mes) {
this.mes = mes;
}
public int getDia() {
return dia;
}
public void setDia(int dia) {
this.dia = dia;
}
public int getAno() {
return ano;
}
public void setAno(int ano) {
this.ano = ano;
}
//end gets end sets
//metodo valida mes
private int checkMes(int testeMes){
if(testeMes > 0 && testeMes < 12){
return testeMes;
}
else{
System.out.printf("Mes invalido (%d) set para 1.", testeMes);
return 1;
}
}
//end metodo valida mes
private int checkDay(int testeDia){
int[] diasPorMes = {0,31,28,31,30,31,30,31,31,30,31,30,31};
if((testeDia > 0) && (testeDia <= diasPorMes[mes])){
return testeDia;
}
else{
System.out.printf("Dia invalido!");
return 0;
}
}//end checkDay
public String toString(){
return String.format("%d/%d/%d", dia, mes, ano);
}
}
Classe abstrata Empregado
public abstract class Empregado {
private String nome;
private String sobreNome;
private String numeroSeguroSocial;
private Data dataNascimento;
public Empregado(String first, String last, String ssn, int dia, int mes,
int ano) {
nome = first;
sobreNome = last;
numeroSeguroSocial = ssn;
dataNascimento = new Data(dia, mes, ano);
}
// gets and sets
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getSobreNome() {
return sobreNome;
}
public void setSobreNome(String sobreNome) {
this.sobreNome = sobreNome;
}
public String getNumeroSeguroSocial() {
return numeroSeguroSocial;
}
public void setNumeroSeguroSocial(String numeroSeguroSocial) {
this.numeroSeguroSocial = numeroSeguroSocial;
}
// end gets and sets
public String toString() {
return String.format("%s %s\n%s: %s %s: %d/%d/%d", getNome(),
getSobreNome(), "Numero de Seguro Social",
getNumeroSeguroSocial(), "\nData de Nascimento",
dataNascimento.getDia(), dataNascimento.getMes(),
dataNascimento.getAno());
}
public abstract double ganhos();
}
Classe concreta EmpregadoComissao
public class EmpregadoComissao extends Empregado {
private double vendasSemanais;
private double taxaComissao;
public EmpregadoComissao(String first, String last, String ssn,int dia, int mes, int ano,
double vendas, double taxa) {
super(first, last, ssn, dia, mes, ano);
setVendasSemanais(vendas);
setTaxaComissao(taxa);
}
// gets and sets
public double getVendasSemanais() {
return vendasSemanais;
}
public void setVendasSemanais(double vendas) {
vendasSemanais = (vendas < 0.0) ? 0.0 : vendas;
}
public double getTaxaComissao() {
return taxaComissao;
}
public void setTaxaComissao(double taxa) {
taxaComissao = (taxa > 0.0 && taxa < 1.0) ? taxa : 0.0;
}
// end gets and sets
@Override
public double ganhos() {
return getVendasSemanais() * getTaxaComissao();
}
public String toString() {
return String.format("%s %s\n%s: %.2f;\n%s: %.2f;",
"Empregado de Comissao:",super.toString(),"Vendas Semanais",
getVendasSemanais(),"Taxa de Comissao",getTaxaComissao());
}
}