Métodos estáticos em Harbour
Moderador: Moderadores
- André Corrêa
- Usuário Nível 2

- Mensagens: 81
- Registrado em: 03 Nov 2015 07:46
- Localização: Caraguatatuba/SP
Métodos estáticos em Harbour
Boa tarde,
Existe algum meio de criar ou simular em Harbour o conceito de MÉTODO ESTÁTICO?
Em outras linguagens, usa-se esse modificador para indicar que um método pertence à CLASSE e não à variável de instância.
Isso permite acessá-lo sem a necessidade de instanciar um objeto dessa classe.
Pesquisei e testei bastante, mas não encontrei nada a respeito em Harbour.
Obrigado,
Existe algum meio de criar ou simular em Harbour o conceito de MÉTODO ESTÁTICO?
Em outras linguagens, usa-se esse modificador para indicar que um método pertence à CLASSE e não à variável de instância.
Isso permite acessá-lo sem a necessidade de instanciar um objeto dessa classe.
Pesquisei e testei bastante, mas não encontrei nada a respeito em Harbour.
Obrigado,
-- André Corrêa
"Opte por aquilo que faz o seu coração vibrar, apesar de todas as consequências". - Osho
"Opte por aquilo que faz o seu coração vibrar, apesar de todas as consequências". - Osho
Métodos estáticos em Harbour
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
- André Corrêa
- Usuário Nível 2

- Mensagens: 81
- Registrado em: 03 Nov 2015 07:46
- Localização: Caraguatatuba/SP
Métodos estáticos em Harbour
asimoes,
Agradeço pelo link, mas já tinha lido essa documentação, assim como as dos sites abaixo, mas não encontrei nada a respeito dos
métodos estáticos, será que deixei passar algo?
https://www.kresin.ru/en/manuals.html
http://harbourlanguage.blogspot.com/
http://www.marinas-gui.org/projects/harbour_manual/
https://harbour.github.io/doc/
https://vivaclipper.wordpress.com/?s=harbour
Alguém poderia explicar ou confirmar se existe a possibilidade de criar um método estático em Harbour?
Obrigado,
Agradeço pelo link, mas já tinha lido essa documentação, assim como as dos sites abaixo, mas não encontrei nada a respeito dos
métodos estáticos, será que deixei passar algo?
https://www.kresin.ru/en/manuals.html
http://harbourlanguage.blogspot.com/
http://www.marinas-gui.org/projects/harbour_manual/
https://harbour.github.io/doc/
https://vivaclipper.wordpress.com/?s=harbour
Alguém poderia explicar ou confirmar se existe a possibilidade de criar um método estático em Harbour?
Obrigado,
-- André Corrêa
"Opte por aquilo que faz o seu coração vibrar, apesar de todas as consequências". - Osho
"Opte por aquilo que faz o seu coração vibrar, apesar de todas as consequências". - Osho
- André Corrêa
- Usuário Nível 2

- Mensagens: 81
- Registrado em: 03 Nov 2015 07:46
- Localização: Caraguatatuba/SP
Métodos estáticos em Harbour
A solução é mais simples do que havia pensado e não utiliza o modificador STATIC.
Basta declarar o método com escopo público e acessá-lo usando o nome da classe, com parêntesis, conforme abaixo.
Basta declarar o método com escopo público e acessá-lo usando o nome da classe, com parêntesis, conforme abaixo.
Código: Selecionar todos
CLASS TMyClass
PUBLIC:
METHOD meuMetodo()
ENDCLASS
METHOD meuMetodo() CLASS TMyClass
RETURN "MÉTODO ESTÁTICO"
// para chamar o método sem instanciar a classe
TMyClass():meuMetodo()
-- André Corrêa
"Opte por aquilo que faz o seu coração vibrar, apesar de todas as consequências". - Osho
"Opte por aquilo que faz o seu coração vibrar, apesar de todas as consequências". - Osho
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Métodos estáticos em Harbour
Pergunta estranha.... rs
Isso é normal de qualquer classe, nem precisa declarar público.
De forma reduzida:
Isso é normal de qualquer classe, nem precisa declarar público.
De forma reduzida:
Código: Selecionar todos
CREATE CLASS Test
METHOD Nome() INLINE "Qualquer"
END CLASS
? Test:Nome()
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- André Corrêa
- Usuário Nível 2

- Mensagens: 81
- Registrado em: 03 Nov 2015 07:46
- Localização: Caraguatatuba/SP
Métodos estáticos em Harbour
Quintas,
No momento da dúvida, nenhuma pergunta é estranha. Não vim "de mãos vazias",
já tinha pesquisado, só não estava olhando pelo prisma correto para a questão.
Estou voltando a estudar orientação a objetos com Harbour e não me lembrei da
forma correta de chamar o método sem precisar instanciar a classe.
Em outras linguagens, geralmente, é necessário declarar a classe como estática.
Quanto a não precisar do PUBLIC, entendo que é devido a ser o escopo padrão.
De qualquer forma, se chamo assim, não funciona:
E assim funciona:
Talvez seja uma particularidade da IDE.
Obrigado pelos retornos.
No momento da dúvida, nenhuma pergunta é estranha. Não vim "de mãos vazias",
já tinha pesquisado, só não estava olhando pelo prisma correto para a questão.
Estou voltando a estudar orientação a objetos com Harbour e não me lembrei da
forma correta de chamar o método sem precisar instanciar a classe.
Em outras linguagens, geralmente, é necessário declarar a classe como estática.
Quanto a não precisar do PUBLIC, entendo que é devido a ser o escopo padrão.
De qualquer forma, se chamo assim, não funciona:
Código: Selecionar todos
TMinhaClasse:MeuMetodo()
Código: Selecionar todos
TMinhaClasse():MeuMetodo()
Obrigado pelos retornos.
-- André Corrêa
"Opte por aquilo que faz o seu coração vibrar, apesar de todas as consequências". - Osho
"Opte por aquilo que faz o seu coração vibrar, apesar de todas as consequências". - Osho
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Métodos estáticos em Harbour
TMinhaClasse:MeuMetodo()
Isso dá erro porque isso indica a variável TMinhaClasse.
TMinhaClasse()
Isso funciona, porque TMinhaClasse() é o nome da classe, e é o que retorna a classe construída e pronta pra uso.
Isso dá erro porque isso indica a variável TMinhaClasse.
TMinhaClasse()
Isso funciona, porque TMinhaClasse() é o nome da classe, e é o que retorna a classe construída e pronta pra uso.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- André Corrêa
- Usuário Nível 2

- Mensagens: 81
- Registrado em: 03 Nov 2015 07:46
- Localização: Caraguatatuba/SP
Métodos estáticos em Harbour
Entendi. É que no seu exemplo, ficou Test:Nome(), achei que funcionasse dessa forma aí pra você.JoséQuintas escreveu:TMinhaClasse:MeuMetodo()
Isso dá erro porque isso indica a variável TMinhaClasse.
TMinhaClasse()
Isso funciona, porque TMinhaClasse() é o nome da classe, e é o que retorna a classe construída e pronta pra uso.
-- André Corrêa
"Opte por aquilo que faz o seu coração vibrar, apesar de todas as consequências". - Osho
"Opte por aquilo que faz o seu coração vibrar, apesar de todas as consequências". - Osho
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Métodos estáticos em Harbour
Realmente, meu exemplo tava errado.André Corrêa escreveu:Entendi. É que no seu exemplo, ficou Test:Nome(), achei que funcionasse dessa forma aí pra você.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
