Ir ao conteúdo
  • Cadastre-se

Problemas com exercicio de herança


Posts recomendados

Alguem me ajuda, eu decidi testar o exercicio  e me deparei com 2 problemas/dificuldades.

Anexei o uml pra quem quiser conferir  e nele  tem uma regra de negocio que pede pra mostrar uma relação vinculada antes e depois de receber a comissao.

Só que eu nao sei como fazer isso,  e outro problema, por algum motivo meu calculo da comissao da um erro, por exemplo, eu não tava sabendo continuar o exercicio e  tentei somar a parte a remuneração com a comissao pra ver ser o calculo tava dando certo, mas aparece 100.02.0 ao invés de aparecer 102.

public class Cargo {
    private int codigo;
    private String descricao;
    private float remuneracao;
    
    public int getcodigo(){
        return codigo;
    }
    public String getdescricao(){
        return descricao;
    }
    public float getremuneracao(){
        return remuneracao;
    }
    
    public void setcodigo(int codigo){
        this.codigo=codigo;
    }
    public void setdescricao(String descricao){
        this.descricao=descricao;      
    }
    public void setremuneracao(float remuneracao){
        this.remuneracao=remuneracao;
    }
    
    public void concedeBonus(int percentual){
        double bonus=(percentual*this.remuneracao)/100;
        
    }
    
    public String toString(){
        return this.codigo+"  "+this.descricao+"         "+this.remuneracao;
    }
    
}

Aqui vai a super classe

public class Funcionario {
    Cargo carg = new Cargo();
    private String nome;
    private int sexo;
    private String cpf;
    
    public String getnome(){
        return nome; 
    }
    public int getsexo(){
        return sexo;
    }
    public String getcpf(){
        return cpf;
    }
    
    public void setnome(String nome){
        this.nome=nome;
    }
    public void setsexo(int sexo){
        this.sexo=sexo;
    }
    public void setcpf(String cpf){
        this.cpf=cpf;
    }
    
    public String toString(){
        return this.nome+" "+this.cpf;
    }
    
    public float comissao(){
        return this.carg.getremuneracao();
    }
    
    
}

subclasse

public class Medio extends Funcionario{
    private double vMes;
    
    public double getvMes(){
        return vMes;
    }
    public void setvMes(double vMes){
        this.vMes=vMes;
    }
    
    public float comissao(){
        return (float) (+Medio.this.vMes*0.02f);
    }   
    
    public String toString(){
        return super.toString();

        
                
        
        
    }
    
}

classe teste

    public static void main(String[] args) {
        // TODO code application logic here
        Medio medio = new Medio();
        medio.setnome("Lucio");
        medio.setsexo(1);
        medio.setcpf("    111.111.111.15   ");
        medio.carg.setcodigo(111);
        medio.carg.setdescricao("    Nada");
        medio.carg.setremuneracao(100.0f);
        medio.setvMes(100.0);
        System.out.println("---------------------RELAÇÃO DE FUNCIONÁRIOS------------------------");
        System.out.println("NOME:" + "     CPF:   " + "          SEXO:");
        System.out.println(medio+" "+medio.getsexo());
        System.out.println("--------------------- RELAÇÃO DE CARGOS ----------------------------------");
        System.out.println("CODIGO:" + "  DESCRIÇÃO:" + "   REMUNERAÇÃO:");
        System.out.println(medio.carg.toString());
        System.out.println("----------------------RELAÇÃO VINCULADA -----------------------");
        System.out.println("NOME:" + "     CPF:   " + "          CODIGO:" + "  DESCRIÇÃO:" + "   REMUNERAÇÃO:");
        System.out.println(medio+""+medio.carg.toString());
        System.out.println("----------------------RELAÇÃO VINCULADA depois da comissao");
        System.out.println("NOME:" + "     CPF:   " + "          CODIGO:" + "  DESCRIÇÃO:" + "   REMUNERAÇÃO:");
      
        
    }
    
}

 

ExerciciojavaCargo.docx

Link para o comentário
Compartilhar em outros sites

Numeração de ponto flutuante é por natureza imprecisa
, eu não gosto de dar respostas pela metade, mas nesse
caso a explicação é realmente complexa, use BigDecimal 
para valores monetários (procure sobre essa classe no google).

Pelas minhas contas tem umas violações de Encapsulamento 
no seu código. Em suma o ideal é que você declare os 
membros sempre como private (só podem ser acessados 
diretamente por funções da mesma classe) ou protected 
(só podem ser acessados diretamente por funções da 
mesma classe ou classes decendentes). Ou seja, algo como:

private cargo = new Cargo(); 
public getCargo(){ return cargo; }
public setCargo( Cargo novoCargo ){ this.cargo = novoCargo; }

e para acessar depois
medio.getCargo().setCodigo( novoCodigo ) ao invés de medio.carg.setcodigo
(Aliás, esse código está funcionando? porque pelas minhas 
contas carg n seria acessível em main).

Nesse caso você pode usar protected (se já tiverem estudado 
protected obviamente) e cologar o getCargo apenas na classe 
derivada, uma dica é que o seu editor quase certamente gera 
automaticamente os getters e setters, basta declarar os membros.

Eu não sei se o seu professor vai cobrar isso, mas você pode 
melhorar a nomenclatura, procure por padrão de nomenclatura 
java, isso n influencia diretamente no programa, mas melhora 
muito o entendimento, basicamente use sempre:
getNome ao invés de getnome
Verbos no infinitivo (concederBonus ao invés de concedeBonus).
Um esboço...
class MinhaClasse{
   private propriedade = new OutraClasse();
   public NomeClasse getPropriedade(){...
   public void setPropriedade( NomeClasse valor ){...
   public void executarCalculo(){....
   ...
}

Dicas de estudo para você: Encapsulamento em java e 
Camel Case (o dito padrão de nomenclatura).

Deve ter alguns erros aí, é só para te dar umas 
pistas, faz muitos anos que não programo em java.

Boa sorte e que a força esteja contigo.

 

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!