Página 2 de 2
programação orientada a objetos ?
Enviado: 25 Set 2018 11:09
por alxsts
Olá!
Estude o conteúdo do tópico
xHarbour 100% Orientado a Objetos - Uma pequena introdução.
Dica: sempre que postar código fonte em seus tópicos, coloque-o entre as tags [ code ] [ /code ]. Pode usar o botão destinado a este fim, que existe na janela "POSTAR UMA RESPOSTA" (marque o texto do código fonte e clique no botão).

- Tag Code
Efeito obtido:
programação orientada a objetos ?
Enviado: 29 Set 2018 19:39
por alxsts
programação orientada a objetos ?
Enviado: 29 Set 2018 22:31
por JoséQuintas
Emanuel escreveu:depois dos metodos eu me perco. não sei pra onde ir, nem o que fazer.
A questão é:
O que quer que o método faça?
Não dá pra criar um método sem saber pra que vai servir.
método é igual uma função, se sabe criar função, é só fazer o método igual.
Retorne ao link que postei, que vai ter um passo a passo.
programação orientada a objetos ?
Enviado: 29 Set 2018 23:15
por JoséQuintas
Da parte que se sabe o que quer....
Código: Selecionar todos
# include "hbclass.ch"
# include "inkey.ch"
PROCEDURE Main()
LOCAL oClasse := Cadastro():New()
Config()
oClasse:Execute()
RETURN
CREATE CLASS Cadastro
VAR nOpc INIT 1
METHOD Execute()
METHOD Tela()
METHOD Menu()
METHOD Inclui()
METHOD Altera()
METHOD Exclui()
METHOD Lista()
ENDCLASS
METHOD Execute() CLASS Cadastro
CLS
::Tela()
DO WHILE .T.
::Menu()
DO CASE
CASE LastKey() == K_ESC
EXIT
CASE ::nOpc == 1
::Inclui()
CASE ::nOpc == 2
::Altera()
CASE ::nOpc == 3
::Exclui()
CASE ::nOpc == 4
::Lista()
CASE ::nOpc == 5
EXIT
ENDCASE
ENDDO
RETURN NIL
METHOD Tela() CLASS Cadastro
@ 0, 0 to 3, maxcol () DOUBLE // contorno do box
@ 1, 2 SAY "SISTEMA DE CADASTRO PARA PESSOAS FISICAS"
@ 1, maxcol () -15 SAY "Data:"+Dtoc(Date()) // exibir data
@ 2, maxcol () -15 SAY "Hora:"+Time() // exibe hora
@ 2, 2 SAY "cadastro de clientes"
@ 4, 0 to MaxRow(), maxcol ()
RETURN NIL
METHOD Menu() CLASS Cadastro
@10, 23 to 18, 50 DOUBLE // contorno do menu
@10, 25 SAY ".: CADASTRAR CLIENTES :."
@12, 26 prompt "cadastro " message " cadastro de novo cliente "
@13, 26 prompt "alteracao" message " altera dados de um cliente "
@14, 26 prompt "exclusao " message " cancelar cadastro de cliente"
@15, 26 prompt "listagem " message " consulta de clientes "
@17, 26 prompt "sair " message " sair do sistema "
MENU to ::nOpc
RETURN NIL
METHOD inclui() CLASS Cadastro
cls
?"inclusao de usuarios"
Inkey(0)
cls
RETURN NIL
METHOD altera() CLASS Cadastro
cls
?"alteracao de clientes"
?"tecle algo"
Inkey(0)
cls
RETURN NIL
METHOD Exclui() CLASS Cadastro
cls
?"exclusao de clientes"
?"tecle algo"
Inkey(0)
cls
RETURN NIL
METHOD lista() CLASS Cadastro
cls
?"listagem de clientes"
?"tecle algo"
Inkey(0)
cls
RETURN NIL
FUNCTION config()
SET DATE BRITISH // converte data para a versao dd/mm/yy
SET CENTURY ON // exibe o ano em quatro digitos
SET delimiters on// ativa os delimitadores
SET delimiters to "[]" // informa como serao os delimitadores
SET wrap on // quando chega no ultimo prompt ele volta ao primeiro
SET message to MaxRow() center // exibe menssagem na ultima linha
RETURN NIL
programação orientada a objetos ?
Enviado: 02 Out 2018 11:42
por Emanuel
sr. Quintas..
Obrigado pelo conselho
JoséQuintas escreveu:A questão é:
O que quer que o método faça?
Não dá pra criar um método sem saber pra que vai servir.
método é igual uma função, se sabe criar função, é só fazer o método igual.
Eu consegui construir o fonte... mas acabei pegando o seu exemplo pra deixar mais organizado
JoséQuintas escreveu:Da parte que se sabe o que quer....
Código: Selecionar todos
//programa cadastra e exclui arquivos de uma tabela dbf
# include "hbclass.ch"
# include "inkey.ch"
REQUEST DBFCDX
procedure main()
LOCAL oClasse := Cadastro():New()
config()
oClasse:Execute()
RETURN
CREATE CLASS cadastro
VAR nOpc INIT 1
METHOD Execute()
METHOD Tela()
METHOD Menu()
METHOD Inclui()
METHOD Exclui()
ENDCLASS
//configurações de inicialização
FUNCTION config()
SET DELETE ON // excluir elemento de uma tabela
SET ESCAPE ON // Esc para fechar a tela a qualquer momento
SET DATE BRITISH // converte data para a versao dd/mm/yy
SET CENTURY ON // exibe o ano em quatro digitos
SET delimiters on// ativa os delimitadores
SET delimiters to "::" // informa como serao os delimitadores
SET wrap on // quando chega no ultimo prompt ele volta ao primeiro
SET message to MaxRow() center // exibe menssagem na ultima linha
use cadastro alias registros
index on codigo to registros
set index to registros
RETURN
//menu opções
METHOD Execute() CLASS cadastro
::tela()
DO WHILE .T.
::menu()
DO CASE
CASE LastKey() == K_ESC; EXIT
CASE ::nOpc == 1; ::Inclui()
CASE ::nOpc == 2; ::Exclui()
CASE ::nOpc == 3; EXIT
ENDCASE
ENDDO
RETURN NIL
//tela de apresentação
METHOD Tela() CLASS cadastro
@ 0, 0 to 3, maxcol () DOUBLE
@ 1, 2 say "SISTEMA DE CADASTRO PARA PESSOAS FISICAS"
@ 1, maxcol () -15 say "Data:"+Dtoc(date())
@ 2, maxcol () -15 SAY "Hora:"+Time()
@ 2, 2 say "cadastro de clientes"
@ 4, 0 to MaxRow(), maxcol ()
RETURN NIL
//opções do menu
METHOD menu() CLASS cadastro
::tela()
@ 13, 24 to 20, 50 DOUBLE
@ 14, 26 prompt " Efetuar cadastrando " message "preencher formulario para cadastro"
@ 16, 26 prompt " excluir cadastro " message "apagar clientes da tabela"
@ 18, 26 prompt " sair " message "fechar programa"
Menu to ::nOpc
RETURN NIL
//incluindo um cliente na tabela
METHOD Inclui() CLASS cadastro
local cNome := space(30)
local nTele := 0
local cCpf := 0
local dDate := ctod( "//" )
local cod := 0
CLS
DbGoBottom()
cod := codigo
cod++
read
::tela()
//formulário para preencher
@ 07, 05 SAY "Digite seu nome....:" get cNome
@ 09, 05 SAY "Numero para contato:" get nTele
@ 11, 05 say "numero de cpf......:" get cCpf
@ 13, 05 say "Data de nascimento.:" get dDate
read
CLS
//salvando na tabela
append blank
REPLACE NOME WITH cNome, ;
CONTATO WITH nTele, ;
DATE WITH dDate, ;
CPF WITH cCpf , ;
codigo WITH cod
wait "cadastro efetuado com sucesso!"
CLS
RETURN NIL
//excluindo arquivo da tabela
METHOD Exclui() CLASS cadastro
public codCli := 0
CLS
::tela()
@ 07, 05 say "digite o codigo do cliente:" get codCli
read
if DbSeek( codCli )
DELETE
wait "Registro apagado com sucesso"
else
wait "ESSE REGISTRO NAO EXISTE !"
endif
CLS
RETURN NIL
E aqui esta a pequena tabela que criei tbm
Código: Selecionar todos
request DBFCDX
procedure main()
registros := { ;
{ "codigo" , "N", 03, 0 }, ;
{ "NOME" , "C", 30, 0 }, ;
{ "CONTATO" , "N", 12, 0 }, ;
{ "DATE" , "D", 08, 0 }, ;
{ "CPF" , "N", 12, 0 } ;
}
DbCreate( "cadastro", registros, "DBFCDX", "MYALIAS" )
Browse()
RETURN
agradeço muito a vcs
vcs são feras :-Y

)
programação orientada a objetos ?
Enviado: 02 Out 2018 12:52
por alxsts
Olá!
Muito bom! Parabéns! :-Y :-Y :-Y :-Y
programação orientada a objetos ?
Enviado: 09 Out 2018 08:43
por Emanuel
Ola pessoal!
bom dia
eu estou querendo usar o postgresql em vez de dbf usando esse mesmo programa so pra entender como funciona o postgres
alguem tem algum exemplo ou algum material sobre o uso do postgres no xharbour?
desde ja sou grato a todos
programação orientada a objetos ?
Enviado: 18 Mar 2019 15:20
por momente
Amigos,
Estou estudando este tópico dos senhores, ma verdade preciso criar um método da minha classe para Destruir o Objeto, vocês teriam um exemplo, pois estou necessitando muito disso.
Não esta dando certo o que eu fiz.
Obrigado meus amigos!
programação orientada a objetos ?
Enviado: 18 Mar 2019 17:59
por JoséQuintas
Muito incompleta a pergunta.
Isso destrói o objeto dentro do Harbour.
Se o objeto precisa fazer coisas antes de ser destruído... aí é outra história... Destruir janelas e outras coisas, por exemplo.
programação orientada a objetos ?
Enviado: 19 Mar 2019 11:41
por momente
Olá José Quintas,
Vou explicar melhor, tenho uma rotina que gera um xml de NFSe, o que esta acontecendo que se por algum motivo desisto de fazer a nota depois que gerou o xml, e sem sair da rotina processo novamente outro xml, ele gera um arquivo novo, porém com o conteúdo novo e na sequencia o conteúdo do xml anterior. Coloquei "oObj:=Nil", mas não adiantou. Gerei um método :End() na classe, onde coloco oObj:=NIL, também não deu certo!
Valeu pelo retorno!
programação orientada a objetos ?
Enviado: 19 Mar 2019 13:30
por JoséQuintas
Uma coisa é uma coisa, e outra coisa é outra coisa.
programação orientada a objetos ?
Enviado: 19 Mar 2019 15:15
por momente
JoséQuintas,
Obrigado meu amigo, matou em cima, estava bobeando na :New()
Certíssimo agora!!!
:{