Pessoal, estou com problemas para utilizar o SUPER no java, me deram um código enorme e disseram para enxugá-lo usando métodos de hierarquia e polimorfismo, consegui diminuir uma 50 linhas e melhorar alguns métodos, mas ainda estou em dúvida se usei de forma correta o SUPER e se há como enxugar mais o código.
codigo:
[code]class Funcionario{
char nome[],
data_nascimento[],
data_admissao[];
int departamento;
double salario,
previdencia = 0.05;
Funcionario(char nom[],char dn[],char da[],int dp,double sal){
nome=nom;
data_nascimento=dn;
data_admissao=da;
departamento=dp;
salario=sal;
}
}
class boy{
extends Funcionario{
double desconto_boy=0.02;
boy(char nom[],char dn[],char da[],int dep,double sal, desconto_boy){
super(nom, dn, da, dep, sal);
this.desconto_boy=desconto_boy;
}
}
void altera_desconto(double novo_desconto){
desconto_boy=novo_desconto;
}
double pagamento(){
// Calcula o salário líquido
return(salario*(1-previdencia-desconto_boy));
}
}
class chefe_de_boy{
extends boy{
double adicional_chefia_boy=0.10;
chefe_de_boy(char nom[],char dn[],char da[],int dep,double sal, double adicional_chefia_boy){
super(nom, dn, da, dep, sal);
this.adicional_chefia_boy=adicional_chefia_boy;
}
}
void altera_adicional(double novo_adicional){
adicional_chefia_boy=novo_adicional;
}
double pagamento(){
// Calcula o salário líquido
return(salario*(1-previdencia-
desconto_boy+adicional_chefia_boy));
}
}
class secretaria{
extends Funcionario{
secretaria(char nom[],char dn[],char da[],int dep,double sal){
super(nom, dn, da, dep, sal);
double pagamento(){
// Calcula o salário líquido
return(salario*(1-previdencia));
}
}
}
class afastado{ // Funcionário afastado
extends Funcionario {
char data_afastamento[];
afastado (char nom[], char dn[], char da[], char d_afasta[], int dp)
{
super(nom, dn, da, dp);
this.data_afastamento=d_afasta;
salario= 0.0;
}
}
double pagamento(){
return(salario);
}
}
class contador{
extends Funcionario {;
double
desconto_sindicato=0.1,
adicional_contabilidade=0.10;
contador(char nom[],char dn[],char da[],int dep, double sal){
super(nom, dn, da, dep, sal);
}
}
void altera_contribuicao(double nova_contribuicao){
desconto_sindicato=nova_contribuicao;
}
void altera_adicional(double novo_adicional){
adicional_contabilidade=novo_adicional;
}
double pagamento(){
// Calcula o salário líquido
return(salario*(1-previdencia-
desconto_sindicato+adicional_contabilidade));
}
}
class presidente{
extends Funcionario {
double adicional_periculosidade=0.3,
adicional_whisky=0.9,
adicional_helicoptero=0.7,
adicional_adicional=3.8;
presidente(char nom[],char dn[],char da[],int dep,
double sal){
super(nom, dn, da, dep, sal);
}
}
void altera_adicional(double novo_percentual){
adicional_periculosidade=0.3*(1+novo_percentual);
adicional_whisky=0.9*(1+novo_percentual);
adicional_helicoptero=0.7*(1+novo_percentual);
adicional_adicional=3.8*(1+novo_percentual);
}
double pagamento(){
// Calcula o salário líquido
return(salario*(1-previdencia+
adicional_periculosidade+
adicional_whisky+
adicional_helicoptero+
adicional_adicional));
}
}
class cadastro_n_funcionarios{
public static void main(String args[]){
boy Vagal = new boy (“Vagal da Silva Sauro”, “01/01/1981”, “03/03/1997”, 45, 350.00, 0.03);
chefe_de_boy Arthas = new chefe_de_boy (“Arthas the Killer”, “04/10/1973”, “03/06/1995”, 45, 750.00, 0.5);
secretaria Totosa = new secretaria (“Totosa Sabe Nada”, “04/09/1978”, “07/03/1998”, 76, 1800.00);
afastado Vacilo = new afastado (“Vacilo Franciscano”, “08/02/1967”, “03/09/1997”, “02/01/2003”);
contador Mercenario = new contador(“Mercenario Rosa”, “03/03/1967”, “03/03/1994”, 65, 2300.00);
presidente Mordor = new presidente (“Mordor King do Mal”, “21/08/1959”, “03/03/1989”, 01, 15000.00);
}
}
}[/code]