Ajude o site desativando o bloqueador de anúncio
Cabeçalho

ADVPL - Classe no PRW vs Classe no TLPP

Autor: Eurai Criado: 15/08/2021 Atualizado: 24/11/2025 ADVPL
Postagem

📘 Classes no ADVPL e TLPP – Exemplos completos e comparativos

Hoje trago um exemplo prático de como criar e utilizar classes no ADVPL e também como aproveitar os recursos avançados disponíveis no TLPP. Classes no ADVPL são simples e diretas, enquanto no TLPP temos tipagem, modificadores de acesso e muito mais — tornando o código mais robusto e próximo de linguagens modernas. 🚀

 

🟦 Exemplo em ADVPL

No ADVPL, as classes possuem estrutura básica: É possível declarar propriedades usando DATA e manipular seus valores via SELF:DATA ou ::DATA. A seguir, um exemplo de classe simples com um método de alerta:

#INCLUDE "TOTVS.CH"

User Function UDCLASS()
    oUDCLASS := UDCLASS():New()
    oUDCLASS:Alert( 'Minha Mensagem' )
Return(Nil)

/*/{Protheus.doc} UDCLASS
Classe generica. Funções para usos diversos..
@type	class
@author	Eurai Rapelli
/*/
Class UDCLASS

    Method New() Constructor
    Method Alert( cMen, cTit )

EndClass

/*/{Protheus.doc} New
Método New
/*/
Method New() Class UDCLASS
Return( Self )

/*/{Protheus.doc} Alert
Mostra mensagem
/*/
Method Alert( cMen, cTit ) Class UDCLASS
    Default cMen := ''
    Default cTit := 'Universo do Desenvolvedor'
    MsgAlert(cMen,cTit)
Return( Nil )

 

🟩 Exemplo em TLPP

No TLPP, foram adicionados vários recursos importantes:

  • Tipagem
  • Namespace
  • Métodos e variáveis com níveis de acesso (public, private, protected)
  • Métodos estáticos

Abaixo, um exemplo completo com métodos public, private, protected e static:

#INCLUDE "TOTVS.CH"

User Function UDCLASSTLPP()
    oUDCLASSTLPP := UDCLASSTLPP():New()

    UDCLASSTLPP():updateStatic()
    oUDCLASSTLPP:Alert( 'Minha Mensagem' )
    // oUDCLASSTLPP:updateLogGR() //Erro, pois é private
Return(Nil)

/*/{Protheus.doc} UDCLASSTLPP
Classe generica. Funções para usos diversos..
@type	class
/*/
Class UDCLASSTLPP

    Public Method New() Constructor
    Public Method Alert( cMen, cTit )

    Private Method updateLogGR()
    Protected Method updateTable()
    Static Method updateStatic()

EndClass

/*/{Protheus.doc} New
Método New
/*/
Method New() Class UDCLASSTLPP
Return( Self )

/*/{Protheus.doc} Alert
Mostra mensagem
/*/
Method Alert( cMen, cTit ) Class UDCLASSTLPP
    Default cMen := ''
    Default cTit := 'Universo do Desenvolvedor'

    ::updateLogGR()
    ::updateTable()
    MsgAlert(cMen,cTit)
Return( Nil )

/*/{Protheus.doc} updateLogGR
Atualiza logs (private)
/*/
Method updateLogGR() Class UDCLASSTLPP
    conout('atualizando loggr')
Return( Nil )

/*/{Protheus.doc} updateTable
Atualiza tabela (protected)
/*/
Method updateTable() Class UDCLASSTLPP
    conout('atualizando updateTable')
Return( Nil )

/*/{Protheus.doc} updateStatic
Atualiza logs (static)
/*/
Method updateStatic() Class UDCLASSTLPP
    conout('atualizando static logs')
Return( Nil )

 

Com esses exemplos, fica claro como a chegada do TLPP tornou o desenvolvimento mais modular, moderno e seguro. Dá até gosto programar! 😎

Gostou? Compartilhe com seus amigos e deixe um comentário!

Um abraço, e até a próxima! 👋

#advpl #tlpp #totvs #protheus #classesadvpl #orientacaoaobjetos #frameworktotvs #desenvolvimentototvs #universodesenvolvedor

ASSINE A NEWSLETTER

Cadastrando...

PIX uDesenv

PIX QR Code para depósito

Clique para doar

Parceiros

Tudo em ADVPL - Blog parceiro

Blog ADVPL