http://git-wip-us.apache.org/repos/asf/polygene-website/blob/538baaf6/content/java/develop/two-minutes-intro.html ---------------------------------------------------------------------- diff --git a/content/java/develop/two-minutes-intro.html b/content/java/develop/two-minutes-intro.html index 943e589..be13ee8 100644 --- a/content/java/develop/two-minutes-intro.html +++ b/content/java/develop/two-minutes-intro.html @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Polygene⢠in 2 minutes</title><link rel="stylesheet" type="text/css" href="css/style.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.76.1" /><link rel="home" href="index.html" title="" /><link rel="up" href="tutorials.html" title="Tutorials" /><link rel="prev" href="tutorials.html" title="Tutorials" /><link rel="next" href="ten-minutes-intro.html" title="Polygene⢠in 10 minutes" /> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Polygene⢠in 2 minutes</title><link rel="stylesheet" type="text/css" href="css/style.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="home" href="index.html" title="" /><link rel="up" href="tutorials.html" title="Tutorials" /><link rel="prev" href="tutorials.html" title="Tutorials" /><link rel="next" href="ten-minutes-intro.html" title="Polygene⢠in 10 minutes" /> <!-- favicon --> @@ -66,11 +66,11 @@ })(); </script> - </head><body><div xmlns="" xmlns:exsl="http://exslt.org/common" class="logo"><a href="index.html"><img src="images/logo-standard.png" /></a></div><div xmlns="" xmlns:exsl="http://exslt.org/common" class="top-nav"><div xmlns="http://www.w3.org/1999/xhtml" class="toc"><dl><dt><span class="section"><a href="index.html#home">Polygeneâ¢</a></span></dt><dt><span class="section"><a href="intro.html">Introduction</a></span></dt><dt><span class="section"><span xmlns="" href="tutorials.html">Tutorials</span></span></dt><dt><span class="section"><a href="javadocs.html">Javadoc</a></span></dt><dt><span class="section"><a href="samples.html">Samples</a></span></dt><dt><span class="section"><a href="core.html">Core</a></span></dt><dt><span class="section"><a href="libraries.html">Libraries</a></span></dt><dt><span class="section"><a href="extensions.html">Extensions</a></span></dt><dt><span class="section"><a href="tools.html">Tools</a></span></dt><dt><span class="section"><a href="glossary.ht ml">Glossary </a></span></dt></dl></div></div><div xmlns="" xmlns:exsl="http://exslt.org/common" class="sub-nav"><div xmlns="http://www.w3.org/1999/xhtml" class="toc"><dl><dt><span class="section"><a href="tutorials.html#_overview">Overview</a></span></dt><dt><span class="section"><span xmlns="" href="two-minutes-intro.html">Polygene⢠in 2 minutes</span></span></dt><dt><span class="section"><a href="ten-minutes-intro.html">Polygene⢠in 10 minutes</a></span></dt><dt><span class="section"><a href="thirty-minutes-intro.html">Polygene⢠in 30 minutes</a></span></dt><dt><span class="section"><a href="howto-depend-on-polygene.html">Depend on Polygeneâ¢</a></span></dt><dt><span class="section"><a href="howto-assemble-application.html">Assemble an Application</a></span></dt><dt><span class="section"><a href="tut-composites.html">Transient Composites Tutorial</a></span></dt><dt><span class="section"><a href="tut-services.html">Services Composites Tutorial</a></span></dt><dt><span clas s="section"><a href="howto-contextual-fragments.html">Use contextual fragments</a></span></dt><dt><span class="section"><a href="howto-leverage-properties.html">Leverage Properties</a></span></dt><dt><span class="section"><a href="howto-create-constraint.html">Create a Constraint</a></span></dt><dt><span class="section"><a href="howto-create-concern.html">Create a Concern</a></span></dt><dt><span class="section"><a href="howto-create-sideeffect.html">Create a SideEffect</a></span></dt><dt><span class="section"><a href="howto-create-entity.html">Create an Entity</a></span></dt><dt><span class="section"><a href="howto-configure-service.html">Configure a Service</a></span></dt><dt><span class="section"><a href="howto-invocation-annotation.html">Use @Invocation</a></span></dt><dt><span class="section"><a href="build-system.html">Polygene⢠Build System</a></span></dt><dt><span class="section"><a href="community-docs.html">Polygene⢠Documentation</a></span></dt><dt><span class="sectio n"><a href="releasing-apache.html">Releasing Polygeneâ¢</a></span></dt></dl></div></div><div class="section" title="Polygene⢠in 2 minutes"><div class="titlepage"><div><div><h3 class="title"><a id="two-minutes-intro"></a>Polygene⢠in 2 minutes</h3></div></div></div><div class="tip" title="Tip" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Tip</h3><p>Theses tutorials are based on actual code found in the <code class="literal">tutorials/</code> directory of the + </head><body><div xmlns="" xmlns:exsl="http://exslt.org/common" class="logo"><a href="index.html"><img src="images/logo-standard.png" style="width:80%;height:80%; padding-top:20px;" /></a></div><div xmlns="" xmlns:exsl="http://exslt.org/common" class="top-nav"><div xmlns="http://www.w3.org/1999/xhtml" class="toc"><dl class="toc"><dt><span class="section"><a href="index.html#home">Polygeneâ¢</a></span></dt><dt><span class="section"><a href="intro.html">Introduction</a></span></dt><dt><span class="section"><span xmlns="" href="tutorials.html">Tutorials</span></span></dt><dt><span class="section"><a href="javadocs.html">Javadoc</a></span></dt><dt><span class="section"><a href="samples.html">Samples</a></span></dt><dt><span class="section"><a href="core.html">Core</a></span></dt><dt><span class="section"><a href="libraries.html">Libraries</a></span></dt><dt><span class="section"><a href="extensions.html">Extensions</a></span></dt><dt><span class="section"><a href="tools.html">Tools</ a></span></dt><dt><span class="section"><a href="glossary.html">Glossary </a></span></dt></dl></div></div><div xmlns="" xmlns:exsl="http://exslt.org/common" class="sub-nav"><div xmlns="http://www.w3.org/1999/xhtml" class="toc"><dl class="toc"><dt><span class="section"><a href="tutorials.html#_overview">Overview</a></span></dt><dt><span class="section"><span xmlns="" href="two-minutes-intro.html">Polygene⢠in 2 minutes</span></span></dt><dt><span class="section"><a href="ten-minutes-intro.html">Polygene⢠in 10 minutes</a></span></dt><dt><span class="section"><a href="thirty-minutes-intro.html">Polygene⢠in 30 minutes</a></span></dt><dt><span class="section"><a href="howto-depend-on-polygene.html">Depend on Polygeneâ¢</a></span></dt><dt><span class="section"><a href="howto-assemble-application.html">Assemble an Application</a></span></dt><dt><span class="section"><a href="tut-composites.html">Transient Composites Tutorial</a></span></dt><dt><span class="section"><a href="tut-s ervices.html">Services Composites Tutorial</a></span></dt><dt><span class="section"><a href="howto-contextual-fragments.html">Use contextual fragments</a></span></dt><dt><span class="section"><a href="howto-leverage-properties.html">Leverage Properties</a></span></dt><dt><span class="section"><a href="howto-create-constraint.html">Create a Constraint</a></span></dt><dt><span class="section"><a href="howto-create-concern.html">Create a Concern</a></span></dt><dt><span class="section"><a href="howto-create-sideeffect.html">Create a SideEffect</a></span></dt><dt><span class="section"><a href="howto-create-entity.html">Create an Entity</a></span></dt><dt><span class="section"><a href="howto-configure-service.html">Configure a Service</a></span></dt><dt><span class="section"><a href="howto-invocation-annotation.html">Use @Invocation</a></span></dt><dt><span class="section"><a href="build-system.html">Polygene⢠Build System</a></span></dt><dt><span class="section"><a href="community-doc s.html">Polygene⢠Documentation</a></span></dt><dt><span class="section"><a href="releasing-apache.html">Releasing Polygeneâ¢</a></span></dt></dl></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="two-minutes-intro"></a>Polygene⢠in 2 minutes</h3></div></div></div><div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Tip</h3><p>Theses tutorials are based on actual code found in the <code class="literal">tutorials/</code> directory of the <a class="ulink" href="https://polygene.apache.org/download.html" target="_top">Polygene⢠SDK sources</a>. You should start your favorite editor and find the code related to this tutorial, run it and play with it.</p></div><p>To show that Polygene⢠is not necessarily complex, not hard to get going with and easy to deploy, we are first showing the classic HelloWorld, as small as it can get and still be Composite Oriented Programming and not only standard OOP.</p><p>If you want to reproduce whatâs explained in this tutorial, remember to depend on the Core Runtime artifact that depends -on Core API, Core SPI, and Core Bootstrap:</p><div class="table"><a id="idm229757043840"></a><p class="title"><strong>Table 1. Artifact</strong></p><div class="table-contents"><table summary="Artifact" border="1"><colgroup><col class="col_1" /><col class="col_2" /><col class="col_3" /></colgroup><thead><tr><th align="left" valign="top">Group ID</th><th align="left" valign="top">Artifact ID</th><th align="left" valign="top">Version</th></tr></thead><tbody><tr><td align="left" valign="top"><p>org.apache.polygene.core</p></td><td align="left" valign="top"><p>org.apache.polygene.core.runtime</p></td><td align="left" valign="top"><p>3.1.0-SNAPSHOT</p></td></tr></tbody></table></div></div><br class="table-break" /><p>See the <a class="xref" href="howto-depend-on-polygene.html" title="Depend on Polygeneâ¢">Depend on Polygeneâ¢</a> tutorial for details.</p><p>Ready, Set, Go!</p><p>Letâs say we want to do the common HelloWorld example, but with a more domain-oriented setting. +on Core API, Core SPI, and Core Bootstrap:</p><div class="table"><a id="idm620"></a><p class="title"><strong>Table 1. Artifact</strong></p><div class="table-contents"><table class="table" summary="Artifact" border="1"><colgroup><col class="col_1" /><col class="col_2" /><col class="col_3" /></colgroup><thead><tr><th align="left" valign="top">Group ID</th><th align="left" valign="top">Artifact ID</th><th align="left" valign="top">Version</th></tr></thead><tbody><tr><td align="left" valign="top"><p>org.apache.polygene.core</p></td><td align="left" valign="top"><p>org.apache.polygene.core.runtime</p></td><td align="left" valign="top"><p>0</p></td></tr></tbody></table></div></div><br class="table-break" /><p>See the <a class="xref" href="howto-depend-on-polygene.html" title="Depend on Polygeneâ¢">Depend on Polygeneâ¢</a> tutorial for details.</p><p>Ready, Set, Go!</p><p>Letâs say we want to do the common HelloWorld example, but with a more domain-oriented setting. We have a Speaker interface that does the talking. But we also need an implementation for Speaker, which we declare here via the <code class="literal">@Mixins( SpeakerMixin.class )</code>.</p><pre class="programlisting brush: java">@Mixins( SpeakerMixin.class ) public interface Speaker
http://git-wip-us.apache.org/repos/asf/polygene-website/blob/538baaf6/content/java/develop/what-is-cop.html ---------------------------------------------------------------------- diff --git a/content/java/develop/what-is-cop.html b/content/java/develop/what-is-cop.html index c135de6..e8dc1a2 100644 --- a/content/java/develop/what-is-cop.html +++ b/content/java/develop/what-is-cop.html @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>What is COP?</title><link rel="stylesheet" type="text/css" href="css/style.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.76.1" /><link rel="home" href="index.html" title="" /><link rel="up" href="intro.html" title="Introduction" /><link rel="prev" href="introduction-background.html" title="Background" /><link rel="next" href="what-s-an-object-anyway.html" title="Whatâs an Object anyway?" /> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>What is COP?</title><link rel="stylesheet" type="text/css" href="css/style.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="home" href="index.html" title="" /><link rel="up" href="intro.html" title="Introduction" /><link rel="prev" href="introduction-background.html" title="Background" /><link rel="next" href="what-s-an-object-anyway.html" title="Whatâs an Object anyway?" /> <!-- favicon --> @@ -66,32 +66,33 @@ })(); </script> - </head><body><div xmlns="" xmlns:exsl="http://exslt.org/common" class="logo"><a href="index.html"><img src="images/logo-standard.png" /></a></div><div xmlns="" xmlns:exsl="http://exslt.org/common" class="top-nav"><div xmlns="http://www.w3.org/1999/xhtml" class="toc"><dl><dt><span class="section"><a href="index.html#home">Polygeneâ¢</a></span></dt><dt><span class="section"><span xmlns="" href="intro.html">Introduction</span></span></dt><dt><span class="section"><a href="tutorials.html">Tutorials</a></span></dt><dt><span class="section"><a href="javadocs.html">Javadoc</a></span></dt><dt><span class="section"><a href="samples.html">Samples</a></span></dt><dt><span class="section"><a href="core.html">Core</a></span></dt><dt><span class="section"><a href="libraries.html">Libraries</a></span></dt><dt><span class="section"><a href="extensions.html">Extensions</a></span></dt><dt><span class="section"><a href="tools.html">Tools</a></span></dt><dt><span class="section"><a href="glossary.ht ml">Glossary </a></span></dt></dl></div></div><div xmlns="" xmlns:exsl="http://exslt.org/common" class="sub-nav"><div xmlns="http://www.w3.org/1999/xhtml" class="toc"><dl><dt><span class="section"><a href="intro.html#highlights">Highlights</a></span></dt><dt><span class="section"><a href="introduction-background.html">Background</a></span></dt><dt><span class="section"><span xmlns="" href="what-is-cop.html">What is COP?</span></span></dt><dt><span class="section"><a href="what-s-an-object-anyway.html">Whatâs an Object anyway?</a></span></dt><dt><span class="section"><a href="state-modeling.html">Polygene⢠and state modeling</a></span></dt><dt><span class="section"><a href="related.html">Related publications & projects</a></span></dt></dl></div></div><div class="section" title="What is COP?"><div class="titlepage"><div><div><h3 class="title"><a id="what-is-cop"></a>What is COP?</h3></div></div></div><p>We found this very well written blog entry on the Internet, which very we ll describes what Composite Oriented + </head><body><div xmlns="" xmlns:exsl="http://exslt.org/common" class="logo"><a href="index.html"><img src="images/logo-standard.png" style="width:80%;height:80%; padding-top:20px;" /></a></div><div xmlns="" xmlns:exsl="http://exslt.org/common" class="top-nav"><div xmlns="http://www.w3.org/1999/xhtml" class="toc"><dl class="toc"><dt><span class="section"><a href="index.html#home">Polygeneâ¢</a></span></dt><dt><span class="section"><span xmlns="" href="intro.html">Introduction</span></span></dt><dt><span class="section"><a href="tutorials.html">Tutorials</a></span></dt><dt><span class="section"><a href="javadocs.html">Javadoc</a></span></dt><dt><span class="section"><a href="samples.html">Samples</a></span></dt><dt><span class="section"><a href="core.html">Core</a></span></dt><dt><span class="section"><a href="libraries.html">Libraries</a></span></dt><dt><span class="section"><a href="extensions.html">Extensions</a></span></dt><dt><span class="section"><a href="tools.html">Tools</ a></span></dt><dt><span class="section"><a href="glossary.html">Glossary </a></span></dt></dl></div></div><div xmlns="" xmlns:exsl="http://exslt.org/common" class="sub-nav"><div xmlns="http://www.w3.org/1999/xhtml" class="toc"><dl class="toc"><dt><span class="section"><a href="intro.html#highlights">Highlights</a></span></dt><dt><span class="section"><a href="introduction-background.html">Background</a></span></dt><dt><span class="section"><span xmlns="" href="what-is-cop.html">What is COP?</span></span></dt><dt><span class="section"><a href="what-s-an-object-anyway.html">Whatâs an Object anyway?</a></span></dt><dt><span class="section"><a href="state-modeling.html">Polygene⢠and state modeling</a></span></dt><dt><span class="section"><a href="related.html">Related publications & projects</a></span></dt></dl></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="what-is-cop"></a>What is COP?</h3></div></div></div><p>We found this very wel l written blog entry on the Internet, which very well describes what Composite Oriented Programming really is.</p><p>The article uses C# and a "show by example" approach to explaining COP, and this shows clearly that COP is not Java specific, and although Polygene⢠was (to our knowledge) first to introduce the name, it applies across languages and potentially deserves one or more languages on its own.</p><p>The article is re-published here, as allowed by the <a class="ulink" href="http://msdn.microsoft.com/en-us/windowsmobile/bb264332.aspx" target="_top">Microsoft Permissive License</a> , more recently known as <a class="ulink" href="http://www.opensource.org/licenses/MS-PL" target="_top">Microsoft Public License</a>. The content below -is NOT under the usual <a class="ulink" href="http://www.opensource.org/licenses/Apache-2.0" target="_top">Apache License</a>.</p><p>We would like to thank Fredrik Kalseth for his explicit approval as well.</p><p>Since then, this article went offline but can be found on the -<a class="ulink" href="https://web.archive.org/web/20130414005509/http://iridescence.no/post/composite-oriented-programming.aspx" target="_top">Internet Archive</a>.</p><div class="section" title="Composite Oriented Programming"><div class="titlepage"><div><div><h4 class="title"><a id="_ulink_url_http_iridescence_no_post_composite_oriented_programming_aspx_composite_oriented_programming_ulink"></a><a class="ulink" href="http://iridescence.no/post/composite-oriented-programming.aspx" target="_top">Composite Oriented Programming</a></h4></div></div></div><p>Iâve written a series of post on AOP lately +is NOT under the usual <a class="ulink" href="http://www.opensource.org/licenses/Apache-2.0" target="_top">Apache License</a>.</p><p>We would like to thank Fredrik Kalseth for his explicit approval as well.</p><p>The article below was published during the time when Polygene⢠was known as Qi4j, and whenever "Qi4j" is mentioned +below it should be read as "Polygene".</p><p>Since then, this article went offline but can be found on the +<a class="ulink" href="https://web.archive.org/web/20130414005509/http://iridescence.no/post/composite-oriented-programming.aspx" target="_top">Internet Archive</a>.</p><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_ulink_url_http_iridescence_no_post_composite_oriented_programming_aspx_composite_oriented_programming_ulink"></a><a class="ulink" href="http://iridescence.no/post/composite-oriented-programming.aspx" target="_top">Composite Oriented Programming</a></h4></div></div></div><p>Iâve written a series of post on AOP lately (<a class="ulink" href="https://web.archive.org/web/20090417052136/http://www.iridescence.no/post/Aspect-Oriented-Programming---A-Primer.aspx" target="_top">here</a>, <a class="ulink" href="https://web.archive.org/web/20091222150653/http://www.iridescence.no/post/Implementing-an-AOP-Framework-Part-1.aspx" target="_top">here</a> and <a class="ulink" href="https://web.archive.org/web/20130417090819/http://www.iridescence.no/post/Implementing-an-AOP-Framework-Part-2.aspx" target="_top">here</a>), and in the last part I promised to tackle mixins and introductions in a future post. When I was doing my research for just that, I came cross a Java framework (just -humor me :p) called Apache Polygeneâ¢, written by Swedish Richard Ãberg, pioneering the idea of Composite +humor me :p) called Qi4j (thatâs <span class="emphasis"><em>chee for jay</em></span>), written by Swedish Richard Ãberg, pioneering the idea of Composite Oriented Programming, which instantly put a spell on me. Essentially, it takes the concepts from Aspect Oriented Programming to the extreme, and for the past week Iâve dug into it with a passion. This post is the first fruits of -my labor.</p><div class="section" title="OOP is Not Object Oriented!"><div class="titlepage"><div><div><h5 class="title"><a id="_oop_is_not_object_oriented"></a>OOP is Not Object Oriented!</h5></div></div></div><p>One of the things that Richard Ãberg argues, is that OOP is not really object oriented at all, but rather class -oriented. As the Polygene⢠website proclaims, "class is the first class citizen that objects are derived from. Not objects +my labor.</p><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="_oop_is_not_object_oriented"></a>OOP is Not Object Oriented!</h5></div></div></div><p>One of the things that Richard Ãberg argues, is that OOP is not really object oriented at all, but rather class +oriented. As the Qi4j website proclaims, "class is the first class citizen that objects are derived from. Not objects being the first-class citizen to which one or many classes are assigned". Composite oriented programming (COP) then, tries to work around this limitation by building on a set of core principles; that behavior depends on context, that decoupling is a virtue, and that business rules matter more. For a short and abstract explanation of COP, <a class="link" href="introduction-background.html" title="Background">see this page</a>. In the rest of this post Iâll try and explain some of its easily graspable benefits through a set of code examples, and then in a future post weâll look at how Iâve morphed the AOP framework I started developing in the previous posts in this series into a lightweight COP framework that can actually make -it compile and run.</p></div><div class="section" title="Lead by Example"><div class="titlepage"><div><div><h5 class="title"><a id="_lead_by_example"></a>Lead by Example</h5></div></div></div><p><span class="emphasis"><em>Lets pause for a short aside: obviously the examples presented here are going to be architectured beyond any rational +it compile and run.</p></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="_lead_by_example"></a>Lead by Example</h5></div></div></div><p><span class="emphasis"><em>Lets pause for a short aside: obviously the examples presented here are going to be architectured beyond any rational sense, but the interesting part lies in seeing the bigger picture; imagine the principles presented here applied on a much larger scale and Iâm sure you can see the benefits quite clearly when we reach the end.</em></span></p><p>Imagine that we have a class Division, which knows how to divide one number by another:</p><pre class="programlisting brush: c#">public class Division { @@ -126,7 +127,7 @@ intertwined. To what extent is this class reusable if I wanted to implement addi calculations? Not very, at least not unless we refactored it. We could make the Calculate method and the properties virtual, and thus use inheritance to modify the logic of the calculation - and since this is a tiny example, it would probably look OK. But again, think bigger - how would this apply to a huge API? It would easily become quite difficult -to manage as things got more and more complex.</p></div><div class="section" title="Design by Composition"><div class="titlepage"><div><div><h5 class="title"><a id="_design_by_composition"></a>Design by Composition</h5></div></div></div><p>With a COP framework, we can implement each aspect as a separate object and then treat them as <span class="emphasis"><em>mixins</em></span> which blend +to manage as things got more and more complex.</p></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="_design_by_composition"></a>Design by Composition</h5></div></div></div><p>With a COP framework, we can implement each aspect as a separate object and then treat them as <span class="emphasis"><em>mixins</em></span> which blend together into a meaningful <span class="emphasis"><em>composite</em></span>. Sounds confusing? Lets refactor the above example using an as of yet imaginary COP framework for .NET (which Iâm currently developing and will post the source code for in a follow-up post), and itâll all make sense (hopefully!).</p><p>Above, we identified the four different aspects in the Division class - so letâs implement each of them. First, we @@ -262,7 +263,7 @@ public interface ISubtraction : ICalculationDataAspect, ICalculationLogicAspect posts. Iâve already implemented a prototype framework that supports the above examples, which builds on my <a class="ulink" href="http://www.iridescence.no/Posts/Implementing-an-AOP-Framework-Part-2.aspx" target="_top">previously posted AOP framework</a>, and Iâll post the source code for that soon. If you want to dig deeper right now (and donât mind -a bit of Java), then I suggest you head over to the Polygene⢠website and poke about there. +a bit of Java), then I suggest you head over to the Qi4j website and poke about there. <a class="ulink" href="http://rickardoberg.wordpress.com/" target="_top">Richard Ãbergs blog</a> also provides great insight.</p></div></div></div><div xmlns="" xmlns:exsl="http://exslt.org/common" class="footer"><p> Copyright © 2015 The Apache Software Foundation, Licensed under the <a href="http://www.apache.org/licenses/" target="_blank">Apache License, Version 2.0</a>. <br /><small> http://git-wip-us.apache.org/repos/asf/polygene-website/blob/538baaf6/content/java/develop/what-s-an-object-anyway.html ---------------------------------------------------------------------- diff --git a/content/java/develop/what-s-an-object-anyway.html b/content/java/develop/what-s-an-object-anyway.html index f0699d8..2daa558 100644 --- a/content/java/develop/what-s-an-object-anyway.html +++ b/content/java/develop/what-s-an-object-anyway.html @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Whatâs an Object anyway?</title><link rel="stylesheet" type="text/css" href="css/style.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.76.1" /><link rel="home" href="index.html" title="" /><link rel="up" href="intro.html" title="Introduction" /><link rel="prev" href="what-is-cop.html" title="What is COP?" /><link rel="next" href="state-modeling.html" title="Polygene⢠and state modeling" /> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Whatâs an Object anyway?</title><link rel="stylesheet" type="text/css" href="css/style.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="home" href="index.html" title="" /><link rel="up" href="intro.html" title="Introduction" /><link rel="prev" href="what-is-cop.html" title="What is COP?" /><link rel="next" href="state-modeling.html" title="Polygene⢠and state modeling" /> <!-- favicon --> @@ -66,7 +66,7 @@ })(); </script> - </head><body><div xmlns="" xmlns:exsl="http://exslt.org/common" class="logo"><a href="index.html"><img src="images/logo-standard.png" /></a></div><div xmlns="" xmlns:exsl="http://exslt.org/common" class="top-nav"><div xmlns="http://www.w3.org/1999/xhtml" class="toc"><dl><dt><span class="section"><a href="index.html#home">Polygeneâ¢</a></span></dt><dt><span class="section"><span xmlns="" href="intro.html">Introduction</span></span></dt><dt><span class="section"><a href="tutorials.html">Tutorials</a></span></dt><dt><span class="section"><a href="javadocs.html">Javadoc</a></span></dt><dt><span class="section"><a href="samples.html">Samples</a></span></dt><dt><span class="section"><a href="core.html">Core</a></span></dt><dt><span class="section"><a href="libraries.html">Libraries</a></span></dt><dt><span class="section"><a href="extensions.html">Extensions</a></span></dt><dt><span class="section"><a href="tools.html">Tools</a></span></dt><dt><span class="section"><a href="glossary.ht ml">Glossary </a></span></dt></dl></div></div><div xmlns="" xmlns:exsl="http://exslt.org/common" class="sub-nav"><div xmlns="http://www.w3.org/1999/xhtml" class="toc"><dl><dt><span class="section"><a href="intro.html#highlights">Highlights</a></span></dt><dt><span class="section"><a href="introduction-background.html">Background</a></span></dt><dt><span class="section"><a href="what-is-cop.html">What is COP?</a></span></dt><dt><span class="section"><span xmlns="" href="what-s-an-object-anyway.html">Whatâs an Object anyway?</span></span></dt><dt><span class="section"><a href="state-modeling.html">Polygene⢠and state modeling</a></span></dt><dt><span class="section"><a href="related.html">Related publications & projects</a></span></dt></dl></div></div><div class="section" title="Whatâs an Object anyway?"><div class="titlepage"><div><div><h3 class="title"><a id="what-s-an-object-anyway"></a>Whatâs an Object anyway?</h3></div></div></div><p>In OOP the main idea is that we s hould model our reality by creating Objects. Objects have state, and they have methods. + </head><body><div xmlns="" xmlns:exsl="http://exslt.org/common" class="logo"><a href="index.html"><img src="images/logo-standard.png" style="width:80%;height:80%; padding-top:20px;" /></a></div><div xmlns="" xmlns:exsl="http://exslt.org/common" class="top-nav"><div xmlns="http://www.w3.org/1999/xhtml" class="toc"><dl class="toc"><dt><span class="section"><a href="index.html#home">Polygeneâ¢</a></span></dt><dt><span class="section"><span xmlns="" href="intro.html">Introduction</span></span></dt><dt><span class="section"><a href="tutorials.html">Tutorials</a></span></dt><dt><span class="section"><a href="javadocs.html">Javadoc</a></span></dt><dt><span class="section"><a href="samples.html">Samples</a></span></dt><dt><span class="section"><a href="core.html">Core</a></span></dt><dt><span class="section"><a href="libraries.html">Libraries</a></span></dt><dt><span class="section"><a href="extensions.html">Extensions</a></span></dt><dt><span class="section"><a href="tools.html">Tools</ a></span></dt><dt><span class="section"><a href="glossary.html">Glossary </a></span></dt></dl></div></div><div xmlns="" xmlns:exsl="http://exslt.org/common" class="sub-nav"><div xmlns="http://www.w3.org/1999/xhtml" class="toc"><dl class="toc"><dt><span class="section"><a href="intro.html#highlights">Highlights</a></span></dt><dt><span class="section"><a href="introduction-background.html">Background</a></span></dt><dt><span class="section"><a href="what-is-cop.html">What is COP?</a></span></dt><dt><span class="section"><span xmlns="" href="what-s-an-object-anyway.html">Whatâs an Object anyway?</span></span></dt><dt><span class="section"><a href="state-modeling.html">Polygene⢠and state modeling</a></span></dt><dt><span class="section"><a href="related.html">Related publications & projects</a></span></dt></dl></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="what-s-an-object-anyway"></a>Whatâs an Object anyway?</h3></div></div></div ><p>In OOP the main idea is that we should model our reality by creating >Objects. Objects have state, and they have methods. Methods in an object are used to operate on the internal state and understands the domain that is being modeled.</p><p>By contrast, in procedural programming the focus is on algorithms, which can use several data structures to perform some task. The focus is on what is going on, rather than the "objects" involved.</p><p>With OOP it becomes more difficult to "read" algorithms, as they are spread out in many objects that interact. With procedural programming it becomes difficult to encapsulate and reuse functionality. Both represent extremes, neither of http://git-wip-us.apache.org/repos/asf/polygene-website/blob/538baaf6/content/landing-resources/img/logo-234x83.png ---------------------------------------------------------------------- diff --git a/content/landing-resources/img/logo-234x83.png b/content/landing-resources/img/logo-234x83.png new file mode 100644 index 0000000..349ccae Binary files /dev/null and b/content/landing-resources/img/logo-234x83.png differ http://git-wip-us.apache.org/repos/asf/polygene-website/blob/538baaf6/content/news.html ---------------------------------------------------------------------- diff --git a/content/news.html b/content/news.html index 76a62ac..955fe42 100644 --- a/content/news.html +++ b/content/news.html @@ -56,7 +56,7 @@ Composite Oriented Programming allows developers to work with 'fragments', small <span class="icon-bar"></span> <span class="icon-bar"></span> </a> - <a class="brand" href="/"><img src="/landing-resources/img/feather.png" width="64"/> Apache <strong>Polygeneâ¢</strong></a> + <a class="brand" href="/"><img src="/landing-resources/img/logo-234x83.png" style="height: 45px;" /></a> <div class="nav-collapse collapse"> <ul class="nav"> <li><a href="/news.html"><i class="icon-rss"></i> News</a></li> @@ -106,6 +106,10 @@ Composite Oriented Programming allows developers to work with 'fragments', small </li> </ul> </div><!--/.nav-collapse --> + <!-- ApacheCon resource --> + <div style="float: right; padding-top: 2px;"> + <a href="http://www.apache.org/events/current-event.html"><img src="http://www.apache.org/events/current-event-234x60.png"/></a> + </div> </div> </div> </div> http://git-wip-us.apache.org/repos/asf/polygene-website/blob/538baaf6/src/_layouts/default.html ---------------------------------------------------------------------- diff --git a/src/_layouts/default.html b/src/_layouts/default.html index 6d8108d..a42e151 100644 --- a/src/_layouts/default.html +++ b/src/_layouts/default.html @@ -54,7 +54,7 @@ <span class="icon-bar"></span> <span class="icon-bar"></span> </a> - <a class="brand" href="/"><img src="/landing-resources/img/feather.png" width="64"/> Apache <strong>Polygeneâ¢</strong></a> + <a class="brand" href="/"><img src="/landing-resources/img/logo-234x83.png" style="height: 45px;" /></a> <div class="nav-collapse collapse"> <ul class="nav"> <li><a href="/news.html"><i class="icon-rss"></i> News</a></li> @@ -104,6 +104,10 @@ </li> </ul> </div><!--/.nav-collapse --> + <!-- ApacheCon resource --> + <div style="float: right; padding-top: 2px;"> + <a href="http://www.apache.org/events/current-event.html"><img src="http://www.apache.org/events/current-event-234x60.png"/></a> + </div> </div> </div> </div> http://git-wip-us.apache.org/repos/asf/polygene-website/blob/538baaf6/src/graphics/Polygene-logo-234x137.png ---------------------------------------------------------------------- diff --git a/src/graphics/Polygene-logo-234x137.png b/src/graphics/Polygene-logo-234x137.png new file mode 100644 index 0000000..3fa0268 Binary files /dev/null and b/src/graphics/Polygene-logo-234x137.png differ
