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

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

eu nao consegui compreender muito a utilizacao do "this". no video e na "explicacao" foi falado que nao eh obrigatorio o uso do this. Se nao eh obrigatorio, pq utiliza-lo? e em quais casos devo utilizar?

2 respostas
solução!

Boa noite Leonardo, tudo bem!?

Neste exercício, se você escrever um método mostra na classe Funcionario sem usar o this em uma das linhas, não terá erro, vai funcionar:

void mostra(){
        System.out.println("Nome: "+nome);
        System.out.println("Departamento: "+this.departamento);
        System.out.println("Salário: "+this.salario);
        System.out.println("Data de Contratação: "+this.dataEntrada.getDataFormatada());
        System.out.println("RG: "+this.RG);
        System.out.println("");
    }

Acredito que nas próximas lições, o uso do 'this' ficará mais claro.

Por exemplo, quando estiver na lição que fala de encapsulamento e criação de métodos públicos, você poderá ter algo do tipo:

class Funcionario{
    // Demais atributos.
    private double salario;

    public setSalario(double salario){
        if(salario>=0){
            this.salario = salario
        }else{
            System.out.println("O salário não pode ser um valor negativo!")
        }

    // Demais métodos

    }
}

No caso acima, o salário só pode ser acessado DIRETAMENTE, na classe Funcionario, pois ele é precedido da palavra reservada 'private'. O private é um modificador de acesso que impede que outras classes( como a que contém o main, por exemplo ) acesse diretamente o atributo. Ele é importante para garantir o encapsulamento. Ou seja, as regras de negócio de uma determinada classe é responsabilidade exclusiva da mesma. Sendo assim, eu não posso na minha classe de teste fazer algo do tipo:

class Test{
    public static void main(String[] args){
        Funcionario f = new Funcionario();
        f.salario = -100; //Não compila.
        f.salario = 100;// Também não compila.
        f.setSalario(100)/* Atribui o valor de salário = 100 ao atributo salário do objeto f */
    }
}

o método setSalario recebe um parâmetro salario e o que ele faz além de testar uma condição fictícia de regra de negócio é:

this.salario = salario;

Ou seja, na linha acima estou dizendo que o valor do salario do meu objeto em memória vai receber um valor salario como parâmetro. Eles possuem o mesmo nome!!!

Com o this, é possível diferenciá-los.

Este é um exemplo muito simples... Com o decorrer das lições, você verá coisas mais interessantes, como por exemplo o uso de construtores. Ainda sim, é considerada boa prática usar o this.

Espero ter ajudado e não complicado ainda mais . Siga as lições com calma. :)

De qualquer forma, o fórum está aí para isso!

Abs, Bruno Giminiani.

Leonardo o this é apenas uma maneira de dizer que o atributo é o atribulo daquela mesma classe e não de outra.

public class Carro {
    private String cor;

    this.cor = "Amarelo";
}

podem exisitir outros atributos cor em outras classes ou pacotes, e this faz essa função de dizer que é o atributo daquela classe.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software