🤔 Para Refletir : "O que e um game dev? Uma miseravel pequena pilha de projetos !" - codingkitsune

Javascript - Classes

Administração Administração
♫ in the jungle, the mighty jungle, the lion sleeps tonight ♫
Postagens
465
Bravecoins
2.092
EaVkvkX.png



O que é uma classe?

Em Javascript, classes são um modelo para a criação de objetos. Muitas vezes, precisamos das mesmas propriedades de um objeto para reutilizar em diversos lugares em nosso programa. Por isso, uma classe servirá de base para gerar cópias desses objetos e alterar suas propriedades assim como você estivesse tirando uma cópia de um formulário qualquer em sua impressora e você pudesse preencher os campos vazios desse formulário e utilizá-lo para um propósito.



Como utilizar classes?

A sintaxe para criação de uma classe é o seguinte:

Javascript:
class Nome_da_classe {
    // Métodos, variáveis, construtores e outros tipos de código aqui
}

Criar uma classe é simples, primeiro a palavra-chave class, depois segue o nome da classe (o nome que você quiser, desde que só contenha letras, números ou sublinhados _ e que o nome não comece com um número). Por fim, o escopo da classe.



Do que é composto uma classe?

O escopo da classe é composto por variáveis, funções - que são denominados MÉTODOS dentro de classes - e propriedades exclusivas de uma classe que você, programador, pode determinar à ela e que explicarei mais adiante.

Veja abaixo uma classe de exemplo e como você pode acessar as propriedades dela.

Javascript:
class Pessoa {
    falar() {
        console.log("Salve!");
    }
    
    comer() {
        console.log("Nhoc! Nhoc!");
    }
    
    dormir() {
        console.log("Zzzz...");
    }
}

let jose = new Pessoa();

jose.falar();
jose.comer();
jose.dormir();

// Saída:
// "Salve!"
// "Nhoc! Nhoc!"
// "Zzzz..."

Nesse exemplo, foi criado uma classe chamado Pessoa, nela foi atribuída os métodos: falar(), comer() e dormir(), tendo cada um console.log() para exibir um texto na tela. Os métodos funcionam como funções dentro de classes, porém sem a necessidade de utilizar a palavra-chave function antes do nome.

Para chamar esses métodos no seu código, logo depois da declaração da classe, é necessário criar um objeto que servirá como uma cópia da classe Pessoa e atribuí-lo à uma variável. No código, foi na linha onde contém new Pessoa() que foi possível criar esse objeto e utilizá-lo na variável chamada jose.

Depois dessa linha de atribuição do objeto à variável, utilizou-se a variável jose para acessar os métodos do objeto da classe.

Por fim, na execução do programa, são exibidos na tela os textos que foram determinados em console.log() nos métodos da classe Pessoa.

O ato que criar um objeto de uma classe chama-se INSTANCIAMENTO. Então quando você está criando um objeto a partir de uma classe, você está INSTANCIANDO uma classe.

É possível criar vários objetos da mesma classe em variáveis diferentes. Como dito antes, eles funcionam como uma cópia da classe.

nZyyAz0.png

A seguir, veremos como poderemos declarar variáveis dentro de classes utilizando construtores.



Construtores em classes

Em classes, você pode criar variáveis e executar comandos quando um objeto delas é criado através de construtores.

Veja como funciona os construtores de classes em Javascript:


Javascript:
class Pessoa() {
    constructor(nome, idade) {
        this.nome = nome;
        this.idade = idade;
    }
    
    detalhes() {
        console.log("Meu nome é " + this.nome + " e tenho " + this.idade + " anos de idade.");
    }
}

let usuario = new Pessoa("Jorge", 20);

usuario.detalhes();

// Saída: "Meu nome é Jorge e tenho 20 anos de idade"

Neste exemplo, dentro do escopo da classe Pessoa, é chamado uma propriedade exclusiva chamada constructor, nele é possível definir parâmetros e utilizá-los no seu escopo.

Dentro do escopo do constructor, as variáveis são declaradas através da palavra-chave this. Esse comando serve para mencionar uma variável da própria classe. Como a variável nome ainda não foi declarada, agora haverá uma variável que tenha o tal valor.

Feito isso, para acessar essas variáveis dentro da classe, é utilizado o nome da variável seguido da palavra-chave this. Neste exemplo, seria o this.nome e o this.idade.

Perceba nesse exemplo que, quando o objeto da classe é atribuído a uma variável do código, foi passado entre parênteses os valores "Jorge" e 20. Esses valores estão relacionados aos parâmetros do construtor da classe Pessoa. É dessa maneira que você passa os valores ao construtor do objeto da classe.



Getters e Setters

Os Getters e Setters são métodos que tem como objetivo, respectivamente, buscar valor de uma variável do objeto e atribuir um valor a uma variável do objeto.

Veja um exemplo a seguir de como utilizá-las:

Javascript:
class Janela {
    constructor (posicaoX, posicaoY, largura, altura) {
        this.posicaoX = posicaoX;
        this.posicaoY = posicaoY;
        this.largura = largura;
        this.altura = altura;
    }
    
    get posicaoX() {
        return this.posicaoX;
    }
    
    set posicaoX(valor) {
        this.posicaoX = valor;
    }
    
    get posicaoY() {
        return this.posicaoY;
    }
    
    set posicaoY(valor) {
        this.posicaoY = valor;
    }
    
    get largura() {
        return this.largura;
    }
    
    set largura(valor) {
        this.largura = valor;
    }
    
    get altura() {
        return this.altura;
    }
    
    set altura(valor) {
        this.altura = valor;
    }
}

let minhaJanela = new Janela(0, 0, 120, 80);

console.log(minhaJanela.largura);
console.log(minhaJanela.altura);

minhaJanela.largura = 60;
minhaJanela.altura = 40;

console.log(minhaJanela.largura);
console.log(minhaJanela.altura);

// Saída:
// 120
// 80
// 60
// 40

Desculpe-me o código grande.

Perceba que nos métodos que foram definidos depois do construtor, há duas palavras-chave que se destacam antes dos nomes dos métodos. São eles: get e set. Sobre a definição deles:


get

Get significa buscar, pegar, colher uma informação. Em classes, get largura por exemplo, significa buscar o valor da variável largura do objeto.

Para pegar o valor de uma variável do objeto, na classe é preciso criar um método get e, no código, chamar esse método, assim como feito a seguir:

Javascript:
class Janela {
    constructor (largura = 150, altura = 120) {
        this.largura = largura;
        this.altura = altura;
    }
    
    get largura() {
        return this.largura;
    }
}

let minhaJanela = new Janela();

minhaJanela.largura;

// Saída: 150

bgtJk4w.png


set

Set significa definir, colocar, estabelecer uma informação. Em classes, set largura por exemplo, significa definir um valor à variável largura do objeto.

Para definir um valor a uma variável do objeto, na classe é preciso criar um método set e, no código, chamar esse método como se estive atribuindo uma variável (como minhaJanela.largura = 20;) ao invés de estar chamando uma função (como minhaJanela.largura(20);), assim como feito nas seguintes linhas:

Javascript:
class Janela {
    constructor (largura = 150, altura = 120) {
        this.largura = largura;
        this.altura = altura;
    }
    
    set largura(novaLargura) {
        this.largura = novaLargura;
    }
    
    get largura() {
        return this.largura;
    }
}

let minhaJanela = new Janela();

minhaJanela.largura = 20;

minhaJanela.largura;

// Saída: 20

m7cwuvt.png



Herança de Classes

Herdar de uma outra classe significa obter as mesmas propriedades (variáveis e métodos) de uma outra classe existente a partir de uma nova classe. Essa nova classe pode também ter suas propriedades além do que ele já herda de uma outra classe.

rwFIXuc.png

Veja a seguir como isso funciona:

Javascript:
class Animal {
    constructor(nome) {
        this.nome = nome;
    }
    
    get nome() {
        return this.nome;
    }
}

class Cachorro extends Animal {
    constructor(nome) {
        super(nome);
    }
    
    falar() {
        console.log("Au au!");
    }
}

class Gato extends Animal {
    constructor(nome) {
        super(nome);
    }
    
    falar() {
        console.log("Miau!");
    }
}

let cachorro = new Cachorro("Bernardo");

console.log(cachorro.nome + ": " + cachorro.falar());

// Saída: "Bernardo: Au au!"

Ao criar uma classe, é mencionado o nome da outra classe que queremos herdar seguido da palavra chave extends.

No exemplo acima, a classe Cachorro e a classe Gato agora tem as propriedades da classe Animal. Com isso, podemos acessar o nome do animal mesmo a classe sendo outra, porque essa outra classe herda da principal que é a classe Animal a que possui o método get nome.

Note também que, nas classes que herdam a classe Animal, no método constructor, há uma função super(). Essa função serve para chamar o código do método constructor da classe herdada. Essa função é útil para não precisar repetir os mesmos códigos dos métodos herdados.

Além disso, caso você precise escrever um código diferente do método da classe herdada, apenas crie o método com o mesmo nome, isso estará substituindo a execução do método do outro por este.

Mais informações:
 
Voltar
Topo