Desenvolvendo aplicações orientadas a objetos no Elipse E3 – Parte I.

1) Introdução

Com o surgimento do Elipse E3 e sua nova maneira de desenvolver aplicações, muitos projetos que antes se tornavam demorados por sua complexidade e extensão, agora podem ser desenvolvidos muito mais rapidamente. Utilizando os recursos de orientação a objetos e as novas bibliotecas disponíveis no E3, é possível criar projetos claros e objetivos e reduzir drasticamente o tempo de manutenção.

Neste artigo, veremos algumas técnicas para aproveitar o que há de melhor no novo paradigma de programação do E3.

2) Definindo a arquitetura do projeto

Primeiramente, o desenvolvedor deve se perguntar: “Quais partes da aplicação serão repetidas?” e “Quais objetos podem ser parametrizáveis?”. As respostas mais comuns a estas perguntas são:

  • Objetos de tela, como bombas, válvulas, elevadores, silos, etc.
  • Telas, apenas mudando a sua parametrização (tags associados aos objetos).
  • Objetos de dados, como alarmes, tags, históricos, etc.

As vantagens deste trabalho são as seguintes:

  • Todos os objetos estão em uma só fonte (ao alterar sua definição, o objeto é modificado automaticamente onde estiver).
  • Os objetos são formados por outros objetos.
  • Novas propriedades são criadas.
  • Os objetos podem ser reutilizados em outros projetos.

Você irá notar que conforme a sua experiência com a utilização das bibliotecas do E3 for aumentando, o tempo de engenharia será cada vez mais voltado para o aprimoramentos dos objetos e não mais para a aplicação em si, pois modificando a biblioteca automaticamente, a aplicação também é atualizada.

Porém, antes de darmos ênfase para a criação de objetos, temos que revisar como são utilizadas as associações de propriedades.

3) Conceitos básicos para o desenvolvimento de objetos

Para o desenvolvimento de objetos, primeiramente é preciso entender os conceitos básicos sobre associações e recursos de animação, bem como estes são utilizados dentro do E3. Para isto, serão apresentados exemplos de problemas práticos de desenvolvimento de aplicações; para cada exemplo, serão apresentadas duas soluções possíveis: uma recomendada e outra não recomendada.

PROBLEMA 1:

Desejo fazer com que um texto apareça com as palavra “Ligado” quando o tag associado for 1 e “Desligado” quando ele for 0. Adicionalmente, as palavras devem aparecer com as cores verde e vermelho, respectivamente.

SOLUÇÃO NÃO RECOMENDADA:

Crie dois objetos texto sobrepostos, um com a cor do texto em verde e outro em vermelho. Ambos têm uma associação da propriedade Visible com o mesmo tag, porém com condições inversas, como segue:


Figura 1: Configuração incorreta de um conjunto ligado/desligado

Para um conjunto apenas de texto ligado/desligado isto pode parecer simples, mas imagine se tivermos algo do tipo:


Figura 2: Configuração incorreta de vários conjuntos ligado/desligado

Com apenas 6 conjuntos, já temos nada menos que 12 objetos e 12 associações. Veja que a edição do aplicativo começa a ficar complicada, pois temos objetos sobrepostos. Por exemplo, se o nome do tag associado em um conjunto mudar, teremos que atualizá-lo nas suas duas associações.

SOLUÇÃO RECOMENDADA:

Crie apenas um objeto texto, com duas associações:

  • Associação digital da propriedade Value com o tag, sendo que esta configurará o valor “Ligado” quando o tag estiver com o valor 1 e “Desligado” quando ele estiver com 0.
  • Associação digital da propriedade TextColor com o tag, sendo que ela configurará verde quando o tag estiver com o valor 1 e vermelho quando ele estiver com 0.

Veja a seguir como ficou a configuração da associação digital da propriedade Value:


Figura 3: Configuração correta da associação Value para o objeto ligado/desligado

Veja também a associação digital da propriedade TextColor:


Figura 4: Configuração correta da associação TextColor para o objeto ligado/desligado

Como no exemplo anterior, criaremos mais cinco cópias para fins de visualização:


Figura 5: Configuração correta de vários conjuntos ligado/desligado

Desta maneira, é possível ver melhor os benefícios da associação feita em apenas um objeto em vez de dois:

  • Agora, são apenas seis objetos na tela.
  • A edição foi facilitada, pois não existem mais objetos sobrepostos e a configuração da cor fica em um lugar apenas.
  • Caso o nome do tag mude, só necessitamos mudar as duas associações em um só objeto.

Ainda assim, é possível que o desenvolvedor se pergunte se o ideal não seria que as modificações acontecessem em apenas um lugar. Essa questão será resolvida mais adiante com o uso de bibliotecas.

PROBLEMA 2:

Como posso fazer com que o desenho de um caminhão percorra um caminho pré-estabelecido de acordo com a variação do valor (digital, de 0 a 3) de um tag?

SOLUÇÃO NÃO RECOMENDADA:

Crie quatro caminhões (objetos DrawPicture), e em cada um deles configure uma conexão simples da propriedade Visible do tag, apenas variando um pouco a condição verdadeira, como segue:


Figura 6: Configuração incorreta do primeiro caminhão da animação

 


Figura 7: Configuração incorreta do último caminhão da animação

Esta abordagem funciona perfeitamente, porém não é otimizada, pois:

  • Cria quatro conexões com a fonte (caso a fonte mude, teremos que mudar as quatro conexões).
  • Caso o valor do tag possa no futuro ter sua precisão aumentada, isto é, tenha uma maior número de combinações, teremos que colocar mais caminhões.
  • Caso tenhamos que mudar a posição inicial do objeto, teremos que mover os outros objetos também.

Poderíamos ainda tentar fazer uma implementação um pouco mais otimizada, como deixar somente um único objeto e criar uma conexão analógica da propriedade X do caminhão com o tag, como segue:


Figura 8: Configuração incorreta, mas um pouco melhorada, da animação do caminhão

Obedecendo o que está configurado acima, o E3 fará um conversão do valor do tag para o valor da propriedade; sendo assim, quando o tag variar de 0 a 3, automaticamente valores entre 500 e 5000 serão atribuídos para a propriedade X do caminhão, criando o movimento.

Mas ainda assim, esta solução apresenta um problema: como saber especificar com exatidão onde terminará a animação? Para isto, veja o próximo tópico.

SOLUÇÃO RECOMENDADA:

Selecione a imagem e clique no botão Animar com Translação. O E3Studio criará uma imagem “fantasma” do desenho indicando sua posição final. Cabe salientar que o objeto “caminhão” no Organizer fica dentro de um novo objeto chamado DynamicMove. Utilizamos o quadrado verde que fica no centro do objeto para posicioná-lo onde desejado.

Configure as propriedade RangeMax e RangeMin do DynamicMove para “3” e “0” respectivamente e crie uma conexão simples da propriedade Value com o tag como mostrado a seguir:


Figura 9: Configuração correta da animação do caminhão

Isto fará com que o objeto se desloque automaticamente de um lugar para outro, trazendo as seguintes vantagens:

  • A imagem “fantasma” indica a posição final do caminhão de uma maneira intuitiva e clara.
  • Se for necessário mover a posição inicial do objeto, a posição final é deslocada automaticamente.
  • É possível testar a movimentação alterando-se o valor da propriedade Value do DynamicMove durante a edição no E3Studio.

PROBLEMA 3:

Como posso criar uma animação do estado de uma bomba através da mudança da sua cor? Exemplo: uma bomba com três estados (“ligada”, “desligada” e “em manutenção”), representados pelas cores verde, vermelha e cinza, respectivamente.

SOLUÇÃO NÃO RECOMENDADA:

Crie três bitmaps com as três cores e faça uma conexão simples da propriedade Visible com o tag (semelhante ao Problema 1). Cada bitmap tem uma cor configurada como transparente:


Figura 10: Configuração incorreta para mudar a cor de uma bomba

Neste exemplo, as bombas estão lado a lado apenas por motivos de exposição do artigo, pois na verdade elas deveriam estar sobrepostas. Esta abordagem contém os seguintes problemas:

  • Temos três bitmaps, e se tivermos que modificar seu desenho, teremos que efetuar as modificações nas três versões. Por exemplo: se quisermos mudar de verde para azul o estado de ligado, teremos que modificar o bitmap fonte.
  • Temos três conexões para o mesmo tag; se o nome do tag for modificado, teremos que alterá-lo nas três conexões.
  • A edição também fica complicada, pois temos três objetos sobrepostos.

SOLUÇÃO RECOMENDADA:

No E3, dê sempre prioridade a arquivos com o formato WMF (Windows MetaFile), pois é possível modificar suas características de desenho como cor e tipo do preenchimento sem alterar o arquivo fonte. Para resolver este problema, adicione o WMF à tela e faça uma conexão por tabela da propriedade OverrideFillColor com o tag:


Figura 11: Configuração correta para mudar a cor de uma bomba

Além dos benefícios deste tipo de associação (ver Problema 1), a utilização de arquivos do formato WMF tem as seguintes vantagens em relação aos bitmaps:

  • É possível redefinir o tipo de preenchimento do WMF através da propriedade OverrideFillMode para Wireframe, SolidFill ou ByBrightness.
  • É possível redefinir a cor do preenchimento do WMF.
  • É possível redefinir a cor da linha do WMF.
  • É vetorial, portanto não perde resolução mesmo quando for efetuado um zoom.

Como dito anteriormente, todas essas modificações no desenho não modificam o arquivo original, apenas a maneira que o desenho é visualizado.

Para maiores informações sobre aplicações com vários objetos configurados, e a posterior atualização destas configurações, acesse o artigo Desenvolvendo aplicações orientadas a objetos no Elipse E3 – Parte II.

 

Artigos Relacionados


Este artigo foi útil? Was this post helpful?
Yes0
No0

Deixe seu Comentário

Seu endereço de e-mail não será publicado. Campos marcados com asterisco são obrigatórios *