Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Estado
subtletrue
colourGreen
titletlpp - language

Composition Setup
import.css=/download/attachments/327912/newLayout.css
Portuguese
Section
Enquanto ADVPL AdvPL padrão mantém, incondicionalmente, todas as propriedades e métodos com acesso público, TLPP permite trabalhar com os escopos private, protected ou public.
Esse avanço é de extrema importância, pois trabalha o conceito de encapsulamento tal qual importantes linguagens modernas de mercado.


Os níveis de modificadores são:

níveisdescrição conceitual
PRIVATEO método ou a propriedade estarão acessíveis apenas de dentro da classe.
PROTECTEDO método ou a propriedade estarão acessíveis apenas de dentro da classe e das classes herdadas dela.
PUBLICO método ou a propriedade estarão acessíveis de qualquer lugar.


Caso não seja informado, ficará assumido o escopo PRIVATE como padrão.

Bloco de código
languagecpp
firstline1
titleExemplo
#include "tlpp-core.th"

Class EscopeMethod
 
   private data oComp1
   public data oComp2
   protected data oComp3
   data oComp4
 
   public method new()
   private method teste1()
   public method teste2()
   protected method teste3()

EndClass

Method new() class EscopeMethod
return self

method teste1() class EscopeMethod
   conout("teste1")
Return self

Method teste2() class EscopeMethod
   self:oComp1 := 1
   self:oComp2 := 2
   self:oComp3 := 3
   self:teste1()
   conout("teste2")
   self:teste3()
Return self

Method teste3() class EscopeMethod
   conout("teste3")
return self

Function U_Escope
  Local myObj := EscopeMethod():New()
  myObj:oComp2 := 2
  Conout("myObj:oComp2", myObj:oComp2)
  
  /*
  myObj:oComp1 := 1 
  conout("myObj:oComp1", myObj:oComp1)
  */ //não é possível descomentar esse trecho de código pois o atributo oComp1 é private e causará um erro de execução.
 
  /*
  myObj:oComp3 := 3
  conout("myObj:oComp3", myObj:oComp3)
  */ //não é possível descomentar esse trecho de código pois o atributo oComp3 é protected e causará um erro de execução.
 
  //myObj:teste1() - não é possível descomentar esse trecho de código pois o método teste1 é private e causará um erro de execução.
   
  myObj:teste2()
 
  //myObj:teste3() - não é possível descomentar esse trecho de código pois o método teste3 é protected e causará um erro de execução.

return