Class

Exemplo de criação de classe.

Exemplo da Rotina:

Class SUA_CLASSE
	//Atributos
	Data xAtributo1
	Data xAtributo2

	//Métodos
	Method New() CONSTRUCTOR
	Method xMetodo1()
	Method xMetodo2()
EndClass

Exemplo 1- Construção de uma classe (zPessoa) e de como utilizar (zTeste):

//Bibliotecas
#Include "Protheus.ch"

/*/{Protheus.doc} zPessoa
Criação da classe Pessoa
@author Terminal de Informação
@since 13/11/2016
@version 1.0
	@example
	oObjeto := zPessoa():New()
	@obs Verifique a função zTeste para ver como instanciar a Classe em um Objeto
/*/

Class zPessoa
	//Atributos
	Data cNome
	Data nIdade
	Data dNascimento

	//Métodos
	Method New() CONSTRUCTOR
	Method MostraIdade()
EndClass

/*/{Protheus.doc} New
Método que cria a instância com a classe zPessoa
@author Terminal de Informação
@since 13/11/2016
@version 1.0
	@param cNome, Caracter, Nome da Pessoa
	@param dNascimento, Data, Data de Nascimento da Pessoa
	@example
	oObjeto := zPessoa():New("João", sToD("19800712"))
/*/

Method New(cNome, dNascimento) Class zPessoa
	//Atribuindo valores nos atributos do objeto instanciado
	::cNome		:= cNome
	::dNascimento	:= dNascimento
	::nIdade		:= fCalcIdade(dNascimento)
Return Self

/*/{Protheus.doc} MostraIdade
Método que mostra a idade da pessoa
@author Terminal de Informação
@since 13/11/2016
@version 1.0
	@example
	oObjeto:MostraIdade()
/*/

Method MostraIdade() Class zPessoa
	Local cMsg := ""
	
	//Criando e mostrando a mensagem
	cMsg := "A <b>pessoa</b> "+::cNome+" tem "+cValToChar(::nIdade)+" anos!"
	MsgInfo(cMsg, "Atenção")
Return

/*-------------------------------------------------*
 | Função: fCalcIdade                              |
 | Descr.: Função que calcula a idade da Pessoa    |
 *-------------------------------------------------*/

Static Function fCalcIdade(dNascimento)
	Local nIdade
	
	//Chamando a função YearSub para subtrair os anos de uma data
	nIdade := DateDiffYear(dDataBase, dNascimento)
Return nIdade

/*/{Protheus.doc} zTeste
Função de Teste
@type function
@author Terminal de Informação
@since 13/11/2016
@version 1.0
    @example
    u_zTeste()
/*/
 
User Function zTeste()
	Local oPessoa
	Local cNome		:= "José"
	Local dNascimento	:= sToD("19850712")
	
	//Instanciando o objeto através da classe Pessoa
	oPessoa := zPessoa():New(cNome, dNascimento)
	
	//Chamando um método da classe
	oPessoa:MostraIdade()
Return

Observações:

– Caso tenha dúvidas ou problemas com os exemplos, entre em contato;
– Se tiver sugestões de rotinas, pode entrar em contato;

Referências:

TDN