Retornar objeto instaciado

5 respostas
java
yuriFS

Bom pessoal, estou iniciando em POO e possuo muitas dúvidas.
É o seguinte, tenho uma classe chamada Funcionario, nela estão contidas algumas informações como nome, idade, id, salário. Já fiz os métodos gets e sets tudo certinho, o problema é que agora tenho que criar uma classe que compare duas instâncias da classe Funcionario e retorne a instância que apresente o maior salário. Como posso fazer isso?

public Funcionario compareSal () {
    
    Funcionario fun = new Funcionario();
    fun.setIdentificador(10);
    fun.setNome("Fulano");
    fun.setIdade(30);
    fun.setSalario(1000); 
    
    Funcionario fun2 = new Funcionario();
    fun2.setIdentificador(21);
    fun2.setNome("Ciclano");
    fun2.setIdade(35);
    fun2.setSalario(1250); 
    
    if (fun.getSalario() > fun2.getSalario())
   
}

Ah, tenho que retornar essa instância para o método main()

5 Respostas

D

Olá

public Funcionario maiorSalario(Funcionario f1, Funcrionario f2) {
    if (f1.salario > f2.salario) return f1; // f1 é maior
    else if (f1.salario < f2.salario) return f2; // f2 é maior
    else return null; // salários iguais
}

No main

Funcionario fun = new Funcionario();
fun.setIdentificador(10);
fun.setNome("Fulano");
fun.setIdade(30);
fun.setSalario(1000); 

Funcionario fun2 = new Funcionario();
fun2.setIdentificador(21);
fun2.setNome("Ciclano");
fun2.setIdade(35);
fun2.setSalario(1250);

ComparadorFuncionarios cf = new ComparadorFuncionarios();
Funcionario funcMaiorSalario = cf.maiorSalario(func, func2);
yuriFS

Vey valeu!! Agora consegui entende a parte do retorno, porém não consigo entender as duas ultimas linhas. Como eu faria para mostrar o funcionário com o maior salário?

D
ComparadorFuncionarios cf = new ComparadorFuncionarios();
Funcionario funcMaiorSalario = cf.maiorSalario(func, func2);

System.out.println(funcMaiorSalario.nome + " tem o maior salario");
yuriFS

Valeu cara! Agora eu consegui, ainda demorei para entender, mas deu tudo certo no final!

Eduardo_Maranata10

Seu código é perigoso, suponhamos que temos uma empresa de cinco mil funcionários, e 200 deles ocupam posição X e ganham salario Y, quando você comparar funcionários iguais o seu software vai parar de funcionar por que você estar retornando NULL

Nunca faça isso
else return null; // salários iguais

Leia mais sobre uma possível solução com esses links :

Link 1
Link 2

Criado 17 de abril de 2016
Ultima resposta 18 de abr. de 2016
Respostas 5
Participantes 3