Boa noite a todos,
Preciso de um Help.
Tenho um exercício em Java para fazer mas para mim o conteúdo esta muito avançado, estou com dificuldades para interpretar e usar as funções corretas.
Até o momento presente fiz as declarações, classes, criação do projeto e só, não entendi como declaro a parte final de cada classe conforme anexo e também não tenho ideia de como fazer as demais obrigações.
Agradeço quem me ajudar, porque será um processo meio longo kk
Pelo diagrama do anexo, nesse código usa-se Polimorfismo.
Sabendo disso, primeiramente você deve extender a classe abstrata Funcionario para as classes Programador e Gerente usando extends, assim: public class Programador extends Funcionario.
Mesma coisa na classe Gerente.
O exercício trata-se apenas de cadastrar um funcionário (usando uma simples entrada de dados) e printar as informaçôes cadastradas ao final do cadastro.
Além disso, após o final do cadastro o programa deve continuar aberto, permitindo que o usuário cadastre um novo funcionário. Você pode fazer isso com um loop while.
Aquele método calcularSalario(), você simplesmente declara em todas as 3 classes, a única diferença vai ser os argumentos.
J
Joao01
packagePrimeiraEntrada;publicabstractclassFuncionario{privateStringnome;privateStringcadastro;privateStringfuncao;publicvoidcalcularSalario(){}publicStringgetNome(){returnnome;}publicvoidsetNome(Stringnome){this.nome=nome;}publicStringgetCadastro(){returncadastro;}publicvoidsetCadastro(Stringcadastro){this.cadastro=cadastro;}publicStringgetFuncao(){returnfuncao;}publicvoidsetFuncao(Stringfuncao){this.funcao=funcao;}}packagePrimeiraEntrada;publicclassProgramador{privateintnivel;privatedoubleqtdeHorasTrab;privatedoublesalario;publicvoidcalcularSalario(){if(this.getNivel()==1){this.salario=100*this.getQtdeHorasTrab();}else{if(this.getNivel()==2){this.salario=75*this.getQtdeHorasTrab();}else{if(this.getNivel()==3){this.salario=50*this.getQtdeHorasTrab();}}}}publicintgetNivel(){returnnivel;}publicvoidsetNivel(intnivel){this.nivel=nivel;}publicdoublegetQtdeHorasTrab(){returnqtdeHorasTrab;}publicvoidsetQtdeHorasTrab(doubleqtdeHorasTrab){this.qtdeHorasTrab=qtdeHorasTrab;}publicdoublegetSalario(){returnsalario;}publicvoidsetSalario(doublesalario){this.salario=salario;}}packagePrimeiraEntrada;publicclassGerente{privateintqtdeProjetos;privatedoublesalario;publicvoidcalcularSalario(){if(this.getQtdeProjetos()!=0&&this.getQtdeProjetos()<=5){this.salario=9500.*0.08+9500;}else{if(this.getQtdeProjetos()>5&&this.getQtdeProjetos()<=10){this.salario=9500.00*0.12+9500;}else{if(this.getQtdeProjetos()>10){this.salario=9500.00*0.21+9500;}}}}publicintgetQtdeProjetos(){returnqtdeProjetos;}publicvoidsetQtdeProjetos(intqtdeProjetos){this.qtdeProjetos=qtdeProjetos;}publicdoublegetSalario(){returnsalario;}publicvoidsetSalario(doublesalario){this.salario=salario;}}packagePrimeiraEntrada;importjavax.swing.JOptionPane;publicclassExecuta{Funcionariofunc=newFuncionario();Programadorprog=newProgramador();Gerentegere=newGerente();inti=1;while(i!=0){func.setNome(JOptionPane.showInputDialog("\nInsira seu Nome:"));func.setCadastro(JOptionPane.showInputDialog("Insira Cadastro:"));func.setFuncao(JOptionPane.showInputDialog("Insira funcao.\nGerente ou Programador:"));if(func.getFuncao().equals("Gerente")||func.getFuncao().equals("gerente")){gere.setQtdeProjetos(Integer.parseInt(JOptionPane.showInputDialog(null,"Projetos de Gerencia")));gere.calcularSalario();JOptionPane.showMessageDialog(null,"Nome: "+func.getNome()+"\nCadastro: "+func.getCadastro()+"\nFunção: "+func.getFuncao()+"\nQuantidade de Projetos: "+gere.getQtdeProjetos()+"\nSalario: R$"+gere.getSalario());}else{if(func.getFuncao().equals("Programador")||func.getFuncao().equals("programador")){prog.setNivel(Integer.parseInt(JOptionPane.showInputDialog(null,"Qual o seu nível na empresa?")));prog.setQtdeHorasTrab(Double.parseDouble(JOptionPane.showInputDialog(null,"Qual a carga horária?")));prog.calcularSalario();JOptionPane.showMessageDialog(null,"Nome: "+func.getNome()+"\nCadastro: "+func.getCadastro()+"\nFunção: "+func.getFuncao()+"\nNivel: "+prog.getNivel()+"\nCarga horária: "+prog.getQtdeHorasTrab()+" Horas"+"\nSalario: R$"+prog.getSalario());}}i=JOptionPane.showConfirmDialog(null,"Deseja continuar?");if(i==JOptionPane.YES_OPTION){i=1;}else{i=0;JOptionPane.showMessageDialog(null,"Programa encerrado");}}}}Consegueconferirpramimseéissomesmo
staroski
Programador e Gerente deveriam estender Funcionario.
O método calcularSalario() da classe Funcionario deveria ser abstrato.
J
Joao01
packagePrimeiraEntrada;publicabstractclassFuncionario{privateStringnome;privateStringcadastro;privateStringfuncao;publicabstractcalcularSalario(){}publicStringgetNome(){returnnome;}publicvoidsetNome(Stringnome){this.nome=nome;}publicStringgetCadastro(){returncadastro;}publicvoidsetCadastro(Stringcadastro){this.cadastro=cadastro;}publicStringgetFuncao(){returnfuncao;}publicvoidsetFuncao(Stringfuncao){this.funcao=funcao;}}packagePrimeiraEntrada;publicclassProgramadorextendsFuncionario{privateintnivel;privatedoubleqtdeHorasTrab;privatedoublesalario;publicabstractcalcularSalario(){if(this.getNivel()==1){this.salario=100*this.getQtdeHorasTrab();}else{if(this.getNivel()==2){this.salario=75*this.getQtdeHorasTrab();}else{if(this.getNivel()==3){this.salario=50*this.getQtdeHorasTrab();}}}}publicintgetNivel(){returnnivel;}publicvoidsetNivel(intnivel){this.nivel=nivel;}publicdoublegetQtdeHorasTrab(){returnqtdeHorasTrab;}publicvoidsetQtdeHorasTrab(doubleqtdeHorasTrab){this.qtdeHorasTrab=qtdeHorasTrab;}publicdoublegetSalario(){returnsalario;}publicvoidsetSalario(doublesalario){this.salario=salario;}}packagePrimeiraEntrada;publicclassGerenteextendsFuncionario{privateintqtdeProjetos;privatedoublesalario;publicabstractcalcularSalario(){if(this.getQtdeProjetos()!=0&&this.getQtdeProjetos()<=5){this.salario=9500.*0.08+9500;}else{if(this.getQtdeProjetos()>5&&this.getQtdeProjetos()<=10){this.salario=9500.00*0.12+9500;}else{if(this.getQtdeProjetos()>10){this.salario=9500.00*0.21+9500;}}}}publicintgetQtdeProjetos(){returnqtdeProjetos;}publicvoidsetQtdeProjetos(intqtdeProjetos){this.qtdeProjetos=qtdeProjetos;}publicdoublegetSalario(){returnsalario;}publicvoidsetSalario(doublesalario){this.salario=salario;}}packagePrimeiraEntrada;importjavax.swing.JOptionPane;publicclassExecuta{Funcionariofunc=newFuncionario();Programadorprog=newProgramador();Gerentegere=newGerente();inti=1;while(i!=0){func.setNome(JOptionPane.showInputDialog("\nInsira seu Nome:"));func.setCadastro(JOptionPane.showInputDialog("Insira Cadastro:"));func.setFuncao(JOptionPane.showInputDialog("Insira funcao.\nGerente ou Programador:"));if(func.getFuncao().equals("Gerente")||func.getFuncao().equals("gerente")){gere.setQtdeProjetos(Integer.parseInt(JOptionPane.showInputDialog(null,"Projetos de Gerencia")));gere.calcularSalario();JOptionPane.showMessageDialog(null,"Nome: "+func.getNome()+"\nCadastro: "+func.getCadastro()+"\nFunção: "+func.getFuncao()+"\nQuantidade de Projetos: "+gere.getQtdeProjetos()+"\nSalario: R$"+gere.getSalario());}else{if(func.getFuncao().equals("Programador")||func.getFuncao().equals("programador")){prog.setNivel(Integer.parseInt(JOptionPane.showInputDialog(null,"Qual o seu nível na empresa?")));prog.setQtdeHorasTrab(Double.parseDouble(JOptionPane.showInputDialog(null,"Qual a carga horária?")));prog.calcularSalario();JOptionPane.showMessageDialog(null,"Nome: "+func.getNome()+"\nCadastro: "+func.getCadastro()+"\nFunção: "+func.getFuncao()+"\nNivel: "+prog.getNivel()+"\nCarga horária: "+prog.getQtdeHorasTrab()+" Horas"+"\nSalario: R$"+prog.getSalario());}}i=JOptionPane.showConfirmDialog(null,"Deseja continuar?");if(i==JOptionPane.YES_OPTION){i=1;}else{i=0;JOptionPane.showMessageDialog(null,"Programa encerrado");}}}}
Tenho que mudar todos os publics void para abstrato ?
staroski
Só o método calcularSalario() da classe Funcionario deve ser abstrato.
Nas classes Programador e Gerente ele não será abstrato.
Métodos abstratos não possuem corpo, tem que remover o { }.
Faltou definir o tipo de retorno do método.
J
Joao01
Não entendi a parte de retornar a parte do método, consegue me esclarecer melhor ?
Fefo80
Na realidade é o retorno do método.
Imagine que você fala pra sua mãe que vai ao mercado, e pergunta se ela quer algo.
O método é “perguntarPraMae( )”, e o retorno do método é o que ela vai lhe dizer para comprar pra ela
no caso seria provavelmente List[String] listaDeCompras…
staroski
O método calcularSalario tem que ser void ou tem que retornar o salário?
J
Joao01
Sr’s agradeço a ajuda, a atividade ja deu o prazo kk
Ambos ajudaram.