Acho que não ficou muito claro, para mim, a aula sobre Getters e Setters.
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Acho que não ficou muito claro, para mim, a aula sobre Getters e Setters.
Oi João!
Getters e Setters ajudam no encapsulamento das propriedades de uma classe. Normalmente, podemos acessar as propriedades de uma classe com a seguinte sintaxe:
objeto.atributo
Entretanto, desta forma não é possível controlar o que é atribuído a esta propriedade. Por exemplo, no caso de uma classe chamada "Conta" que possui uma propriedade saldo com o seguinte código:
class Conta {
this.saldo = 0;
}Podemos alterar o saldo da maneira que quisermos, inclusive colocar um valor negativo ou até mesmo um valor booleano
var conta = new Conta();
conta.saldo = 10000;
conta.saldo = -1;
conta.saldo = trueTodos os comandos acima são válidos.
Quando é necessário implementar uma regra para mudar ou pegar o valor de uma propriedade, utilizamos os getters e setters que basicamente serão funções que intermediarão o acesso à propriedade.
class Conta() {
this._saldo = 0; // inicializando uma propriedade privada
get saldo() {
return "o saldo é de " + this._saldo + " reais";
}
set saldo(valor) {
if(valor < 0) {
this._saldo = 0;
}
else {
this._saldo = valor;
}
}Na classe acima foram implementadas regras adicionais ao pegar o valor e atribuir um novo valor à propriedade _saldo, que recebe o "_" na frente para indicar que ela não deve ser acessada diretamente.
Quando executamos os comandos
var conta = new Conta();
conta.saldo = 15;
console.log(conta.saldo);
conta.saldo = -10;
console.log(conta.saldo);Teremos como resultado
o saldo é de 15 reais
o saldo é de 0 reaisNo primeiro setter, atribuimos o valor 15 à propriedade _saldo e foi printada a frase como definida no get saldo(). Note também que o valor 15 foi passado com o sinal de =. Neste momento, a função set do saldo esta sendo chamada com saldo(15), e o valor de _saldo agora é 15.
No segundo caso, o valor atribuído é -10. No setter definimos que para valor < 0, _saldo receberá 0.
Quando executamos o comando conta.saldo estamos invocando o get saldo() que retorna "o saldo é de " + this._saldo + " reais".
Esse assunto realmente é confuso no começo, mas quando começamos a utilizar no dia a dia ele começa a fazer mais sentido.
Espero ter ajudado. Qualquer outra dúvida pode postar aqui. :)
Muito Obrigado!