Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Dúvida no Ex. 5 da Aula 3 - Começando com Orientação a objetos

Simplesmente não entendi como proceder. Compreendi que variáveis guardam apenas referências, onde cada um é um objeto a parte e por isso no meu código a seguir seria impresso "diferentes". O que não saquei o que é para fazer neste exercício agora para que eu saia desta complicação.

No exercício comenta " Funcionario f2 = f1; O que acontece com o if do exercício anterior? " Não sei como aplicar isto :( Alguém pode me mostrar o próximo passo...

Segue meu código:

class funcionarioReferencia {

String nome; double salario;

void mostra(){

System.out.println(""); System.out.println("Nome" + this.nome); System.out.println("Salário: " + this.salario); System.out.println("");

}

}

class testarprograma{

public static void main(String[] args){

funcionarioReferencia f1 = new funcionarioReferencia(); f1.nome = "Nick Dourado"; f1.salario = 20000;

f1.mostra();

funcionarioReferencia f2 = new funcionarioReferencia(); f2.nome = "Renata Dourado"; f2.salario = 50000;

f2.mostra();

if ( f1 == f2){ System.out.println("Iguais");} else{ System.out.println("Diferentes"); }

}

}

4 respostas

Tente colocar seu código entre estes 3 acentos agudos para facilitar a visualização na próxima vez, qualquer coisa tem a formatação de como coloca o código formatado.

```
```

O exercicio pede:

" Crie duas referências para o mesmo funcionário, compare-os com o ==.

Tire suas conclusões. Para criar duas referências pro mesmo funcionário:

Funcionario f1 = new Funcionario();
f1.nome = "Hugo";
f1.salario = 100;

Funcionario f2 = f1;

O que acontece com o if do exercício anterior?

"

Pelo exercício quando se coloca f1 == f2 você faz uma comparação se os 2 são iguais, então irá retornar um valor booleano, ou seja, true ou false.

Quando você faz a referencia somente f2 = f1 você está falando que o f2 é igual ao f1, caso modifique o valor de f1 o f2 também terá o mesmo valor.

Ainda não entendi como mudar isso no código. Como ficaria? Abraços

solução!

Este é o código, quando se faz o if faz uma verificação ficando

public class View {
    public static void main(String[] args) {

        Funcionario f1 = new Funcionario();
        f1.nome = "Hugo";
        f1.salario = 100;

        Funcionario f2 = new Funcionario();
        f2.nome = "Hugo";
        f2.salario = 100;
        if (f2 == f1) {
            System.out.println("Os funcionários são iguais");
        } else {
            System.out.println("Os funcionários são diferentes");
        }
        boolean funcionariosIguais = (f1 == f2);
        System.out.println(funcionariosIguais);
    }
}

Se colocar == irá verificar se é verdadeiro, como no exercício 4.

Se colocar = irá falar que os 2 funcionários serão iguais, mesmo mudando nome ou salário de f2 ou f1.; Um exemplo que demonstra isso é este, mesmo mudando o valor de f2 o f1 será igual ao f2.

public class View {
    public static void main(String[] args) {
        Funcionario f1 = new Funcionario();
        f1.nome = "Hugo";
        f1.salario = 100;

        Funcionario f2 = f1;

        f2.nome = "Joao";
        f2.salario = 300;

        System.out.println(f1.nome);
        System.out.println(f1.salario);
        System.out.println(f2.nome);
        System.out.println(f2.salario);
    }
}

são iguais, pois a func2 está apontando para o mesmo objeto da variável func1