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
Exemplo em Vídeo:
Clique nesse link para ver um exemplo em Vídeo da nossa Maratona de Exemplos.
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