class

Declaracao de classe orientada a objetos em TLPP. Suporta heranca, visibilidade publica/privada, metodos estaticos.

Assinatura: class NomeClasse [from ClasseBase] ... endclass

Retorna: construct

TLPP traz orientacao a objetos moderna — bem diferente do AdvPL classico (com Class From ... Method ... Class End). Sintaxe mais limpa, com visibilidade explicita.

Sintaxe basica

#include 'tlpp-core.th'

class Cliente
    public data id        as character
    public data nome      as character
    private data saldo    as numeric default 0

    public method new(cId as character) as object
    public method debitar(nValor as numeric) as logical
    public method getSaldo() as numeric
endclass

method new(cId) class Cliente
    ::id := cId
return self

method debitar(nValor) class Cliente
    if nValor > ::saldo
        return .F.
    endif
    ::saldo -= nValor
return .T.

method getSaldo() class Cliente
return ::saldo

Heranca

class ClientePremium from Cliente
    public data desconto as numeric default 10
    public method comprar(nValor) as logical
endclass

method comprar(nValor) class ClientePremium
    nValor *= (100 - ::desconto) / 100
return ::debitar(nValor)  // chama metodo do pai

Diferencas do AdvPL antigo

Exemplos

Classe basica

class Foo
    public data bar as character
    public method new() as object
endclass

Veja também