Vídeo Aula – AdvPL 015 – Orientação à Objetos

Olá pessoal…

Na vídeo aula de hoje vou mostrar conceitos de Orientação à Objetos e como fazer uma classe e uma função utilizando a classe em AdvPL.



Fonte da classe:

//Bibliotecas
#Include "Protheus.ch"

/*/{Protheus.doc} zPessoa
Criação da classe Pessoa
@author Atilio
@since 13/12/2015
@version 1.0
	@example
	oObjeto := zPessoa():New()
/*/

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 Atilio
@since 13/12/2015
@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 Atilio
@since 13/12/2015
@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                              |
 | 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(dDataBase, dNascimento)
Return nIdade

Fonte da função:

//Bibliotecas
#Include "Protheus.ch"

/*/{Protheus.doc} zCadPessoa
Função que testa a classe Pessoa
@author Atilio
@since 13/12/2015
@version 1.0
	@example
	u_zCadPessoa()
/*/

User Function zCadPessoa()
	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

Se quiser fazer o download desses códigos ou do conteúdo mostrado na vídeo aula, acesse nosso GitHub pelo link github.com/dan-atilio/AdvPL (Exemplos > Vídeo Aulas > 015 – Orientação à Objetos).

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.

Deixe uma resposta

Terminal de Informação