{"id":336,"date":"2019-03-25T17:30:22","date_gmt":"2019-03-25T20:30:22","guid":{"rendered":"http:\/\/xexeu.elipse.com.br\/pt\/developing-objectoriented-applications-with-e3-part-i\/"},"modified":"2019-07-05T16:34:35","modified_gmt":"2019-07-05T19:34:35","slug":"developing-objectoriented-applications-with-e3-part-i","status":"publish","type":"post","link":"https:\/\/kb.elipse.com.br\/en\/developing-objectoriented-applications-with-e3-part-i\/","title":{"rendered":"Developing object-oriented applications with E3 &#8211; Part I"},"content":{"rendered":"<p align=\"justify\"><span style=\"font-family: Tahoma;\"><strong>1) Defining project\u2019s architecture<\/strong><\/p>\n<p>First, the programmer must ask these questions: &#8220;Which parts of the application will be repeated?&#8221;, &#8220;How could I return values in parameterized objects?&#8221;<\/p>\n<p>The most common answers to these questions are:<\/p>\n<p><\/span><\/p>\n<p>&nbsp;<\/p>\n<ul>\n<li>Screen objects, such as pumps, valves, elevators, silos, etc.<\/li>\n<li>Screens, with different parameters (tags linked to objects).<\/li>\n<li>Data objects, such as alarms, tags, historic, etc.<\/li>\n<\/ul>\n<p>But even by creating these exact objects, you may wonder: &#8220;Which are the advantages of this work?&#8221;. Let\u2019s see:<\/p>\n<ul>\n<li>Everything is in one source (the definition can change and the place where it is used is automatically modified).<\/li>\n<li>Objects are made from other objects.<\/li>\n<li>Creation of properties.<\/li>\n<li>Reusing objects in other projects.<\/li>\n<\/ul>\n<p align=\"justify\">\n<p>You will notice that as you get used to using E3 libraries, you will gain more engineering time through the improvements of objects; therefore, by modifying the library, the application is also automatically updated.<\/p>\n<p>However, before emphasizing object creation, we have to review how links are used in properties.<\/p>\n<p><strong>2) Basic concepts for developing objects<\/strong><\/p>\n<p>For objects development, you will first have to understand basic concepts on links, animation resources, and how they are used inside E3. To do so, some problems will be presented as examples of what you should and should not do.<\/p>\n<p><strong>Problem 1<\/strong>: I want to have a text displaying the word &#8220;On&#8221; when the linked tag is 1, and &#8220;Off&#8221; when the linked tag is 0. Also, these words must respectively be green and red.<\/p>\n<p>You should <strong>NOT DO<\/strong> this: create two Text objects: one in green and one in red; one in top of the other; and linked to the same tag&#8217;s Visible property, but in reverse:<\/p>\n<p><img loading=\"lazy\" title=\"\" src=\"http:\/\/kb.elipse.com.br\/images\/ID70\/Picture1.PNG\" alt=\"\" width=\"550\" height=\"488\" align=\"baseline\" border=\"0\" \/><br \/>\nPicture 1 \u2013 Incorrect configuration of an on\/off set<\/p>\n<p>For only one on\/off setting text this may seem simple, but imagine having something like this:<\/p>\n<p><img loading=\"lazy\" title=\"\" src=\"http:\/\/kb.elipse.com.br\/images\/ID70\/Picture2.PNG\" alt=\"\" width=\"550\" height=\"415\" align=\"baseline\" border=\"0\" \/><br \/>\nPicture 2 \u2013 Incorrect configuration of several on\/off sets<\/p>\n<p>With only 6 sets we have no less than 12 objects and 12 associations. It seems that editing the application gets complicated, because there are overlapping objects. For example, if the name of the tag linked to set changes, we will have to update it both links.<\/p>\n<p>You should <strong>DO<\/strong> this: create only one Text object, with two links:<\/p>\n<ul>\n<li>Digital link between <em>Value<\/em> property and tag. This will set the value &#8220;On&#8221; when tag is 1, and &#8220;Off&#8221; when it is 0.<\/li>\n<li>Digital link between <em>TextColor<\/em> property and tag. This will set the value green when the tag is 1, and red when it is with 0.<\/li>\n<\/ul>\n<p align=\"justify\">\nBelow, there is the configuration of <em>Value&#8217;s<\/em> property digital link:<\/p>\n<p><img loading=\"lazy\" title=\"\" src=\"http:\/\/kb.elipse.com.br\/images\/ID70\/Picture3.PNG\" alt=\"\" width=\"550\" height=\"385\" align=\"baseline\" border=\"0\" \/><br \/>\nPicture 3 \u2013 Proper configuration of the link Value for the on\/off object<\/p>\n<p>And here is the digital link for <em>TextColor<\/em> property:<\/p>\n<p><img loading=\"lazy\" title=\"\" src=\"http:\/\/kb.elipse.com.br\/images\/ID70\/Picture4.PNG\" alt=\"\" width=\"550\" height=\"398\" align=\"baseline\" border=\"0\" \/><br \/>\nPicture 4 \u2013 Correct configuration of the association TextColor for the object on\/off<\/p>\n<p>Just like in the previous example, we will create five more copies to visualize them:<\/p>\n<p><img loading=\"lazy\" title=\"\" src=\"http:\/\/kb.elipse.com.br\/images\/ID70\/Picture5.PNG\" alt=\"\" width=\"550\" height=\"457\" align=\"baseline\" border=\"0\" \/><br \/>\nPicture 5 \u2013 Correct configuration of some sets on\/off<\/p>\n<p>Thus, it is possible to see the benefits of linking properties to only one object, instead of two:<\/p>\n<ul>\n<li>Now there are only six objects on the screen.<\/li>\n<li>Its edition became easier, because there are no overlapping objects, and color configuration is only in one place.<\/li>\n<li>In case tag name changes, you will only need to change the two links in only one object.<\/li>\n<\/ul>\n<p align=\"justify\">\n<p>However, wouldn&#8217;t it be better if you could make these modifications all in only one place? This question will be answered later with the use of libraries.<\/p>\n<p><strong>Problem 2<\/strong>: How can I make the drawing of a truck run along a pre-established path according to tag value variation? Tag value goes from 0 to 3.<\/p>\n<p>You should <strong>NOT DO<\/strong> this: create four trucks (DrawPicture objects) and configure a simple link between the tag and its <em>Visible<\/em> property in each one of them. Make sure tag&#8217;s True condition varies a little.<\/p>\n<p><img loading=\"lazy\" title=\"\" src=\"http:\/\/kb.elipse.com.br\/images\/ID70\/Picture6.PNG\" alt=\"\" width=\"550\" height=\"453\" align=\"baseline\" border=\"0\" \/><br \/>\nPicture 6 \u2013Incorrect configuration of the first truck in the animation<\/p>\n<p><img loading=\"lazy\" title=\"\" src=\"http:\/\/kb.elipse.com.br\/images\/ID70\/Picture7.PNG\" alt=\"\" width=\"550\" height=\"449\" align=\"baseline\" border=\"0\" \/><br \/>\nPicture 7 \u2013 Incorrect configuration of the last truck in the animation<\/p>\n<p>This way to deal with the problem works perfectly, but it is not optimized, because:<\/p>\n<ul>\n<li>It creates four different links to the source (and if the source moves, you will have to change the four links).<\/li>\n<li>If tag value&#8217;s precision is increased in the future (with a bigger number of combinations), you will have to place more trucks;<\/li>\n<li>If the object&#8217;s initial position has to be altered, other objects will have to be moved as well.<\/li>\n<\/ul>\n<p align=\"justify\">\n<p>Another possibility, a little more optimized than this, is to have just on object, and create an analog link between the truck&#8217;s X property and the tag, as follows:<\/p>\n<p><img loading=\"lazy\" title=\"\" src=\"http:\/\/kb.elipse.com.br\/images\/ID70\/Picture8.PNG\" alt=\"\" width=\"550\" height=\"412\" align=\"baseline\" border=\"0\" \/><br \/>\nPicture 8 \u2013 Slightly improved, incorrect configuration of the truck&#8217;s animation<\/p>\n<p>As configured above, E3 will convert tag value into property value; so, when tag varies from 0 to 3, the values between 500 and 5000 will be attributed to the truck&#8217;s X property, which will start the movement.<\/p>\n<p>However, this solution still poses a problem: how do you know for sure where the animation ends? Here is the answer:<\/p>\n<p>You should <strong>DO<\/strong> this: select the image and click on button &#8220;Animate with Translation&#8221; button. E3Studio will create a &#8220;ghost&#8221; image of the drawing indicating its final position. You should notice that &#8220;truck&#8221; object is placed inside a new object, called <strong>DynamicMove<\/strong> in the Organizer. The green square in the center of object will place it where intended.<\/p>\n<p>Configure DynamicMove&#8217;s <em>RangeMax<\/em> and <em>RangeMin<\/em> properties to &#8220;3&#8221; and &#8220;0&#8221;, respectively. Create a simple link between tag and Value property, as seen below:<\/p>\n<p><img loading=\"lazy\" title=\"\" src=\"http:\/\/kb.elipse.com.br\/images\/ID70\/Picture9.PNG\" alt=\"\" width=\"550\" height=\"273\" align=\"baseline\" border=\"0\" \/><br \/>\nPicture 9 \u2013 Correct configuration of the truck animation<\/p>\n<p>This will make the object automatically move from a place to another. This brings the following advantages:<\/p>\n<ul>\n<li>The &#8220;ghost&#8221; image indicates the final position of the truck in a clear, intuitive way.<\/li>\n<li>If you need to move the object&#8217;s initial position, its final position will also automatically be moved.<\/li>\n<li>It is possible to test the movement by changing the value of DynamicMove&#8217;s <em>Value<\/em> property during E3Studio edition.<\/li>\n<\/ul>\n<p align=\"justify\">\n<p><strong>Problem 3<\/strong>: How can I animate a pump&#8217;s status by changing its color? For example, let&#8217;s say I have three different states: &#8220;on&#8221;, &#8220;off&#8221; and &#8220;in maintenance&#8221;, represented by the colors green, red, and gray respectively.<\/p>\n<p>You should <strong>NOT DO<\/strong> this: create three bitmaps with the three colors and make a simple link between tag and Visible property (similar to problem 1). Each bitmap&#8217;s color is configured as transparent color:<\/p>\n<p><img loading=\"lazy\" title=\"\" src=\"http:\/\/kb.elipse.com.br\/images\/ID70\/Picture10.PNG\" alt=\"\" width=\"550\" height=\"409\" align=\"baseline\" border=\"0\" \/><br \/>\nPicture 10 \u2013 Incorrect configuration to change the color of a pump<\/p>\n<p>In this example, the pumps were placed side by side place for clarification purposes, because they would actually have to be overlapping. This way to deal with the problem contains the following problems:<\/p>\n<ul>\n<li>There are three different bitmaps; if you want to change on of the drawings in the future, you will have to change all three. For example, if you want to change its color from green to blue when the pump is on, you will have to modify the source bitmap.<\/li>\n<li>There are three links for the same tag; if tag name changes, you will have to modify it in all three links.<\/li>\n<li>Object edition also gets complicated, because there are three overlapping objects.<\/li>\n<\/ul>\n<p align=\"justify\">\n<p>You should <strong>DO<\/strong> this: in E3, you must always give the priority to .WMF (Windows MetaFile) format, because you can modify some of its features such as color and fill type <strong>without having to change the source file<\/strong>. To solve this problem, place the WMF on the screen and make a table link between <em>OverrideFillColor<\/em> property and the tag:<\/p>\n<p><img loading=\"lazy\" title=\"\" src=\"http:\/\/kb.elipse.com.br\/images\/ID70\/Picture11.PNG\" alt=\"\" width=\"550\" height=\"372\" align=\"baseline\" border=\"0\" \/><br \/>\nPicture 11 \u2013 Correct configuration to change pump color<\/p>\n<p>In addition to the benefits that have already been explained in Problem 1, using .WMF files instead of bitmaps have the following advantages:<\/p>\n<ul>\n<li>You can redefine the .WMF&#8217;s fill type via <em>OverrrideFillMode<\/em> property to &#8220;Wireframe&#8221;, &#8220;SolidFill&#8221; or &#8220;ByBrightness&#8221;.<\/li>\n<li>You can redefine the .WMF&#8217;s fill color.<\/li>\n<li>You can redefine the .WMF&#8217;s border color.<\/li>\n<li>The picture is vectorial, therefore it will not lose resolution when zoomed.<\/li>\n<\/ul>\n<p align=\"justify\">\n<p>As we have said before, all these modifications in the drawing do not modify the original file, only the way the drawing is visualized.<\/p>\n<p>You may ask yourself: but what will happen if I need to have several of these objects configured in my application and need to modify their definitions after some time? Do I have to change them one by one? All these doubts will be clarified in Part II of this document.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>1) Defining project\u2019s architecture First, the programmer must ask these questions: &#8220;Which parts of the application will be repeated?&#8221;, &#8220;How could I return values in parameterized objects?&#8221; The most common&hellip;<\/p>\n","protected":false},"author":1,"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":[769],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v19.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Developing object-oriented applications with E3 - Part 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\/en\/developing-objectoriented-applications-with-e3-part-i\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Developing object-oriented applications with E3 - Part I\" \/>\n<meta property=\"og:description\" content=\"1) Defining project\u2019s architecture First, the programmer must ask these questions: &#8220;Which parts of the application will be repeated?&#8221;, &#8220;How could I return values in parameterized objects?&#8221; The most common&hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kb.elipse.com.br\/en\/developing-objectoriented-applications-with-e3-part-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:22+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-07-05T19:34:35+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/kb.elipse.com.br\/images\/ID70\/Picture1.PNG\" \/>\n<meta name=\"author\" content=\"Elipse Software\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Elipse Software\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kb.elipse.com.br\/en\/developing-objectoriented-applications-with-e3-part-i\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kb.elipse.com.br\/en\/developing-objectoriented-applications-with-e3-part-i\/\"},\"author\":{\"name\":\"Elipse Software\",\"@id\":\"https:\/\/kb.elipse.com.br\/#\/schema\/person\/def69ea453ea60b250497b89225a9f87\"},\"headline\":\"Developing object-oriented applications with E3 &#8211; Part I\",\"datePublished\":\"2019-03-25T20:30:22+00:00\",\"dateModified\":\"2019-07-05T19:34:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kb.elipse.com.br\/en\/developing-objectoriented-applications-with-e3-part-i\/\"},\"wordCount\":1375,\"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\/en\/developing-objectoriented-applications-with-e3-part-i\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kb.elipse.com.br\/en\/developing-objectoriented-applications-with-e3-part-i\/\",\"url\":\"https:\/\/kb.elipse.com.br\/en\/developing-objectoriented-applications-with-e3-part-i\/\",\"name\":\"[:pt]Developing object-oriented applications with E3 - Part I[:] - Elipse Knowledgebase\",\"isPartOf\":{\"@id\":\"https:\/\/kb.elipse.com.br\/#website\"},\"datePublished\":\"2019-03-25T20:30:22+00:00\",\"dateModified\":\"2019-07-05T19:34:35+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/kb.elipse.com.br\/en\/developing-objectoriented-applications-with-e3-part-i\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kb.elipse.com.br\/en\/developing-objectoriented-applications-with-e3-part-i\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kb.elipse.com.br\/en\/developing-objectoriented-applications-with-e3-part-i\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\/\/kb.elipse.com.br\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Developing object-oriented applications with E3 &#8211; Part 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\/def69ea453ea60b250497b89225a9f87\",\"name\":\"Elipse Software\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/kb.elipse.com.br\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ff1f7ec38f4687b06f6851d97b3cd2d0?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ff1f7ec38f4687b06f6851d97b3cd2d0?s=96&d=mm&r=g\",\"caption\":\"Elipse Software\"},\"url\":\"https:\/\/kb.elipse.com.br\/en\/author\/webmasterelipse-com-br\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Developing object-oriented applications with E3 - Part 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\/en\/developing-objectoriented-applications-with-e3-part-i\/","og_locale":"en_US","og_type":"article","og_title":"[:pt]Developing object-oriented applications with E3 - Part I[:] - Elipse Knowledgebase","og_description":"1) Defining project\u2019s architecture First, the programmer must ask these questions: &#8220;Which parts of the application will be repeated?&#8221;, &#8220;How could I return values in parameterized objects?&#8221; The most common&hellip;","og_url":"https:\/\/kb.elipse.com.br\/en\/developing-objectoriented-applications-with-e3-part-i\/","og_site_name":"Elipse Knowledgebase","article_publisher":"http:\/\/www.facebook.com\/elipsesoftware","article_published_time":"2019-03-25T20:30:22+00:00","article_modified_time":"2019-07-05T19:34:35+00:00","og_image":[{"url":"http:\/\/kb.elipse.com.br\/images\/ID70\/Picture1.PNG"}],"author":"Elipse Software","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Elipse Software","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kb.elipse.com.br\/en\/developing-objectoriented-applications-with-e3-part-i\/#article","isPartOf":{"@id":"https:\/\/kb.elipse.com.br\/en\/developing-objectoriented-applications-with-e3-part-i\/"},"author":{"name":"Elipse Software","@id":"https:\/\/kb.elipse.com.br\/#\/schema\/person\/def69ea453ea60b250497b89225a9f87"},"headline":"Developing object-oriented applications with E3 &#8211; Part I","datePublished":"2019-03-25T20:30:22+00:00","dateModified":"2019-07-05T19:34:35+00:00","mainEntityOfPage":{"@id":"https:\/\/kb.elipse.com.br\/en\/developing-objectoriented-applications-with-e3-part-i\/"},"wordCount":1375,"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\/en\/developing-objectoriented-applications-with-e3-part-i\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kb.elipse.com.br\/en\/developing-objectoriented-applications-with-e3-part-i\/","url":"https:\/\/kb.elipse.com.br\/en\/developing-objectoriented-applications-with-e3-part-i\/","name":"[:pt]Developing object-oriented applications with E3 - Part I[:] - Elipse Knowledgebase","isPartOf":{"@id":"https:\/\/kb.elipse.com.br\/#website"},"datePublished":"2019-03-25T20:30:22+00:00","dateModified":"2019-07-05T19:34:35+00:00","breadcrumb":{"@id":"https:\/\/kb.elipse.com.br\/en\/developing-objectoriented-applications-with-e3-part-i\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kb.elipse.com.br\/en\/developing-objectoriented-applications-with-e3-part-i\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/kb.elipse.com.br\/en\/developing-objectoriented-applications-with-e3-part-i\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/kb.elipse.com.br\/en\/"},{"@type":"ListItem","position":2,"name":"Developing object-oriented applications with E3 &#8211; Part 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\/def69ea453ea60b250497b89225a9f87","name":"Elipse Software","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/kb.elipse.com.br\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/ff1f7ec38f4687b06f6851d97b3cd2d0?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ff1f7ec38f4687b06f6851d97b3cd2d0?s=96&d=mm&r=g","caption":"Elipse Software"},"url":"https:\/\/kb.elipse.com.br\/en\/author\/webmasterelipse-com-br\/"}]}},"_links":{"self":[{"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/posts\/336"}],"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\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/comments?post=336"}],"version-history":[{"count":1,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/posts\/336\/revisions"}],"predecessor-version":[{"id":7610,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/posts\/336\/revisions\/7610"}],"wp:attachment":[{"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/media?parent=336"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/categories?post=336"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/tags?post=336"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}