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 ::saldoHeranca
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 paiDiferencas do AdvPL antigo
- data em vez de
variable - public/private/protected explicitos
- ::campo pra acessar this (em vez de
::campoja era assim) - self em vez de
this - endclass em vez de
EndClass
Exemplos
Classe basica
class Foo
public data bar as character
public method new() as object
endclass