Montando classes com métodos e atributos usando Class – Maratona AdvPL e TL++ 082

Nesse vídeo demonstraremos em como criar uma classe (orientação a objetos) junto com seus métodos e atributos.

Abaixo o código fonte desenvolvido para o exemplo em vídeo acima:

//Bibliotecas
#Include "TOTVS.ch"

/*/{Protheus.doc} User Function zExe082
Exemplo de como criar e utilizar uma classe
@type Function
@author Atilio
@since 09/12/2022
@see https://tdn.totvs.com/pages/viewpage.action?pageId=6063065
@obs 

    **** Apoie nosso projeto, se inscreva em https://www.youtube.com/TerminalDeInformacao ****
/*/

User Function zExe082()
    Local aArea     := FWGetArea()
    Local oPessoa
    Local cNome        := "José"
    Local dNascimento  := sToD("19850712")
     
    //Instanciando o objeto através da classe Pessoa
    oPessoa := zPessoaTst():New(cNome, dNascimento)
     
    //Chamando um método da classe
    oPessoa:MostraIdade()

    FWRestArea(aArea)
Return

/*
 ====================================================
 Abaixo é a declaração da classe, seus métodos e atributos
 ====================================================
*/

/*/{Protheus.doc} zPessoaTst
Criação da classe Pessoa
@author Atilio
@since 13/12/2015
@version 1.0
    @example
    oObjeto := zPessoaTst():New()
/*/
 
Class zPessoaTst
    //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 zPessoaTst
@author Atilio
@since 13/12/2015
@version 1.0
    @param cNome, Caracter, Nome da Pessoa
    @param dNascimento, Data, Data de Nascimento da Pessoa
    @example
    oObjeto := zPessoaTst():New("João", sToD("19800712"))
/*/
 
Method New(cNome, dNascimento) Class zPessoaTst
    //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 Atilio
@since 13/12/2015
@version 1.0
    @example
    oObjeto:MostraIdade()
/*/
 
Method MostraIdade() Class zPessoaTst
    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                              |
 | Autor:  Daniel Atilio                           |
 | Data:   13/12/2015                              |
 | 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(Date(), dNascimento)
Return nIdade

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

2 Responses

  1. Luis Felipe Oliveira disse:

    Excelente conteúdo, Atílio!
    Sempre tive dificuldade para compreender a criação de classes e objetos, e neste vídeo a didática ficou tão boa que consegui entender e começar a criar as minhas classes personalizadas.
    Agradeço de coração!

Deixe uma resposta

Terminal de Informação