Há vários anos programando mas NUNCA consegui entender direito o que REALMENTE significa PROGRAMAÇÃO ORIENTADA A OBJETO e quais os ganhos em relação ao nosso jeito de programar no mundo xbase.
Eu particularmente curto muito uma programação procedural como no estilo do clipper e tal.
A orientação a objetos surgiu a muito tempo atrás, hoje, quando vc faz uma janela, do windows mesmo, sem usar orientação a objeto, vc tem que criar uma variavel para armazenar cada dado da janela, tipo, coluna, linha, largura da janela, cor, caption, etc... a orientação a objeto possibilita que vc crie um objeto com todos os parametros da janela, sem precisar se referenciando a variaveis diferentes e ter tambem que ficar declarando um grande numero de variaveis para controlar isto, logo a orientação a objeto na mais é do que uma especie de variavel que aponta para todos os valores de um determinado "objeto", assim vc tem economia e mais compreensão no codigo, nao precisa declarar tantas variaveis e a programação fica mais centrada. Nao apresenta guanhos em velocidade nem nada do tipo, so que facilita muito as coisas, vc tem que encarar a programação orientada a objetos como se fosse tipo vc, Janio.
O objeto seria chamado SER_HUMANO, ai eu declaro algo mais ou menos assim
SER_HUMANO JANIO
SER_HUMANO WAGNER
No objeto SER_HUMANO eu tenho as suas propriedades
WAGNER.CORDOCABELO = PRETO
WAGNER.IDADE = 26
WAGNER.COR_DOS_OLHOS = CASTANHOS
WAGNER.ALTURA = 1.93
WAGNER.PROGRAMADOR = TRUE
JANIO.CORDOCABELO = PRETO
JANIO.IDADE = 367
JANIO.COR_DOS_OLHOS = PRETO
JANIO.ALTURA = 1.70
JANIO.PROGRAMADOR = TRUE
Na orientação a objeto, a Variavel quando declarada já tem um set de subvariaveis onde se pode armazenar os valores relativos ao objeto, fica mais fácil de compreender assim não é.
No clipper mesmo o objeto TBROWSE, vc tem diversas caracteristicas dele
tipo
MEUBROWSE=TBROWSE():NEW()
? MEUBROWSE:COL()
? MEUBROWSE:ROW()
E assim vai, vc tem diversas propriedades anexadas a sua variavel quando vc diz que ela é um tipo determinado de objeto, acho que já dá para clarear a ideia.
Orientação a objeto é muito bom e para nos programadores clipper tambem traz suas vantagens, apesar de vc não ser obrigado a usa-las se nao quiser, sou fã de uma programação procedural.
A MiniGUI é OOP??? a HwGUI é OOP???
Minigui não é orientada a objeto, até começaram a fazer uma interface para isto, mas não acabaram de montar ainda e assim mesmo ela usa os recursos naturais da minigui.
A minigui tem includes que simulam operações como se fossem objetos, muito semelhantes a forma usada no Delphi, onde as propriedades são referencias por ".", tipo:
Form_1.Label_1.text="OK"
Mas quando compilado isso vira uma chamada a uma rotina para setar o caption do Label, por traz de tudo que o usuario programa, existem inumeras variaveis publicas e arrays declarados na miniqui que vao armazenando os handles do objetos para vc usar posteriormente, se desde o inicio tivessem montado ela pensando na programa Orientada a Objeto a Minigui seria incomparável.
A HWGui já foi montada desde o inicio pensando no conceito Orientação a Objeto.
Entendi mal ou vc está migrando a LLIBG para xharbour??? Se sim, quando fica pronta??
Sim, tem os screenshots de um PDV para Linux que criei já usando ela, aidna falta muita coisa para ela ficar pronta para uso, e como to agora meio que abarrotado de trabalho e o governo tá me cortando a perna de tanto serviço, não sei quando vou ter ela definitivamente pronta para uso, mas os amigos serão avisados com certeza.