Estado |
---|
subtle | true |
---|
colour | Green |
---|
title | tlpp - language |
---|
|
Composition Setup |
---|
import.css=/download/attachments/327912/newLayout.css |
...
A partir da versão 17.2.1.3 o recurso de encapsulamento de orientação objeto está disponível no ADVPL.
É necessário utilizar este include atualizado: msobject.ch
Os níveis de encapsulamento são:
...
|
---|
Section |
---|
Enquanto 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íveis | descrição conceitual |
---|
PRIVATE | O método ou a propriedade estarão acessíveis apenas de dentro da classe. | PROTECTED | O método ou a propriedade estarão acessíveis apenas de dentro da classe e das classes herdadas dela. | PUBLIC | O 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 |
---|
language | cpp |
---|
firstline | 1 |
---|
title | Exemplo |
---|
|
|
...
#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")
|
|
...
...
Method teste2() class EscopeMethod
self:oComp1 := 1
self:oComp2 := 2
self:oComp3 := 3
self:teste1()
conout("teste2")
self:teste3()
|
|
...
...
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 |
|