Srs, bom dia!
Tenho uma aplicação simples onde estou estudando os funcionamentos e benefícios da Hierarquia de heranças. Gostaria de saber qual seria uma “Boa prática de engenharia de software” em ambos os trecho de código.
//Classe commissionEmployee representa um funcionário que recebeu uma
//porcentagem das vendas brutas.
public class CommissionEmployee extends Object
{
protected String firstName;
protected String lastName;
protected String socialSecurityNumber;
protected double grossSales; //Vendas brutas semanais
protected double commissionRate; //Porcentagem da comissão
//Construtor de cinco argumentos
public CommissionEmployee( String first, String last, String ssn, double sales, double rate )
{
firstName = first;
lastName = last;
socialSecurityNumber = ssn;
setGrossSales( sales ); //Valida e armazena as vendas brutas
setCommissionRate( rate ); //Valida e armazena a taxa de comissão
}//Fim do construtor CommissionEmployee de cinco argumentos
//Configura o nome
public void setFirstName( String first )
{
firstName = first; //Deve valida
}//Fim do método setFirstName
//Retorna o nome
public String getFirstName()
{
return firstName;
}//Fim do método getFirstName
//Configura nome
public void setLastName( String last )
{
lastName = last; //Deve validar
}//Fim do método setLastName
//Retorna o sobreNome
public String getLastName()
{
return lastName;
}//Fim do método getLastName
//Configura o CIC
public void setSocialSecurityNumber( String ssn )
{
socialSecurityNumber = ssn; //Deve validar
}//Fim do método setSocialSecurityNumber
//Retorna o CIC
public String getSocialSecurityNumber()
{
return socialSecurityNumber;
}// Fim do método getSocialSecurityNumber
//Confugura a quantidade de vendas brutas
public void setGrossSales( double sales )
{
grossSales = ( sales < 0.0 ) ? 0.0 : sales ;
}//Fim do método grossSales
//Retorna a quantidade de vendas brutas
public double getGrossSales()
{
return grossSales;
}//Fim do método setGrossSales
//Configura a taxa de comissão
public void setCommissionRate( double rate )
{
commissionRate = ( rate > 0.0 && rate < 1.0 ) ? rate : 0.0;
}//Fim do método setCommissionRate
//Retorna a taxa de comissão
public double getCommissionRate()
{
return commissionRate;
}//Fim do método setCommissionRate
//Calcula os lucros
public double earnings()
{
return getCommissionRate() * getGrossSales();
}//Fim do método earings
//Retorna a representação String do objeto CommissionEmployee
@Override //Indica que esse método sobrescreve um método de superClasse
public String toString()
{
return String.format( "%s: %s %s\n%s: %s\n%s: %.2f\n%s: %.2f",
"Commisson Employee", getFirstName(), getLastName(),
"Social Security Number", getSocialSecurityNumber(),
"Gross Sales", getGrossSales(),
"Commission Rate", getCommissionRate() );
}//Fim do método toString
}//Fim da classe CommissionEmployee
*****Qual seria á prática recomendada no caso dos métodos earnings() e toString. Opção citada acima ou essa:******
//Calcula os lucros
public double earnings()
{
return commissionRate * grossSales;
}//Fim do método earings
//Retorna a representação String do objeto CommissionEmployee
@Override //Indica que esse método sobrescreve um método de superClasse
public String toString()
{
return String.format( "%s: %s %s\n%s: %s\n%s: %.2f\n%s: %.2f",
"Commisson Employee",firstName, lastName,
"Social Security Number", socialSecurityNumber,
"Gross Sales", grossSales,
"Commission Rate", commissionRate );
}//Fim do método toString
}//Fim da classe CommissionEmployee