[205478] Update existing getting started articles.
diff --git a/docs/articles/Getting_Started_with_UML2/article.html b/docs/articles/Getting_Started_with_UML2/article.html
index 349a1e2..25c5bd2 100644
--- a/docs/articles/Getting_Started_with_UML2/article.html
+++ b/docs/articles/Getting_Started_with_UML2/article.html
@@ -1,6 +1,7 @@
<html xmlns:v="urn:schemas-microsoft-com:vml"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:w="urn:schemas-microsoft-com:office:word"
+xmlns:st1="urn:schemas-microsoft-com:office:smarttags"
xmlns="http://www.w3.org/TR/REC-html40">
<head>
@@ -19,33 +20,41 @@
</style>
<![endif]-->
<title>Getting Started with UML2</title>
+<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
+ name="date"/>
<!--[if gte mso 9]><xml>
<o:DocumentProperties>
<o:Author>khussey</o:Author>
<o:Template>Normal</o:Template>
- <o:LastAuthor>Kenn Hussey</o:LastAuthor>
- <o:Revision>114</o:Revision>
- <o:TotalTime>5197</o:TotalTime>
+ <o:LastAuthor>jbruck</o:LastAuthor>
+ <o:Revision>128</o:Revision>
+ <o:TotalTime>5345</o:TotalTime>
<o:Created>2004-07-06T14:17:00Z</o:Created>
- <o:LastSaved>2006-07-18T14:42:00Z</o:LastSaved>
+ <o:LastSaved>2008-07-11T18:06:00Z</o:LastSaved>
<o:Pages>1</o:Pages>
- <o:Words>5032</o:Words>
- <o:Characters>28686</o:Characters>
+ <o:Words>5435</o:Words>
+ <o:Characters>30981</o:Characters>
<o:Company>Rational Software</o:Company>
- <o:Lines>239</o:Lines>
- <o:Paragraphs>67</o:Paragraphs>
- <o:CharactersWithSpaces>33651</o:CharactersWithSpaces>
- <o:Version>10.6804</o:Version>
+ <o:Lines>258</o:Lines>
+ <o:Paragraphs>72</o:Paragraphs>
+ <o:CharactersWithSpaces>36344</o:CharactersWithSpaces>
+ <o:Version>10.6830</o:Version>
</o:DocumentProperties>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
+ <w:SpellingState>Clean</w:SpellingState>
<w:GrammarState>Clean</w:GrammarState>
<w:Compatibility>
<w:ApplyBreakingRules/>
</w:Compatibility>
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
</w:WordDocument>
-</xml><![endif]-->
+</xml><![endif]--><!--[if !mso]><object
+ classid="clsid:38481807-CA0E-42D2-BF39-B33AF135CC4D" id=ieooui></object>
+<style>
+st1\:*{behavior:url(#ieooui) }
+</style>
+<![endif]-->
<link rel=Stylesheet type="text/css" media=all href="default_style.css">
<style>
<!--
@@ -53,21 +62,28 @@
@font-face
{font-family:"MS Mincho";
panose-1:2 2 6 9 4 2 5 8 3 4;
- mso-font-alt:"\FF2D\FF33 \660E\671D";
+ mso-font-alt:"MS Mincho";
mso-font-charset:128;
- mso-generic-font-family:roman;
- mso-font-format:other;
+ mso-generic-font-family:modern;
mso-font-pitch:fixed;
- mso-font-signature:1 134676480 16 0 131072 0;}
+ mso-font-signature:-1610612033 1757936891 16 0 131231 0;}
+@font-face
+ {font-family:Tahoma;
+ panose-1:2 11 6 4 3 5 4 4 2 4;
+ mso-font-charset:238;
+ mso-generic-font-family:swiss;
+ mso-font-pitch:variable;
+ mso-font-signature:1627421319 -2147483648 8 0 66047 0;}
@font-face
{font-family:Verdana;
panose-1:2 11 6 4 3 5 4 4 2 4;
- mso-font-charset:0;
+ mso-font-charset:238;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:536871559 0 0 0 415 0;}
@font-face
{font-family:"\@MS Mincho";
+ panose-1:2 2 6 9 4 2 5 8 3 4;
mso-font-charset:128;
mso-generic-font-family:modern;
mso-font-pitch:fixed;
@@ -121,6 +137,15 @@
{color:purple;
text-decoration:underline;
text-underline:single;}
+p.MsoDocumentMap, li.MsoDocumentMap, div.MsoDocumentMap
+ {mso-style-noshow:yes;
+ margin:0in;
+ margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ background:navy;
+ font-size:12.0pt;
+ font-family:Tahoma;
+ mso-fareast-font-family:"Times New Roman";}
p
{mso-margin-top-alt:auto;
margin-right:0in;
@@ -157,6 +182,9 @@
mso-pagination:widow-orphan;
font-size:7.5pt;
mso-fareast-font-family:"Times New Roman";}
+span.SpellE
+ {mso-style-name:"";
+ mso-spl-e:yes;}
span.GramE
{mso-style-name:"";
mso-gram-e:yes;}
@@ -168,6 +196,20 @@
mso-paper-source:0;}
div.Section1
{page:Section1;}
+ /* List Definitions */
+ @list l0
+ {mso-list-id:2098360590;
+ mso-list-type:hybrid;
+ mso-list-template-ids:-501428010 67698705 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
+@list l0:level1
+ {mso-level-text:"%1\)";
+ mso-level-tab-stop:.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+ol
+ {margin-bottom:0in;}
+ul
+ {margin-bottom:0in;}
-->
</style>
<!--[if gte mso 10]>
@@ -192,7 +234,7 @@
{margin-left:8.5pt;}
</style>
<![endif]><!--[if gte mso 9]><xml>
- <o:shapedefaults v:ext="edit" spidmax="15362"/>
+ <o:shapedefaults v:ext="edit" spidmax="16386"/>
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1"/>
@@ -205,7 +247,7 @@
<div class=Section1>
<p class=MsoNormal align=right style='text-align:right'><span style='font-size:
-10.0pt'>Copyright © 2004, 2006 International Business Machines Corp.</span><span
+10.0pt'>Copyright © 2004, 2008 International Business Machines Corp.</span><span
style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p>
<div align=right>
@@ -237,13 +279,16 @@
<![if !supportLineBreakNewLine]><br style='mso-special-character:line-break'>
<![endif]><o:p></o:p></span></p>
-<p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>This article
-describes how to get started with the UML2 plug-ins for Eclipse. In particular,
-it gives an overview of how to create models (and their contents) both
-programmatically and by using the sample UML editor.<o:p></o:p></span></p>
+<p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>This
+article describes how to get started with the UML2 plug-ins for Eclipse. In
+particular, it gives an overview of how to create models (and their contents)
+both programmatically and by using the sample UML editor.<o:p></o:p></span></p>
-<p><b>By Kenn Hussey, IBM</b><br>
-July 18, 2006 </p>
+<p><b>By <span class=SpellE>Kenn</span> Hussey, IBM</b><br>
+<st1:date Year="2006" Day="18" Month="7">July 18, 2006</st1:date> <span
+style='mso-spacerun:yes'> </span><span
+style='mso-spacerun:yes'> </span>(Updated: <st1:date Year="2008" Day="11"
+Month="7">July 11, 2008</st1:date> for Eclipse 3.4; James <span class=SpellE>Bruck</span>)</p>
</blockquote>
@@ -258,26 +303,39 @@
<p>To start using UML2 (and to follow along with the example in this article),
you must have <span class=MsoHyperlink><a
-href="http://download.eclipse.org/downloads/">Eclipse 3.2</a></span>, <span
+href="http://download.eclipse.org/eclipse/downloads/">Eclipse 3.4</a></span>, <span
class=MsoHyperlink><a
-href="http://www.eclipse.org/modeling/emf/downloads/?project=emf">EMF 2.2</a></span>,
+href="http://www.eclipse.org/modeling/emf/downloads/?project=emf">EMF 2.4</a></span>,
and <span class=MsoHyperlink><a
-href="http://www.eclipse.org/modeling/mdt/downloads/?project=uml2">UML2 2.0</a></span>
-installed.</p>
+href="http://www.eclipse.org/modeling/mdt/downloads/?project=uml2">UML2 2.2</a></span>
+installed.<span style='mso-spacerun:yes'> </span></p>
-<h2>Introduction</h2>
+<p>You can either download the zips individually and expand them out or follow the
+steps below: <span style='mso-spacerun:yes'> </span></p>
-<p>This article will walk you through the basics of creating models using UML2.
-Using a simple model (the ExtendedPO2 model, shamelessly borrowed from the
-EMF bible [1]) as an example, well look at whats involved in creating some
-of the more common elements that make up a model. For each type of element,
-well first explain the creation process using the sample UML editor and then
-explore how to accomplish the same thing using Java code. The ExtendedPO2 model
-is shown below.</p>
+<p style='margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo1;
+tab-stops:list .5in'><![if !supportLists]><span style='mso-fareast-font-family:
+Arial'><span style='mso-list:Ignore'>1)<span style='font:7.0pt "Times New Roman"'>
+</span></span></span><![endif]><span dir=LTR><span
+style='mso-spacerun:yes'> </span>Download and run Eclipse 3.4</span></p>
-<p><!--[if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600"
- o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f"
- stroked="f">
+<p style='margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo1;
+tab-stops:list .5in'><![if !supportLists]><span style='mso-fareast-font-family:
+Arial'><span style='mso-list:Ignore'>2)<span style='font:7.0pt "Times New Roman"'>
+</span></span></span><![endif]><span dir=LTR><span
+style='mso-spacerun:yes'> </span>Select the <b>Help</b> > <b>Software
+Updates
</b>menu</span></p>
+
+<p style='margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo1;
+tab-stops:list .5in'><![if !supportLists]><span style='mso-fareast-font-family:
+Arial'><span style='mso-list:Ignore'>3)<span style='font:7.0pt "Times New Roman"'>
+</span></span></span><![endif]><span dir=LTR><span
+style='mso-spacerun:yes'> </span>Select the <b>Available Software</b> tab and expand
+the <b>Ganymede\Model and Model Development</b> tree item.</span></p>
+
+<p style='margin-left:.25in'><!--[if gte vml 1]><v:shapetype id="_x0000_t75"
+ coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe"
+ filled="f" stroked="f">
<v:stroke joinstyle="miter"/>
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0"/>
@@ -295,18 +353,53 @@
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
<o:lock v:ext="edit" aspectratio="t"/>
-</v:shapetype><v:shape id="_x0000_i1027" type="#_x0000_t75" style='width:554.25pt;
+</v:shapetype><v:shape id="_x0000_i1087" type="#_x0000_t75" style='width:581.25pt;
+ height:408.75pt'>
+ <v:imagedata src="article_files/image001.png" o:title=""/>
+</v:shape><![endif]--><![if !vml]><img border=0 width=775 height=545
+src="article_files/image022.jpg" v:shapes="_x0000_i1087"><![endif]></p>
+
+<p style='margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo1;
+tab-stops:list .5in'><![if !supportLists]><span style='mso-fareast-font-family:
+Arial'><span style='mso-list:Ignore'>4)<span style='font:7.0pt "Times New Roman"'>
+</span></span></span><![endif]><span dir=LTR><span
+style='mso-spacerun:yes'> </span>Select <b>UML2 End-User Features</b> and <b>UML2
+Extender SDK</b>.<span style='mso-spacerun:yes'> </span>The version should
+indicate 2.2.0 (or later).</span></p>
+
+<p style='margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo1;
+tab-stops:list .5in'><![if !supportLists]><span style='mso-fareast-font-family:
+Arial'><span style='mso-list:Ignore'>5)<span style='font:7.0pt "Times New Roman"'>
+</span></span></span><![endif]><span dir=LTR><span
+style='mso-spacerun:yes'> </span>Click <b>Install<span class=GramE>
<span
+style='font-weight:normal'>.</span></span></b></span></p>
+
+<p>At this stage, UML2 2.2 and all dependencies should be installed.</p>
+
+<p><o:p> </o:p></p>
+
+<h2>Introduction</h2>
+
+<p>This article will walk you through the basics of creating models using UML2.
+Using a simple model (the ExtendedPO2 model, shamelessly borrowed from the EMF
+bible [1]) as an example, well look at whats involved in creating some of
+the more common elements that make up a model. For each type of element, well
+first explain the creation process using the sample UML editor and then explore
+how to accomplish the same thing using Java code. The ExtendedPO2 model is
+shown below.</p>
+
+<p><!--[if gte vml 1]><v:shape id="_x0000_i1027" type="#_x0000_t75" style='width:554.25pt;
height:406.5pt'>
- <v:imagedata src="article_files/image001.emz" o:title=""/>
+ <v:imagedata src="article_files/image021.emz" o:title=""/>
</v:shape><![endif]--><![if !vml]><img border=0 width=739 height=542
src="article_files/image002.gif" v:shapes="_x0000_i1027"><![endif]></p>
<h2>Getting Started</h2>
-<p>Before getting started, youll need to create a simple project in your workspace.
-This project will serve as the container for the model that well create using
-the UML editor. To create a simple project for this article, follow these
-steps:</p>
+<p>Before getting started, youll need to create a simple project in your
+workspace. This project will serve as the container for the model that well
+create using the UML editor. To create a simple project for this article,
+follow these steps:</p>
<p style='margin-left:27.5pt'>1) Select the <b>Window > Open Perspective
> <span class=GramE>Other</span>
</b> menu item.</p>
@@ -325,11 +418,11 @@
<p>At this point your workspace should look something like this:</p>
-<p><!--[if gte vml 1]><v:shape id="_x0000_i1028" type="#_x0000_t75" style='width:960pt;
- height:768pt'>
- <v:imagedata src="article_files/image003.png" o:title=""/>
-</v:shape><![endif]--><![if !vml]><img border=0 width=1280 height=1024
-src="article_files/image004.jpg" v:shapes="_x0000_i1028"><![endif]></p>
+<p><!--[if gte vml 1]><v:shape id="_x0000_i1088" type="#_x0000_t75" style='width:655.5pt;
+ height:447.75pt'>
+ <v:imagedata src="article_files/image023.png" o:title=""/>
+</v:shape><![endif]--><![if !vml]><img border=0 width=874 height=597
+src="article_files/image024.jpg" v:shapes="_x0000_i1088"><![endif]></p>
<p>OK, that should be enough to get us going with the UML editor. Now, to
follow along with the programmatic approach to creating models, well assume
@@ -339,37 +432,41 @@
information on the programs status:</p>
<pre style='margin-left:9.0pt'><img border=0 width=24 height=14
-id="_x0000_i1029" src="../../../../images/tag_1.gif" align=CENTER><span
-style='mso-tab-count:1'> </span><span class=GramE>public</span> static boolean DEBUG = true;</pre><pre
-style='margin-left:9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:1'> </span><span class=GramE>protected</span> static void out(String output) {</pre><pre
+id="_x0000_i1028" src="../../../../images/tag_1.gif" align=CENTER><span
+style='mso-tab-count:1'> </span><span class=GramE>public</span> static <span
+class=SpellE>boolean</span> DEBUG = true;</pre><pre style='margin-left:9.0pt'><o:p> </o:p></pre><pre
+style='margin-left:9.0pt'><span style='mso-tab-count:1'> </span><span
+class=GramE>protected</span> static void out(String output) {</pre><pre
style='margin-left:9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><span
style='mso-tab-count:2'> </span><span class=GramE>if</span> (DEBUG) {</pre><pre
+style='margin-left:9.0pt'><img border=0 width=24 height=14 id="_x0000_i1029"
+src="../../../../images/tag_2.gif" align=CENTER><span style='mso-tab-count:
+3'> </span><span class=SpellE><span class=GramE>System.out.println</span></span><span
+class=GramE>(</span>output);</pre><pre style='margin-left:9.0pt'><span
+style='mso-tab-count:2'> </span>}</pre><pre style='margin-left:9.0pt'><span
+style='mso-tab-count:1'> </span>}</pre><pre style='margin-left:9.0pt'><o:p> </o:p></pre><pre
+style='margin-left:9.0pt'><span style='mso-tab-count:1'> </span><span
+class=GramE>protected</span> static void err(String error) {</pre><pre
style='margin-left:9.0pt'><img border=0 width=24 height=14 id="_x0000_i1030"
-src="../../../../images/tag_2.gif" align=CENTER><span style='mso-tab-count:3'> </span><span
-class=GramE>System.out.println(</span>output);</pre><pre style='margin-left:
-9.0pt'><span style='mso-tab-count:2'> </span>}</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:1'> </span>}</pre><pre
-style='margin-left:9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:1'> </span><span class=GramE>protected</span> static void err(String error) {</pre><pre
-style='margin-left:9.0pt'><img border=0 width=24 height=14 id="_x0000_i1031"
-src="../../../../images/tag_3.gif" align=CENTER><span style='mso-tab-count:2'> </span><span
-class=GramE>System.err.println(</span>error);</pre><pre style='margin-left:
-9.0pt'><span style='mso-tab-count:1'> </span>}</pre>
+src="../../../../images/tag_3.gif" align=CENTER><span style='mso-tab-count:
+2'> </span><span class=SpellE><span class=GramE>System.err.println</span></span><span
+class=GramE>(</span>error);</pre><pre style='margin-left:9.0pt'><span
+style='mso-tab-count:1'> </span>}</pre>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>A
-static debug flag <img border=0 width=24 height=14 id="_x0000_i1032"
+static debug flag <img border=0 width=24 height=14 id="_x0000_i1031"
src="../../../../images/tag_1.gif" align=CENTER><span
style='mso-spacerun:yes'> </span>can be used to enable or disable verbose
information printed to the systems output <span class=GramE>stream </span><img
-border=0 width=24 height=14 id="_x0000_i1033" src="../../../../images/tag_2.gif"
+border=0 width=24 height=14 id="_x0000_i1032" src="../../../../images/tag_2.gif"
align=CENTER>. Errors will always be printed to the systems error <span
-class=GramE>stream </span><img border=0 width=24 height=14 id="_x0000_i1034"
+class=GramE>stream </span><img border=0 width=24 height=14 id="_x0000_i1033"
src="../../../../images/tag_3.gif" align=CENTER>.</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>All
-righty then! In each of the following subsections, well look at how to create
-a different kind of UML element, starting with models.</p>
+<span class=SpellE>righty</span> then! In each of the following subsections,
+well look at how to create a different kind of UML element, starting with
+models.</p>
<h3 style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Creating
Models</h3>
@@ -380,8 +477,8 @@
modeled. To create a model using the UML editor, follow these steps:</p>
<p style='margin-left:27.5pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>1)
-Select a project (i.e. <b>Getting Started with UML2</b>) in the <b>Navigator</b>
-view and select the <b>File > New > <span class=GramE>Other</span>...</b>
+Select a project (i.e. <b>Getting Started with UML2</b>) in the <b>Project
+Explorer</b> view and select the <b>File > New > <span class=GramE>Other</span>...</b>
menu item.</p>
<p style='margin-left:27.5pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>2)
@@ -410,10 +507,10 @@
this point your workspace should look something like this:</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><!--[if gte vml 1]><v:shape
- id="_x0000_i1035" type="#_x0000_t75" style='width:960pt;height:768pt'>
- <v:imagedata src="article_files/image005.png" o:title=""/>
-</v:shape><![endif]--><![if !vml]><img border=0 width=1280 height=1024
-src="article_files/image006.jpg" v:shapes="_x0000_i1035"><![endif]></p>
+ id="_x0000_i1089" type="#_x0000_t75" style='width:655.5pt;height:447.75pt'>
+ <v:imagedata src="article_files/image025.png" o:title=""/>
+</v:shape><![endif]--><![if !vml]><img border=0 width=874 height=597
+src="article_files/image026.jpg" v:shapes="_x0000_i1089"><![endif]></p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Lets
look at how to perform the same task using Java code. The code snippet below
@@ -421,38 +518,41 @@
specified name.</p>
<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'> </span><span
-class=GramE>protected</span> static Model createModel(String name) {</pre><pre
+class=GramE>protected</span> static Model <span class=SpellE>createModel</span>(String name) {</pre><pre
+style='margin-left:9.0pt'><img border=0 width=24 height=14 id="_x0000_i1034"
+src="../../../../images/tag_1.gif" align=CENTER><span style='mso-tab-count:
+2'> </span>Model <span class=SpellE>model</span> = <span class=SpellE><span
+class=GramE>UMLFactory.eINSTANCE.createModel</span></span><span class=GramE>(</span>);</pre><pre
+style='margin-left:9.0pt'><img border=0 width=24 height=14 id="_x0000_i1035"
+src="../../../../images/tag_2.gif" align=CENTER><span style='mso-tab-count:
+2'> </span><span class=SpellE><span class=GramE>model.setName</span></span><span
+class=GramE>(</span>name);</pre><pre style='margin-left:9.0pt'><o:p> </o:p></pre><pre
style='margin-left:9.0pt'><img border=0 width=24 height=14 id="_x0000_i1036"
-src="../../../../images/tag_1.gif" align=CENTER><span style='mso-tab-count:2'> </span>Model model = <span
-class=GramE>UMLFactory.eINSTANCE.createModel(</span>);</pre><pre
-style='margin-left:9.0pt'><img border=0 width=24 height=14 id="_x0000_i1037"
-src="../../../../images/tag_2.gif" align=CENTER><span style='mso-tab-count:2'> </span><span
-class=GramE>model.setName(</span>name);</pre><pre style='margin-left:9.0pt'><o:p> </o:p></pre><pre
-style='margin-left:9.0pt'><img border=0 width=24 height=14 id="_x0000_i1038"
-src="../../../../images/tag_3.gif" align=CENTER><span style='mso-tab-count:2'> </span><span
-class=GramE>out(</span>"Model '" + model.getQualifiedName() + "' created.");</pre><pre
+src="../../../../images/tag_3.gif" align=CENTER><span style='mso-tab-count:
+2'> </span><span class=GramE>out(</span>"Model '" + <span
+class=SpellE>model.getQualifiedName</span>() + "' created.");</pre><pre
style='margin-left:9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><img
-border=0 width=24 height=14 id="_x0000_i1039" src="../../../../images/tag_4.gif"
+border=0 width=24 height=14 id="_x0000_i1037" src="../../../../images/tag_4.gif"
align=CENTER><span style='mso-tab-count:2'> </span><span class=GramE>return</span> model;</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:1'> </span>}</pre>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>First,
we ask the UML factory singleton <img border=0 width=24 height=14
-id="_x0000_i1040" src="../../../../images/tag_1.gif" align=CENTER><span
+id="_x0000_i1038" src="../../../../images/tag_1.gif" align=CENTER><span
style='mso-spacerun:yes'> </span>to create a model, and we set its <span
-class=GramE>name </span><img border=0 width=24 height=14 id="_x0000_i1041"
+class=GramE>name </span><img border=0 width=24 height=14 id="_x0000_i1039"
src="../../../../images/tag_2.gif" align=CENTER>. Then, we output information <img
-border=0 width=24 height=14 id="_x0000_i1042" src="../../../../images/tag_3.gif"
+border=0 width=24 height=14 id="_x0000_i1040" src="../../../../images/tag_3.gif"
align=CENTER><span style='mso-spacerun:yes'> </span>to the user to let them
know that the model has been successfully created. Finally, we return <img
-border=0 width=24 height=14 id="_x0000_i1043" src="../../../../images/tag_4.gif"
+border=0 width=24 height=14 id="_x0000_i1041" src="../../../../images/tag_4.gif"
align=CENTER><span style='mso-spacerun:yes'> </span>the model. Youll notice
most, if not all, of the code snippets in this article will follow this pattern
create the element (and set some properties on it), inform the user, and
return it.</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=63 height=14 id="_x0000_i1044" src="../../../../images/tip.gif"><span
+border=0 width=63 height=14 id="_x0000_i1042" src="../../../../images/tip.gif"><span
style='mso-spacerun:yes'> </span>All named elements (a model is a type of named
element) have a simple name and a qualified name. The qualified name is the
simple name prefixed with the simple names of <span class=GramE>all of the</span>
@@ -465,19 +565,21 @@
epo2 as follows:</p>
<pre style='margin-left:9.0pt'><span style='mso-tab-count:2'> </span>Model epo2Model = <span
-class=GramE>createModel(</span>"epo2");</pre>
+class=SpellE><span class=GramE>createModel</span></span><span class=GramE>(</span>"epo2");</pre>
<h3 style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Creating
Packages</h3>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>A
-package is a namespace for its members (<i style='mso-bidi-font-style:normal'>packageable
-elements</i>), and may contain other packages. A package can import either
-individual members of other packages, or all of the members of other packages.
-To create a package using the UML editor, follow these steps:</p>
+package is a namespace for its members (<span class=SpellE><i style='mso-bidi-font-style:
+normal'>packageable</i></span><i style='mso-bidi-font-style:normal'> elements</i>),
+and may contain other packages. A package can import either individual members
+of other packages, or all of the members of other packages. To create a package
+using the UML editor, follow these steps:</p>
<p style='margin-left:27.5pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>1)
-Select a package (e.g. <<b>Package> foo</b>) in the UML editor.</p>
+Select a package (e.g. <<b>Package> <span class=SpellE>foo</span></b>) in
+the UML editor.</p>
<p style='margin-left:27.5pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>2)
Right-click and select the <b>New Child > Packaged Element Package</b>
@@ -498,47 +600,53 @@
specified name in a specified nesting package.</p>
<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'> </span><span
-class=GramE>protected</span> static org.eclipse.uml2.uml.Package createPackage(</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span><span
-class=GramE>org.eclipse.uml2.uml.Package</span> nestingPackage, String name) {</pre><pre
-style='margin-left:9.0pt'><img border=0 width=24 height=14 id="_x0000_i1045"
-src="../../../../images/tag_1.gif" align=CENTER><span style='mso-tab-count:2'> </span>org.eclipse.uml2.uml.Package package_ = nestingPackage</pre><pre
+class=GramE>protected</span> static org.eclipse.uml2.uml.Package <span
+class=SpellE>createPackage</span>(</pre><pre style='margin-left:9.0pt'><span
+style='mso-tab-count:3'> </span><span class=GramE>org.eclipse.uml2.uml.Package</span> <span
+class=SpellE>nestingPackage</span>, String name) {</pre><pre style='margin-left:
+9.0pt'><img border=0 width=24 height=14 id="_x0000_i1043"
+src="../../../../images/tag_1.gif" align=CENTER><span style='mso-tab-count:
+2'> </span>org.eclipse.uml2.uml.Package package_ = <span class=SpellE>nestingPackage</span></pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span>.<span
-class=GramE>createNestedPackage(</span>name);</pre><pre style='margin-left:
-9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'> </span><span class=GramE>out(</span>"Package '" + package_.getQualifiedName() + "' created.");</pre><pre
+class=SpellE><span class=GramE>createNestedPackage</span></span><span
+class=GramE>(</span>name);</pre><pre style='margin-left:9.0pt'><o:p> </o:p></pre><pre
+style='margin-left:9.0pt'><span style='mso-tab-count:2'> </span><span
+class=GramE>out(</span>"Package '" + <span class=SpellE>package_.getQualifiedName</span>() + "' created.");</pre><pre
style='margin-left:9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><span
style='mso-tab-count:2'> </span><span class=GramE>return</span> package_;</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:1'> </span>}</pre>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Here,
instead of asking the factory to create the package for us, were making use of
-one of the factory methods <img border=0 width=24 height=14 id="_x0000_i1046"
+one of the factory methods <img border=0 width=24 height=14 id="_x0000_i1044"
src="../../../../images/tag_1.gif" align=CENTER><span
style='mso-spacerun:yes'> </span>in the UML2 API.</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=63 height=14 id="_x0000_i1047" src="../../../../images/tip.gif"><span
-style='mso-spacerun:yes'> </span>In UML2, a factory method exists for every
-feature that can contain other elements (i.e. every containment feature). In
-addition, more convenient factory methods exist for commonly created types
-(like packages). In this case, the package has a feature (<code>packagedElement</code>)
-that can contain packageable elements, so we could obtain the Ecore class of
-the type of (packageable) element we want to create (i.e. <code>Package</code>)
-from the UML Ecore package singleton, and pass it to the <span class=GramE><code>createPackagedElement(</code></span><code>String,
-EClass)</code> factory method. Instead, we use the more convenient <span
-class=GramE><code>createNestedPackage(</code></span><code>String)</code>
+border=0 width=63 height=14 id="_x0000_i1045" src="../../../../images/tip.gif"><span
+style='mso-spacerun:yes'> </span>In UML2, a factory method exists for every feature
+that can contain other elements (i.e. every containment feature). In addition,
+more convenient factory methods exist for commonly created types (like
+packages). In this case, the package has a feature (<span class=SpellE><code>packagedElement</code></span>)
+that can contain <span class=SpellE>packageable</span> elements, so we could
+obtain the <span class=SpellE>Ecore</span> class of the type of (<span
+class=SpellE>packageable</span>) element we want to create (i.e. <code>Package</code>)
+from the UML <span class=SpellE>Ecore</span> package singleton, and pass it to
+the <span class=SpellE><span class=GramE><code>createPackagedElement</code></span></span><span
+class=GramE><code>(</code></span><code>String, <span class=SpellE>EClass</span>)</code>
+factory method. Instead, we use the more convenient <span class=SpellE><span
+class=GramE><code>createNestedPackage</code></span></span><span class=GramE><code>(</code></span><code>String)</code>
factory method which implicitly creates a package and accepts the desired
package name as an argument. Behind the scenes, the package will create a
-nested package, set its name, and add the package to its list of packaged
-elements.</p>
+nested package, set its name, and add the package to its list of packaged elements.</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>OK,
lets see this method in action. For example, we could create a package named
-bar in nesting package foo as follows:</p>
+bar in nesting package <span class=SpellE>foo</span> as follows:</p>
<pre style='margin-left:9.0pt'><span style='mso-tab-count:2'> </span><span
-class=GramE>org.eclipse.uml2.uml.Package</span> barPackage = createPackage(fooPackage, "bar");</pre>
+class=GramE>org.eclipse.uml2.uml.Package</span> <span class=SpellE>barPackage</span> = <span
+class=SpellE>createPackage</span>(<span class=SpellE>fooPackage</span>, "bar");</pre>
<h3 style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Creating
Primitive Types</h3>
@@ -546,22 +654,23 @@
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>A
primitive type defines a predefined data type, without any relevant
substructure. Primitive types used in UML itself include <code>Boolean</code>,
-<code>Integer</code>, <code>UnlimitedNatural</code>, and <code>String</code>.
-To create a primitive type using the UML editor, follow these steps:</p>
+<code>Integer</code>, <span class=SpellE><code>UnlimitedNatural</code></span>,
+and <code>String</code>. To create a primitive type using the UML editor,
+follow these steps:</p>
<p style='margin-left:27.5pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>1)
Select a package (i.e. <<b>Model> epo2</b>) in the UML editor.</p>
<p style='margin-left:27.5pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>2)
-Right-click and select the <b>New Child > Packaged Element Primitive Type</b>
-option from the context menu.</p>
+Right-click and select the <b>New Child > Packaged Element > Primitive
+Type</b> option from the context menu.</p>
<p style='margin-left:27.5pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>3)
-Enter a value (i.e. int) for the <b>Name</b> property in the <b>Properties</b>
-view.</p>
+Enter a value (i.e. <span class=SpellE>int</span>) for the <b>Name</b>
+property in the <b>Properties</b> view.</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=61 height=13 id="_x0000_i1048" src="../../../../images/tryit.gif"><span
+border=0 width=61 height=13 id="_x0000_i1046" src="../../../../images/tryit.gif"><span
style='mso-spacerun:yes'> </span>Create the remaining primitive types from the
ExtendedPO2 model using the UML editor.</p>
@@ -569,10 +678,10 @@
this point your workspace should look something like this:</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><!--[if gte vml 1]><v:shape
- id="_x0000_i1049" type="#_x0000_t75" style='width:960pt;height:768pt'>
- <v:imagedata src="article_files/image007.png" o:title=""/>
-</v:shape><![endif]--><![if !vml]><img border=0 width=1280 height=1024
-src="article_files/image008.jpg" v:shapes="_x0000_i1049"><![endif]></p>
+ id="_x0000_i1090" type="#_x0000_t75" style='width:655.5pt;height:447.75pt'>
+ <v:imagedata src="article_files/image003.png" o:title=""/>
+</v:shape><![endif]--><![if !vml]><img border=0 width=874 height=597
+src="article_files/image004.jpg" v:shapes="_x0000_i1090"><![endif]></p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Lets
look at how to perform the same task using Java code. The code snippet below
@@ -580,35 +689,43 @@
a specified name in a specified package.</p>
<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'> </span><span
-class=GramE>protected</span> static PrimitiveType createPrimitiveType(</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span>org.eclipse.uml2.uml.Package package_, String name) {</pre><pre
-style='margin-left:9.0pt'><img border=0 width=24 height=13 id="_x0000_i1050"
-src="../../../../images/tag_1.gif" align=CENTER><span style='mso-tab-count:2'> </span>PrimitiveType primitiveType = (PrimitiveType) package_</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span>.<span
-class=GramE>createOwnedPrimitiveType(</span>name);</pre><pre style='margin-left:
-9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'> </span><span class=GramE>out(</span>"Primitive type '" + primitiveType.getQualifiedName()</pre><pre
+class=GramE>protected</span> static <span class=SpellE>PrimitiveType</span> <span
+class=SpellE>createPrimitiveType</span>(</pre><pre style='margin-left:9.0pt'><span
+style='mso-tab-count:3'> </span>org.eclipse.uml2.uml.Package package_, String name) {</pre><pre
+style='margin-left:9.0pt'><img border=0 width=24 height=13 id="_x0000_i1047"
+src="../../../../images/tag_1.gif" align=CENTER><span style='mso-tab-count:
+2'> </span><span class=SpellE>PrimitiveType</span> <span class=SpellE>primitiveType</span> = (<span
+class=SpellE>PrimitiveType</span>) package_</pre><pre style='margin-left:9.0pt'><span
+style='mso-tab-count:3'> </span>.<span class=SpellE><span
+class=GramE>createOwnedPrimitiveType</span></span><span class=GramE>(</span>name);</pre><pre
+style='margin-left:9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><span
+style='mso-tab-count:2'> </span><span class=GramE>out(</span>"Primitive type '" + <span
+class=SpellE>primitiveType.getQualifiedName</span>()</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span>+ "' created.");</pre><pre
style='margin-left:9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'> </span><span class=GramE>return</span> primitiveType;</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:1'> </span>}</pre>
+style='mso-tab-count:2'> </span><span class=GramE>return</span> <span
+class=SpellE>primitiveType</span>;</pre><pre style='margin-left:9.0pt'><span
+style='mso-tab-count:1'> </span>}</pre>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Here
-we call the <span class=GramE><code>createOwnedPrimitiveType(</code></span><code>String)</code>
-convenience factory method <img border=0 width=24 height=13 id="_x0000_i1051"
+we call the <span class=SpellE><span class=GramE><code>createOwnedPrimitiveType</code></span></span><span
+class=GramE><code>(</code></span><code>String)</code> convenience factory
+method <img border=0 width=24 height=13 id="_x0000_i1048"
src="../../../../images/tag_1.gif" align=CENTER><span
style='mso-spacerun:yes'> </span>to ask the package to create a primitive type
with the specified name as one of its packaged elements.</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>OK,
lets see this method in action. For example, we could create a primitive type
-named int in model epo2 as follows:</p>
+named <span class=SpellE>int</span> in model epo2 as follows:</p>
-<pre style='margin-left:9.0pt'><span style='mso-tab-count:2'> </span>PrimitiveType intPrimitiveType = <span
-class=GramE>createPrimitiveType(</span>epo2Model, "int");</pre>
+<pre style='margin-left:9.0pt'><span style='mso-tab-count:2'> </span><span
+class=SpellE>PrimitiveType</span> <span class=SpellE>intPrimitiveType</span> = <span
+class=SpellE><span class=GramE>createPrimitiveType</span></span><span
+class=GramE>(</span>epo2Model, "<span class=SpellE>int</span>");</pre>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=61 height=13 id="_x0000_i1052" src="../../../../images/tryit.gif"><span
+border=0 width=61 height=13 id="_x0000_i1049" src="../../../../images/tryit.gif"><span
style='mso-spacerun:yes'> </span>Write code to programmatically create the
remaining primitive types from the ExtendedPO2 model.</p>
@@ -624,21 +741,21 @@
Select a package (i.e. <<b>Model> epo2</b>) in the UML editor.</p>
<p style='margin-left:27.5pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>2)
-Right-click and select the <b>New Child > Packaged Element Enumeration</b>
+Right-click and select the <b>New Child > Packaged Element > Enumeration</b>
option from the context menu.</p>
<p style='margin-left:27.5pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>3)
-Enter a value (i.e. OrderStatus) for the <b>Name</b> property in the <b>Properties</b>
-view.</p>
+Enter a value (i.e. <span class=SpellE>OrderStatus</span>) for the <b>Name</b>
+property in the <b>Properties</b> view.</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>At
this point your workspace should look something like this:</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><!--[if gte vml 1]><v:shape
- id="_x0000_i1053" type="#_x0000_t75" style='width:960pt;height:768pt'>
- <v:imagedata src="article_files/image009.png" o:title=""/>
-</v:shape><![endif]--><![if !vml]><img border=0 width=1280 height=1024
-src="article_files/image010.jpg" v:shapes="_x0000_i1053"><![endif]></p>
+ id="_x0000_i1091" type="#_x0000_t75" style='width:655.5pt;height:447.75pt'>
+ <v:imagedata src="article_files/image005.png" o:title=""/>
+</v:shape><![endif]--><![if !vml]><img border=0 width=874 height=597
+src="article_files/image006.jpg" v:shapes="_x0000_i1091"><![endif]></p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Lets
look at how to perform the same task using Java code. The code snippet below
@@ -646,32 +763,37 @@
specified name in a specified package.</p>
<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'> </span><span
-class=GramE>protected</span> static Enumeration createEnumeration(</pre><pre
+class=GramE>protected</span> static Enumeration <span class=SpellE>createEnumeration</span>(</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span>org.eclipse.uml2.uml.Package package_, String name) {</pre><pre
-style='margin-left:9.0pt'><img border=0 width=24 height=13 id="_x0000_i1054"
-src="../../../../images/tag_1.gif" align=CENTER><span style='mso-tab-count:2'> </span>Enumeration enumeration = (Enumeration) package_</pre><pre
+style='margin-left:9.0pt'><img border=0 width=24 height=13 id="_x0000_i1050"
+src="../../../../images/tag_1.gif" align=CENTER><span style='mso-tab-count:
+2'> </span>Enumeration <span class=SpellE>enumeration</span> = (Enumeration) package_</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span>.<span
-class=GramE>createOwnedEnumeraton(</span>name);</pre><pre style='margin-left:
-9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'> </span><span class=GramE>out(</span>"Enumeration '" + enumeration.getQualifiedName() + "' created.");</pre><pre
+class=SpellE><span class=GramE>createOwnedEnumeraton</span></span><span
+class=GramE>(</span>name);</pre><pre style='margin-left:9.0pt'><o:p> </o:p></pre><pre
+style='margin-left:9.0pt'><span style='mso-tab-count:2'> </span><span
+class=GramE>out(</span>"Enumeration '" + <span class=SpellE>enumeration.getQualifiedName</span>() + "' created.");</pre><pre
style='margin-left:9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><span
style='mso-tab-count:2'> </span><span class=GramE>return</span> enumeration;</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:1'> </span>}</pre>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Here
-we call the <span class=GramE><code>createOwnedEnumeration(</code></span><code>String)</code>
-convenience factory method <img border=0 width=24 height=13 id="_x0000_i1055"
+we call the <span class=SpellE><span class=GramE><code>createOwnedEnumeration</code></span></span><span
+class=GramE><code>(</code></span><code>String)</code> convenience factory
+method <img border=0 width=24 height=13 id="_x0000_i1051"
src="../../../../images/tag_1.gif" align=CENTER><span
style='mso-spacerun:yes'> </span>to ask the package to create a primitive type
with the specified name as one of its packaged elements.</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>OK,
lets see this method in action. For example, we could create an enumeration
-named OrderStatus in model epo2 as follows:</p>
+named <span class=SpellE>OrderStatus</span> in model epo2 as follows:</p>
-<pre style='margin-left:9.0pt'><span style='mso-tab-count:2'> </span>Enumeration orderStatusEnumeration = <span
-class=GramE>createEnumeration(</span>epo2Model,</pre><pre style='margin-left:
-9.0pt'><span style='mso-tab-count:3'> </span>"OrderStatus");</pre>
+<pre style='margin-left:9.0pt'><span style='mso-tab-count:2'> </span>Enumeration <span
+class=SpellE>orderStatusEnumeration</span> = <span class=SpellE><span
+class=GramE>createEnumeration</span></span><span class=GramE>(</span>epo2Model,</pre><pre
+style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span>"<span
+class=SpellE>OrderStatus</span>");</pre>
<h3 style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Creating
Enumeration Literals</h3>
@@ -681,19 +803,19 @@
an enumeration literal using the UML editor, follow these steps:</p>
<p style='margin-left:27.5pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>1)
-Select an enumeration (i.e. <<b>Enumeration> OrderStatus</b>) in the UML
-editor.</p>
+Select an enumeration (i.e. <<b>Enumeration> <span class=SpellE>OrderStatus</span></b>)
+in the UML editor.</p>
<p style='margin-left:27.5pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>2)
-Right-click and select the <b>New Child > Enumeration Literal</b> option
-from the context menu.</p>
+Right-click and select the <b>New Child > Owned Literal > Enumeration
+Literal</b> option from the context menu.</p>
<p style='margin-left:27.5pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>3)
Enter a value (i.e. Pending) for the <b>Name</b> property in the <b>Properties</b>
view.</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=61 height=13 id="_x0000_i1056" src="../../../../images/tryit.gif"><span
+border=0 width=61 height=13 id="_x0000_i1052" src="../../../../images/tryit.gif"><span
style='mso-spacerun:yes'> </span>Create the remaining enumeration literals from
the ExtendedPO2 model using the UML editor.</p>
@@ -701,10 +823,10 @@
this point your workspace should look something like this:</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><!--[if gte vml 1]><v:shape
- id="_x0000_i1057" type="#_x0000_t75" style='width:960pt;height:768pt'>
- <v:imagedata src="article_files/image011.png" o:title=""/>
-</v:shape><![endif]--><![if !vml]><img border=0 width=1280 height=1024
-src="article_files/image012.jpg" v:shapes="_x0000_i1057"><![endif]></p>
+ id="_x0000_i1092" type="#_x0000_t75" style='width:655.5pt;height:447.75pt'>
+ <v:imagedata src="article_files/image007.png" o:title=""/>
+</v:shape><![endif]--><![if !vml]><img border=0 width=874 height=597
+src="article_files/image008.jpg" v:shapes="_x0000_i1092"><![endif]></p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Lets
look at how to perform the same task using Java code. The code snippet below
@@ -712,35 +834,44 @@
with a specified name in a specified enumeration.</p>
<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'> </span><span
-class=GramE>protected</span> static EnumerationLiteral createEnumerationLiteral(</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span>Enumeration enumeration, String name) {</pre><pre
-style='margin-left:9.0pt'><img border=0 width=24 height=13 id="_x0000_i1058"
-src="../../../../images/tag_1.gif" align=CENTER><span style='mso-tab-count:2'> </span>EnumerationLiteral enumerationLiteral = enumeration</pre><pre
+class=GramE>protected</span> static <span class=SpellE>EnumerationLiteral</span> <span
+class=SpellE>createEnumerationLiteral</span>(</pre><pre style='margin-left:
+9.0pt'><span style='mso-tab-count:3'> </span>Enumeration <span
+class=SpellE>enumeration</span>, String name) {</pre><pre style='margin-left:
+9.0pt'><img border=0 width=24 height=13 id="_x0000_i1053"
+src="../../../../images/tag_1.gif" align=CENTER><span style='mso-tab-count:
+2'> </span><span class=SpellE>EnumerationLiteral</span> <span
+class=SpellE>enumerationLiteral</span> = enumeration</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span>.<span
-class=GramE>createOwnedLiteral(</span>name);</pre><pre style='margin-left:9.0pt'><o:p> </o:p></pre><pre
+class=SpellE><span class=GramE>createOwnedLiteral</span></span><span
+class=GramE>(</span>name);</pre><pre style='margin-left:9.0pt'><o:p> </o:p></pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:2'> </span><span
-class=GramE>out(</span>"Enumeration literal '" + enumerationLiteral.getQualifiedName()</pre><pre
+class=GramE>out(</span>"Enumeration literal '" + <span class=SpellE>enumerationLiteral.getQualifiedName</span>()</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span>+ "' created.");</pre><pre
style='margin-left:9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'> </span><span class=GramE>return</span> enumerationLiteral;</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:1'> </span>}</pre>
+style='mso-tab-count:2'> </span><span class=GramE>return</span> <span
+class=SpellE>enumerationLiteral</span>;</pre><pre style='margin-left:9.0pt'><span
+style='mso-tab-count:1'> </span>}</pre>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Here
-we call a <span class=GramE><code>createOwnedLiteral(</code></span><code>String)</code>
-convenience factory method <img border=0 width=24 height=13 id="_x0000_i1059"
+we call a <span class=SpellE><span class=GramE><code>createOwnedLiteral</code></span></span><span
+class=GramE><code>(</code></span><code>String)</code> convenience factory
+method <img border=0 width=24 height=13 id="_x0000_i1054"
src="../../../../images/tag_1.gif" align=CENTER><span
style='mso-spacerun:yes'> </span>to ask the enumeration to create an
enumeration literal with the specified name as one of its owned literals.</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>OK,
lets see this method in action. For example, we could create an enumeration
-literal named Pending in enumeration OrderStatus as follows:</p>
+literal named Pending in enumeration <span class=SpellE>OrderStatus</span>
+as follows:</p>
<pre style='margin-left:9.0pt'><span style='mso-tab-count:2'> </span><span
-class=GramE>createEnumerationLiteral(</span>orderStatusEnumeration, "Pending");</pre>
+class=SpellE><span class=GramE>createEnumerationLiteral</span></span><span
+class=GramE>(</span><span class=SpellE>orderStatusEnumeration</span>, "Pending");</pre>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=61 height=13 id="_x0000_i1060" src="../../../../images/tryit.gif"><span
+border=0 width=61 height=13 id="_x0000_i1055" src="../../../../images/tryit.gif"><span
style='mso-spacerun:yes'> </span>Write code to programmatically create the
remaining enumeration literals from the ExtendedPO2 model.</p>
@@ -756,15 +887,15 @@
Select a package (i.e. <<b>Model> epo2</b>) in the UML editor.</p>
<p style='margin-left:27.5pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>2)
-Right-click and select the <b>New Child > Packaged Element Class</b> option
-from the context menu.</p>
+Right-click and select the <b>New Child > Packaged Element > Class</b>
+option from the context menu.</p>
<p style='margin-left:27.5pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>3)
Enter a value (i.e. Supplier) for the <b>Name</b> property in the <b>Properties</b>
view.</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=61 height=13 id="_x0000_i1061" src="../../../../images/tryit.gif"><span
+border=0 width=61 height=13 id="_x0000_i1056" src="../../../../images/tryit.gif"><span
style='mso-spacerun:yes'> </span>Create the remaining classes from the
ExtendedPO2 model using the UML editor.</p>
@@ -772,10 +903,10 @@
this point your workspace should look something like this:</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><!--[if gte vml 1]><v:shape
- id="_x0000_i1062" type="#_x0000_t75" style='width:960pt;height:768pt'>
- <v:imagedata src="article_files/image013.png" o:title=""/>
-</v:shape><![endif]--><![if !vml]><img border=0 width=1280 height=1024
-src="article_files/image014.jpg" v:shapes="_x0000_i1062"><![endif]></p>
+ id="_x0000_i1093" type="#_x0000_t75" style='width:655.5pt;height:509.25pt'>
+ <v:imagedata src="article_files/image009.png" o:title=""/>
+</v:shape><![endif]--><![if !vml]><img border=0 width=874 height=679
+src="article_files/image010.jpg" v:shapes="_x0000_i1093"><![endif]></p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Lets
look at how to perform the same task using Java code. The code snippet below
@@ -783,44 +914,52 @@
(abstract) class with a specified name in a specified package.</p>
<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'> </span><span
-class=GramE>protected</span> static org.eclipse.uml2.uml.Class createClass(</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span>org.eclipse.uml2.uml.Package package_, String name, <span
-class=GramE>boolean</span> isAbstract) {</pre><pre style='margin-left:9.0pt'><img
-border=0 width=24 height=13 id="_x0000_i1063" src="../../../../images/tag_1.gif"
-align=CENTER><span style='mso-tab-count:2'> </span>org.eclipse.uml2.uml.Class class_ = package_.<span
-class=GramE>createOwnedClass(</span>name,</pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:3'> </span><span class=GramE>isAbstract</span>);</pre><pre
+class=GramE>protected</span> static org.eclipse.uml2.uml.Class <span
+class=SpellE>createClass</span>(</pre><pre style='margin-left:9.0pt'><span
+style='mso-tab-count:3'> </span>org.eclipse.uml2.uml.Package package_, String name, <span
+class=SpellE><span class=GramE>boolean</span></span> <span class=SpellE>isAbstract</span>) {</pre><pre
+style='margin-left:9.0pt'><img border=0 width=24 height=13 id="_x0000_i1057"
+src="../../../../images/tag_1.gif" align=CENTER><span style='mso-tab-count:
+2'> </span>org.eclipse.uml2.uml.Class class_ = <span class=SpellE>package_.<span
+class=GramE>createOwnedClass</span></span><span class=GramE>(</span>name,</pre><pre
+style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span><span
+class=SpellE><span class=GramE>isAbstract</span></span>);</pre><pre
style='margin-left:9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'> </span><span class=GramE>out(</span>"Class '" + class_.getQualifiedName() + "' created.");</pre><pre
+style='mso-tab-count:2'> </span><span class=GramE>out(</span>"Class '" + <span
+class=SpellE>class_.getQualifiedName</span>() + "' created.");</pre><pre
style='margin-left:9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><span
style='mso-tab-count:2'> </span><span class=GramE>return</span> class_;</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:1'> </span>}</pre>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Here
-we call the <span class=GramE><code>createOwnedClass(</code></span><code>String,
-boolean)</code> convenience factory method <img border=0 width=24 height=13
-id="_x0000_i1064" src="../../../../images/tag_1.gif" align=CENTER><span
+we call the <span class=SpellE><span class=GramE><code>createOwnedClass</code></span></span><span
+class=GramE><code>(</code></span><code>String, <span class=SpellE>boolean</span>)</code>
+convenience factory method <img border=0 width=24 height=13 id="_x0000_i1058"
+src="../../../../images/tag_1.gif" align=CENTER><span
style='mso-spacerun:yes'> </span>to ask the package to create a class with the
-specified name as one of its packaged elements, and set the <code>isAbstract</code>
-attribute of the class based on the specified <code>boolean</code> argument.</p>
+specified name as one of its packaged elements, and set the <span class=SpellE><code>isAbstract</code></span>
+attribute of the class based on the specified <span class=SpellE><code>boolean</code></span>
+argument.</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=62 height=13 id="_x0000_i1065" src="../../../../images/tip.gif"><span
+border=0 width=62 height=13 id="_x0000_i1059" src="../../../../images/tip.gif"><span
style='mso-spacerun:yes'> </span>You may have noticed that we have been fully
qualifying references to the <code>Package</code> and <code>Class</code>
-interfaces. This is recommended so that these types are not confused with <code>java.lang.Class</code>
-and <code>java.lang.Package</code>, which are imported implicitly in Java.</p>
+interfaces. This is recommended so that these types are not confused with <span
+class=SpellE><code>java.lang.Class</code></span> and <span class=SpellE><code>java.lang.Package</code></span>,
+which are imported implicitly in Java.</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>OK,
lets see this method in action. For example, we could create a non-abstract
class named Supplier in model epo2 as follows:</p>
<pre style='margin-left:9.0pt'><span style='mso-tab-count:2'> </span><span
-class=GramE>org.eclipse.uml2.uml.Class</span> supplierClass = createClass(epo2Model,</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span>"Supplier", false);</pre>
+class=GramE>org.eclipse.uml2.uml.Class</span> <span class=SpellE>supplierClass</span> = <span
+class=SpellE>createClass</span>(epo2Model,</pre><pre style='margin-left:9.0pt'><span
+style='mso-tab-count:3'> </span>"Supplier", false);</pre>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=61 height=13 id="_x0000_i1066" src="../../../../images/tryit.gif"><span
+border=0 width=61 height=13 id="_x0000_i1060" src="../../../../images/tryit.gif"><span
style='mso-spacerun:yes'> </span>Write code to programmatically create the
remaining classes from the ExtendedPO2 model.</p>
@@ -835,18 +974,19 @@
steps:</p>
<p style='margin-left:27.5pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>1)
-Select a classifier (i.e. <<b>Class> USAddress</b>) in the UML editor.</p>
+Select a classifier (i.e. <<b>Class> <span class=SpellE>USAddress</span></b>)
+in the UML editor.</p>
<p style='margin-left:27.5pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>2)
-Right-click and select the <b>New Child > Generalization</b> option from the
-context menu.</p>
+Right-click and select the <b>New Child > Generalization > Generalization</b>
+option from the context menu.</p>
<p style='margin-left:27.5pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>3)
Select a value (i.e. <b>epo2::Address</b>) for the <b>General</b> property in
the <b>Properties</b> view.</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=61 height=13 id="_x0000_i1067" src="../../../../images/tryit.gif"><span
+border=0 width=61 height=13 id="_x0000_i1061" src="../../../../images/tryit.gif"><span
style='mso-spacerun:yes'> </span>Create the remaining generalizations from the
ExtendedPO2 model using the UML editor.</p>
@@ -854,10 +994,10 @@
this point your workspace should look something like this:</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><!--[if gte vml 1]><v:shape
- id="_x0000_i1068" type="#_x0000_t75" style='width:960pt;height:768pt'>
- <v:imagedata src="article_files/image015.png" o:title=""/>
-</v:shape><![endif]--><![if !vml]><img border=0 width=1280 height=1024
-src="article_files/image016.jpg" v:shapes="_x0000_i1068"><![endif]></p>
+ id="_x0000_i1094" type="#_x0000_t75" style='width:655.5pt;height:509.25pt'>
+ <v:imagedata src="article_files/image011.png" o:title=""/>
+</v:shape><![endif]--><![if !vml]><img border=0 width=874 height=679
+src="article_files/image012.jpg" v:shapes="_x0000_i1094"><![endif]></p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Lets
look at how to perform the same task using Java code. The code snippet below
@@ -865,36 +1005,44 @@
between specified specific and general classifiers.</p>
<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'> </span><span
-class=GramE>protected</span> static Generalization createGeneralization(</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span>Classifier specificClassifier, Classifier generalClassifier) {</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:2'> </span>Generalization generalization = specificClassifier</pre><pre
-style='margin-left:9.0pt'><img border=0 width=24 height=13 id="_x0000_i1069"
-src="../../../../images/tag_1.gif" align=CENTER><span style='mso-tab-count:3'> </span>.<span
-class=GramE>createGeneralization(</span>generalClassifier);</pre><pre
+class=GramE>protected</span> static Generalization <span class=SpellE>createGeneralization</span>(</pre><pre
+style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span>Classifier <span
+class=SpellE>specificClassifier</span>, Classifier <span class=SpellE>generalClassifier</span>) {</pre><pre
+style='margin-left:9.0pt'><span style='mso-tab-count:2'> </span>Generalization <span
+class=SpellE>generalization</span> = <span class=SpellE>specificClassifier</span></pre><pre
+style='margin-left:9.0pt'><img border=0 width=24 height=13 id="_x0000_i1062"
+src="../../../../images/tag_1.gif" align=CENTER><span style='mso-tab-count:
+3'> </span>.<span class=SpellE><span class=GramE>createGeneralization</span></span><span
+class=GramE>(</span><span class=SpellE>generalClassifier</span>);</pre><pre
style='margin-left:9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'> </span><span class=GramE>out(</span>"Generalization " + specificClassifier.getQualifiedName() + " ->> "</pre><pre
+style='mso-tab-count:2'> </span><span class=GramE>out(</span>"Generalization " + <span
+class=SpellE>specificClassifier.getQualifiedName</span>() + " ->> "</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span>+ <span
-class=GramE>generalClassifier.getQualifiedName(</span>) + " created.");</pre><pre
-style='margin-left:9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><span
+class=SpellE><span class=GramE>generalClassifier.getQualifiedName</span></span><span
+class=GramE>(</span>) + " created.");</pre><pre style='margin-left:
+9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><span
style='mso-tab-count:2'> </span><span class=GramE>return</span> generalization;</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:1'> </span>}</pre>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Here
we call a convenience factory method on the specific classifier that creates a
-generalization <img border=0 width=24 height=13 id="_x0000_i1070"
+generalization <img border=0 width=24 height=13 id="_x0000_i1063"
src="../../../../images/tag_1.gif" align=CENTER><span
style='mso-spacerun:yes'> </span>as one of its children and sets the general
classifier to the specified argument.</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>OK,
lets see this method in action. For example, we could create a generalization
-between specific class USAddress and general class Address as follows:</p>
+between specific class <span class=SpellE>USAddress</span> and general class
+Address as follows:</p>
<pre style='margin-left:9.0pt'><span style='mso-tab-count:2'> </span><span
-class=GramE>createGeneralization(</span>usAddressClass, addressClass);</pre>
+class=SpellE><span class=GramE>createGeneralization</span></span><span
+class=GramE>(</span><span class=SpellE>usAddressClass</span>, <span
+class=SpellE>addressClass</span>);</pre>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=61 height=13 id="_x0000_i1071" src="../../../../images/tryit.gif"><span
+border=0 width=61 height=13 id="_x0000_i1064" src="../../../../images/tryit.gif"><span
style='mso-spacerun:yes'> </span>Write code to programmatically create the
remaining generalizations from the ExtendedPO2 model.</p>
@@ -907,21 +1055,21 @@
of the attribute.</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=62 height=13 id="_x0000_i1072" src="../../../../images/tip.gif"><span
+border=0 width=62 height=13 id="_x0000_i1065" src="../../../../images/tip.gif"><span
style='mso-spacerun:yes'> </span>The types of <code>Classifier</code> that can
-own attributes in UML2 include <code>Artifact</code>, <code>DataType</code>, <code>Interface</code>,
-<code>Signal</code>, and <code>StructuredClassifier</code> (and their
-subtypes).</p>
+own attributes in UML2 include <code>Artifact</code>, <span class=SpellE><code>DataType</code></span>,
+<code>Interface</code>, <code>Signal</code>, and <span class=SpellE><code>StructuredClassifier</code></span>
+(and their subtypes).</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>To
create an attribute using the UML editor, follow these steps:</p>
<p style='margin-left:27.5pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>1)
-Select a classifier (i.e. <<b>Class> Supplier</b>) in the UML editor.</p>
+Select a classifier (i.e. <<b>Class> Address</b>) in the UML editor.</p>
<p style='margin-left:27.5pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>2)
-Right-click and select the <b>New Child > Property</b> option from the
-context menu.</p>
+Right-click and select the <b>New Child > Owned Attribute > Property</b>
+option from the context menu.</p>
<p style='margin-left:27.5pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>3)
Enter a value (i.e. "name) for the <b>Name</b> property in the <b>Properties</b>
@@ -936,7 +1084,7 @@
property in the <b style='mso-bidi-font-weight:normal'>Properties</b> view.</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=62 height=13 id="_x0000_i1073" src="../../../../images/tip.gif"><span
+border=0 width=62 height=13 id="_x0000_i1066" src="../../../../images/tip.gif"><span
style='mso-spacerun:yes'> </span>Lower and upper values for multiplicity
elements (like properties) are represented as value specifications (first-class
objects) in UML 2.x. The default value for lower and upper bounds is 1, unless
@@ -947,7 +1095,7 @@
unlimited natural. </p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=61 height=13 id="_x0000_i1074" src="../../../../images/tryit.gif"><span
+border=0 width=61 height=13 id="_x0000_i1067" src="../../../../images/tryit.gif"><span
style='mso-spacerun:yes'> </span>Create the remaining attributes from the
ExtendedPO2 model using the UML editor.</p>
@@ -955,10 +1103,10 @@
this point your workspace should look something like this:</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><!--[if gte vml 1]><v:shape
- id="_x0000_i1075" type="#_x0000_t75" style='width:960pt;height:768pt'>
- <v:imagedata src="article_files/image017.png" o:title=""/>
-</v:shape><![endif]--><![if !vml]><img border=0 width=1280 height=1024
-src="article_files/image018.jpg" v:shapes="_x0000_i1075"><![endif]></p>
+ id="_x0000_i1095" type="#_x0000_t75" style='width:699pt;height:643.5pt'>
+ <v:imagedata src="article_files/image013.png" o:title=""/>
+</v:shape><![endif]--><![if !vml]><img border=0 width=932 height=858
+src="article_files/image014.jpg" v:shapes="_x0000_i1095"><![endif]></p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Lets
look at how to perform the same task using Java code. The code snippet below
@@ -966,55 +1114,74 @@
specified upper bound, lower bound, type, and name in a specified class.</p>
<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'> </span><span
-class=GramE>protected</span> static Property createAttribute(org.eclipse.uml2.uml.Class class_,</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span>String name, Type type, int lowerBound, int upperBound) {</pre><pre
-style='margin-left:9.0pt'><img border=0 width=24 height=13 id="_x0000_i1076"
-src="../../../../images/tag_1.gif" align=CENTER><span style='mso-tab-count:2'> </span>Property attribute = class_.<span
-class=GramE>createOwnedAttribute(</span>name, type,</pre><pre style='margin-left:
-9.0pt'><span style='mso-tab-count:3'> </span><span
-class=GramE>lowerBound</span>, upperBound);</pre><pre style='margin-left:9.0pt'><o:p> </o:p></pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:2'> </span>StringBuffer sb = new <span
-class=GramE>StringBuffer(</span>);</pre><pre style='margin-left:9.0pt'><o:p> </o:p></pre><pre
+class=GramE>protected</span> static Property <span class=SpellE>createAttribute</span>(org.eclipse.uml2.uml.Class class_,</pre><pre
+style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span>String name, Type <span
+class=SpellE>type</span>, <span class=SpellE>int</span> <span class=SpellE>lowerBound</span>, <span
+class=SpellE>int</span> <span class=SpellE>upperBound</span>) {</pre><pre
+style='margin-left:9.0pt'><img border=0 width=24 height=13 id="_x0000_i1068"
+src="../../../../images/tag_1.gif" align=CENTER><span style='mso-tab-count:
+2'> </span>Property attribute = <span class=SpellE>class_.<span
+class=GramE>createOwnedAttribute</span></span><span class=GramE>(</span>name, type,</pre><pre
+style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span><span
+class=SpellE><span class=GramE>lowerBound</span></span>, <span class=SpellE>upperBound</span>);</pre><pre
+style='margin-left:9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><span
+style='mso-tab-count:2'> </span><span class=SpellE>StringBuffer</span> <span
+class=SpellE>sb</span> = new <span class=SpellE><span class=GramE>StringBuffer</span></span><span
+class=GramE>(</span>);</pre><pre style='margin-left:9.0pt'><o:p> </o:p></pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:2'> </span><span
-class=GramE>sb.append(</span>"Attribute '");</pre><pre
+class=SpellE><span class=GramE>sb.append</span></span><span class=GramE>(</span>"Attribute '");</pre><pre
style='margin-left:9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'> </span><span class=GramE>sb.append(</span>attribute.getQualifiedName());</pre><pre
+style='mso-tab-count:2'> </span><span class=SpellE><span
+class=GramE>sb.append</span></span><span class=GramE>(</span><span
+class=SpellE>attribute.getQualifiedName</span>());</pre><pre style='margin-left:
+9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><span
+style='mso-tab-count:2'> </span><span class=SpellE><span
+class=GramE>sb.append</span></span><span class=GramE>(</span>"' : ");</pre><pre
style='margin-left:9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'> </span><span class=GramE>sb.append(</span>"' : ");</pre><pre
-style='margin-left:9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'> </span><span class=GramE>sb.append(</span>type.getQualifiedName());</pre><pre
-style='margin-left:9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'> </span><span class=GramE>sb.append(</span>" [");</pre><pre
+style='mso-tab-count:2'> </span><span class=SpellE><span
+class=GramE>sb.append</span></span><span class=GramE>(</span><span
+class=SpellE>type.getQualifiedName</span>());</pre><pre style='margin-left:
+9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><span
+style='mso-tab-count:2'> </span><span class=SpellE><span
+class=GramE>sb.append</span></span><span class=GramE>(</span>" [");</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:2'> </span><span
-class=GramE>sb.append(</span>lowerBound);</pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'> </span><span class=GramE>sb.append(</span>"..");</pre><pre
+class=SpellE><span class=GramE>sb.append</span></span><span class=GramE>(</span><span
+class=SpellE>lowerBound</span>);</pre><pre style='margin-left:9.0pt'><span
+style='mso-tab-count:2'> </span><span class=SpellE><span
+class=GramE>sb.append</span></span><span class=GramE>(</span>"..");</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:2'> </span><span
-class=GramE>sb.append(</span>LiteralUnlimitedNatural.UNLIMITED == upperBound</pre><pre
+class=SpellE><span class=GramE>sb.append</span></span><span class=GramE>(</span><span
+class=SpellE>LiteralUnlimitedNatural.UNLIMITED</span> == <span class=SpellE>upperBound</span></pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span>? "*"</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span>: <span
-class=GramE>String.valueOf(</span>upperBound));</pre><pre style='margin-left:
-9.0pt'><span style='mso-tab-count:2'> </span><span class=GramE>sb.append(</span>"]");</pre><pre
+class=SpellE><span class=GramE>String.valueOf</span></span><span class=GramE>(</span><span
+class=SpellE>upperBound</span>));</pre><pre style='margin-left:9.0pt'><span
+style='mso-tab-count:2'> </span><span class=SpellE><span
+class=GramE>sb.append</span></span><span class=GramE>(</span>"]");</pre><pre
style='margin-left:9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'> </span><span class=GramE>sb.append(</span>" created.");</pre><pre
+style='mso-tab-count:2'> </span><span class=SpellE><span
+class=GramE>sb.append</span></span><span class=GramE>(</span>" created.");</pre><pre
style='margin-left:9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'> </span><span class=GramE>out(</span>sb.toString());</pre><pre
-style='margin-left:9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'> </span><span class=GramE>return</span> attribute;</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:1'> </span>}</pre>
+style='mso-tab-count:2'> </span><span class=GramE>out(</span><span
+class=SpellE>sb.toString</span>());</pre><pre style='margin-left:9.0pt'><o:p> </o:p></pre><pre
+style='margin-left:9.0pt'><span style='mso-tab-count:2'> </span><span
+class=GramE>return</span> attribute;</pre><pre style='margin-left:9.0pt'><span
+style='mso-tab-count:1'> </span>}</pre>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Here
-we call a <code>createOwnedAttribute(String, Type, int, int)</code> convenience
-factory method <img border=0 width=24 height=13 id="_x0000_i1077"
+we call a <span class=SpellE><code>createOwnedAttribute</code></span><code>(String,
+Type, <span class=SpellE>int</span>, <span class=SpellE>int</span>)</code>
+convenience factory method <img border=0 width=24 height=13 id="_x0000_i1069"
src="../../../../images/tag_1.gif" align=CENTER><span
style='mso-spacerun:yes'> </span>to ask the class to create a property as one
of its owned attributes, set the type of the attribute to the specified type,
-and set the lower and upper bounds of the attribute (the factory method indirectly
-creates a literal integer and literal unlimited natural, respectively, and sets
-their values to the specified integer values).</p>
+and set the lower and upper bounds of the attribute (the factory method
+indirectly creates a literal integer and literal unlimited natural,
+respectively, and sets their values to the specified integer values).</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=62 height=13 id="_x0000_i1078" src="../../../../images/tip.gif"><span
-style='mso-spacerun:yes'> </span>The <code>LiteralUnlimitedNatural.UNLIMITED</code>
+border=0 width=62 height=13 id="_x0000_i1070" src="../../../../images/tip.gif"><span
+style='mso-spacerun:yes'> </span>The <span class=SpellE><code>LiteralUnlimitedNatural.UNLIMITED</code></span>
constant represents the unlimited value for upper bounds (-1), as it does in
EMF; when setting this value in the <b style='mso-bidi-font-weight:normal'>Properties</b>
view, an asterisk (*) can alternatively be specified.</p>
@@ -1025,10 +1192,11 @@
class Supplier as follows:</p>
<pre style='margin-left:9.0pt'><span style='mso-tab-count:2'> </span><span
-class=GramE>createAttribute(</span>supplierClass, "name", stringPrimitiveType, 0, 1);</pre>
+class=SpellE><span class=GramE>createAttribute</span></span><span class=GramE>(</span><span
+class=SpellE>supplierClass</span>, "name", <span class=SpellE>stringPrimitiveType</span>, 0, 1);</pre>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=61 height=13 id="_x0000_i1079" src="../../../../images/tryit.gif"><span
+border=0 width=61 height=13 id="_x0000_i1071" src="../../../../images/tryit.gif"><span
style='mso-spacerun:yes'> </span>Write code to programmatically create the
remaining attributes from the ExtendedPO2 model.</p>
@@ -1036,14 +1204,14 @@
Associations</h3>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>An
-association specifies a semantic relationship that can occur between two or more
-typed instances; its ends are represented by properties, each of which is
+association specifies a semantic relationship that can occur between two or
+more typed instances; its ends are represented by properties, each of which is
connected to the type of the end. When a property is owned by an association it
represents a non-navigable end of the association, in which case the type of
the property is the type of the association end.</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=62 height=13 id="_x0000_i1080" src="../../../../images/tip.gif"><span
+border=0 width=62 height=13 id="_x0000_i1072" src="../../../../images/tip.gif"><span
style='mso-spacerun:yes'> </span>The notion of association end navigability was
separated from that of ownership in the UML 2.0 <span class=GramE>specification</span>,
so a property that is owned by an association isnt necessarily non-navigable
@@ -1056,20 +1224,20 @@
Select a package (i.e. <<b>Model> epo2</b>) in the UML editor.</p>
<p style='margin-left:27.5pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>2)
-Right-click and select the <b>New Child > Packaged Element Association</b>
+Right-click and select the <b>New Child > Packaged Element > Association</b>
option from the context menu.</p>
<p style='margin-left:27.5pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>3)
-Enter a value (e.g. A_supplier_orders) for the <b>Name</b> property in the <b>Properties</b>
-view.</p>
+Enter a value (e.g. <span class=SpellE>A_orders_supplier</span>) for the <b>Name</b>
+property in the <b>Properties</b> view.</p>
<p style='margin-left:27.5pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>4)
-<span class=GramE>Select</span> the association (i.e. <<b>Association>
-A_supplier_orders</b>) in the UML editor.</p>
+<span class=GramE>Select</span> the association (i.e. <<b>Association> <span
+class=SpellE>A_orders_supplier</span></b>) in the UML editor.</p>
<p style='margin-left:27.5pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>5)
-Right-click and select the <b>New Child > Property</b> option from the
-context menu.</p>
+Right-click and select the <b>New Child > Owned End > Property</b> option
+from the context menu.</p>
<p style='margin-left:27.5pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>6)
Select a value (i.e. <b>epo2::Supplier</b>) for the <b>Type</b> property in the
@@ -1080,15 +1248,15 @@
the UML editor.</p>
<p style='margin-left:27.5pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>8)
-Right-click and select the <b>New Child > Property</b> option from the
-context menu.</p>
+Right-click and select the <b>New Child > Owned Attribute > Property</b>
+option from the context menu.</p>
<p style='margin-left:27.5pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>9)
Select a value (i.e. <b>Composite</b>) for the <b>Aggregation</b> property in
the <b>Properties</b> view.</p>
<p style='margin-left:27.5pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>10)
-Select a value (i.e. <b>epo2::A_supplier_orders</b>) for the <b>Association</b>
+Select a value (i.e. <b>epo2::A_orders_supplier</b>) for the <b>Association</b>
property in the <b>Properties</b> view.</p>
<p style='margin-left:27.5pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>11)
@@ -1108,7 +1276,7 @@
property in the <b style='mso-bidi-font-weight:normal'>Properties</b> view.</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=61 height=13 id="_x0000_i1081" src="../../../../images/tryit.gif"><span
+border=0 width=61 height=13 id="_x0000_i1073" src="../../../../images/tryit.gif"><span
style='mso-spacerun:yes'> </span>Create the remaining associations from the
ExtendedPO2 model using the UML editor.</p>
@@ -1116,145 +1284,174 @@
this point your workspace should look something like this:</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><!--[if gte vml 1]><v:shape
- id="_x0000_i1082" type="#_x0000_t75" style='width:960pt;height:768pt'>
- <v:imagedata src="article_files/image019.png" o:title=""/>
-</v:shape><![endif]--><![if !vml]><img border=0 width=1280 height=1024
-src="article_files/image020.jpg" v:shapes="_x0000_i1082"><![endif]></p>
+ id="_x0000_i1096" type="#_x0000_t75" style='width:699pt;height:643.5pt'>
+ <v:imagedata src="article_files/image015.png" o:title=""/>
+</v:shape><![endif]--><![if !vml]><img border=0 width=932 height=858
+src="article_files/image016.jpg" v:shapes="_x0000_i1096"><![endif]></p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Lets
look at how to perform the same task using Java code. The code snippet below
shows a method that programmatically creates and returns an association between
two specified types, with ends that have the specified upper bounds, lower
-bounds, role names, aggregation kinds, and navigabilities.</p>
+bounds, role names, aggregation kinds, and <span class=SpellE>navigabilities</span>.</p>
<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'> </span><span
-class=GramE>protected</span> static Association createAssociation(Type type1,</pre><pre
+class=GramE>protected</span> static Association <span class=SpellE>createAssociation</span>(Type type1,</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span><span
-class=GramE>boolean</span> end1IsNavigable, AggregationKind end1Aggregation,</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:1'> </span><span
-style='mso-tab-count:2'> </span>String end1Name, int end1LowerBound, int end1UpperBound,</pre><pre
+class=SpellE><span class=GramE>boolean</span></span> end1IsNavigable, <span
+class=SpellE>AggregationKind</span> end1Aggregation,</pre><pre
+style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span>String end1Name, <span
+class=SpellE>int</span> end1LowerBound, <span class=SpellE>int</span> end1UpperBound,</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span>Type type2, <span
-class=GramE>boolean</span> end2IsNavigable,</pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:3'> </span>AggregationKind end2Aggregation, String end2Name,</pre><pre
+class=SpellE><span class=GramE>boolean</span></span> end2IsNavigable,</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span><span
-class=GramE>int</span> end2LowerBound, int end2UpperBound) {</pre><pre
-style='margin-left:9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><img
-border=0 width=24 height=13 id="_x0000_i1083" src="../../../../images/tag_1.gif"
-align=CENTER><span style='mso-tab-count:2'> </span>Association association = <span
+class=SpellE>AggregationKind</span> end2Aggregation, String end2Name,</pre><pre
+style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span><span
+class=SpellE><span class=GramE>int</span></span> end2LowerBound, <span
+class=SpellE>int</span> end2UpperBound) {</pre><pre style='margin-left:9.0pt'><o:p> </o:p></pre><pre
+style='margin-left:9.0pt'><img border=0 width=24 height=13 id="_x0000_i1074"
+src="../../../../images/tag_1.gif" align=CENTER><span style='mso-tab-count:
+2'> </span>Association <span class=SpellE>association</span> = <span
class=GramE>type1.createAssociation(</span>end1IsNavigable,</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span>end1Aggregation, end1Name, end1LowerBound, end1UpperBound, type2,</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span>end2IsNavigable, end2Aggregation, end2Name, end2LowerBound,</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span>end2UpperBound);</pre><pre
style='margin-left:9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'> </span>StringBuffer sb = new <span
-class=GramE>StringBuffer(</span>);</pre><pre style='margin-left:9.0pt'><o:p> </o:p></pre><pre
+style='mso-tab-count:2'> </span><span class=SpellE>StringBuffer</span> <span
+class=SpellE>sb</span> = new <span class=SpellE><span class=GramE>StringBuffer</span></span><span
+class=GramE>(</span>);</pre><pre style='margin-left:9.0pt'><o:p> </o:p></pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:2'> </span><span
-class=GramE>sb.append(</span>"Association ");</pre><pre
+class=SpellE><span class=GramE>sb.append</span></span><span class=GramE>(</span>"Association ");</pre><pre
style='margin-left:9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><span
style='mso-tab-count:2'> </span><span class=GramE>if</span> (null == end1Name || 0 == end1Name.length()) {</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span><span
-class=GramE>sb.append(</span>'{');</pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:3'> </span><span class=GramE>sb.append(</span>type1.getQualifiedName());</pre><pre
+class=SpellE><span class=GramE>sb.append</span></span><span class=GramE>(</span>'{');</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span><span
-class=GramE>sb.append(</span>'}');</pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'> </span>} else {</pre><pre style='margin-left:
-9.0pt'><span style='mso-tab-count:3'> </span><span
-class=GramE>sb.append(</span>"'");</pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:3'> </span><span class=GramE>sb.append(</span>type1.getQualifiedName());</pre><pre
+class=SpellE><span class=GramE>sb.append</span></span><span class=GramE>(</span>type1.getQualifiedName());</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span><span
-class=GramE>sb.append(</span>NamedElement.SEPARATOR);</pre><pre
+class=SpellE><span class=GramE>sb.append</span></span><span class=GramE>(</span>'}');</pre><pre
+style='margin-left:9.0pt'><span style='mso-tab-count:2'> </span>} else {</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span><span
-class=GramE>sb.append(</span>end1Name);</pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:3'> </span><span class=GramE>sb.append(</span>"'");</pre><pre
+class=SpellE><span class=GramE>sb.append</span></span><span class=GramE>(</span>"'");</pre><pre
+style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span><span
+class=SpellE><span class=GramE>sb.append</span></span><span class=GramE>(</span>type1.getQualifiedName());</pre><pre
+style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span><span
+class=SpellE><span class=GramE>sb.append</span></span><span class=GramE>(</span><span
+class=SpellE>NamedElement.SEPARATOR</span>);</pre><pre style='margin-left:9.0pt'><span
+style='mso-tab-count:3'> </span><span class=SpellE><span
+class=GramE>sb.append</span></span><span class=GramE>(</span>end1Name);</pre><pre
+style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span><span
+class=SpellE><span class=GramE>sb.append</span></span><span class=GramE>(</span>"'");</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:2'> </span>}</pre><pre
style='margin-left:9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'> </span><span class=GramE>sb.append(</span>" [");</pre><pre
+style='mso-tab-count:2'> </span><span class=SpellE><span
+class=GramE>sb.append</span></span><span class=GramE>(</span>" [");</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:2'> </span><span
-class=GramE>sb.append(</span>end1LowerBound);</pre><pre style='margin-left:
-9.0pt'><span style='mso-tab-count:2'> </span><span class=GramE>sb.append(</span>"..");</pre><pre
+class=SpellE><span class=GramE>sb.append</span></span><span class=GramE>(</span>end1LowerBound);</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:2'> </span><span
-class=GramE>sb.append(</span>LiteralUnlimitedNatural.UNLIMITED == end1UpperBound</pre><pre
+class=SpellE><span class=GramE>sb.append</span></span><span class=GramE>(</span>"..");</pre><pre
+style='margin-left:9.0pt'><span style='mso-tab-count:2'> </span><span
+class=SpellE><span class=GramE>sb.append</span></span><span class=GramE>(</span><span
+class=SpellE>LiteralUnlimitedNatural.UNLIMITED</span> == end1UpperBound</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span>? "*"</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:1'> </span><span
-style='mso-tab-count:2'> </span>: <span class=GramE>String.valueOf(</span>end1UpperBound));</pre><pre
+style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span>: <span
+class=SpellE><span class=GramE>String.valueOf</span></span><span class=GramE>(</span>end1UpperBound));</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:2'> </span><span
-class=GramE>sb.append(</span>"] ");</pre><pre style='margin-left:
-9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'> </span><span class=GramE>sb.append(</span>end2IsNavigable</pre><pre
+class=SpellE><span class=GramE>sb.append</span></span><span class=GramE>(</span>"] ");</pre><pre
+style='margin-left:9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><span
+style='mso-tab-count:2'> </span><span class=SpellE><span
+class=GramE>sb.append</span></span><span class=GramE>(</span>end2IsNavigable</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span>? '<'</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span>: '-');</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:2'> </span><span
-class=GramE>sb.append(</span>'-');</pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'> </span><span class=GramE>sb.append(</span>end1IsNavigable</pre><pre
+class=SpellE><span class=GramE>sb.append</span></span><span class=GramE>(</span>'-');</pre><pre
+style='margin-left:9.0pt'><span style='mso-tab-count:2'> </span><span
+class=SpellE><span class=GramE>sb.append</span></span><span class=GramE>(</span>end1IsNavigable</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span>? '>'</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span>: '-');</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:2'> </span><span
-class=GramE>sb.append(</span>' ');</pre><pre style='margin-left:9.0pt'><o:p> </o:p></pre><pre
+class=SpellE><span class=GramE>sb.append</span></span><span class=GramE>(</span>' <span
+class=SpellE>'</span>);</pre><pre style='margin-left:9.0pt'><o:p> </o:p></pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:2'> </span><span
class=GramE>if</span> (null == end2Name || 0 == end2Name.length()) {</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span><span
-class=GramE>sb.append(</span>'{');</pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:3'> </span><span class=GramE>sb.append(</span>type2.getQualifiedName());</pre><pre
+class=SpellE><span class=GramE>sb.append</span></span><span class=GramE>(</span>'{');</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span><span
-class=GramE>sb.append(</span>'}');</pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'> </span>} else {</pre><pre style='margin-left:
-9.0pt'><span style='mso-tab-count:3'> </span><span
-class=GramE>sb.append(</span>"'");</pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:3'> </span><span class=GramE>sb.append(</span>type2.getQualifiedName());</pre><pre
+class=SpellE><span class=GramE>sb.append</span></span><span class=GramE>(</span>type2.getQualifiedName());</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span><span
-class=GramE>sb.append(</span>NamedElement.SEPARATOR);</pre><pre
+class=SpellE><span class=GramE>sb.append</span></span><span class=GramE>(</span>'}');</pre><pre
+style='margin-left:9.0pt'><span style='mso-tab-count:2'> </span>} else {</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span><span
-class=GramE>sb.append(</span>end2Name);</pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:3'> </span><span class=GramE>sb.append(</span>"'");</pre><pre
+class=SpellE><span class=GramE>sb.append</span></span><span class=GramE>(</span>"'");</pre><pre
+style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span><span
+class=SpellE><span class=GramE>sb.append</span></span><span class=GramE>(</span>type2.getQualifiedName());</pre><pre
+style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span><span
+class=SpellE><span class=GramE>sb.append</span></span><span class=GramE>(</span><span
+class=SpellE>NamedElement.SEPARATOR</span>);</pre><pre style='margin-left:9.0pt'><span
+style='mso-tab-count:3'> </span><span class=SpellE><span
+class=GramE>sb.append</span></span><span class=GramE>(</span>end2Name);</pre><pre
+style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span><span
+class=SpellE><span class=GramE>sb.append</span></span><span class=GramE>(</span>"'");</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:2'> </span>}</pre><pre
style='margin-left:9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'> </span><span class=GramE>sb.append(</span>" [");</pre><pre
+style='mso-tab-count:2'> </span><span class=SpellE><span
+class=GramE>sb.append</span></span><span class=GramE>(</span>" [");</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:2'> </span><span
-class=GramE>sb.append(</span>end2LowerBound);</pre><pre style='margin-left:
-9.0pt'><span style='mso-tab-count:2'> </span><span class=GramE>sb.append(</span>"..");</pre><pre
+class=SpellE><span class=GramE>sb.append</span></span><span class=GramE>(</span>end2LowerBound);</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:2'> </span><span
-class=GramE>sb.append(</span>LiteralUnlimitedNatural.UNLIMITED == end2UpperBound</pre><pre
+class=SpellE><span class=GramE>sb.append</span></span><span class=GramE>(</span>"..");</pre><pre
+style='margin-left:9.0pt'><span style='mso-tab-count:2'> </span><span
+class=SpellE><span class=GramE>sb.append</span></span><span class=GramE>(</span><span
+class=SpellE>LiteralUnlimitedNatural.UNLIMITED</span> == end2UpperBound</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span>? "*"</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span>: <span
-class=GramE>String.valueOf(</span>end2UpperBound));</pre><pre style='margin-left:
-9.0pt'><span style='mso-tab-count:2'> </span><span class=GramE>sb.append(</span>"]");</pre><pre
+class=SpellE><span class=GramE>String.valueOf</span></span><span class=GramE>(</span>end2UpperBound));</pre><pre
+style='margin-left:9.0pt'><span style='mso-tab-count:2'> </span><span
+class=SpellE><span class=GramE>sb.append</span></span><span class=GramE>(</span>"]");</pre><pre
style='margin-left:9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'> </span><span class=GramE>sb.append(</span>" created.");</pre><pre
+style='mso-tab-count:2'> </span><span class=SpellE><span
+class=GramE>sb.append</span></span><span class=GramE>(</span>" created.");</pre><pre
style='margin-left:9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'> </span><span class=GramE>out(</span>sb.toString());</pre><pre
-style='margin-left:9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'> </span><span class=GramE>return</span> association;</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:1'> </span>}</pre>
+style='mso-tab-count:2'> </span><span class=GramE>out(</span><span
+class=SpellE>sb.toString</span>());</pre><pre style='margin-left:9.0pt'><o:p> </o:p></pre><pre
+style='margin-left:9.0pt'><span style='mso-tab-count:2'> </span><span
+class=GramE>return</span> association;</pre><pre style='margin-left:9.0pt'><span
+style='mso-tab-count:1'> </span>}</pre>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Here
we call a convenience factory method on the first end type that creates an
association (and its ends) between it and another type <img border=0 width=24
-height=13 id="_x0000_i1084" src="../../../../images/tag_1.gif" align=CENTER><span
+height=13 id="_x0000_i1075" src="../../../../images/tag_1.gif" align=CENTER><span
style='mso-spacerun:yes'> </span>as one of its siblings (i.e. as a child of its
package namespace) and with the specified upper bounds, lower bounds, role
-names, aggregation kinds, and navigabilities. The owners of the association
-ends (properties) are based on the specified navigabilities navigable ends
-are owned by the end type if allowed, otherwise they are owned by the
-association; non-navigable ends are owned by the association.</p>
+names, aggregation kinds, and <span class=SpellE>navigabilities</span>. The
+owners of the association ends (properties) are based on the specified <span
+class=SpellE>navigabilities</span> navigable ends are owned by the end type
+if allowed, otherwise they are owned by the association; non-navigable ends are
+owned by the association.</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=62 height=13 id="_x0000_i1085" src="../../../../images/tip.gif"><span
-style='mso-spacerun:yes'> </span>The <code>NamedElement.SEPARATOR</code> constant
-represents the standard separator (<b>::</b>) used in qualified names.</p>
+border=0 width=62 height=13 id="_x0000_i1076" src="../../../../images/tip.gif"><span
+style='mso-spacerun:yes'> </span>The <span class=SpellE><code>NamedElement.SEPARATOR</code></span>
+constant represents the standard separator (<b>::</b>) used in qualified names.</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>OK,
lets see this method in action. For example, we could create a unidirectional
-composition (composite association) between classes Supplier and
-PurchaseOrder in model epo2 as follows:</p>
+composition (composite association) between classes Supplier and <span
+class=SpellE>PurchaseOrder</span> in model epo2 as follows:</p>
<pre style='margin-left:9.0pt'><span style='mso-tab-count:2'> </span><span
-class=GramE>createAssociation(</span>supplierClass, true,</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span>AggregationKind.COMPOSITE_LITERAL, "orders", 0,</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span>LiteralUnlimitedNatural.UNLIMITED, purchaseOrderClass,</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span>false, AggregationKind.NONE_LITERAL, "", 1, 1);</pre>
+class=SpellE><span class=GramE>createAssociation</span></span><span
+class=GramE>(</span><span class=SpellE>supplierClass</span>, true,</pre><pre
+style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span><span
+class=SpellE>AggregationKind.COMPOSITE_LITERAL</span>, "orders", 0,</pre><pre
+style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span><span
+class=SpellE>LiteralUnlimitedNatural.UNLIMITED</span>, <span class=SpellE>purchaseOrderClass</span>,</pre><pre
+style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span>false, <span
+class=SpellE>AggregationKind.NONE_LITERAL</span>, "", 1, 1);</pre>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=61 height=13 id="_x0000_i1086" src="../../../../images/tryit.gif"><span
+border=0 width=61 height=13 id="_x0000_i1077" src="../../../../images/tryit.gif"><span
style='mso-spacerun:yes'> </span>Write code to programmatically create the
remaining associations from the ExtendedPO2 model.</p>
@@ -1278,36 +1475,41 @@
resource with a specified URI.</p>
<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'> </span><span
-class=GramE>protected</span> static void save(org.eclipse.uml2.uml.Package package_, URI uri) {</pre><pre
-style='margin-left:9.0pt'><img border=0 width=24 height=13 id="_x0000_i1087"
-src="../../../../images/tag_1.gif" align=CENTER><span style='mso-tab-count:2'> </span>Resource resource = new <span
-class=GramE>ResourceSetImpl(</span>).createResource(uri);</pre><pre
-style='margin-left:9.0pt'><img border=0 width=24 height=13 id="_x0000_i1088"
-src="../../../../images/tag_2.gif" align=CENTER><span style='mso-tab-count:2'> </span><span
-class=GramE>resource.getContents(</span>).add(package_);</pre><pre
+class=GramE>protected</span> static void save(org.eclipse.uml2.uml.Package package_, URI <span
+class=SpellE>uri</span>) {</pre><pre style='margin-left:9.0pt'><img border=0
+width=24 height=13 id="_x0000_i1078" src="../../../../images/tag_1.gif"
+align=CENTER><span style='mso-tab-count:2'> </span>Resource <span
+class=SpellE>resource</span> = new <span class=SpellE><span class=GramE>ResourceSetImpl</span></span><span
+class=GramE>(</span>).<span class=SpellE>createResource</span>(<span
+class=SpellE>uri</span>);</pre><pre style='margin-left:9.0pt'><img border=0
+width=24 height=13 id="_x0000_i1079" src="../../../../images/tag_2.gif"
+align=CENTER><span style='mso-tab-count:2'> </span><span class=SpellE><span
+class=GramE>resource.getContents</span></span><span class=GramE>(</span>).add(package_);</pre><pre
style='margin-left:9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><span
style='mso-tab-count:2'> </span><span class=GramE>try</span> {</pre><pre
-style='margin-left:9.0pt'><img border=0 width=24 height=13 id="_x0000_i1089"
-src="../../../../images/tag_3.gif" align=CENTER><span style='mso-tab-count:3'> </span><span
-class=GramE>resource.save(</span>null);</pre><pre style='margin-left:9.0pt'><span
+style='margin-left:9.0pt'><img border=0 width=24 height=13 id="_x0000_i1080"
+src="../../../../images/tag_3.gif" align=CENTER><span style='mso-tab-count:
+3'> </span><span class=SpellE><span class=GramE>resource.save</span></span><span
+class=GramE>(</span>null);</pre><pre style='margin-left:9.0pt'><span
style='mso-tab-count:3'> </span><span class=GramE>out(</span>"Done.");</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:2'> </span>} catch (IOException ioe) {</pre><pre
-style='margin-left:9.0pt'><img border=0 width=24 height=13 id="_x0000_i1090"
-src="../../../../images/tag_4.gif" align=CENTER><span style='mso-tab-count:3'> </span><span
-class=GramE>err(</span>ioe.getMessage());</pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'> </span>}</pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:1'> </span>}</pre>
+style='margin-left:9.0pt'><span style='mso-tab-count:2'> </span>} catch (<span
+class=SpellE>IOException</span> <span class=SpellE>ioe</span>) {</pre><pre
+style='margin-left:9.0pt'><img border=0 width=24 height=13 id="_x0000_i1081"
+src="../../../../images/tag_4.gif" align=CENTER><span style='mso-tab-count:
+3'> </span><span class=GramE>err(</span><span class=SpellE>ioe.getMessage</span>());</pre><pre
+style='margin-left:9.0pt'><span style='mso-tab-count:2'> </span>}</pre><pre
+style='margin-left:9.0pt'><span style='mso-tab-count:1'> </span>}</pre>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Here
-we create a resource set <img border=0 width=24 height=13 id="_x0000_i1091"
+we create a resource set <img border=0 width=24 height=13 id="_x0000_i1082"
src="../../../../images/tag_1.gif" align=CENTER><span
style='mso-spacerun:yes'> </span>and a resource with the specified URI, add the
package to the resources contents <img border=0 width=24 height=13
-id="_x0000_i1092" src="../../../../images/tag_2.gif" align=CENTER>, and ask the
-resource to save itself <img border=0 width=24 height=13 id="_x0000_i1093"
+id="_x0000_i1083" src="../../../../images/tag_2.gif" align=CENTER>, and ask the
+resource to save itself <img border=0 width=24 height=13 id="_x0000_i1084"
src="../../../../images/tag_3.gif" align=CENTER><span
style='mso-spacerun:yes'> </span>using the default options. If an exception
-occurs, we notify the user <img border=0 width=24 height=13 id="_x0000_i1094"
+occurs, we notify the user <img border=0 width=24 height=13 id="_x0000_i1085"
src="../../../../images/tag_4.gif" align=CENTER><span
style='mso-spacerun:yes'> </span>via our handy utility method.</p>
@@ -1317,16 +1519,19 @@
argument) as follows:</p>
<pre style='margin-left:9.0pt'><span style='mso-tab-count:2'> </span><span
-class=GramE>save(</span>epo2Model, URI.createURI(args[0]).appendSegment("ExtendedPO2")</pre><pre
+class=GramE>save(</span>epo2Model, <span class=SpellE>URI.createURI</span>(<span
+class=SpellE>args</span>[0]).<span class=SpellE>appendSegment</span>("ExtendedPO2")</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span>.<span
-class=GramE>appendFileExtension(</span>UMLResource.FILE_EXTENSION));</pre>
+class=SpellE><span class=GramE>appendFileExtension</span></span><span
+class=GramE>(</span><span class=SpellE>UMLResource.FILE_EXTENSION</span>));</pre>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=62 height=13 id="_x0000_i1095" src="../../../../images/tip.gif"><span
-style='mso-spacerun:yes'> </span>The <code>UMLResource.FILE_EXTENSION</code>
-constant represents the file extension for UML resources (<code>.uml</code>).
-Note that the <code>UMLResource</code> interface contains a number of constants
-that you will find useful when working with UML resources.</p>
+border=0 width=62 height=13 id="_x0000_i1086" src="../../../../images/tip.gif"><span
+style='mso-spacerun:yes'> </span>The <span class=SpellE><code>UMLResource.FILE_EXTENSION</code></span>
+constant represents the file extension for UML resources (<code>.<span
+class=SpellE>uml</span></code>). Note that the <span class=SpellE><code>UMLResource</code></span>
+interface contains a number of constants that you will find useful when working
+with UML resources.</p>
<h2 style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Conclusion</h2>
@@ -1337,15 +1542,17 @@
Stay tuned for more articles on how to develop tools with UML2.</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>For
-more information on UML2, visit the <a href="http://www.eclipse.org/modeling/mdt/?project=uml2#uml2">home
-page</a> or join the <a href="news://news.eclipse.org/eclipse.modeling.mdt.uml2">newsgroup</a>.</p>
+more information on UML2, visit the <a
+href="http://www.eclipse.org/modeling/mdt/?project=uml2#uml2">home page</a> or
+join the <a href="news://news.eclipse.org/eclipse.modeling.mdt.uml2">newsgroup</a>.</p>
<h2 style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>References</h2>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
-class=GramE>[1] F. Budinsky, D. Steinberg, E. Merks, R. Ellersick, and T. J.
-Grose.</span> <i style='mso-bidi-font-style:normal'>Eclipse Modeling Framework</i>.
-Pearson Education, Inc., Boston, MA, 2003.</p>
+class=GramE>[1] F. <span class=SpellE>Budinsky</span>, D. Steinberg, E. <span
+class=SpellE>Merks</span>, R. <span class=SpellE>Ellersick</span>, and T. J. <span
+class=SpellE>Grose</span>.</span> <i style='mso-bidi-font-style:normal'>Eclipse
+Modeling Framework</i>. Pearson Education, Inc., Boston, MA, 2003.</p>
<h2 style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Source
Code</h2>
diff --git a/docs/articles/Getting_Started_with_UML2/article_files/filelist.xml b/docs/articles/Getting_Started_with_UML2/article_files/filelist.xml
index 7dbd4da..4ae358d 100644
--- a/docs/articles/Getting_Started_with_UML2/article_files/filelist.xml
+++ b/docs/articles/Getting_Started_with_UML2/article_files/filelist.xml
@@ -1,7 +1,13 @@
<xml xmlns:o="urn:schemas-microsoft-com:office:office">
<o:MainFile HRef="../article.html"/>
- <o:File HRef="image001.emz"/>
+ <o:File HRef="image001.png"/>
+ <o:File HRef="image022.jpg"/>
+ <o:File HRef="image021.emz"/>
<o:File HRef="image002.gif"/>
+ <o:File HRef="image023.png"/>
+ <o:File HRef="image024.jpg"/>
+ <o:File HRef="image025.png"/>
+ <o:File HRef="image026.jpg"/>
<o:File HRef="image003.png"/>
<o:File HRef="image004.jpg"/>
<o:File HRef="image005.png"/>
@@ -16,9 +22,5 @@
<o:File HRef="image014.jpg"/>
<o:File HRef="image015.png"/>
<o:File HRef="image016.jpg"/>
- <o:File HRef="image017.png"/>
- <o:File HRef="image018.jpg"/>
- <o:File HRef="image019.png"/>
- <o:File HRef="image020.jpg"/>
<o:File HRef="filelist.xml"/>
</xml>
\ No newline at end of file
diff --git a/docs/articles/Getting_Started_with_UML2/article_files/image001.png b/docs/articles/Getting_Started_with_UML2/article_files/image001.png
new file mode 100644
index 0000000..0b3545b
--- /dev/null
+++ b/docs/articles/Getting_Started_with_UML2/article_files/image001.png
Binary files differ
diff --git a/docs/articles/Getting_Started_with_UML2/article_files/image003.png b/docs/articles/Getting_Started_with_UML2/article_files/image003.png
index d98857d..300200c 100644
--- a/docs/articles/Getting_Started_with_UML2/article_files/image003.png
+++ b/docs/articles/Getting_Started_with_UML2/article_files/image003.png
Binary files differ
diff --git a/docs/articles/Getting_Started_with_UML2/article_files/image004.jpg b/docs/articles/Getting_Started_with_UML2/article_files/image004.jpg
index 5dfccca..896b235 100644
--- a/docs/articles/Getting_Started_with_UML2/article_files/image004.jpg
+++ b/docs/articles/Getting_Started_with_UML2/article_files/image004.jpg
Binary files differ
diff --git a/docs/articles/Getting_Started_with_UML2/article_files/image005.png b/docs/articles/Getting_Started_with_UML2/article_files/image005.png
index e32b650..33de634 100644
--- a/docs/articles/Getting_Started_with_UML2/article_files/image005.png
+++ b/docs/articles/Getting_Started_with_UML2/article_files/image005.png
Binary files differ
diff --git a/docs/articles/Getting_Started_with_UML2/article_files/image006.jpg b/docs/articles/Getting_Started_with_UML2/article_files/image006.jpg
index 97a923f..7849c8f 100644
--- a/docs/articles/Getting_Started_with_UML2/article_files/image006.jpg
+++ b/docs/articles/Getting_Started_with_UML2/article_files/image006.jpg
Binary files differ
diff --git a/docs/articles/Getting_Started_with_UML2/article_files/image007.png b/docs/articles/Getting_Started_with_UML2/article_files/image007.png
index aafd7f1..6bcc4a6 100644
--- a/docs/articles/Getting_Started_with_UML2/article_files/image007.png
+++ b/docs/articles/Getting_Started_with_UML2/article_files/image007.png
Binary files differ
diff --git a/docs/articles/Getting_Started_with_UML2/article_files/image008.jpg b/docs/articles/Getting_Started_with_UML2/article_files/image008.jpg
index b3133af..f53051b 100644
--- a/docs/articles/Getting_Started_with_UML2/article_files/image008.jpg
+++ b/docs/articles/Getting_Started_with_UML2/article_files/image008.jpg
Binary files differ
diff --git a/docs/articles/Getting_Started_with_UML2/article_files/image009.png b/docs/articles/Getting_Started_with_UML2/article_files/image009.png
index 1a78b83..412c9e8 100644
--- a/docs/articles/Getting_Started_with_UML2/article_files/image009.png
+++ b/docs/articles/Getting_Started_with_UML2/article_files/image009.png
Binary files differ
diff --git a/docs/articles/Getting_Started_with_UML2/article_files/image010.jpg b/docs/articles/Getting_Started_with_UML2/article_files/image010.jpg
index 2d146d0..362743c 100644
--- a/docs/articles/Getting_Started_with_UML2/article_files/image010.jpg
+++ b/docs/articles/Getting_Started_with_UML2/article_files/image010.jpg
Binary files differ
diff --git a/docs/articles/Getting_Started_with_UML2/article_files/image011.png b/docs/articles/Getting_Started_with_UML2/article_files/image011.png
index 7a3e8b7..358bad7 100644
--- a/docs/articles/Getting_Started_with_UML2/article_files/image011.png
+++ b/docs/articles/Getting_Started_with_UML2/article_files/image011.png
Binary files differ
diff --git a/docs/articles/Getting_Started_with_UML2/article_files/image012.jpg b/docs/articles/Getting_Started_with_UML2/article_files/image012.jpg
index 363777b..4c28e00 100644
--- a/docs/articles/Getting_Started_with_UML2/article_files/image012.jpg
+++ b/docs/articles/Getting_Started_with_UML2/article_files/image012.jpg
Binary files differ
diff --git a/docs/articles/Getting_Started_with_UML2/article_files/image013.png b/docs/articles/Getting_Started_with_UML2/article_files/image013.png
index 348963f..d180a97 100644
--- a/docs/articles/Getting_Started_with_UML2/article_files/image013.png
+++ b/docs/articles/Getting_Started_with_UML2/article_files/image013.png
Binary files differ
diff --git a/docs/articles/Getting_Started_with_UML2/article_files/image014.jpg b/docs/articles/Getting_Started_with_UML2/article_files/image014.jpg
index 0be2e0d..896f777 100644
--- a/docs/articles/Getting_Started_with_UML2/article_files/image014.jpg
+++ b/docs/articles/Getting_Started_with_UML2/article_files/image014.jpg
Binary files differ
diff --git a/docs/articles/Getting_Started_with_UML2/article_files/image015.png b/docs/articles/Getting_Started_with_UML2/article_files/image015.png
index 98a77d8..45d29bb 100644
--- a/docs/articles/Getting_Started_with_UML2/article_files/image015.png
+++ b/docs/articles/Getting_Started_with_UML2/article_files/image015.png
Binary files differ
diff --git a/docs/articles/Getting_Started_with_UML2/article_files/image016.jpg b/docs/articles/Getting_Started_with_UML2/article_files/image016.jpg
index dc5def5..20ed973 100644
--- a/docs/articles/Getting_Started_with_UML2/article_files/image016.jpg
+++ b/docs/articles/Getting_Started_with_UML2/article_files/image016.jpg
Binary files differ
diff --git a/docs/articles/Getting_Started_with_UML2/article_files/image017.png b/docs/articles/Getting_Started_with_UML2/article_files/image017.png
deleted file mode 100644
index 038cc17..0000000
--- a/docs/articles/Getting_Started_with_UML2/article_files/image017.png
+++ /dev/null
Binary files differ
diff --git a/docs/articles/Getting_Started_with_UML2/article_files/image018.jpg b/docs/articles/Getting_Started_with_UML2/article_files/image018.jpg
deleted file mode 100644
index 9632fb3..0000000
--- a/docs/articles/Getting_Started_with_UML2/article_files/image018.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/articles/Getting_Started_with_UML2/article_files/image019.png b/docs/articles/Getting_Started_with_UML2/article_files/image019.png
deleted file mode 100644
index c52edff..0000000
--- a/docs/articles/Getting_Started_with_UML2/article_files/image019.png
+++ /dev/null
Binary files differ
diff --git a/docs/articles/Getting_Started_with_UML2/article_files/image020.jpg b/docs/articles/Getting_Started_with_UML2/article_files/image020.jpg
deleted file mode 100644
index 83fa7c1..0000000
--- a/docs/articles/Getting_Started_with_UML2/article_files/image020.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/articles/Getting_Started_with_UML2/article_files/image001.emz b/docs/articles/Getting_Started_with_UML2/article_files/image021.emz
similarity index 100%
rename from docs/articles/Getting_Started_with_UML2/article_files/image001.emz
rename to docs/articles/Getting_Started_with_UML2/article_files/image021.emz
Binary files differ
diff --git a/docs/articles/Getting_Started_with_UML2/article_files/image022.jpg b/docs/articles/Getting_Started_with_UML2/article_files/image022.jpg
new file mode 100644
index 0000000..6a6b7c5
--- /dev/null
+++ b/docs/articles/Getting_Started_with_UML2/article_files/image022.jpg
Binary files differ
diff --git a/docs/articles/Getting_Started_with_UML2/article_files/image023.png b/docs/articles/Getting_Started_with_UML2/article_files/image023.png
new file mode 100644
index 0000000..79f3757
--- /dev/null
+++ b/docs/articles/Getting_Started_with_UML2/article_files/image023.png
Binary files differ
diff --git a/docs/articles/Getting_Started_with_UML2/article_files/image024.jpg b/docs/articles/Getting_Started_with_UML2/article_files/image024.jpg
new file mode 100644
index 0000000..327adba
--- /dev/null
+++ b/docs/articles/Getting_Started_with_UML2/article_files/image024.jpg
Binary files differ
diff --git a/docs/articles/Getting_Started_with_UML2/article_files/image025.png b/docs/articles/Getting_Started_with_UML2/article_files/image025.png
new file mode 100644
index 0000000..997e89e
--- /dev/null
+++ b/docs/articles/Getting_Started_with_UML2/article_files/image025.png
Binary files differ
diff --git a/docs/articles/Getting_Started_with_UML2/article_files/image026.jpg b/docs/articles/Getting_Started_with_UML2/article_files/image026.jpg
new file mode 100644
index 0000000..37b9d32
--- /dev/null
+++ b/docs/articles/Getting_Started_with_UML2/article_files/image026.jpg
Binary files differ