Orientação a Objetos em Harbour
Enviado: 13 Fev 2011 08:59
Olá a todos da lista, já desenvolvi em clipper a uns bons 15 anos atrás, após isto migrei para o Visual Foxpro e tenho uma serie de sistemas que precisarei migrar, agora que a Microsoft resolveu descontinuar a linguagem e a compatibilidade com o Windows.
Como qualquer programador eu não gosto da perspectiva de refazer o que já fiz, mas, já que vou precisar (re)fazer de qualquer jeito, pretendo fazer as coisas do jeito certo.
Estou começando a descobrir o harbour agora, e bastante animado com a possibilidade de poder criar minhas próprias classes com o hbclass.ch e utilizar bibliotecas gráficas multiplataforma como hbQt. Tenho feito diversos testes antes de começar qualquer coisa, e estou precisando de uma ajudinha no que se refere a sintaxe e as possibilidades das classes que posso criar com o hbclass.ch:
1) Como criar propriedades estáticas? Por exemplo, digamos que eu tenha uma classe que herda da QDialog, e quero adicionar um contador estático para saber quantos dialogos eu tenho abertos, como é a sintaxe para declarar um contador destes dentro da classe?
2) Propriedades protected e private. Em meus testes, a sintaxe
CLASS minhaClasse
PRIVATE:
DATA minhaPropriedadePrivada
ENDCLASS
não compilou, porém, é a mesma sintaxe que encontrei em diversos exemplos aqui do fórum e em outros locais, estou fazendo alguma coisa errada?
3)Existe alguma coisa semelhante ao instanceOf do php5 em harbour? Em algumas ocasiões, principalmente para melhor debugar é interessante saber que tipo de instancia está sendo usada, porém até o momento, estou colocando um método getClassName() em cada classe que faço. Existe um meio melhor?
4) Herança multipla / Interfaces - O harbour possui suporte a herança multipla? Na pratica não devo utilizar muito este recurso, mas, em alguns casos evita bastante cópia de bloco. E como o C++ permite, e o harbour gera código C antes de fazer o executável, achei conveniente levantar a dúvida...
5) Antigamente, eu escrevia um códigozinho mandraque em C, e linkava o obj no meu executável. Sei que isto também é possível em harbour provavelmente até melhor do que no saudoso clipper, eu posso criar classes diretamente em C++ e de alguma maneira simples utilizá-las em meus PRGs? Ou isto funciona apenas para funções?
6) Já existe alguma coisa pronta em harbour para facilitar o uso de patterns como o MVC ou então a abstração da base dados (algo semelhante ao hibernate do java)?
É isto ai, desculpe o texto longo e muito obrigado a todos que puderem dispensar algum tempo nisto.
Um grande abraço
=NuNuNO==
( Que teve medo de criar um tópico para cada pergunta, então colocou tudo num lugar só)
Como qualquer programador eu não gosto da perspectiva de refazer o que já fiz, mas, já que vou precisar (re)fazer de qualquer jeito, pretendo fazer as coisas do jeito certo.
Estou começando a descobrir o harbour agora, e bastante animado com a possibilidade de poder criar minhas próprias classes com o hbclass.ch e utilizar bibliotecas gráficas multiplataforma como hbQt. Tenho feito diversos testes antes de começar qualquer coisa, e estou precisando de uma ajudinha no que se refere a sintaxe e as possibilidades das classes que posso criar com o hbclass.ch:
1) Como criar propriedades estáticas? Por exemplo, digamos que eu tenha uma classe que herda da QDialog, e quero adicionar um contador estático para saber quantos dialogos eu tenho abertos, como é a sintaxe para declarar um contador destes dentro da classe?
2) Propriedades protected e private. Em meus testes, a sintaxe
CLASS minhaClasse
PRIVATE:
DATA minhaPropriedadePrivada
ENDCLASS
não compilou, porém, é a mesma sintaxe que encontrei em diversos exemplos aqui do fórum e em outros locais, estou fazendo alguma coisa errada?
3)Existe alguma coisa semelhante ao instanceOf do php5 em harbour? Em algumas ocasiões, principalmente para melhor debugar é interessante saber que tipo de instancia está sendo usada, porém até o momento, estou colocando um método getClassName() em cada classe que faço. Existe um meio melhor?
4) Herança multipla / Interfaces - O harbour possui suporte a herança multipla? Na pratica não devo utilizar muito este recurso, mas, em alguns casos evita bastante cópia de bloco. E como o C++ permite, e o harbour gera código C antes de fazer o executável, achei conveniente levantar a dúvida...
5) Antigamente, eu escrevia um códigozinho mandraque em C, e linkava o obj no meu executável. Sei que isto também é possível em harbour provavelmente até melhor do que no saudoso clipper, eu posso criar classes diretamente em C++ e de alguma maneira simples utilizá-las em meus PRGs? Ou isto funciona apenas para funções?
6) Já existe alguma coisa pronta em harbour para facilitar o uso de patterns como o MVC ou então a abstração da base dados (algo semelhante ao hibernate do java)?
É isto ai, desculpe o texto longo e muito obrigado a todos que puderem dispensar algum tempo nisto.
Um grande abraço
=NuNuNO==
( Que teve medo de criar um tópico para cada pergunta, então colocou tudo num lugar só)