{"id":298,"date":"2019-03-25T17:30:11","date_gmt":"2019-03-25T20:30:11","guid":{"rendered":"http:\/\/xexeu.elipse.com.br\/pt\/desenvolvendo-aplicacoes-orientadas-a-objetos-no-elipse-e3-parte-i\/"},"modified":"2019-06-12T08:58:54","modified_gmt":"2019-06-12T11:58:54","slug":"desenvolvendo-aplicacoes-orientadas-a-objetos-no-elipse-e3-parte-i","status":"publish","type":"post","link":"https:\/\/kb.elipse.com.br\/en\/desenvolvendo-aplicacoes-orientadas-a-objetos-no-elipse-e3-parte-i\/","title":{"rendered":"Desenvolvendo aplica\u00e7\u00f5es orientadas a objetos no Elipse E3 &#8211; Parte I."},"content":{"rendered":"<div align=\"justify\">\n<p><u><b>1) Introdu\u00e7\u00e3o<\/b><\/u><\/p>\n<p>Com o surgimento do Elipse E3 e sua nova maneira de desenvolver aplica\u00e7\u00f5es, muitos projetos que antes se tornavam demorados por sua complexidade e extens\u00e3o, agora podem ser desenvolvidos muito mais rapidamente. Utilizando os recursos de orienta\u00e7\u00e3o a objetos e as novas bibliotecas dispon\u00edveis no E3, \u00e9 poss\u00edvel criar projetos claros e objetivos e reduzir drasticamente o tempo de manuten\u00e7\u00e3o.<\/p>\n<p>Neste artigo, veremos algumas t\u00e9cnicas para aproveitar o que h\u00e1 de melhor no novo paradigma de programa\u00e7\u00e3o do E3.<\/p>\n<p><u><b>2) Definindo a arquitetura do projeto<\/b><\/u><\/p>\n<p>Primeiramente, o desenvolvedor deve se perguntar: <i>&#8220;Quais partes da aplica\u00e7\u00e3o ser\u00e3o repetidas?&#8221;<\/i> e <i>&#8220;Quais objetos podem ser parametriz\u00e1veis?&#8221;<\/i>. As respostas mais comuns a estas perguntas s\u00e3o:<\/p>\n<ul>\n<li>Objetos de tela, como bombas, v\u00e1lvulas, elevadores, silos, etc.<\/li>\n<li>Telas, apenas mudando a sua parametriza\u00e7\u00e3o (tags associados aos objetos).<\/li>\n<li>Objetos de dados, como alarmes, tags, hist\u00f3ricos, etc.<\/li>\n<\/ul>\n<p>As vantagens deste trabalho s\u00e3o as seguintes:<\/p>\n<ul>\n<li>Todos os objetos est\u00e3o em uma s\u00f3 fonte (ao alterar sua defini\u00e7\u00e3o, o objeto \u00e9 modificado automaticamente onde estiver).<\/li>\n<li>Os objetos s\u00e3o formados por outros objetos.<\/li>\n<li>Novas propriedades s\u00e3o criadas.<\/li>\n<li>Os objetos podem ser reutilizados em outros projetos.<\/li>\n<\/ul>\n<p>Voc\u00ea ir\u00e1 notar que conforme a sua experi\u00eancia com a utiliza\u00e7\u00e3o das bibliotecas do E3 for aumentando, o tempo de engenharia ser\u00e1 cada vez mais voltado para o aprimoramentos dos objetos e n\u00e3o mais para a aplica\u00e7\u00e3o em si, pois modificando a biblioteca automaticamente, a aplica\u00e7\u00e3o tamb\u00e9m \u00e9 atualizada.<\/p>\n<p>Por\u00e9m, antes de darmos \u00eanfase para a cria\u00e7\u00e3o de objetos, temos que revisar como s\u00e3o utilizadas as associa\u00e7\u00f5es de propriedades.<\/p>\n<p><b><u>3) Conceitos b\u00e1sicos para o desenvolvimento de objetos<\/u><\/b><\/p>\n<p>Para o desenvolvimento de objetos, primeiramente \u00e9 preciso entender os conceitos b\u00e1sicos sobre associa\u00e7\u00f5es e recursos de anima\u00e7\u00e3o, bem como estes s\u00e3o utilizados dentro do E3. Para isto, ser\u00e3o apresentados exemplos de problemas pr\u00e1ticos de desenvolvimento de aplica\u00e7\u00f5es; para cada exemplo, ser\u00e3o apresentadas duas solu\u00e7\u00f5es poss\u00edveis: uma recomendada e outra n\u00e3o recomendada.<\/p>\n<p><b>PROBLEMA 1: <\/b><\/p>\n<p><i>Desejo fazer com que um texto apare\u00e7a com as palavra &#8220;Ligado&#8221; quando o tag associado for 1 e &#8220;Desligado&#8221; quando ele for 0. Adicionalmente, as palavras devem aparecer com as cores verde e vermelho, respectivamente.<\/i><\/p>\n<p><b>SOLU\u00c7\u00c3O <u>N\u00c3O<\/u> RECOMENDADA:<\/b><\/p>\n<p>Crie dois objetos texto sobrepostos, um com a cor do texto em verde e outro em vermelho. Ambos t\u00eam uma associa\u00e7\u00e3o da propriedade <i>Visible <\/i>com o mesmo tag, por\u00e9m com condi\u00e7\u00f5es inversas, como segue:<\/p>\n<div align=\"center\"><span style=\"font-size: xx-small;\"><img loading=\"lazy\" title=\"\" src=\"http:\/\/kb.elipse.com.br\/pt-br\/images\/ID26\/Figura1.PNG\" alt=\"\" width=\"550\" height=\"268\" align=\"Baseline\" border=\"0\" \/><br \/>\n<b>Figura 1<\/b>: Configura\u00e7\u00e3o incorreta de um conjunto ligado\/desligado<br \/>\n<\/span><\/div>\n<p>Para um conjunto apenas de texto ligado\/desligado isto pode parecer simples, mas imagine se tivermos algo do tipo:<\/p>\n<div align=\"center\"><span style=\"font-size: xx-small;\"><img loading=\"lazy\" title=\"\" src=\"http:\/\/kb.elipse.com.br\/pt-br\/images\/ID26\/Figura2.PNG\" alt=\"\" width=\"550\" height=\"268\" align=\"Baseline\" border=\"0\" \/><br \/>\n<b>Figura 2<\/b>: Configura\u00e7\u00e3o incorreta de v\u00e1rios conjuntos ligado\/desligado<br \/>\n<\/span><\/div>\n<p>Com apenas 6 conjuntos, j\u00e1 temos nada menos que 12 objetos e 12 associa\u00e7\u00f5es. Veja que a edi\u00e7\u00e3o do aplicativo come\u00e7a a ficar complicada, pois temos objetos sobrepostos. Por exemplo, se o nome do tag associado em um conjunto mudar, teremos que atualiz\u00e1-lo nas suas duas associa\u00e7\u00f5es.<\/p>\n<p><b>SOLU\u00c7\u00c3O RECOMENDADA: <\/b><\/p>\n<p>Crie apenas um objeto texto, com duas associa\u00e7\u00f5es:<\/p>\n<ul>\n<li>Associa\u00e7\u00e3o digital da propriedade <i>Value <\/i>com o tag, sendo que esta configurar\u00e1 o valor &#8220;Ligado&#8221; quando o tag estiver com o valor 1 e &#8220;Desligado&#8221; quando ele estiver com 0.<\/li>\n<li>Associa\u00e7\u00e3o digital da propriedade <i>TextColor <\/i>com o tag, sendo que ela configurar\u00e1 verde quando o tag estiver com o valor 1 e vermelho quando ele estiver com 0.<\/li>\n<\/ul>\n<p>Veja a seguir como ficou a configura\u00e7\u00e3o da associa\u00e7\u00e3o digital da propriedade <i>Value<\/i>:<\/p>\n<div align=\"center\"><span style=\"font-size: xx-small;\"><img loading=\"lazy\" title=\"\" src=\"http:\/\/kb.elipse.com.br\/pt-br\/images\/ID26\/Figura3.PNG\" alt=\"\" width=\"550\" height=\"289\" align=\"Baseline\" border=\"0\" \/><br \/>\n<b>Figura 3<\/b>: Configura\u00e7\u00e3o correta da associa\u00e7\u00e3o <i>Value <\/i>para o objeto ligado\/desligado<br \/>\n<\/span><\/div>\n<p>Veja tamb\u00e9m a associa\u00e7\u00e3o digital da propriedade <i>TextColor<\/i>:<\/p>\n<div align=\"center\"><span style=\"font-size: xx-small;\"><img loading=\"lazy\" title=\"\" src=\"http:\/\/kb.elipse.com.br\/pt-br\/images\/ID26\/Figura4.PNG\" alt=\"\" width=\"550\" height=\"289\" align=\"Baseline\" border=\"0\" \/><br \/>\n<b>Figura 4<\/b>: Configura\u00e7\u00e3o correta da associa\u00e7\u00e3o <i>TextColor <\/i>para o objeto ligado\/desligado<br \/>\n<\/span><\/div>\n<p>Como no exemplo anterior, criaremos mais cinco c\u00f3pias para fins de visualiza\u00e7\u00e3o:<\/p>\n<div align=\"center\"><span style=\"font-size: xx-small;\"><img loading=\"lazy\" title=\"\" src=\"http:\/\/kb.elipse.com.br\/pt-br\/images\/ID26\/Figura5.PNG\" alt=\"\" width=\"550\" height=\"318\" align=\"Baseline\" border=\"0\" \/><br \/>\n<b>Figura 5<\/b>: Configura\u00e7\u00e3o correta de v\u00e1rios conjuntos ligado\/desligado<br \/>\n<\/span><\/div>\n<p>Desta maneira, \u00e9 poss\u00edvel ver melhor os benef\u00edcios da associa\u00e7\u00e3o feita em apenas um objeto em vez de dois:<\/p>\n<ul>\n<li>Agora, s\u00e3o apenas seis objetos na tela.<\/li>\n<li>A edi\u00e7\u00e3o foi facilitada, pois n\u00e3o existem mais objetos sobrepostos e a configura\u00e7\u00e3o da cor fica em um lugar apenas.<\/li>\n<li>Caso o nome do tag mude, s\u00f3 necessitamos mudar as duas associa\u00e7\u00f5es em um s\u00f3 objeto.<\/li>\n<\/ul>\n<p>Ainda assim, \u00e9 poss\u00edvel que o desenvolvedor se pergunte se o ideal n\u00e3o seria que as modifica\u00e7\u00f5es acontecessem em apenas um lugar. Essa quest\u00e3o ser\u00e1 resolvida mais adiante com o uso de bibliotecas.<\/p>\n<p><b>PROBLEMA 2: <\/b><\/p>\n<p><i>Como posso fazer com que o desenho de um caminh\u00e3o percorra um caminho pr\u00e9-estabelecido de acordo com a varia\u00e7\u00e3o do valor (digital, de 0 a 3) de um tag? <\/i><\/p>\n<p><b>SOLU\u00c7\u00c3O <u>N\u00c3O<\/u> RECOMENDADA:<\/b><\/p>\n<p>Crie quatro caminh\u00f5es (objetos <b>DrawPicture<\/b>), e em cada um deles configure uma conex\u00e3o simples da propriedade <i>Visible <\/i>do tag, apenas variando um pouco a condi\u00e7\u00e3o verdadeira, como segue:<\/p>\n<div align=\"center\"><span style=\"font-size: xx-small;\"><img loading=\"lazy\" title=\"\" src=\"http:\/\/kb.elipse.com.br\/pt-br\/images\/ID26\/Figura6.PNG\" alt=\"\" width=\"550\" height=\"281\" align=\"Baseline\" border=\"0\" \/><br \/>\n<b>Figura 6<\/b>: Configura\u00e7\u00e3o incorreta do primeiro caminh\u00e3o da anima\u00e7\u00e3o<br \/>\n<\/span><\/div>\n<p>&nbsp;<\/p>\n<div align=\"center\"><span style=\"font-size: xx-small;\"><img loading=\"lazy\" title=\"\" src=\"http:\/\/kb.elipse.com.br\/pt-br\/images\/ID26\/Figura7.PNG\" alt=\"\" width=\"550\" height=\"281\" align=\"Baseline\" border=\"0\" \/><br \/>\n<b>Figura 7<\/b>: Configura\u00e7\u00e3o incorreta do \u00faltimo caminh\u00e3o da anima\u00e7\u00e3o<br \/>\n<\/span><\/div>\n<p>Esta abordagem funciona perfeitamente, por\u00e9m n\u00e3o \u00e9 otimizada, pois:<\/p>\n<ul>\n<li>Cria quatro conex\u00f5es com a fonte (caso a fonte mude, teremos que mudar as quatro conex\u00f5es).<\/li>\n<li>Caso o valor do tag possa no futuro ter sua precis\u00e3o aumentada, isto \u00e9, tenha uma maior n\u00famero de combina\u00e7\u00f5es, teremos que colocar mais caminh\u00f5es.<\/li>\n<li>Caso tenhamos que mudar a posi\u00e7\u00e3o inicial do objeto, teremos que mover os outros objetos tamb\u00e9m.<\/li>\n<\/ul>\n<p>Poder\u00edamos ainda tentar fazer uma implementa\u00e7\u00e3o um pouco mais otimizada, como deixar somente um \u00fanico objeto e criar uma conex\u00e3o anal\u00f3gica da propriedade <i>X<\/i> do caminh\u00e3o com o tag, como segue:<\/p>\n<div align=\"center\"><span style=\"font-size: xx-small;\"><img loading=\"lazy\" title=\"\" src=\"http:\/\/kb.elipse.com.br\/pt-br\/images\/ID26\/Figura8.PNG\" alt=\"\" width=\"550\" height=\"282\" align=\"Baseline\" border=\"0\" \/><br \/>\n<b>Figura 8<\/b>: Configura\u00e7\u00e3o incorreta, mas um pouco melhorada, da anima\u00e7\u00e3o do caminh\u00e3o<br \/>\n<\/span><\/div>\n<p>Obedecendo o que est\u00e1 configurado acima, o E3 far\u00e1 um convers\u00e3o 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\u00e3o atribu\u00eddos para a propriedade <i>X <\/i>do caminh\u00e3o, criando o movimento.<\/p>\n<p>Mas ainda assim, esta solu\u00e7\u00e3o apresenta um problema: como saber especificar com exatid\u00e3o onde terminar\u00e1 a anima\u00e7\u00e3o? Para isto, veja o pr\u00f3ximo t\u00f3pico.<\/p>\n<p><b>SOLU\u00c7\u00c3O RECOMENDADA:<\/b><\/p>\n<p>Selecione a imagem e clique no bot\u00e3o <b>Animar com Transla\u00e7\u00e3o<\/b>. O E3Studio criar\u00e1 uma imagem &#8220;fantasma&#8221; do desenho indicando sua posi\u00e7\u00e3o final. Cabe salientar que o objeto &#8220;caminh\u00e3o&#8221; no Organizer fica dentro de um novo objeto chamado <b>DynamicMove<\/b>. Utilizamos o quadrado verde que fica no centro do objeto para posicion\u00e1-lo onde desejado.<\/p>\n<p>Configure as propriedade <i>RangeMax <\/i>e <i>RangeMin <\/i>do <b>DynamicMove <\/b>para &#8220;3&#8221; e &#8220;0&#8221; respectivamente e crie uma conex\u00e3o simples da propriedade <i>Value <\/i>com o tag como mostrado a seguir:<\/p>\n<div align=\"center\"><span style=\"font-size: xx-small;\"><img loading=\"lazy\" title=\"\" src=\"http:\/\/kb.elipse.com.br\/pt-br\/images\/ID26\/Figura9.PNG\" alt=\"\" width=\"550\" height=\"273\" align=\"Baseline\" border=\"0\" \/><br \/>\n<b>Figura 9<\/b>: Configura\u00e7\u00e3o correta da anima\u00e7\u00e3o do caminh\u00e3o<br \/>\n<\/span><\/div>\n<p>Isto far\u00e1 com que o objeto se desloque automaticamente de um lugar para outro, trazendo as seguintes vantagens:<\/p>\n<ul>\n<li>A imagem &#8220;fantasma&#8221; indica a posi\u00e7\u00e3o final do caminh\u00e3o de uma maneira intuitiva e clara.<\/li>\n<li>Se for necess\u00e1rio mover a posi\u00e7\u00e3o inicial do objeto, a posi\u00e7\u00e3o final \u00e9 deslocada automaticamente.<\/li>\n<li>\u00c9 poss\u00edvel testar a movimenta\u00e7\u00e3o alterando-se o valor da propriedade <i>Value <\/i>do <b>DynamicMove <\/b>durante a edi\u00e7\u00e3o no E3Studio.<\/li>\n<\/ul>\n<p><b>PROBLEMA 3:<\/b><\/p>\n<p><i>Como posso criar uma anima\u00e7\u00e3o do estado de uma bomba atrav\u00e9s da mudan\u00e7a da sua cor? Exemplo: uma bomba com tr\u00eas estados (&#8220;ligada&#8221;, &#8220;desligada&#8221; e &#8220;em manuten\u00e7\u00e3o&#8221;), representados pelas cores verde, vermelha e cinza, respectivamente.<\/i><\/p>\n<p><b>SOLU\u00c7\u00c3O <u>N\u00c3O<\/u> RECOMENDADA:<\/b><\/p>\n<p>Crie tr\u00eas bitmaps com as tr\u00eas cores e fa\u00e7a uma conex\u00e3o simples da propriedade <i>Visible <\/i>com o tag (semelhante ao Problema 1). Cada bitmap tem uma cor configurada como transparente:<\/p>\n<div align=\"center\"><span style=\"font-size: xx-small;\"><img loading=\"lazy\" title=\"\" src=\"http:\/\/kb.elipse.com.br\/pt-br\/images\/ID26\/Figura10.PNG\" alt=\"\" width=\"550\" height=\"361\" align=\"Baseline\" border=\"0\" \/><br \/>\n<b>Figura 10<\/b>: Configura\u00e7\u00e3o incorreta para mudar a cor de uma bomba<br \/>\n<\/span><\/div>\n<p>Neste exemplo, as bombas est\u00e3o lado a lado apenas por motivos de exposi\u00e7\u00e3o do artigo, pois na verdade elas deveriam estar sobrepostas. Esta abordagem cont\u00e9m os seguintes problemas:<\/p>\n<ul>\n<li>Temos tr\u00eas bitmaps, e se tivermos que modificar seu desenho, teremos que efetuar as modifica\u00e7\u00f5es nas tr\u00eas vers\u00f5es. Por exemplo: se quisermos mudar de verde para azul o estado de ligado, teremos que modificar o bitmap fonte.<\/li>\n<li>Temos tr\u00eas conex\u00f5es para o mesmo tag; se o nome do tag for modificado, teremos que alter\u00e1-lo nas tr\u00eas conex\u00f5es.<\/li>\n<li>A edi\u00e7\u00e3o tamb\u00e9m fica complicada, pois temos tr\u00eas objetos sobrepostos.<\/li>\n<\/ul>\n<p><b>SOLU\u00c7\u00c3O RECOMENDADA:<\/b><\/p>\n<p>No E3, d\u00ea sempre prioridade a arquivos com o formato WMF (Windows MetaFile), pois \u00e9 poss\u00edvel modificar suas caracter\u00edsticas de desenho como cor e tipo do preenchimento <b>sem alterar o arquivo fonte<\/b>. Para resolver este problema, adicione o WMF \u00e0 tela e fa\u00e7a uma conex\u00e3o por tabela da propriedade <i>OverrideFillColor <\/i>com o tag:<\/p>\n<div align=\"center\"><span style=\"font-size: xx-small;\"><img loading=\"lazy\" title=\"\" src=\"http:\/\/kb.elipse.com.br\/pt-br\/images\/ID26\/Figura11.PNG\" alt=\"\" width=\"550\" height=\"307\" align=\"Baseline\" border=\"0\" \/><br \/>\n<b>Figura 11<\/b>: Configura\u00e7\u00e3o correta para mudar a cor de uma bomba<br \/>\n<\/span><\/div>\n<p>Al\u00e9m dos benef\u00edcios deste tipo de associa\u00e7\u00e3o (ver Problema 1), a utiliza\u00e7\u00e3o de arquivos do formato WMF tem as seguintes vantagens em rela\u00e7\u00e3o aos bitmaps:<\/p>\n<ul>\n<li>\u00c9 poss\u00edvel redefinir o tipo de preenchimento do WMF atrav\u00e9s da propriedade <i>OverrideFillMode <\/i>para <b>Wireframe<\/b>, <b>SolidFill <\/b>ou <b>ByBrightness<\/b>.<\/li>\n<li>\u00c9 poss\u00edvel redefinir a cor do preenchimento do WMF.<\/li>\n<li>\u00c9 poss\u00edvel redefinir a cor da linha do WMF.<\/li>\n<li>\u00c9 vetorial, portanto n\u00e3o perde resolu\u00e7\u00e3o mesmo quando for efetuado um zoom.<\/li>\n<\/ul>\n<p>Como dito anteriormente, todas essas modifica\u00e7\u00f5es no desenho n\u00e3o modificam o arquivo original, apenas a maneira que o desenho \u00e9 visualizado.<\/p>\n<p>Para maiores informa\u00e7\u00f5es sobre aplica\u00e7\u00f5es com v\u00e1rios objetos configurados, e a posterior atualiza\u00e7\u00e3o destas configura\u00e7\u00f5es, acesse o artigo <a href=\"http:\/\/kb.elipse.com.br\/pt-br\/questions\/27\/Desenvolvendo+aplica%C3%A7%C3%B5es+orientadas+a+objetos+no+E3+-+Parte+II.\" target=\"_blank\" rel=\"noopener noreferrer\"><b>Desenvolvendo aplica\u00e7\u00f5es orientadas a objetos no Elipse E3 &#8211; Parte II<\/b><\/a>.<\/p>\n<\/div>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>1) Introdu\u00e7\u00e3o Com o surgimento do Elipse E3 e sua nova maneira de desenvolver aplica\u00e7\u00f5es, muitos projetos que antes se tornavam demorados por sua complexidade e extens\u00e3o, agora podem ser&hellip;<\/p>\n","protected":false},"author":26,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0},"categories":[616],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v19.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Desenvolvendo aplica\u00e7\u00f5es orientadas a objetos no Elipse E3 - Desenvolvendo aplica\u00e7\u00f5es orientadas a objetos no Elipse E3 - Parte I.[:] - Elipse Knowledgebase<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kb.elipse.com.br\/desenvolvendo-aplicacoes-orientadas-a-objetos-no-elipse-e3-parte-i\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Desenvolvendo aplica\u00e7\u00f5es orientadas a objetos no Elipse E3 - Parte I.\" \/>\n<meta property=\"og:description\" content=\"1) Introdu\u00e7\u00e3o Com o surgimento do Elipse E3 e sua nova maneira de desenvolver aplica\u00e7\u00f5es, muitos projetos que antes se tornavam demorados por sua complexidade e extens\u00e3o, agora podem ser&hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kb.elipse.com.br\/desenvolvendo-aplicacoes-orientadas-a-objetos-no-elipse-e3-parte-i\/\" \/>\n<meta property=\"og:site_name\" content=\"Elipse Knowledgebase\" \/>\n<meta property=\"article:publisher\" content=\"http:\/\/www.facebook.com\/elipsesoftware\" \/>\n<meta property=\"article:published_time\" content=\"2019-03-25T20:30:11+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-06-12T11:58:54+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/kb.elipse.com.br\/pt-br\/images\/ID26\/Figura1.PNG\" \/>\n<meta name=\"author\" content=\"Alexandre B. Corr\u00eaa\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Alexandre B. Corr\u00eaa\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"16 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kb.elipse.com.br\/desenvolvendo-aplicacoes-orientadas-a-objetos-no-elipse-e3-parte-i\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kb.elipse.com.br\/desenvolvendo-aplicacoes-orientadas-a-objetos-no-elipse-e3-parte-i\/\"},\"author\":{\"name\":\"Alexandre B. Corr\u00eaa\",\"@id\":\"https:\/\/kb.elipse.com.br\/#\/schema\/person\/a4b2e51e032a9f1b7871b80269b1d46a\"},\"headline\":\"Desenvolvendo aplica\u00e7\u00f5es orientadas a objetos no Elipse E3 &#8211; Parte I.\",\"datePublished\":\"2019-03-25T20:30:11+00:00\",\"dateModified\":\"2019-06-12T11:58:54+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kb.elipse.com.br\/desenvolvendo-aplicacoes-orientadas-a-objetos-no-elipse-e3-parte-i\/\"},\"wordCount\":3304,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kb.elipse.com.br\/#organization\"},\"articleSection\":[\"XControl \/ XObject \/ Lib\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kb.elipse.com.br\/desenvolvendo-aplicacoes-orientadas-a-objetos-no-elipse-e3-parte-i\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kb.elipse.com.br\/desenvolvendo-aplicacoes-orientadas-a-objetos-no-elipse-e3-parte-i\/\",\"url\":\"https:\/\/kb.elipse.com.br\/desenvolvendo-aplicacoes-orientadas-a-objetos-no-elipse-e3-parte-i\/\",\"name\":\"[:pt]Desenvolvendo aplica\u00e7\u00f5es orientadas a objetos no Elipse E3 - Parte I.[:en]Desenvolvendo aplica\u00e7\u00f5es orientadas a objetos no Elipse E3 - Parte I.[:] - Elipse Knowledgebase\",\"isPartOf\":{\"@id\":\"https:\/\/kb.elipse.com.br\/#website\"},\"datePublished\":\"2019-03-25T20:30:11+00:00\",\"dateModified\":\"2019-06-12T11:58:54+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/kb.elipse.com.br\/desenvolvendo-aplicacoes-orientadas-a-objetos-no-elipse-e3-parte-i\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kb.elipse.com.br\/desenvolvendo-aplicacoes-orientadas-a-objetos-no-elipse-e3-parte-i\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kb.elipse.com.br\/desenvolvendo-aplicacoes-orientadas-a-objetos-no-elipse-e3-parte-i\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\/\/kb.elipse.com.br\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Desenvolvendo aplica\u00e7\u00f5es orientadas a objetos no Elipse E3 &#8211; Parte I.\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kb.elipse.com.br\/#website\",\"url\":\"https:\/\/kb.elipse.com.br\/\",\"name\":\"Elipse Knowledgebase\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/kb.elipse.com.br\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kb.elipse.com.br\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kb.elipse.com.br\/#organization\",\"name\":\"Elipse Software\",\"url\":\"https:\/\/kb.elipse.com.br\/\",\"sameAs\":[\"http:\/\/www.facebook.com\/elipsesoftware\"],\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/kb.elipse.com.br\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kb.elipse.com.br\/wp-content\/uploads\/2019\/05\/schererelipse-com-br\/logoElipse.png\",\"contentUrl\":\"https:\/\/kb.elipse.com.br\/wp-content\/uploads\/2019\/05\/schererelipse-com-br\/logoElipse.png\",\"width\":161,\"height\":58,\"caption\":\"Elipse Software\"},\"image\":{\"@id\":\"https:\/\/kb.elipse.com.br\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/kb.elipse.com.br\/#\/schema\/person\/a4b2e51e032a9f1b7871b80269b1d46a\",\"name\":\"Alexandre B. Corr\u00eaa\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/kb.elipse.com.br\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/39cffad4619be80e8390c9b5abe033e8?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/39cffad4619be80e8390c9b5abe033e8?s=96&d=mm&r=g\",\"caption\":\"Alexandre B. Corr\u00eaa\"},\"url\":\"https:\/\/kb.elipse.com.br\/en\/author\/abc\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Desenvolvendo aplica\u00e7\u00f5es orientadas a objetos no Elipse E3 - Desenvolvendo aplica\u00e7\u00f5es orientadas a objetos no Elipse E3 - Parte I.[:] - Elipse Knowledgebase","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kb.elipse.com.br\/desenvolvendo-aplicacoes-orientadas-a-objetos-no-elipse-e3-parte-i\/","og_locale":"en_US","og_type":"article","og_title":"[:pt]Desenvolvendo aplica\u00e7\u00f5es orientadas a objetos no Elipse E3 - Parte I.[:en]Desenvolvendo aplica\u00e7\u00f5es orientadas a objetos no Elipse E3 - Parte I.[:] - Elipse Knowledgebase","og_description":"1) Introdu\u00e7\u00e3o Com o surgimento do Elipse E3 e sua nova maneira de desenvolver aplica\u00e7\u00f5es, muitos projetos que antes se tornavam demorados por sua complexidade e extens\u00e3o, agora podem ser&hellip;","og_url":"https:\/\/kb.elipse.com.br\/desenvolvendo-aplicacoes-orientadas-a-objetos-no-elipse-e3-parte-i\/","og_site_name":"Elipse Knowledgebase","article_publisher":"http:\/\/www.facebook.com\/elipsesoftware","article_published_time":"2019-03-25T20:30:11+00:00","article_modified_time":"2019-06-12T11:58:54+00:00","og_image":[{"url":"http:\/\/kb.elipse.com.br\/pt-br\/images\/ID26\/Figura1.PNG"}],"author":"Alexandre B. Corr\u00eaa","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Alexandre B. Corr\u00eaa","Est. reading time":"16 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kb.elipse.com.br\/desenvolvendo-aplicacoes-orientadas-a-objetos-no-elipse-e3-parte-i\/#article","isPartOf":{"@id":"https:\/\/kb.elipse.com.br\/desenvolvendo-aplicacoes-orientadas-a-objetos-no-elipse-e3-parte-i\/"},"author":{"name":"Alexandre B. Corr\u00eaa","@id":"https:\/\/kb.elipse.com.br\/#\/schema\/person\/a4b2e51e032a9f1b7871b80269b1d46a"},"headline":"Desenvolvendo aplica\u00e7\u00f5es orientadas a objetos no Elipse E3 &#8211; Parte I.","datePublished":"2019-03-25T20:30:11+00:00","dateModified":"2019-06-12T11:58:54+00:00","mainEntityOfPage":{"@id":"https:\/\/kb.elipse.com.br\/desenvolvendo-aplicacoes-orientadas-a-objetos-no-elipse-e3-parte-i\/"},"wordCount":3304,"commentCount":0,"publisher":{"@id":"https:\/\/kb.elipse.com.br\/#organization"},"articleSection":["XControl \/ XObject \/ Lib"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kb.elipse.com.br\/desenvolvendo-aplicacoes-orientadas-a-objetos-no-elipse-e3-parte-i\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kb.elipse.com.br\/desenvolvendo-aplicacoes-orientadas-a-objetos-no-elipse-e3-parte-i\/","url":"https:\/\/kb.elipse.com.br\/desenvolvendo-aplicacoes-orientadas-a-objetos-no-elipse-e3-parte-i\/","name":"[:pt]Desenvolvendo aplica\u00e7\u00f5es orientadas a objetos no Elipse E3 - Parte I.[:en]Desenvolvendo aplica\u00e7\u00f5es orientadas a objetos no Elipse E3 - Parte I.[:] - Elipse Knowledgebase","isPartOf":{"@id":"https:\/\/kb.elipse.com.br\/#website"},"datePublished":"2019-03-25T20:30:11+00:00","dateModified":"2019-06-12T11:58:54+00:00","breadcrumb":{"@id":"https:\/\/kb.elipse.com.br\/desenvolvendo-aplicacoes-orientadas-a-objetos-no-elipse-e3-parte-i\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kb.elipse.com.br\/desenvolvendo-aplicacoes-orientadas-a-objetos-no-elipse-e3-parte-i\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/kb.elipse.com.br\/desenvolvendo-aplicacoes-orientadas-a-objetos-no-elipse-e3-parte-i\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/kb.elipse.com.br\/en\/"},{"@type":"ListItem","position":2,"name":"Desenvolvendo aplica\u00e7\u00f5es orientadas a objetos no Elipse E3 &#8211; Parte I."}]},{"@type":"WebSite","@id":"https:\/\/kb.elipse.com.br\/#website","url":"https:\/\/kb.elipse.com.br\/","name":"Elipse Knowledgebase","description":"","publisher":{"@id":"https:\/\/kb.elipse.com.br\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kb.elipse.com.br\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/kb.elipse.com.br\/#organization","name":"Elipse Software","url":"https:\/\/kb.elipse.com.br\/","sameAs":["http:\/\/www.facebook.com\/elipsesoftware"],"logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/kb.elipse.com.br\/#\/schema\/logo\/image\/","url":"https:\/\/kb.elipse.com.br\/wp-content\/uploads\/2019\/05\/schererelipse-com-br\/logoElipse.png","contentUrl":"https:\/\/kb.elipse.com.br\/wp-content\/uploads\/2019\/05\/schererelipse-com-br\/logoElipse.png","width":161,"height":58,"caption":"Elipse Software"},"image":{"@id":"https:\/\/kb.elipse.com.br\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/kb.elipse.com.br\/#\/schema\/person\/a4b2e51e032a9f1b7871b80269b1d46a","name":"Alexandre B. Corr\u00eaa","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/kb.elipse.com.br\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/39cffad4619be80e8390c9b5abe033e8?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/39cffad4619be80e8390c9b5abe033e8?s=96&d=mm&r=g","caption":"Alexandre B. Corr\u00eaa"},"url":"https:\/\/kb.elipse.com.br\/en\/author\/abc\/"}]}},"_links":{"self":[{"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/posts\/298"}],"collection":[{"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/users\/26"}],"replies":[{"embeddable":true,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/comments?post=298"}],"version-history":[{"count":2,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/posts\/298\/revisions"}],"predecessor-version":[{"id":7223,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/posts\/298\/revisions\/7223"}],"wp:attachment":[{"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/media?parent=298"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/categories?post=298"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/tags?post=298"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}