Duvido de exericio Java com classes abstratas

5 respostas
F

Olá pessoal gostaria que me ajudassem em mais esse exercício;

Crie uma classe abstrata FuncionarioAbstract com o atributo String nome e o método abstrato: public double getSalario(); Existem duas classes que herdam de FuncionarioAbstract e são concretas: Administrador e Gerente. Administrador possui um salário de 2000. Gerente já possui um atributo a mais double comissao e seu salário é 2500 + comissao.

Crie uma classe Principal com uma lista de FuncionarioAbstract (criando objetos do tipo Administrador e Gerente) utilizando a interface Set e a classe HashSet do pacote java.util. E crie um método public static void imprimir(Set funcionarios) imprimindo o nome e o salário de cada funcionario.

Minha dúvida é de qual seria o melhor método de implementar o código da comissão do gerente

5 Respostas

peczenyj

vc cria o atributo, e metodos acessores

class Foo {
   private double comissao;
   public void setComissao(double c){ comissao = c; } 
   public double qqCoisa() { return comissao + outra coisa; }
}
F

Valeu colega, vou tentar aqui, se aparecer outras duvidas também irei postar.

Muito obrigado

F

Como tenho varias duvidas com essa classe abstract vou postar o código das classes que já fiz e gostaria de sugestões e opiniões em eventuais erros e possíveis melhorias no código

FuncionarioAbstract

public abstract class FuncionarioAbstract {

private String nome;

public abstract double getSalario();

public String getNome() {
	return nome;
}

public void setNome(String nome) {
	this.nome = nome;
}

}

Administrador

public class Administrador extends FuncionarioAbstract {

public double getSalario() {
	return 2000;
}

}

Gerente

public class Gerente extends FuncionarioAbstract {

public double getSalario() {
        return 2500 + comissao;
    }

    private double comissao;

    public double getComissao() {
        return comissao;
    }

    public void setComissao(double comissao) {
        this.comissao = comissao;
    }

}

Classe Principal:

public static void main (String[] args) {



        Set <FuncionarioAbstract> funcionario = new HashSet<FuncionarioAbstract>();

        Gerente funcionario1 = new Gerente();
        funcionario1.setNome("Ramon Oliveira");
        funcionario1.setComissao(1750);
        funcionario.add(funcionario1);

        Administrador funcionario2 = new Administrador();
        funcionario2.setNome("Eliana Franco");
        funcionario.add(funcionario2);



        imprimir(funcionario);

}

public static void imprimir(Set<FuncionarioAbstract> funcionario) {

    for (FuncionarioAbstract f : funcionario) {

        System.out.println("Nome do funcionário: " + f.getNome());
        System.out.println("Salário do Funcionário: " + f.getSalario());
    }
}

}

M

Boa noite. Eu fiz desta forma.
A classe OperacaoFuncionario tem o comportamento de receber a coleção pelo construtor e exibir o nome e salário do funcionário através da iteração. E na classe do Gerente coloquei a comissão em valor real e não em porcentagem como vc informou.

``
Classa Abstrata:
`public abstract class FuncionarioAbstract {

private String nome;

public void setNome(String nome) {
	this.nome = nome;
}

public String getNome() {
	return nome;
}

public abstract double getSalario();

}`

Classe Administrador:
`public class Adminstrador extends FuncionarioAbstract{

private double salario;

public Adminstrador() {
	this.salario = 2000;
}

@Override
public double getSalario() {
	return this.salario;
}

}`

Classe Gerente:
`public class Gerente extends FuncionarioAbstract {

private double salario;
private double comissao;

public Gerente(double comissao) {
	this.comissao = comissao;
	this.salario = 2500;
}

@Override
public double getSalario() {
	return this.salario + this.comissao;
}

}
`

Classe OperacaoFuncionario:
`public class OperacaoFuncionario {

private Set<FuncionarioAbstract> funcionario;

public OperacaoFuncionario(Set<FuncionarioAbstract> fun) {
	this.funcionario = fun;
}

public Set<FuncionarioAbstract> getFuncionario() {
	return funcionario;
}

public void exibirDetalhes(){
	for (FuncionarioAbstract fun : funcionario) {
		System.out.println("Nome do funcionário: " + fun.getNome() + ". Salário: " + fun.getSalario());
	}
}

}`

Classe Teste:
`public class OperacaoFuncionarioTest {

public static void main(String[] args) {
	
	Adminstrador adminstrador1 = new Adminstrador();
	adminstrador1.setNome("Mihael");
	
	Adminstrador adminstrador2 = new Adminstrador();
	adminstrador2.setNome("Amanda");
	
	Gerente gerente1 = new Gerente(500);
	gerente1.setNome("Renan Melo");
	
	Gerente gerente2 = new Gerente(1000);
	gerente2.setNome("Rodrigo Melo");
	
	Set<FuncionarioAbstract> funcionario = new HashSet<>(Arrays.asList(adminstrador1, adminstrador2
			, gerente1, gerente2));
	
	OperacaoFuncionario operacaoFuncionario = new OperacaoFuncionario(funcionario);
	operacaoFuncionario.exibirDetalhes();

}

}`

F

Olá colega, já tem uma semana que resolvi esse exercício e já entreguei, vou editar o que tinha feito e postar o código aqui.

Criado 15 de novembro de 2016
Ultima resposta 23 de nov. de 2016
Respostas 5
Participantes 3