Joao01
Abril 5, 2021, 10:01pm
#1
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
package PrimeiraEntrada;
public abstract class Funcionario {
private String Nome;
private String Cadastro;
private String Funcao;
public String getNome() {
return Nome;
}
public void setNome(String nome) {
Nome = nome;
}
public String getCadastro() {
return Cadastro;
}
public void setCadastro(String cadastro) {
Cadastro = cadastro;
}
public String getFuncao() {
return Funcao;
}
public void setFuncao(String funcao) {
Funcao = funcao;
}
}
package PrimeiraEntrada;
public class Programador {
private int nivel;
private double qtdeHorasTrab;
public int getNivel() {
return nivel;
}
public void setNivel(int nivel) {
this.nivel = nivel;
}
public double getQtdeHorasTrab() {
return qtdeHorasTrab;
}
public void setQtdeHorasTrab(double qtdeHorasTrab) {
this.qtdeHorasTrab = qtdeHorasTrab;
}
}
package PrimeiraEntrada;
public class Gerente {
private int qtdeProjetos;
private float salarioFixo = 9500;
public int getQtdeProjetos() {
return qtdeProjetos;
}
public void setQtdeProjetos(int qtdeProjetos) {
this.qtdeProjetos = qtdeProjetos;
}
public float getSalarioFixo() {
return salarioFixo;
}
public void setSalarioFixo(float salarioFixo) {
this.salarioFixo = salarioFixo;
}
}
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.
Joao01
Abril 14, 2021, 12:23am
#3
package PrimeiraEntrada;
public abstract class Funcionario {
private String nome;
private String cadastro;
private String funcao;
public void calcularSalario() {
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getCadastro() {
return cadastro;
}
public void setCadastro(String cadastro) {
this.cadastro = cadastro;
}
public String getFuncao() {
return funcao;
}
public void setFuncao(String funcao) {
this.funcao = funcao;
}
}
package PrimeiraEntrada;
public class Programador {
private int nivel;
private double qtdeHorasTrab;
private double salario;
public void calcularSalario()
{
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();
}
}
}
}
public int getNivel() {
return nivel;
}
public void setNivel(int nivel) {
this.nivel = nivel;
}
public double getQtdeHorasTrab() {
return qtdeHorasTrab;
}
public void setQtdeHorasTrab(double qtdeHorasTrab) {
this.qtdeHorasTrab = qtdeHorasTrab;
}
public double getSalario() {
return salario;
}
public void setSalario(double salario) {
this.salario = salario;
}
}
package PrimeiraEntrada;
public class Gerente {
private int qtdeProjetos;
private double salario;
public void calcularSalario()
{
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;
}
}
}
}
public int getQtdeProjetos() {
return qtdeProjetos;
}
public void setQtdeProjetos(int qtdeProjetos) {
this.qtdeProjetos = qtdeProjetos;
}
public double getSalario() {
return salario;
}
public void setSalario(double salario) {
this.salario = salario;
}
}
package PrimeiraEntrada;
import javax.swing.JOptionPane;
public class Executa {
Funcionario func = new Funcionario();
Programador prog = new Programador();
Gerente gere = new Gerente();
int i = 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");
}
}
}
}
Consegue conferir pra mim se é isso mesmo
Programador e Gerente deveriam estender Funcionario.
O método calcularSalario() da classe Funcionario deveria ser abstrato.
Joao01
Abril 14, 2021, 11:40am
#5
package PrimeiraEntrada;
public abstract class Funcionario {
private String nome;
private String cadastro;
private String funcao;
public abstract calcularSalario() {
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getCadastro() {
return cadastro;
}
public void setCadastro(String cadastro) {
this.cadastro = cadastro;
}
public String getFuncao() {
return funcao;
}
public void setFuncao(String funcao) {
this.funcao = funcao;
}
}
package PrimeiraEntrada;
public class Programador extends Funcionario {
private int nivel;
private double qtdeHorasTrab;
private double salario;
public abstract calcularSalario()
{
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();
}
}
}
}
public int getNivel() {
return nivel;
}
public void setNivel(int nivel) {
this.nivel = nivel;
}
public double getQtdeHorasTrab() {
return qtdeHorasTrab;
}
public void setQtdeHorasTrab(double qtdeHorasTrab) {
this.qtdeHorasTrab = qtdeHorasTrab;
}
public double getSalario() {
return salario;
}
public void setSalario(double salario) {
this.salario = salario;
}
}
package PrimeiraEntrada;
public class Gerente extends Funcionario{
private int qtdeProjetos;
private double salario;
public abstract calcularSalario()
{
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;
}
}
}
}
public int getQtdeProjetos() {
return qtdeProjetos;
}
public void setQtdeProjetos(int qtdeProjetos) {
this.qtdeProjetos = qtdeProjetos;
}
public double getSalario() {
return salario;
}
public void setSalario(double salario) {
this.salario = salario;
}
}
package PrimeiraEntrada;
import javax.swing.JOptionPane;
public class Executa {
Funcionario func = new Funcionario();
Programador prog = new Programador();
Gerente gere = new Gerente();
int i = 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 ?
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.
Joao01
Abril 17, 2021, 1:41am
#7
Não entendi a parte de retornar a parte do método, consegue me esclarecer melhor ?
Fefo80
Abril 17, 2021, 1:45am
#8
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 …
O método calcularSalario
tem que ser void
ou tem que retornar o salário?
Joao01
Maio 2, 2021, 3:38pm
#10
Sr’s agradeço a ajuda, a atividade ja deu o prazo kk
Ambos ajudaram.
Fefo80
Maio 2, 2021, 8:46pm
#11
Pelo menos conseguiu fazer?
Joao01
Maio 12, 2021, 1:27am
#12
Apanhei um pouco mais foi kk
1 curtida