Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
PROGRAMAO
dicionar uma interface de usurio simples aos seus programas em Object Pascal entediante e leva muito tempo. Para simplificar a tarefa repetitiva de derivar os resultados de inmeras classes, a Borland desenvolveu o Delphi em meados dos anos 1990. No ambiente de desenvolvimento Delphi, os programadores podem, com cliques, criar uma interface rapidamente. Infelizmente, o Delphi um programa caro e s est disponvel para Windows. No entanto, um ambiente totalmente gratuito que responde pelo nome de Lazarus [1] uma alter-
nativa para seu anlogo comercial: sua base o compilador Free Pascal, includo na maioria das distribuies e cujo grande escopo de funes comparvel ao bom e velho Delphi em muitas reas. Alm disso, funciona em Windows e em Mac Os X.
ele no somente lista todos os possveis eventos que a interface grfica entende, mas deixa que voc aponte e clique para atribuir-lhes mtodos existentes ou criar um mtodo em branco.
Fundamentos
Incio
Ao ser iniciado pela primeira vez, o Lazarus bombardeia o desenvolvedor com diversas janelas, mas os programadores de Delphi se sentiro imediatamente em casa com elas (figura 1). Para iniciar, selecione o elemento grfico necessrio na paleta do topo da tela e coloque-o na caixa de dilogo Form (nome dado pelo Lazarus a todas as caixas de dilogos e janelas no programa resultante). Aps soltar o elemento, voc pode usar as bordas para redimension-lo, como se fosse uma ferramenta de desenho, e arrast-lo para a posio correta. Os ajustes mais finos e as modificaes de propriedades, como os rtulos de botes, so o domnio do object inspector. No plano de fundo, o Lazarus gera automaticamente o cdigo fonte, ao qual necessrio adicionar lgica de programao em um editor de janelas. O Object Inspector o ajudar com isso:
O Lazarus oferece o conjunto de recursos tpico de qualquer ambiente de desenvolvimento. O gerenciador de projetos ajuda a manter o controle de projetos complexos, e a janela Project Inspector lhe permite controlar os arquivos e pacotes envolvidos. Para compilar um aplicativo, tudo o que se precisa fazer apertar o boto verde de play. Caso necessrio, pode-se atribuir configuraes individuais de compilao para cada projeto. Os erros so listados em uma janela separada. Clicar em um alerta o leva diretamente at a parte correspondente do cdigo (figura 2). O debugger integrado o ajuda a investigar problemas e interrupes no programa nos pontos de quebra previamente definidos na janela do editor. Tambm possvel ter uma viso passo-a-passo de seus programas, visualizando valores e variveis. O editor oferece o tipo de escopo que se espera de um IDE profissional,
54
www.linuxmagazine.com.br
incluindo destaques de sintaxe e empacotamento do cdigo. O recurso de autocompletar sugere possveis mtodos e nomes de classe, ajudando-o ao preencher os parmetros. Inclusive, adiciona automaticamente o begin e o end obrigatrios ao cdigo (figura 3). Um atalho de teclado lhe permite adicionar componentes para as linhas selecionadas ou indent-las. Voc pode armazenar os blocos de cdigo em templates. Para usar o cdigo, pressione um atalho seguido por [Ctlr]+[J], para dizer ao Lazarus que ele deve substituir todo o template. O ambiente de desenvolvimento inclui templates de cdigos para construes comuns, como loops for e blocos begin/end. Para declarar uma classe, possvel simplesmente definir os mtodos e propriedades e pressionar um atalho de teclado para criar, automaticamente, um mtodo bsico vazio com os mtodos get e set correspondentes. O recurso Quick Syntax Check descobre erros de digitao antes que voc inicie a construo do bloco, e outros assistentes apontam blocos abertos de cdigo fonte ou IFDEF/ENDIFs.
Orientao
mente longos ou vazios. Outras janelas mostram as dependncias entre as unidades e os formulrios criados at o momento. Um editor FPDoc ajuda a documentar o cdigo fonte de acordo com o padro FPDoc. O Lazarus tambm suporta refatorao por meio da renomeao de designadores no projeto, extraindo o cdigo fonte selecionado em um novo procedimento ou invertendo atribuies
(convertendo A := B em B := A). Alm disso, o editor rastreia automaticamente os mtodos abstratos ainda no implementados e cria um mtodo vazio. A nica coisa que falta um link para um sistema de atribuio de verses.
Clssico moderno
O Lazarus tem uma boa seleo de ferramentas que ajudam os desenvolvedores a navegar pelo cdigo fonte. Voc pode, por exemplo, realizar buscas e substituies de forma flexvel com o uso de expresses regulares. Alm de buscar em todo o texto, o navegador do cdigo tambm permite buscar somente pacotes, nomes de unidade e designadores para um termo especfico. A janela CodeExplorer ajuda a manter o controle sobre programas de cdigos mais longos. Ela cria um delineador de todos os tipos, variveis, interfaces, implementaes e unidades usadas para pular para a posio correspondente no cdigo com um nico clique. O Code Observer, includo no CodeExplorer, aponta para estilos pobres de programao, como indentao incorreta ou procedimentos excessiva-
55
um objeto de tipo Tbutton no plano de fundo. A classe correspondente vem como cortesia da Biblioteca de Componentes Lazarus (LCL, na abreviao em ingls). Esta consiste de uma biblioteca de classes normal que pode ser usada independentemente do Lazarus, com unidades e classes que criam a interface para seu programa em Object Pascal. A LCL no desenha sozinha os elementos grficos individuais na tela, mas depende de uma biblioteca legada do sistemas para isso. Os desenvolvedores podem escolher essa biblioteca no momento de construir o cdigo. Os usurios Linux podem escolher entre Qt, Gtk+ ou Gtk2. O suporte para a o Pascal Gui Toolkit [2] est atualmente em desenvolvimento. Alm disso, a LCL est disponvel para outros sistemas operacionais, suportando funes de sistemas diretamente no Windows e no Windows CE, e em Cocoa e Carbon no Mac OS X. A figura 4 mostra a estrutura da LCL e como ela interage com os componentes individuais.
Transferncia de conhecimento
Graas LCL, voc pode escrever aplicativos compatveis com vrias plataformas facilmente, tendo somente que recompil-las no sistema operacional alvo em um momento posterior (escreva uma vez, compile em todos os lugares). O Lazarus mostra como isso funciona em termos prticos: o ambiente de desenvolvimento foi programado inteiramente em LCL e pode ser reconstrudo rapidamente. Tambm possvel usar uma biblioteca de interface grfica diferente ao selecionar o item do menu em tempo real. Os desenvolvedores precisam tomar cuidado com duas armadilhas: uma delas que algumas interfaces (como o Qt) esto oficialmente em beta, embora sejam estveis e os desenvolvedores j as utilizem para
56
produo. Outra diz respeito LCL tentar seguir as linhas guias do sistema operacional alvo. Isso pode levar os componentes a agir de maneira diversa em vrias plataformas. Por exemplo, com o Windows no ser possvel mudar a escala de caixas de dilogo com o mouse, embora se possa faz-lo no X11. Sem contar que os sistemas operacionais lidam com atalhos de vrias maneiras. O wiki do Lazarus [3] inclui dicas sobre programao para plataformas cruzadas. A LCL faz mais do que desenhar janelas coloridas na tela. Ela inclui, por exemplo, classes para acesso simples e rpido a banco de dados, incluindo
PostgreSQL, dBase e MySQL. No Lazarus, possvel colocar componentes de conexo em banco de dados dentro de um formulrio como se fosse qualquer elemento de interface, onde aparecero como cones. No aplicativo finalizado, eles ficam no plano de fundo e executam suas tarefas de modo transparente (figura 5).
Dois orculos
A biblioteca de componentes visuais do Delphi (VCL) foi o modelo para a LCL. O Tbutton um lembrete intencional para os desenvolvedores que tinham familiaridade com o Delphi. Apesar disso, a LCL no
Figura 4 A LCL atua como uma interface entre o programa Object Pascal e as
bibliotecas de interface para o sistema operacional suportado.
www.linuxmagazine.com.br
totalmente compatvel com VCL. Algumas vezes, isso ocorre por conta da independncia de plataforma e intencional. Em outras, os componentes simplesmente esto faltando. Isso particularmente verdadeiro no caso de classes de aplicativos multimdia, como Tanimate; componentes especficos do Windows, como TmediaPlayer; e acesso a rede, como o ADO. Assim, impossvel transferir programas Delphi e Kylix para o Lazarus sem alguma modificao. Embora o Lazarus oferea uma srie de assistentes para ajudar nessa converso, o processo fatalmente envolver algum trabalho manual. A wiki do Lazarus [3] oferece uma lista das diferenas e vrias pginas com dicas e guias para converses.
Figura 5 O Lazarus inclui diversos programas de amostra, como este gerenciador de endereos, que exemplifica a programao com banco de dados. Os cones na rea branca da janela principal so os objetos conectores ao banco de dados.
Concluso
Uma vez que voc se familiariza com a aparncia do programa que inicialmente parece um ambiente desordenado o Lazarus o ajudar a criar um programa simples, independente de plataforma, em apenas alguns minu-
tos. Uma calculadora, por exemplo. Ao mesmo tempo, o desenvolvedor com um ambiente legado de desenvolvimento teria tempo apenas de trabalhar com a derivao de classes para os botes. O wiki abrangente do programa [3] ajuda os desenvolvedores na curva inicial de aprendizado.
As converses do Delphi constituem um processo relativamente indolor, embora algum trabalho manual seja necessrio. A recompensa um aplicativo Object Pascal que poder ser compilado em todos os grandes sistemas operacionais. Apesar de mais de dez anos de desenvolvimento, o trabalho ainda est em andamento no Lazarus e na LCL, sendo que o processo se encontra no ponto zero (a verso atual 0.9.30). No entanto, no deixe que isso o afaste do Lazarus: ele estvel e compete com o Delphi em igualdade de condies quando combinado ao Free Pascal. n
Mais informaes
[1] Lazarus: http://www. lazarus.freepascal.org/ [2] fpGUI: http://fpgui. sourceforge.net/ [3] Wiki do Lazarus: http://wiki. lazarus.freepascal.org/
Gostou do artigo?
Queremos ouvir sua opinio. Fale conosco em cartas@linuxmagazine.com.br Este artigo no nosso site: http://lnm.com.br/article/6271
57