Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Comentário: Migration of unmigrated content due to installation of a new plugin

...

Portuguese

Pagetitle
Criação de Classes em AdvPL
Criação de Classes em AdvPL

Criação de Classes em AdvPL

Abrangência

Versão 5.07

Versão 5.08

Versão 6.09

Versão 7.10

Versão 8.11

Versões Anteriores


Podemos criar Classes próprias em Advpl ; bastando para tal nos utilizarmos dos comandos de declaração de Classes , Métodos e Propriedades do Protheus. Veja abaixo um modelo simples que exemplifica a utilização e declaração de uma Classe de Exemplo utilizando Advpl:

#INCLUDE "PROTHEUS.CH"

// Crio uma função para teste da Classe Exemplo
Function u_teste()

Local oSoma1 := Exemplo():New() // Crio um novo objeto de exemplo ( objeto 1 )
Local oSoma2 := Exemplo():New() // Crio outro objeto de exemplo ( objeto 2 )

// Realizo 3 chamadas ao método Soma, com o objeto 1
oSoma1:Soma(10)
oSoma1:Soma(20)
oSoma1:Soma(30)

// Realizo 2 chamadas ao método Soma, com o objeto 2
oSoma2:Soma(30)
oSoma2:Soma(30)

// Imprimo no console o acumulador das somas do obj 1 ( 60 )
conout(oSoma1:nAcumulador)

// Imprimo no console o acumulador das chamadas à soma com o objeto 1 ( 3 )
conout(oSoma1:nChamadas)

// Imprimo no console o acumulador das somas do obj 2 ( 60 )
conout(oSoma2:nAcumulador)

// Imprimo no console o acumulador das chamadas à soma com o objeto 2 (2)
conout(oSoma2:nChamadas)

Return

// --------------------------------------------------------------------------------
// Declaracao da Classe Exemplo
// --------------------------------------------------------------------------------

CLASS Exemplo

// Declaracao das propriedades da Classe
DATA nAcumulador
DATA nChamadas

// Declaração dos Métodos da Classe
METHOD New() CONSTRUCTOR
METHOD Soma( nNum )

ENDCLASS

// Criação do construtor, onde atribuimos os valores default
// para as propriedades e retornamos Self
METHOD New() Class Exemplo
::nAcumulador := 0
::nChamadas := 0
Return Self

// Criação do Método de Soma , que recebe um número e o soma
// ao acumulador, retornando o conteudo do acumululador após
// a soma , e incrementa em 1 o contador de chamadas do método
METHOD Soma( nNum ) Class Exemplo
::nAcumulador += nNum
::nChamadas++
Return ::nAcumulador


Podemos utilizar os outros tipos de variáveis Advpl nas Classes, como variáveis Locais, Private, Static, etc... Para acessarmos uma propriedade da classe atual, devemos prefixá-la com :: ( dois sinais de 2 pontos )

Ao declarar um objeto utilizando o construtor da classe, utilizamos a sintaxe: oObjeto := NomeDaClasse():Metodo_Contrutor()

Para acessar uma propriedade deste objeto, utilizamos oObjeto:Propriedade, e para acessar um método da classe aplicável a este objeto, utilizamos oObjeto:Metodo( parametros,... )