# Classes

A linguagem Egua suporta a orientação a objetos de forma nativa, permitindo a criação e manipulação de classes, objetos, métodos e herança.

# Criando uma classe

Uma classe é uma estrutura que define as características e comportamentos de um objeto. Em Egua, você pode criar uma classe usando a palavra-chave classe seguida pelo nome da classe.

Exemplo:

classe Teste {}

# Instanciando uma classe

A instância de uma classe é criada através da chamada da classe, criando assim um objeto. Em Egua, para criar uma instância de uma classe, basta chamar o nome da classe seguido de parênteses.

Exemplo:

classe Teste {}

var teste = Teste();
escreva(teste); // Saída: "<Teste instância>"

# Métodos

Os métodos são funções associadas a uma classe que definem os comportamentos do objeto. Em Egua, você pode definir métodos dentro de uma classe sem a palavra-chave função. Os métodos podem ser acessados através da instância do objeto usando o operador ..

Exemplo:

classe Teste {
  testeFunção() {
    escreva("olá");
  }
}

var teste = Teste();
teste.testeFunção(); // Saída: "olá"

# Referência à instância (isto)

Dentro de cada método de instância, você pode usar a palavra-chave isto para se referir à instância atual do objeto. Ela é uma referência auto-declarativa que permite acessar o estado e os métodos da instância.

Exemplo:

classe Teste {
  construtor() {
    escreva(isto);
  }
}

var teste = Teste(); // Saída: "<Teste instância>"

# Estado do objeto

O estado de um objeto se refere às variáveis que são atribuídas a ele. Em Egua, você pode definir o estado de um objeto usando a palavra-chave isto dentro de um método. Isso permite que cada instância do objeto tenha seu próprio estado.

Exemplo:

classe Teste {
  testeFunção() {
    isto.a = 100;
    escreva(isto.a); // Saída: "100"
  }
}

var teste = Teste();
teste.testeFunção();

# Construtor

O construtor é um método especial que é automaticamente chamado ao instanciar a classe. Ele é usado para inicializar o estado do objeto ou executar qualquer código de configuração necessário.

Exemplo:

classe Teste {
  construtor() {
    escreva("começou");
  }
}

var teste = Teste(); // Saída: "começou"

# Herança

Em Egua, é possível criar uma classe filha a partir de uma classe pai, herdando seus atributos e métodos. Isso permite reutilizar código existente e adicionar novos atributos e métodos específicos da classe filha.

Exemplo:

classe Animal {}

classe Cachorro herda Animal {}
classe Animal {
  corre() {
    escreva("correndo");
  }
}

classe Cachorro herda Animal {}

var thor = Cachorro();

thor.corre(); // Saída: "correndo"

Também é possível ch

amar um método pertencente à classe pai na classe filha usando a palavra-chave super. Isso permite acessar e executar o código da classe pai.

Exemplo:

classe A {
  data(data) {
    escreva(data);
  }
}

classe B herda A {
  construtor(data) {
    super.data(data);
  }
}

var a = B("13/12/1981");

Neste exemplo, a classe B herda da classe A e chama o método data da classe pai usando super.data(data) no construtor da classe B. Isso permite reutilizar o código existente na classe pai dentro da classe filha.