• Conceitos de P.O.O

Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Declarando uma classe
  2. Declarando atributos
  3. Atributo estático
  4. Classe interna
  5. Classe anônima

Lua ainda não suporta POO(10/06/2025), porém, assim como simulamos Enum, vamos utilizar o tipo de dado table para simular orientação a objeto de forma limitada.

Sintaxe
[local] nome_classe = {}
Exemplo 1
local MinhClasse = {}

Nossos objetos precisam armazenar suas informações, para isso, declaramos seus campos ou atributos como variáveis locais:

Sintaxe
variavel_local.nome_atributo = valor_inicial

Essa propriedade local deve criada dentro do construtor e retornada como uma table para que tenhamos acesso:

Exemplo 2
local MinhaClasse = {}

MinhaClasse.construtor = function() //new
    local classe = {} 
    
    classe.MinhaPropriedade = 999 --public  
    
    return classe
end
local objeto = MinhaClasse.construtor() -- instancia
Saída
-

Atributos ou campos privados, devem ser declarados dentro de uma table utilizando o escopo local. Esses campos devem ser acessados apenas pelas funções internas ou locais.

Exemplo 3
MinhaClasse.construtor = function() //new
    local classe = {} 
    
    local MinhaPropriedadePrivada = 999 --  
    
    return classe
end
local objeto = MinhaClasse.construtor() -- instancia

Atributos estáticos em algumas linguagens POO, são atributos acessados sem a necessidade de uma instância ou objeto.

A Lua, a simulação é feita adicionando uma propriedade à uma table como no exemplo abaixo:

Exemplo 4
local MinhaClasse = {} --table
MinhaClasse.PropriedadeEstatica = 999
print(MinhaClasse.PropriedadeEstatica)
Saída
999
  1. 14/06/2025 - versão inicial