Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKenn Hussey2019-01-07 14:20:16 +0000
committerKenn Hussey2019-01-07 14:20:16 +0000
commit4a6715383146340a72c9a70a0015e5c74ab61446 (patch)
tree25e189feaea113dc1ff6d0fa15d6d5349be476df
parentd13e6ce73526166b1da289b15fcd6f398e145d82 (diff)
downloadmdt-4a6715383146340a72c9a70a0015e5c74ab61446.tar.gz
mdt-4a6715383146340a72c9a70a0015e5c74ab61446.tar.xz
mdt-4a6715383146340a72c9a70a0015e5c74ab61446.zip
[543170] Adding redirects in stale articles.
-rw-r--r--uml2/docs/articles/Getting_Started_with_UML2/article.html592
-rw-r--r--uml2/docs/articles/Introduction_to_UML2_Profiles/article.html848
2 files changed, 722 insertions, 718 deletions
diff --git a/uml2/docs/articles/Getting_Started_with_UML2/article.html b/uml2/docs/articles/Getting_Started_with_UML2/article.html
index 25c5bd2..26cd33e 100644
--- a/uml2/docs/articles/Getting_Started_with_UML2/article.html
+++ b/uml2/docs/articles/Getting_Started_with_UML2/article.html
@@ -247,7 +247,7 @@ p.MsoNormal
<div class=Section1>
<p class=MsoNormal align=right style='text-align:right'><span style='font-size:
-10.0pt'>Copyright © 2004, 2008 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>
@@ -264,6 +264,8 @@ style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p>
</div>
+<h3><span style='color:red'><b>NOTE that this article is obsolete; please see <a href="http://wiki.eclipse.org/MDT/UML2/Getting_Started_with_UML2">here</a> instead.</b></span></h3>
+
<h1><img width=120 height=86 id="_x0000_i1025" src="../../../../images/Idea.jpg"
align=CENTER></h1>
@@ -286,8 +288,8 @@ both programmatically and by using the sample UML editor.<o:p></o:p></span></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"
+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>
@@ -308,29 +310,29 @@ class=MsoHyperlink><a
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.2</a></span>
-installed.<span style='mso-spacerun:yes'>  </span></p>
+installed.<span style='mso-spacerun:yes'>� </span></p>
<p>You can either download the zips individually and expand them out or follow the
-steps below: <span style='mso-spacerun:yes'> </span></p>
+steps below: <span style='mso-spacerun:yes'>�</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'>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>
+style='mso-spacerun:yes'>�</span>Download and run Eclipse 3.4</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'>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> &gt; <b>Software
-Updates … </b>menu</span></p>
+style='mso-spacerun:yes'>�</span>Select the <b>Help</b> &gt; <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
+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"
@@ -363,15 +365,15 @@ src="article_files/image022.jpg" v:shapes="_x0000_i1087"><![endif]></p>
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
+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='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>
@@ -381,9 +383,9 @@ style='font-weight:normal'>.</span></span></b></span></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, we’ll look at what’s involved in creating some of
-the more common elements that make up a model. For each type of element, we’ll
+Using a simple model (the ExtendedPO2 model, shamelessly �borrowed� from the EMF
+�bible� [1]) as an example, we�ll look at what�s involved in creating some of
+the more common elements that make up a model. For each type of element, we�ll
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>
@@ -396,13 +398,13 @@ src="article_files/image002.gif" v:shapes="_x0000_i1027"><![endif]></p>
<h2>Getting Started</h2>
-<p>Before getting started, you’ll need to create a simple project in your
-workspace. This project will serve as the container for the model that we’ll
+<p>Before getting started, you�ll need to create a simple project in your
+workspace. This project will serve as the container for the model that we�ll
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 &gt; Open Perspective
-&gt; <span class=GramE>Other</span>…</b> menu item.</p>
+&gt; <span class=GramE>Other</span>�</b> menu item.</p>
<p style='margin-left:27.5pt'>2) Select the <b>Resource</b> perspective and
press the <b>OK</b> button.</p>
@@ -413,8 +415,8 @@ menu item.</p>
<p style='margin-left:27.5pt'>4) Select the <b>Project</b> wizard from the <b>General</b>
category and press the <b>Next &gt;</b> button.</p>
-<p style='margin-left:27.5pt'>5) Enter a project name (i.e. “Getting Started
-with UML2”) and press the <b>Finish</b> button.</p>
+<p style='margin-left:27.5pt'>5) Enter a project name (i.e. �Getting Started
+with UML2�) and press the <b>Finish</b> button.</p>
<p>At this point your workspace should look something like this:</p>
@@ -425,47 +427,47 @@ with UML2”) and press the <b>Finish</b> button.</p>
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, we’ll assume
-that you’ve created a class (named, say, “GettingStartedWithUML2”) in which you
-can write some code to construct our sample model. The code snippets we’ll show
-assume you’ve defined the following utility methods to give the user
-information on the program’s status:</p>
+follow along with the programmatic approach to creating models, we�ll assume
+that you�ve created a class (named, say, �GettingStartedWithUML2�) in which you
+can write some code to construct our sample model. The code snippets we�ll show
+assume you�ve defined the following utility methods to give the user
+information on the program�s status:</p>
<pre style='margin-left:9.0pt'><img border=0 width=24 height=14
id="_x0000_i1028" src="../../../../images/tag_1.gif" align=CENTER><span
-style='mso-tab-count:1'>  </span><span class=GramE>public</span> static <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>&nbsp;</o:p></pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:1'>     </span><span
+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>&nbsp;</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='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
+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>&nbsp;</o:p></pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:1'>     </span><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>&nbsp;</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_3.gif" align=CENTER><span style='mso-tab-count:
-2'>         </span><span class=SpellE><span class=GramE>System.err.println</span></span><span
+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>
+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_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 system’s output <span class=GramE>stream </span><img
+style='mso-spacerun:yes'>�</span>can be used to enable or disable verbose
+information printed to the system�s output <span class=GramE>stream </span><img
border=0 width=24 height=14 id="_x0000_i1032" src="../../../../images/tag_2.gif"
-align=CENTER>. Errors will always be printed to the system’s error <span
+align=CENTER>. Errors will always be printed to the system�s error <span
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
<span class=SpellE>righty</span> then! In each of the following subsections,
-we’ll look at how to create a different kind of UML element, starting with
+we�ll 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
@@ -486,7 +488,7 @@ Select the <b>UML Model</b> wizard from the <b>Example EMF Model Creation
Wizards</b> category and press the <b>Next &gt;</b> button.</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 file name (i.e. “ExtendedPO2.uml”) and press the <b>Next &gt;</b>
+Enter a file name (i.e. �ExtendedPO2.uml�) and press the <b>Next &gt;</b>
button.</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)
@@ -500,7 +502,7 @@ Select the <b>Window &gt; Show View &gt; Properties</b> menu item.</p>
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'>7)
-Enter a value (i.e. “epo2”) for the <b>Name</b> property in the <b>Properties</b>
+Enter a value (i.e. �epo2�) 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
@@ -512,59 +514,59 @@ this point your workspace should look something like this:</p>
</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'>Let’s
+<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'>Let�s
look at how to perform the same task using Java code. The code snippet below
shows a method that programmatically creates and returns a model with a
specified name.</p>
-<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'>     </span><span
+<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'>���� </span><span
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
+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
+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>&nbsp;</o:p></pre><pre
style='margin-left:9.0pt'><img border=0 width=24 height=14 id="_x0000_i1036"
src="../../../../images/tag_3.gif" align=CENTER><span style='mso-tab-count:
-2'>         </span><span class=GramE>out(</span>&quot;Model '&quot; + <span
+2'>�������� </span><span class=GramE>out(</span>&quot;Model '&quot; + <span
class=SpellE>model.getQualifiedName</span>() + &quot;' created.&quot;);</pre><pre
style='margin-left:9.0pt'><o:p>&nbsp;</o:p></pre><pre style='margin-left:9.0pt'><img
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>
+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_i1038" src="../../../../images/tag_1.gif" align=CENTER><span
-style='mso-spacerun:yes'> </span>to create a model, and we set its <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_i1039"
src="../../../../images/tag_2.gif" align=CENTER>. Then, we output information <img
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
+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_i1041" src="../../../../images/tag_4.gif"
-align=CENTER><span style='mso-spacerun:yes'> </span>the model. You’ll notice
+align=CENTER><span style='mso-spacerun:yes'>�</span>the model. You�ll 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
+� 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_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>
-named element’s containing namespaces. Note that the qualified name of a named
+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>
+named element�s containing namespaces. Note that the qualified name of a named
element is only defined if all of its containing namespaces have non-empty
-“simple” names.</p>
+�simple� 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,
-let’s see this method in action. For example, we could create a model named
-‘epo2’ as follows:</p>
+let�s see this method in action. For example, we could create a model named
+�epo2� as follows:</p>
-<pre style='margin-left:9.0pt'><span style='mso-tab-count:2'>            </span>Model epo2Model = <span
+<pre style='margin-left:9.0pt'><span style='mso-tab-count:2'>����������� </span>Model epo2Model = <span
class=SpellE><span class=GramE>createModel</span></span><span class=GramE>(</span>&quot;epo2&quot;);</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
@@ -586,45 +588,45 @@ Right-click and select the <b>New Child &gt; Packaged Element Package</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. “bar”) for the <b>Name</b> property in the <b>Properties</b>
+Enter a value (e.g. �bar�) 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'>We
-don’t actually need to create a package because our sample model doesn’t
-contain any… except of course for the root package (i.e. the model). That’s
-right – a model is a type of package.</p>
+don�t actually need to create a package because our sample model doesn�t
+contain any� except of course for the root package (i.e. the model). That�s
+right � a model is a type of package.</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'>Let’s
+<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'>Let�s
look at how to perform the same task using Java code. The code snippet below
shows a method that programmatically creates and returns a package with a
specified name in a specified nesting package.</p>
-<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'>     </span><span
+<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'>���� </span><span
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
+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
+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=SpellE><span class=GramE>createNestedPackage</span></span><span
class=GramE>(</span>name);</pre><pre style='margin-left:9.0pt'><o:p>&nbsp;</o:p></pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:2'>            </span><span
+style='margin-left:9.0pt'><span style='mso-tab-count:2'>����������� </span><span
class=GramE>out(</span>&quot;Package '&quot; + <span class=SpellE>package_.getQualifiedName</span>() + &quot;' created.&quot;);</pre><pre
style='margin-left:9.0pt'><o:p>&nbsp;</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>
+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, we’re making use of
+instead of asking the factory to create the package for us, we�re making use of
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>
+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_i1045" src="../../../../images/tip.gif"><span
-style='mso-spacerun:yes'> </span>In UML2, a factory method exists for every feature
+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>)
@@ -641,10 +643,10 @@ 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>
<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,
-let’s see this method in action. For example, we could create a package named
-‘bar’ in nesting package ‘<span class=SpellE>foo</span>’ as follows:</p>
+let�s see this method in action. For example, we could create a package named
+�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
+<pre style='margin-left:9.0pt'><span style='mso-tab-count:2'>����������� </span><span
class=GramE>org.eclipse.uml2.uml.Package</span> <span class=SpellE>barPackage</span> = <span
class=SpellE>createPackage</span>(<span class=SpellE>fooPackage</span>, &quot;bar&quot;);</pre>
@@ -653,7 +655,7 @@ Primitive Types</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
primitive type defines a predefined data type, without any relevant
-substructure. Primitive types used in UML™ itself include <code>Boolean</code>,
+substructure. Primitive types used in UML� itself include <code>Boolean</code>,
<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>
@@ -666,12 +668,12 @@ Right-click and select the <b>New Child &gt; Packaged Element &gt; 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. “<span class=SpellE>int</span>”) for the <b>Name</b>
+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_i1046" src="../../../../images/tryit.gif"><span
-style='mso-spacerun:yes'> </span>Create the remaining primitive types from the
+style='mso-spacerun:yes'>�</span>Create the remaining primitive types from the
ExtendedPO2 model using the UML editor.</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
@@ -683,50 +685,50 @@ this point your workspace should look something like this:</p>
</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'>Let’s
+<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'>Let�s
look at how to perform the same task using Java code. The code snippet below
shows a method that programmatically creates and returns a primitive type with
a specified name in a specified package.</p>
-<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'>     </span><span
+<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'>���� </span><span
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='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
+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
+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>&nbsp;</o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'>            </span><span class=GramE>out(</span>&quot;Primitive type '&quot; + <span
+style='mso-tab-count:2'>����������� </span><span class=GramE>out(</span>&quot;Primitive type '&quot; + <span
class=SpellE>primitiveType.getQualifiedName</span>()</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:3'>                    </span>+ &quot;' created.&quot;);</pre><pre
+style='margin-left:9.0pt'><span style='mso-tab-count:3'>������������������� </span>+ &quot;' created.&quot;);</pre><pre
style='margin-left:9.0pt'><o:p>&nbsp;</o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'>            </span><span class=GramE>return</span> <span
+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>
+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=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
+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,
-let’s see this method in action. For example, we could create a primitive type
-named ‘<span class=SpellE>int</span>’ in model ‘epo2’ as follows:</p>
+let�s see this method in action. For example, we could create a primitive type
+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><span
+<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, &quot;<span class=SpellE>int</span>&quot;);</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_i1049" src="../../../../images/tryit.gif"><span
-style='mso-spacerun:yes'> </span>Write code to programmatically create the
+style='mso-spacerun:yes'>�</span>Write code to programmatically create the
remaining primitive types from the ExtendedPO2 model.</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
@@ -745,7 +747,7 @@ Right-click and select the <b>New Child &gt; Packaged Element &gt; Enumeration</
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. “<span class=SpellE>OrderStatus</span>”) for the <b>Name</b>
+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
@@ -757,42 +759,42 @@ this point your workspace should look something like this:</p>
</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'>Let’s
+<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'>Let�s
look at how to perform the same task using Java code. The code snippet below
shows a method that programmatically creates and returns an enumeration with a
specified name in a specified package.</p>
-<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'>     </span><span
+<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'>���� </span><span
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'><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>Enumeration <span class=SpellE>enumeration</span> = (Enumeration) package_</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:3'>                    </span>.<span
+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=SpellE><span class=GramE>createOwnedEnumeraton</span></span><span
class=GramE>(</span>name);</pre><pre style='margin-left:9.0pt'><o:p>&nbsp;</o:p></pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:2'>            </span><span
+style='margin-left:9.0pt'><span style='mso-tab-count:2'>����������� </span><span
class=GramE>out(</span>&quot;Enumeration '&quot; + <span class=SpellE>enumeration.getQualifiedName</span>() + &quot;' created.&quot;);</pre><pre
style='margin-left:9.0pt'><o:p>&nbsp;</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>
+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=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
+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,
-let’s see this method in action. For example, we could create an enumeration
-named ‘<span class=SpellE>OrderStatus</span>’ in model ‘epo2’ as follows:</p>
+let�s see this method in action. For example, we could create an enumeration
+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 <span
+<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>&quot;<span
+style='margin-left:9.0pt'><span style='mso-tab-count:3'>������������������� </span>&quot;<span
class=SpellE>OrderStatus</span>&quot;);</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
@@ -811,12 +813,12 @@ Right-click and select the <b>New Child &gt; Owned Literal &gt; 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>
+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_i1052" src="../../../../images/tryit.gif"><span
-style='mso-spacerun:yes'> </span>Create the remaining enumeration literals from
+style='mso-spacerun:yes'>�</span>Create the remaining enumeration literals from
the ExtendedPO2 model using the UML editor.</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
@@ -828,51 +830,51 @@ this point your workspace should look something like this:</p>
</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'>Let’s
+<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'>Let�s
look at how to perform the same task using Java code. The code snippet below
shows a method that programmatically creates and returns an enumeration literal
with a specified name in a specified enumeration.</p>
-<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'>     </span><span
+<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'>���� </span><span
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
+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
+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
+style='margin-left:9.0pt'><span style='mso-tab-count:3'>������������������� </span>.<span
class=SpellE><span class=GramE>createOwnedLiteral</span></span><span
class=GramE>(</span>name);</pre><pre style='margin-left:9.0pt'><o:p>&nbsp;</o:p></pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:2'>            </span><span
+style='margin-left:9.0pt'><span style='mso-tab-count:2'>����������� </span><span
class=GramE>out(</span>&quot;Enumeration literal '&quot; + <span class=SpellE>enumerationLiteral.getQualifiedName</span>()</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:3'>                    </span>+ &quot;' created.&quot;);</pre><pre
+style='margin-left:9.0pt'><span style='mso-tab-count:3'>������������������� </span>+ &quot;' created.&quot;);</pre><pre
style='margin-left:9.0pt'><o:p>&nbsp;</o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'>            </span><span class=GramE>return</span> <span
+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>
+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=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
+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,
-let’s see this method in action. For example, we could create an enumeration
-literal named ‘Pending’ in enumeration ‘<span class=SpellE>OrderStatus</span>’
+let�s see this method in action. For example, we could create an enumeration
+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
+<pre style='margin-left:9.0pt'><span style='mso-tab-count:2'>����������� </span><span
class=SpellE><span class=GramE>createEnumerationLiteral</span></span><span
class=GramE>(</span><span class=SpellE>orderStatusEnumeration</span>, &quot;Pending&quot;);</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_i1055" src="../../../../images/tryit.gif"><span
-style='mso-spacerun:yes'> </span>Write code to programmatically create the
+style='mso-spacerun:yes'>�</span>Write code to programmatically create the
remaining enumeration literals from the ExtendedPO2 model.</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
@@ -891,12 +893,12 @@ Right-click and select the <b>New Child &gt; Packaged Element &gt; 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>
+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_i1056" src="../../../../images/tryit.gif"><span
-style='mso-spacerun:yes'> </span>Create the remaining classes from the
+style='mso-spacerun:yes'>�</span>Create the remaining classes from the
ExtendedPO2 model using the UML editor.</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
@@ -908,59 +910,59 @@ this point your workspace should look something like this:</p>
</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'>Let’s
+<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'>Let�s
look at how to perform the same task using Java code. The code snippet below
shows a method that programmatically creates and returns <span class=GramE>a(</span>n)
(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
+<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'>���� </span><span
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
+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
+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
+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>&nbsp;</o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'>            </span><span class=GramE>out(</span>&quot;Class '&quot; + <span
+style='mso-tab-count:2'>����������� </span><span class=GramE>out(</span>&quot;Class '&quot; + <span
class=SpellE>class_.getQualifiedName</span>() + &quot;' created.&quot;);</pre><pre
style='margin-left:9.0pt'><o:p>&nbsp;</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>
+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=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
+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 <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_i1059" src="../../../../images/tip.gif"><span
-style='mso-spacerun:yes'> </span>You may have noticed that we have been fully
+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 <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,
-let’s see this method in action. For example, we could create a non-abstract
-class named ‘Supplier’ in model ‘epo2’ as follows:</p>
+let�s 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
+<pre style='margin-left:9.0pt'><span style='mso-tab-count:2'>����������� </span><span
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>&quot;Supplier&quot;, false);</pre>
+style='mso-tab-count:3'>������������������� </span>&quot;Supplier&quot;, 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_i1060" src="../../../../images/tryit.gif"><span
-style='mso-spacerun:yes'> </span>Write code to programmatically create the
+style='mso-spacerun:yes'>�</span>Write code to programmatically create the
remaining classes from the ExtendedPO2 model.</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
@@ -987,7 +989,7 @@ 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
-style='mso-spacerun:yes'> </span>Create the remaining generalizations from the
+style='mso-spacerun:yes'>�</span>Create the remaining generalizations from the
ExtendedPO2 model using the UML editor.</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
@@ -999,51 +1001,51 @@ this point your workspace should look something like this:</p>
</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'>Let’s
+<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'>Let�s
look at how to perform the same task using Java code. The code snippet below
shows a method that programmatically creates and returns a generalization
between specified specific and general classifiers.</p>
-<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'>     </span><span
+<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'>���� </span><span
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
+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
+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
+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>&nbsp;</o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'>            </span><span class=GramE>out(</span>&quot;Generalization &quot; + <span
+style='mso-tab-count:2'>����������� </span><span class=GramE>out(</span>&quot;Generalization &quot; + <span
class=SpellE>specificClassifier.getQualifiedName</span>() + &quot; -&gt;&gt; &quot;</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:3'>                    </span>+ <span
+style='margin-left:9.0pt'><span style='mso-tab-count:3'>������������������� </span>+ <span
class=SpellE><span class=GramE>generalClassifier.getQualifiedName</span></span><span
class=GramE>(</span>) + &quot; created.&quot;);</pre><pre style='margin-left:
9.0pt'><o:p>&nbsp;</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>
+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_i1063"
src="../../../../images/tag_1.gif" align=CENTER><span
-style='mso-spacerun:yes'> </span>as one of its children and sets the general
+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,
-let’s see this method in action. For example, we could create a generalization
-between specific class ‘<span class=SpellE>USAddress</span>’ and general class
-‘Address’ as follows:</p>
+let�s see this method in action. For example, we could create a generalization
+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
+<pre style='margin-left:9.0pt'><span style='mso-tab-count:2'>����������� </span><span
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_i1064" src="../../../../images/tryit.gif"><span
-style='mso-spacerun:yes'> </span>Write code to programmatically create the
+style='mso-spacerun:yes'>�</span>Write code to programmatically create the
remaining generalizations from the ExtendedPO2 model.</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
@@ -1056,7 +1058,7 @@ 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_i1065" src="../../../../images/tip.gif"><span
-style='mso-spacerun:yes'> </span>The types of <code>Classifier</code> that can
+style='mso-spacerun:yes'>�</span>The types of <code>Classifier</code> that can
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>
@@ -1072,7 +1074,7 @@ Right-click and select the <b>New Child &gt; Owned Attribute &gt; 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. &quot;name”) for the <b>Name</b> property in the <b>Properties</b>
+Enter a value (i.e. &quot;name�) 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)
@@ -1085,9 +1087,9 @@ 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_i1066" src="../../../../images/tip.gif"><span
-style='mso-spacerun:yes'> </span>Lower and upper values for multiplicity
+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
+objects) in UML� 2.x. The default value for lower and upper bounds is 1, unless
a child value specification exists, in which case its value is used. Specifying
a value for the lower or upper property will create a child value specification
if none exists, or update its value if one does. Note that, to be treated as a
@@ -1096,7 +1098,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_i1067" src="../../../../images/tryit.gif"><span
-style='mso-spacerun:yes'> </span>Create the remaining attributes from the
+style='mso-spacerun:yes'>�</span>Create the remaining attributes from the
ExtendedPO2 model using the UML editor.</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
@@ -1108,72 +1110,72 @@ this point your workspace should look something like this:</p>
</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'>Let’s
+<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'>Let�s
look at how to perform the same task using Java code. The code snippet below
shows a method that programmatically creates and returns an attribute with a
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
+<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'>���� </span><span
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
+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
+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
+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>&nbsp;</o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'>            </span><span class=SpellE>StringBuffer</span> <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>&nbsp;</o:p></pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:2'>            </span><span
+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>&quot;Attribute '&quot;);</pre><pre
style='margin-left:9.0pt'><o:p>&nbsp;</o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'>            </span><span class=SpellE><span
+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>&nbsp;</o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'>            </span><span class=SpellE><span
+style='mso-tab-count:2'>����������� </span><span class=SpellE><span
class=GramE>sb.append</span></span><span class=GramE>(</span>&quot;' : &quot;);</pre><pre
style='margin-left:9.0pt'><o:p>&nbsp;</o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'>            </span><span class=SpellE><span
+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>&nbsp;</o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'>            </span><span class=SpellE><span
+style='mso-tab-count:2'>����������� </span><span class=SpellE><span
class=GramE>sb.append</span></span><span class=GramE>(</span>&quot; [&quot;);</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:2'>            </span><span
+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>lowerBound</span>);</pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'>            </span><span class=SpellE><span
+style='mso-tab-count:2'>����������� </span><span class=SpellE><span
class=GramE>sb.append</span></span><span class=GramE>(</span>&quot;..&quot;);</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:2'>            </span><span
+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> == <span class=SpellE>upperBound</span></pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:3'>                    </span>? &quot;*&quot;</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:3'>                    </span>: <span
+style='margin-left:9.0pt'><span style='mso-tab-count:3'>������������������� </span>? &quot;*&quot;</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><span
class=SpellE>upperBound</span>));</pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'>            </span><span class=SpellE><span
+style='mso-tab-count:2'>����������� </span><span class=SpellE><span
class=GramE>sb.append</span></span><span class=GramE>(</span>&quot;]&quot;);</pre><pre
style='margin-left:9.0pt'><o:p>&nbsp;</o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'>            </span><span class=SpellE><span
+style='mso-tab-count:2'>����������� </span><span class=SpellE><span
class=GramE>sb.append</span></span><span class=GramE>(</span>&quot; created.&quot;);</pre><pre
style='margin-left:9.0pt'><o:p>&nbsp;</o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'>            </span><span class=GramE>out(</span><span
+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>&nbsp;</o:p></pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:2'>            </span><span
+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: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=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
+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,
@@ -1181,23 +1183,23 @@ 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_i1070" src="../../../../images/tip.gif"><span
-style='mso-spacerun:yes'> </span>The <span class=SpellE><code>LiteralUnlimitedNatural.UNLIMITED</code></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>
+view, an asterisk (�*�) can alternatively be specified.</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,
-let’s see this method in action. For example, we could create an attribute with
-multiplicity 0<span class=GramE>..1</span> of type ‘String’ named ‘name’ in
-class ‘Supplier’ as follows:</p>
+let�s see this method in action. For example, we could create an attribute with
+multiplicity 0<span class=GramE>..1</span> of type �String� named �name� in
+class �Supplier� as follows:</p>
-<pre style='margin-left:9.0pt'><span style='mso-tab-count:2'>            </span><span
+<pre style='margin-left:9.0pt'><span style='mso-tab-count:2'>����������� </span><span
class=SpellE><span class=GramE>createAttribute</span></span><span class=GramE>(</span><span
class=SpellE>supplierClass</span>, &quot;name&quot;, <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_i1071" src="../../../../images/tryit.gif"><span
-style='mso-spacerun:yes'> </span>Write code to programmatically create the
+style='mso-spacerun:yes'>�</span>Write code to programmatically create the
remaining attributes from the ExtendedPO2 model.</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
@@ -1212,9 +1214,9 @@ 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_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 isn’t necessarily non-navigable
+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 isn�t necessarily non-navigable
as of UML2 2.0.</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
@@ -1228,7 +1230,7 @@ Right-click and select the <b>New Child &gt; Packaged Element &gt; Association</
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. “<span class=SpellE>A_orders_supplier</span>”) for the <b>Name</b>
+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)
@@ -1277,7 +1279,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_i1073" src="../../../../images/tryit.gif"><span
-style='mso-spacerun:yes'> </span>Create the remaining associations from the
+style='mso-spacerun:yes'>�</span>Create the remaining associations from the
ExtendedPO2 model using the UML editor.</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
@@ -1289,177 +1291,177 @@ this point your workspace should look something like this:</p>
</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'>Let’s
+<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'>Let�s
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 <span class=SpellE>navigabilities</span>.</p>
-<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'>     </span><span
+<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'>���� </span><span
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
+style='margin-left:9.0pt'><span style='mso-tab-count:3'>������������������� </span><span
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
+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
+style='margin-left:9.0pt'><span style='mso-tab-count:3'>������������������� </span>Type type2, <span
class=SpellE><span class=GramE>boolean</span></span> end2IsNavigable,</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:3'>                    </span><span
+style='margin-left:9.0pt'><span style='mso-tab-count:3'>������������������� </span><span
class=SpellE>AggregationKind</span> end2Aggregation, String end2Name,</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:3'>                    </span><span
+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>&nbsp;</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
+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'><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>&nbsp;</o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'>            </span><span class=SpellE>StringBuffer</span> <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>&nbsp;</o:p></pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:2'>            </span><span
+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>&quot;Association &quot;);</pre><pre
style='margin-left:9.0pt'><o:p>&nbsp;</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
+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=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
+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
+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>} else {</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:3'>                    </span><span
+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=SpellE><span class=GramE>sb.append</span></span><span class=GramE>(</span>&quot;'&quot;);</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:3'>                    </span><span
+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
+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
+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
+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>&quot;'&quot;);</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:2'>����������� </span>}</pre><pre
style='margin-left:9.0pt'><o:p>&nbsp;</o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'>            </span><span class=SpellE><span
+style='mso-tab-count:2'>����������� </span><span class=SpellE><span
class=GramE>sb.append</span></span><span class=GramE>(</span>&quot; [&quot;);</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:2'>            </span><span
+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>end1LowerBound);</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:2'>            </span><span
+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>&quot;..&quot;);</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:2'>            </span><span
+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>? &quot;*&quot;</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:3'>                    </span>: <span
+style='margin-left:9.0pt'><span style='mso-tab-count:3'>������������������� </span>? &quot;*&quot;</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
+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>&quot;] &quot;);</pre><pre
style='margin-left:9.0pt'><o:p>&nbsp;</o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'>            </span><span class=SpellE><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>? '&lt;'</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
+style='margin-left:9.0pt'><span style='mso-tab-count:3'>������������������� </span>? '&lt;'</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=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
+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>? '&gt;'</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
+style='margin-left:9.0pt'><span style='mso-tab-count:3'>������������������� </span>? '&gt;'</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=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>&nbsp;</o:p></pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:2'>            </span><span
+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
+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:3'>                    </span><span
+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
+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>} else {</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:3'>                    </span><span
+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=SpellE><span class=GramE>sb.append</span></span><span class=GramE>(</span>&quot;'&quot;);</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:3'>                    </span><span
+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
+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
+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
+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>&quot;'&quot;);</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:2'>����������� </span>}</pre><pre
style='margin-left:9.0pt'><o:p>&nbsp;</o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'>            </span><span class=SpellE><span
+style='mso-tab-count:2'>����������� </span><span class=SpellE><span
class=GramE>sb.append</span></span><span class=GramE>(</span>&quot; [&quot;);</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:2'>            </span><span
+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>end2LowerBound);</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:2'>            </span><span
+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>&quot;..&quot;);</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:2'>            </span><span
+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>? &quot;*&quot;</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:3'>                    </span>: <span
+style='margin-left:9.0pt'><span style='mso-tab-count:3'>������������������� </span>? &quot;*&quot;</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>end2UpperBound));</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:2'>            </span><span
+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>&quot;]&quot;);</pre><pre
style='margin-left:9.0pt'><o:p>&nbsp;</o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'>            </span><span class=SpellE><span
+style='mso-tab-count:2'>����������� </span><span class=SpellE><span
class=GramE>sb.append</span></span><span class=GramE>(</span>&quot; created.&quot;);</pre><pre
style='margin-left:9.0pt'><o:p>&nbsp;</o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'>            </span><span class=GramE>out(</span><span
+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>&nbsp;</o:p></pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:2'>            </span><span
+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: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_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
+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 <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
+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_i1076" src="../../../../images/tip.gif"><span
-style='mso-spacerun:yes'> </span>The <span class=SpellE><code>NamedElement.SEPARATOR</code></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,
-let’s see this method in action. For example, we could create a unidirectional
-composition (composite association) between classes ‘Supplier’ and ‘<span
-class=SpellE>PurchaseOrder</span>’ in model ‘epo2’ as follows:</p>
+let�s see this method in action. For example, we could create a unidirectional
+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
+<pre style='margin-left:9.0pt'><span style='mso-tab-count:2'>����������� </span><span
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
+style='margin-left:9.0pt'><span style='mso-tab-count:3'>������������������� </span><span
class=SpellE>AggregationKind.COMPOSITE_LITERAL</span>, &quot;orders&quot;, 0,</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:3'>                    </span><span
+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
+style='margin-left:9.0pt'><span style='mso-tab-count:3'>������������������� </span>false, <span
class=SpellE>AggregationKind.NONE_LITERAL</span>, &quot;&quot;, 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_i1077" src="../../../../images/tryit.gif"><span
-style='mso-spacerun:yes'> </span>Write code to programmatically create the
+style='mso-spacerun:yes'>�</span>Write code to programmatically create the
remaining associations from the ExtendedPO2 model.</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'>Saving
Models</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'>Now
-that we’ve spent all this time creating a model, we’d better save our work.
+that we�ve spent all this time creating a model, we�d better save our work.
When we created our model using the UML model wizard, a UML resource was
created for us, so now all that needs to be done is to serialize the contents
of our model as XMI to our file on disk (i.e. <code>ExtendedPO2.uml</code>). To
@@ -1468,66 +1470,66 @@ save 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 the <b>File &gt; Save</b> menu item.</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'>It’s
+<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'>It�s
that simple. Programmatically, we have a bit more work to do because so far,
-we’ve been creating our model in a vacuum, i.e. without a containing resource.
+we�ve been creating our model in a vacuum, i.e. without a containing resource.
The code snippet below shows a method that saves a specified package to a
resource with a specified URI.</p>
-<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'>     </span><span
+<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 <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
+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
+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>&nbsp;</o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'>            </span><span class=GramE>try</span> {</pre><pre
+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_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
+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>&quot;Done.&quot;);</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:2'>            </span>} catch (<span
+style='mso-tab-count:3'>������������������� </span><span class=GramE>out(</span>&quot;Done.&quot;);</pre><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>
+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_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 resource’s contents <img border=0 width=24 height=13
+style='mso-spacerun:yes'>�</span>and a resource with the specified URI, add the
+package to the resource�s contents <img border=0 width=24 height=13
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
+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_i1085"
src="../../../../images/tag_4.gif" align=CENTER><span
-style='mso-spacerun:yes'> </span>via our handy utility method.</p>
+style='mso-spacerun:yes'>�</span>via our handy utility method.</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,
-let’s see this method in action. For example, we could save the ‘epo2’ model to
-a resource with URI ‘ExtendedPO2.uml’ (relative to a URI passed in as an
+let�s see this method in action. For example, we could save the �epo2� model to
+a resource with URI �ExtendedPO2.uml� (relative to a URI passed in as an
argument) as follows:</p>
-<pre style='margin-left:9.0pt'><span style='mso-tab-count:2'>            </span><span
+<pre style='margin-left:9.0pt'><span style='mso-tab-count:2'>����������� </span><span
class=GramE>save(</span>epo2Model, <span class=SpellE>URI.createURI</span>(<span
class=SpellE>args</span>[0]).<span class=SpellE>appendSegment</span>(&quot;ExtendedPO2&quot;)</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:3'>                    </span>.<span
+style='margin-left:9.0pt'><span style='mso-tab-count:3'>������������������� </span>.<span
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_i1086" src="../../../../images/tip.gif"><span
-style='mso-spacerun:yes'> </span>The <span class=SpellE><code>UMLResource.FILE_EXTENSION</code></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
@@ -1536,8 +1538,8 @@ 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>
<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'>Congratulations!
-If you’ve made it this far, you’ve successfully created a simple model
-programmatically and/or using the UML editor. There’s a whole lot more that
+If you�ve made it this far, you�ve successfully created a simple model
+programmatically and/or using the UML editor. There�s a whole lot more that
could be said, but the purpose of this article was just to get you started.
Stay tuned for more articles on how to develop tools with UML2.</p>
@@ -1562,9 +1564,9 @@ run the example or view the source code for this article, unzip <a
href="http://download.eclipse.org/modeling/mdt/uml2/downloads/articles/uml2.articles_200607181325.zip">uml2.articles_200607181325.zip</a>
into your Eclipse home directory and import the <code>com.ibm.uml2.articles</code>
plug-in into your workspace as a binary project with linked content (<b>File
-&gt; Import… &gt; External Plug-ins and Fragments</b>). You can run the <code>GettingStartedWithUML2</code>
-class as a Java application with a file URI (e.g. “file:/C:/Getting <span
-class=GramE>Started</span> with UML2”) as a program argument.</p>
+&gt; Import� &gt; External Plug-ins and Fragments</b>). You can run the <code>GettingStartedWithUML2</code>
+class as a Java application with a file URI (e.g. �file:/C:/Getting <span
+class=GramE>Started</span> with UML2�) as a program 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'><span
style='font-size:7.5pt'>Java and all Java-based trademarks and logos are
diff --git a/uml2/docs/articles/Introduction_to_UML2_Profiles/article.html b/uml2/docs/articles/Introduction_to_UML2_Profiles/article.html
index 42f5017..1b327bb 100644
--- a/uml2/docs/articles/Introduction_to_UML2_Profiles/article.html
+++ b/uml2/docs/articles/Introduction_to_UML2_Profiles/article.html
@@ -288,7 +288,7 @@ p.MsoNormal
<p class=MsoNormal align=right style='text-align:right'><span style='font-size:
10.0pt;font-family:Arial'>&nbsp; </span><span style='font-size:10.0pt'>Copyright
-© 2004, 2008 International Business Machines Corp.</span><span
+� 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>
@@ -304,6 +304,8 @@ style='font-size:10.0pt;font-family:Arial'> <o:p></o:p></span></p>
</div>
+<h3><span style='color:red'><b>NOTE that this article is obsolete; please see <a href="http://wiki.eclipse.org/MDT/UML2/Introduction_to_UML2_Profiles">here</a> instead.</b></span></h3>
+
<h1><img width=120 height=86 id="_x0000_i1025" src="../../../../images/Idea.jpg"
align=CENTER></h1>
@@ -343,29 +345,29 @@ class=MsoHyperlink><a
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.2</a></span>
-installed.<span style='mso-spacerun:yes'>  </span></p>
+installed.<span style='mso-spacerun:yes'>� </span></p>
<p>You can either download the zips individually and expand them out or follow
-the steps below:<span style='mso-spacerun:yes'>  </span></p>
+the steps below:<span style='mso-spacerun:yes'>� </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'>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>
+style='mso-spacerun:yes'>�</span>Download and run Eclipse 3.4</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'>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> &gt; <b>Software
-Updates … </b>menu</span></p>
+style='mso-spacerun:yes'>�</span>Select the <b>Help</b> &gt; <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
+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"
@@ -398,15 +400,15 @@ src="article_files/image038.jpg" v:shapes="_x0000_i1128"><![endif]></p>
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
+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='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>
@@ -415,13 +417,13 @@ style='font-weight:normal'>.</span></span></b></span></p>
<p>This article will walk you through the basics of creating and applying
profiles using UML2. Using a subset of the <span class=SpellE>Ecore</span>
-profile (see below) and the model we described in the “Getting Started with
-UML2” article [1] (the ExtendedPO2 model, shamelessly “borrowed” from the EMF
-“bible” [2]) as an example, we’ll look at what’s involved in creating some of
+profile (see below) and the model we described in the �Getting Started with
+UML2� article [1] (the ExtendedPO2 model, shamelessly �borrowed� from the EMF
+�bible� [2]) as an example, we�ll look at what�s involved in creating some of
the more common elements that make up a profile. For each type of element,
-we’ll first explain the creation process using the sample UML editor and
-explore how to accomplish the same thing using Java code. Then we’ll look at
-what’s involved in applying profiles and stereotypes to models. The ExtendedPO2
+we�ll first explain the creation process using the sample UML editor and
+explore how to accomplish the same thing using Java code. Then we�ll look at
+what�s involved in applying profiles and stereotypes to models. The ExtendedPO2
model is shown below.</p>
<p><!--[if gte vml 1]><v:shape id="_x0000_i1027" type="#_x0000_t75" style='width:581.25pt;
@@ -431,9 +433,9 @@ model is shown below.</p>
src="article_files/image002.gif" v:shapes="_x0000_i1027"><![endif]></p>
<p>As described in the EMF book, some of the attributes of certain <span
-class=SpellE>Ecore</span> elements cannot be expressed directly in UML™. EMF
+class=SpellE>Ecore</span> elements cannot be expressed directly in UML�. EMF
provides a Rose property file (<span class=SpellE><span style='font-family:
-"Courier New"'>ecore.pty</span></span>) that defines all the non- UML™
+"Courier New"'>ecore.pty</span></span>) that defines all the non- UML�
properties needed to completely express an EMF model using Rational Rose. The
same thing can be achieved for a UML2 model using a profile.</p>
@@ -461,13 +463,13 @@ src="article_files/image006.jpg" v:shapes="_x0000_i1029"><![endif]></p>
<h2>Getting Started</h2>
-<p>Before getting started, you’ll need to create a simple project in your
-workspace. This project will serve as the container for the profile that we’ll
+<p>Before getting started, you�ll need to create a simple project in your
+workspace. This project will serve as the container for the profile that we�ll
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 &gt; Open Perspective
-&gt; <span class=GramE>Other</span>…</b> menu item.</p>
+&gt; <span class=GramE>Other</span>�</b> menu item.</p>
<p style='margin-left:27.5pt'>2) Select the <b>Resource</b> perspective and
press the <b>OK</b> button.</p>
@@ -478,8 +480,8 @@ menu item.</p>
<p style='margin-left:27.5pt'>4) Select the <b>Project</b> wizard from the <b>General</b>
category and press the <b>Next &gt;</b> button.</p>
-<p style='margin-left:27.5pt'>5) Enter a project name (i.e. “Introduction to
-UML2 Profiles”), and press the <b>Finish</b> button.</p>
+<p style='margin-left:27.5pt'>5) Enter a project name (i.e. �Introduction to
+UML2 Profiles�), and press the <b>Finish</b> button.</p>
<p>At this point your workspace should look something like this:</p>
@@ -490,47 +492,47 @@ UML2 Profiles”), and press the <b>Finish</b> button.</p>
src="article_files/image040.jpg" v:shapes="_x0000_i1129"><![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 profiles, we’ll assume
-that you’ve created a Java class (named, say, “IntroductionToUML2Profiles”) in
+follow along with the programmatic approach to creating profiles, we�ll assume
+that you�ve created a Java class (named, say, �IntroductionToUML2Profiles�) in
which you can write some code to construct our sample profile. The code
-snippets we’ll show assume you’ve defined the following utility methods to give
-the user information on the program’s status:</p>
+snippets we�ll show assume you�ve defined the following utility methods to give
+the user information on the program�s status:</p>
<pre style='margin-left:9.0pt'><img border=0 width=24 height=14
id="_x0000_i1030" src="../../../../images/tag_1.gif" align=CENTER><span
-style='mso-tab-count:1'>  </span><span class=GramE>public</span> static <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>&nbsp;</o:p></pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:1'>     </span><span
+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>&nbsp;</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='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_i1031"
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
+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>&nbsp;</o:p></pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:1'>     </span><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>&nbsp;</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_i1032"
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
+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>
+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_i1033"
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 system’s output <span class=GramE>stream </span><img border=0
+style='mso-spacerun:yes'>�</span>can be used to enable or disable verbose information
+printed to the system�s output <span class=GramE>stream </span><img border=0
width=24 height=14 id="_x0000_i1034" src="../../../../images/tag_2.gif"
-align=CENTER>. Errors will always be printed to the system’s error <span
+align=CENTER>. Errors will always be printed to the system�s error <span
class=GramE>stream </span><img border=0 width=24 height=14 id="_x0000_i1035"
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
<span class=SpellE>righty</span> then! In each of the following subsections,
-we’ll look at how to create or manipulate a different kind of UML element,
+we�ll look at how to create or manipulate a different kind of UML element,
starting with profiles.</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
@@ -555,7 +557,7 @@ Select the <b>UML Model</b> wizard from the <b>Example EMF Model Creation
Wizards</b> category and press the <b>Next &gt;</b> button.</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 file name (i.e. “<span class=SpellE>Ecore.profile.uml</span>”) and
+Enter a file name (i.e. �<span class=SpellE>Ecore.profile.uml</span>�) and
press the <b>Next &gt;</b> button.</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)
@@ -568,12 +570,12 @@ Select the <b>Window &gt; Show View &gt; Properties</b> menu item.</p>
Select the <b>Profile</b> element 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'>7)
-Enter a value (i.e. “<span class=SpellE>ecore</span>”) for the <b>Name</b>
+Enter a value (i.e. �<span class=SpellE>ecore</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=62 height=13 id="_x0000_i1036" src="../../../../images/tip.gif"><span
-style='mso-spacerun:yes'> </span>By convention, resources that contain profiles
+style='mso-spacerun:yes'>�</span>By convention, resources that contain profiles
end with a <code>.<span class=SpellE>profile.uml</span></code> file extension
in UML2. </p>
@@ -586,52 +588,52 @@ this point your workspace should look something like this:</p>
</v:shape><![endif]--><![if !vml]><img border=0 width=832 height=541
src="article_files/image042.jpg" v:shapes="_x0000_i1130"><![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'>Let’s
+<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'>Let�s
look at how to perform the same task using Java code. The code snippet below
shows a method that programmatically creates and returns a profile with a
specified name.</p>
-<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'>     </span><span
+<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'>���� </span><span
class=GramE>protected</span> static Profile <span class=SpellE>createProfile</span>(String name) {</pre><pre
style='margin-left:9.0pt'><img border=0 width=24 height=14 id="_x0000_i1037"
src="../../../../images/tag_1.gif" align=CENTER><span style='mso-tab-count:
-2'>         </span>Profile <span class=SpellE>profile</span> = <span
+2'>�������� </span>Profile <span class=SpellE>profile</span> = <span
class=SpellE><span class=GramE>UMLFactory.eINSTANCE.createProfile</span></span><span
class=GramE>(</span>);</pre><pre style='margin-left:9.0pt'><img border=0
width=24 height=14 id="_x0000_i1038" src="../../../../images/tag_2.gif"
-align=CENTER><span style='mso-tab-count:2'>         </span><span class=SpellE><span
+align=CENTER><span style='mso-tab-count:2'>�������� </span><span class=SpellE><span
class=GramE>profile.setName</span></span><span class=GramE>(</span>name);</pre><pre
style='margin-left:9.0pt'><o:p>&nbsp;</o:p></pre><pre style='margin-left:9.0pt'><img
border=0 width=24 height=14 id="_x0000_i1039" src="../../../../images/tag_3.gif"
-align=CENTER><span style='mso-tab-count:2'>         </span><span class=GramE>out(</span>&quot;Profile '&quot; + <span
+align=CENTER><span style='mso-tab-count:2'>�������� </span><span class=GramE>out(</span>&quot;Profile '&quot; + <span
class=SpellE>profile.getQualifiedName</span>() + &quot;' created.&quot;);</pre><pre
style='margin-left:9.0pt'><o:p>&nbsp;</o:p></pre><pre style='margin-left:9.0pt'><img
border=0 width=24 height=14 id="_x0000_i1040" src="../../../../images/tag_4.gif"
-align=CENTER><span style='mso-tab-count:1'>  </span><span style='mso-tab-count:
-1'>        </span><span class=GramE>return</span> profile;</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:1'>     </span>}</pre>
+align=CENTER><span style='mso-tab-count:1'>� </span><span style='mso-tab-count:
+1'>������� </span><span class=GramE>return</span> profile;</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_i1041" src="../../../../images/tag_1.gif" align=CENTER><span
-style='mso-spacerun:yes'> </span>to create a profile, and we set its <span
+style='mso-spacerun:yes'>�</span>to create a profile, and we set its <span
class=GramE>name </span><img border=0 width=24 height=14 id="_x0000_i1042"
src="../../../../images/tag_2.gif" align=CENTER>. Then, we output information <img
border=0 width=24 height=14 id="_x0000_i1043" src="../../../../images/tag_3.gif"
-align=CENTER><span style='mso-spacerun:yes'> </span>to the user to let them
+align=CENTER><span style='mso-spacerun:yes'>�</span>to the user to let them
know that the profile has been successfully created. Finally, we return <img
border=0 width=24 height=14 id="_x0000_i1044" src="../../../../images/tag_4.gif"
-align=CENTER><span style='mso-spacerun:yes'> </span>the profile. You’ll notice
+align=CENTER><span style='mso-spacerun:yes'>�</span>the profile. You�ll 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
+� 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'>OK,
-let’s see this method in action. For example, we could create a profile named ‘<span
-class=SpellE>ecore</span>’ as follows:</p>
+let�s see this method in action. For example, we could create a profile named �<span
+class=SpellE>ecore</span>� as follows:</p>
<p style='margin-left:9.0pt;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
-style='mso-tab-count:2'>                         </span>Profile <span
+style='mso-tab-count:2'>������������������������ </span>Profile <span
class=SpellE>ecoreProfile</span> = <span class=SpellE><span class=GramE>createProfile</span></span><span
class=GramE>(</span>&quot;<span class=SpellE>ecore</span>&quot;);</p>
@@ -655,7 +657,7 @@ 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)
Select the <b style='mso-bidi-font-weight:normal'>UML Editor &gt; Package &gt;
-Import Type…</b> menu item.</p>
+Import Type�</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'>3)
Choose a primitive type (i.e. <span class=SpellE><b style='mso-bidi-font-weight:
@@ -665,7 +667,7 @@ style='mso-bidi-font-weight:normal'>OK</b> button.</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_i1045" src="../../../../images/tryit.gif"><span
-style='mso-spacerun:yes'> </span>Import the other required primitive type (<span
+style='mso-spacerun:yes'>�</span>Import the other required primitive type (<span
class=SpellE><b style='mso-bidi-font-weight:normal'>UMLPrimitiveTypes::String</b></span>)
into the <span class=SpellE>Ecore</span> profile using the UML editor.</p>
@@ -678,47 +680,47 @@ this point your workspace should look something like this:</p>
</v:shape><![endif]--><![if !vml]><img border=0 width=832 height=541
src="article_files/image008.jpg" v:shapes="_x0000_i1131"><![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'>Let’s
+<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'>Let�s
look at how to perform the same task using Java code. The code snippet below
shows a method that programmatically imports the primitive type with a
specified name from the UML primitive <span class=GramE>types</span> library
into a specified package and returns it.</p>
-<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'>     </span><span
+<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'>���� </span><span
class=GramE>protected</span> static <span class=SpellE>PrimitiveType</span> <span
class=SpellE>importPrimitiveType</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='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=14 id="_x0000_i1046"
src="../../../../images/tag_1.gif" align=CENTER><span style='mso-tab-count:
-2'>         </span>Model <span class=SpellE>umlLibrary</span> = (Model) <span
+2'>�������� </span>Model <span class=SpellE>umlLibrary</span> = (Model) <span
class=GramE>load(</span>URI</pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:3'>                    </span>.<span class=SpellE><span
+style='mso-tab-count:3'>������������������� </span>.<span class=SpellE><span
class=GramE>createURI</span></span><span class=GramE>(</span><span
class=SpellE>UMLResource.UML_PRIMITIVE_TYPES_LIBRARY_URI</span>));</pre><pre
style='margin-left:9.0pt'><o:p>&nbsp;</o:p></pre><pre style='margin-left:9.0pt'><img
border=0 width=24 height=14 id="_x0000_i1047" src="../../../../images/tag_2.gif"
-align=CENTER><span style='mso-tab-count:2'>         </span><span class=SpellE>PrimitiveType</span> <span
+align=CENTER><span style='mso-tab-count:2'>�������� </span><span class=SpellE>PrimitiveType</span> <span
class=SpellE>primitiveType</span> = (<span class=SpellE>PrimitiveType</span>) <span
class=SpellE>umlLibrary</span></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:3'>                    </span>.<span class=SpellE><span
+style='mso-tab-count:3'>������������������� </span>.<span class=SpellE><span
class=GramE>getOwnedType</span></span><span class=GramE>(</span>name);</pre><pre
style='margin-left:9.0pt'><o:p>&nbsp;</o:p></pre><pre style='margin-left:9.0pt'><img
border=0 width=24 height=14 id="_x0000_i1048" src="../../../../images/tag_3.gif"
-align=CENTER><span style='mso-tab-count:2'>         </span><span class=SpellE>package_.<span
+align=CENTER><span style='mso-tab-count:2'>�������� </span><span class=SpellE>package_.<span
class=GramE>createElementImport</span></span><span class=GramE>(</span><span
class=SpellE>primitiveType</span>);</pre><pre style='margin-left:9.0pt'><o:p>&nbsp;</o:p></pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:2'>            </span><span
+style='margin-left:9.0pt'><span style='mso-tab-count:2'>����������� </span><span
class=GramE>out(</span>&quot;Primitive type '&quot; + <span class=SpellE>primitiveType.getQualifiedName</span>()</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:3'>                    </span>+ &quot;' imported.&quot;);</pre><pre
+style='margin-left:9.0pt'><span style='mso-tab-count:3'>������������������� </span>+ &quot;' imported.&quot;);</pre><pre
style='margin-left:9.0pt'><o:p>&nbsp;</o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'>            </span><span class=GramE>return</span> <span
+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>
+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 load the model library <img border=0 width=24 height=14 id="_x0000_i1049"
src="../../../../images/tag_1.gif" align=CENTER><span
-style='mso-spacerun:yes'> </span>containing the UML primitive types (<span
+style='mso-spacerun:yes'>�</span>containing the UML primitive types (<span
style='font-family:"Courier New"'>Boolean</span>, <span style='font-family:
"Courier New"'>Integer</span>, <span style='font-family:"Courier New"'>String</span>,
and <span class=SpellE><span style='font-family:"Courier New"'>UnlimitedNatural</span></span>)
@@ -727,28 +729,28 @@ class=SpellE><span style='font-family:"Courier New"'>UMLResource</span></span>
interface. Next, we retrieve the desired (owned) primitive type from the model
by name <img border=0 width=24 height=14 id="_x0000_i1050"
src="../../../../images/tag_2.gif" align=CENTER><span
-style='mso-spacerun:yes'> </span>using one of the convenience methods defined
+style='mso-spacerun:yes'>�</span>using one of the convenience methods defined
in the UML2 API. Finally, we invoke another convenience method <img border=0
width=24 height=14 id="_x0000_i1051" src="../../../../images/tag_3.gif"
-align=CENTER><span style='mso-spacerun:yes'> </span>to create the element
+align=CENTER><span style='mso-spacerun:yes'>�</span>to create the element
import relationship between the package and the element (with default public
visibility), notify the user, and return the primitive type.</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_i1052" src="../../../../images/tip.gif"><span
-style='mso-spacerun:yes'> </span>The UML resources plug-in (<span
+style='mso-spacerun:yes'>�</span>The UML resources plug-in (<span
style='font-family:"Courier New"'>org.eclipse.uml2.uml.resources</span>)
provides several model libraries (which by convention have a <code>.<span
class=SpellE>library.uml</span></code> file extension) that contain commonly
used primitive types, such as those defined by Java and <span class=SpellE>Ecore</span>
-(in addition to those defined by UML™ itself). These libraries can be accessed
+(in addition to those defined by UML� itself). These libraries can be accessed
using <span class=SpellE>URIs</span> defined on the <span class=SpellE><span
style='font-family:"Courier New"'>UMLResource</span></span> interface, as shown
above.</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_i1053" src="../../../../images/tip.gif"><span
-style='mso-spacerun:yes'> </span>In UML2, a method of the form <code>get&lt;feature
+style='mso-spacerun:yes'>�</span>In UML2, a method of the form <code>get&lt;feature
name<span class=GramE>&gt;(</span>String)</code> exists for every feature that
can contain or reference named elements. In this case, the package has a
feature (<span class=SpellE><code>ownedType</code></span>) that can contain
@@ -759,19 +761,19 @@ Behind the scenes, the package will iterate over all of its owned types and
return the first one that it finds that has the specified (unqualified) name.</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,
-let’s see this method in action. For example, we could import the primitive
-type named ‘Boolean’ into profile ‘<span class=SpellE>ecore</span>’ as follows:</p>
+let�s see this method in action. For example, we could import the primitive
+type named �Boolean� into profile �<span class=SpellE>ecore</span>� as follows:</p>
-<pre style='margin-left:8.5pt'><span style='mso-tab-count:2'>            </span><span
+<pre style='margin-left:8.5pt'><span style='mso-tab-count:2'>����������� </span><span
class=SpellE>PrimitiveType</span> <span class=SpellE>booleanPrimitiveType</span> = <span
class=SpellE><span class=GramE>importPrimitiveType</span></span><span
class=GramE>(</span><span class=SpellE>ecoreProfile</span>,</pre><pre
-style='margin-left:8.5pt'><span style='mso-tab-count:3'>                    </span>&quot;Boolean&quot;);</pre>
+style='margin-left:8.5pt'><span style='mso-tab-count:3'>������������������� </span>&quot;Boolean&quot;);</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_i1054" src="../../../../images/tryit.gif"><span
-style='mso-spacerun:yes'> </span>Write code to programmatically import the
-other required primitive type (i.e. ‘String’) into the <span class=SpellE>Ecore</span>
+style='mso-spacerun:yes'>�</span>Write code to programmatically import the
+other required primitive type (i.e. �String�) into the <span class=SpellE>Ecore</span>
profile.</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
@@ -792,13 +794,13 @@ Right-click and select the <b>New Child &gt; Packaged Element &gt; Enumeration</
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. “<span class=SpellE>VisibilityKind</span>”) for the <b>Name</b>
+Enter a value (i.e. �<span class=SpellE>VisibilityKind</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_i1055" src="../../../../images/tryit.gif"><span
-style='mso-spacerun:yes'> </span>Create the other enumeration (i.e. “<span
-class=SpellE>FeatureKind</span>”) for the <span class=SpellE>Ecore</span>
+style='mso-spacerun:yes'>�</span>Create the other enumeration (i.e. �<span
+class=SpellE>FeatureKind</span>�) for the <span class=SpellE>Ecore</span>
profile using the UML editor.</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
@@ -810,51 +812,51 @@ this point your workspace should look something like this:</p>
</v:shape><![endif]--><![if !vml]><img border=0 width=832 height=541
src="article_files/image010.jpg" v:shapes="_x0000_i1132"><![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'>Let’s
+<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'>Let�s
look at how to perform the same task using Java code. The code snippet below
(from the <span style='font-family:"Courier New"'>GettingStartedWithUML2</span>
class) shows a method that programmatically creates and returns an enumeration
with a specified name in a specified package.</p>
-<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'>     </span><span
+<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'>���� </span><span
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'><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_i1056"
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
+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=SpellE><span class=GramE>createOwnedEnumeraton</span></span><span
class=GramE>(</span>name);</pre><pre style='margin-left:9.0pt'><o:p>&nbsp;</o:p></pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:2'>            </span><span
+style='margin-left:9.0pt'><span style='mso-tab-count:2'>����������� </span><span
class=GramE>out(</span>&quot;Enumeration '&quot; + <span class=SpellE>enumeration.getQualifiedName</span>() + &quot;' created.&quot;);</pre><pre
style='margin-left:9.0pt'><o:p>&nbsp;</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>
+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=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_i1057"
src="../../../../images/tag_1.gif" align=CENTER><span
-style='mso-spacerun:yes'> </span>to ask the package to create a primitive type with
+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,
-let’s see this method in action. For example, we could create an enumeration
-named ‘<span class=SpellE>VisibilityKind</span>’ in profile ‘<span
-class=SpellE>ecore</span>’ as follows:</p>
+let�s see this method in action. For example, we could create an enumeration
+named �<span class=SpellE>VisibilityKind</span>� in profile �<span
+class=SpellE>ecore</span>� as follows:</p>
-<pre style='margin-left:9.0pt'><span style='mso-tab-count:2'>            </span>Enumeration <span
+<pre style='margin-left:9.0pt'><span style='mso-tab-count:2'>����������� </span>Enumeration <span
class=SpellE>visibilityKindEnumeration</span> = GettingStartedWithUML2</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:3'>                    </span>.<span
+style='margin-left:9.0pt'><span style='mso-tab-count:3'>������������������� </span>.<span
class=SpellE><span class=GramE>createEnumeration</span></span><span
class=GramE>(</span><span class=SpellE>ecoreProfile</span>, &quot;<span
class=SpellE>VisibilityKind</span>&quot;);</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_i1058" src="../../../../images/tryit.gif"><span
-style='mso-spacerun:yes'> </span>Write code to programmatically create the
-other enumeration (i.e. ‘<span class=SpellE>FeatureKind</span>’) for the <span
+style='mso-spacerun:yes'>�</span>Write code to programmatically create the
+other enumeration (i.e. �<span class=SpellE>FeatureKind</span>�) for the <span
class=SpellE>Ecore</span> profile.</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
@@ -874,19 +876,19 @@ Right-click and select the <b>New Child &gt; Owned Literal &gt; 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. “Unspecified”) for the <b>Name</b> property in the <b>Properties</b>
+Enter a value (i.e. �Unspecified�) 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_i1059" src="../../../../images/tryit.gif"><span
-style='mso-spacerun:yes'> </span>Create the remaining enumeration literals for
-the <span class=SpellE>Ecore</span> profile (i.e. “None”, “<span class=SpellE>ReadOnly</span>”,
-“<span class=SpellE>ReadWrite</span>”, “<span class=SpellE>ReadOnlyUnsettable</span>”,
-and “<span class=SpellE>ReadWriteUnsettable</span>” for <b style='mso-bidi-font-weight:
+style='mso-spacerun:yes'>�</span>Create the remaining enumeration literals for
+the <span class=SpellE>Ecore</span> profile (i.e. �None�, �<span class=SpellE>ReadOnly</span>�,
+�<span class=SpellE>ReadWrite</span>�, �<span class=SpellE>ReadOnlyUnsettable</span>�,
+and �<span class=SpellE>ReadWriteUnsettable</span>� for <b style='mso-bidi-font-weight:
normal'>&lt;<span style='mso-bidi-font-weight:bold'>Enumeration&gt; <span
-class=SpellE>VisibilityKind</span></span></b>; “Unspecified”, “Simple”,
-“Attribute”, “Element”, “<span class=SpellE>AttributeWildcard</span>”, “<span
-class=SpellE>ElementWildcard</span>”, and “Group” for <b style='mso-bidi-font-weight:
+class=SpellE>VisibilityKind</span></span></b>; �Unspecified�, �Simple�,
+�Attribute�, �Element�, �<span class=SpellE>AttributeWildcard</span>�, �<span
+class=SpellE>ElementWildcard</span>�, and �Group� for <b style='mso-bidi-font-weight:
normal'>&lt;<span style='mso-bidi-font-weight:bold'>Enumeration <span
class=SpellE>FeatureKind</span>&gt;</span></b>) using the UML editor.</p>
@@ -899,60 +901,60 @@ this point your workspace should look something like this:</p>
</v:shape><![endif]--><![if !vml]><img border=0 width=928 height=810
src="article_files/image012.jpg" v:shapes="_x0000_i1133"><![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'>Let’s
+<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'>Let�s
look at how to perform the same task using Java code. The code snippet below
(from the <span style='font-family:"Courier New"'>GettingStartedWithUML2</span>
class) shows a method that programmatically creates and returns an enumeration
literal with a specified name in a specified enumeration.</p>
-<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'>     </span><span
+<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'>���� </span><span
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
+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_i1060"
src="../../../../images/tag_1.gif" align=CENTER><span style='mso-tab-count:
-2'>         </span><span class=SpellE>EnumerationLiteral</span> <span
+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
+style='margin-left:9.0pt'><span style='mso-tab-count:3'>������������������� </span>.<span
class=SpellE><span class=GramE>createOwnedLiteral</span></span><span
class=GramE>(</span>name);</pre><pre style='margin-left:9.0pt'><o:p>&nbsp;</o:p></pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:2'>            </span><span
+style='margin-left:9.0pt'><span style='mso-tab-count:2'>����������� </span><span
class=GramE>out(</span>&quot;Enumeration literal '&quot; + <span class=SpellE>enumerationLiteral.getQualifiedName</span>()</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:3'>                    </span>+ &quot;' created.&quot;);</pre><pre
+style='margin-left:9.0pt'><span style='mso-tab-count:3'>������������������� </span>+ &quot;' created.&quot;);</pre><pre
style='margin-left:9.0pt'><o:p>&nbsp;</o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'>            </span><span class=GramE>return</span> <span
+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>
+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=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_i1061"
src="../../../../images/tag_1.gif" align=CENTER><span
-style='mso-spacerun:yes'> </span>to ask the enumeration to create an
+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,
-let’s see this method in action. For example, we could create an enumeration
-literal named ‘Unspecified’ in enumeration ‘<span class=SpellE>VisibilityKind</span>’
+let�s see this method in action. For example, we could create an enumeration
+literal named �Unspecified� in enumeration �<span class=SpellE>VisibilityKind</span>�
as follows:</p>
-<pre style='margin-left:8.5pt'><span style='mso-tab-count:2'>            </span><span
+<pre style='margin-left:8.5pt'><span style='mso-tab-count:2'>����������� </span><span
class=GramE>GettingStartedWithUML2.createEnumerationLiteral(</span></pre><pre
-style='margin-left:8.5pt'><span style='mso-tab-count:3'>                    </span><span
+style='margin-left:8.5pt'><span style='mso-tab-count:3'>������������������� </span><span
class=SpellE><span class=GramE>visibilityKindEnumeration</span></span>, &quot;Unspecified&quot;);<span
-style='mso-tab-count:2'>            </span></pre>
+style='mso-tab-count:2'>����������� </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_i1062" src="../../../../images/tryit.gif"><span
-style='mso-spacerun:yes'> </span>Write code to programmatically create the
-remaining enumeration literals (i.e. ‘None’, ‘<span class=SpellE>ReadOnly</span>’,
-‘<span class=SpellE>ReadWrite</span>’, ‘<span class=SpellE>ReadOnlyUnsettable</span>’,
-and ‘<span class=SpellE>ReadWriteUnsettable</span>’ in enumeration ‘<span
-class=SpellE>VisibilityKind</span>’; ‘Unspecified’, ‘Simple’, ‘Attribute’,
-‘Element’, ‘<span class=SpellE>AttributeWildcard</span>’, ‘<span class=SpellE>ElementWildcard</span>’,
-and ‘Group’ in enumeration ‘<span class=SpellE>FeatureKind</span>’) for the <span
+style='mso-spacerun:yes'>�</span>Write code to programmatically create the
+remaining enumeration literals (i.e. �None�, �<span class=SpellE>ReadOnly</span>�,
+�<span class=SpellE>ReadWrite</span>�, �<span class=SpellE>ReadOnlyUnsettable</span>�,
+and �<span class=SpellE>ReadWriteUnsettable</span>� in enumeration �<span
+class=SpellE>VisibilityKind</span>�; �Unspecified�, �Simple�, �Attribute�,
+�Element�, �<span class=SpellE>AttributeWildcard</span>�, �<span class=SpellE>ElementWildcard</span>�,
+and �Group� in enumeration �<span class=SpellE>FeatureKind</span>�) for the <span
class=SpellE>Ecore</span> profile.</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
@@ -976,7 +978,7 @@ Right-click and select the <b>New Child &gt; Packaged Element &gt; Stereotype</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. “<span class=SpellE>EStructuralFeature</span>”) for the <b>Name</b>
+Enter a value (i.e. �<span class=SpellE>EStructuralFeature</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)
@@ -986,9 +988,9 @@ 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_i1063" src="../../../../images/tryit.gif"><span
-style='mso-spacerun:yes'> </span>Create the remaining stereotypes for the <span
-class=SpellE>Ecore</span> profile (i.e. “<span class=SpellE>EAttribute</span>”
-and “<span class=SpellE>EReference</span>”) using the UML editor.</p>
+style='mso-spacerun:yes'>�</span>Create the remaining stereotypes for the <span
+class=SpellE>Ecore</span> profile (i.e. �<span class=SpellE>EAttribute</span>�
+and �<span class=SpellE>EReference</span>�) using the UML editor.</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>
@@ -999,55 +1001,55 @@ this point your workspace should look something like this:</p>
</v:shape><![endif]--><![if !vml]><img border=0 width=928 height=810
src="article_files/image014.jpg" v:shapes="_x0000_i1134"><![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'>Let’s
+<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'>Let�s
look at how to perform the same task using Java code. The code snippet below
shows a method that programmatically creates and returns <span class=GramE>a(</span>n)
(abstract) stereotype with a specified name in a specified profile.</p>
-<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'>     </span><span
+<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'>���� </span><span
class=GramE>protected</span> static Stereotype <span class=SpellE>createStereotype</span>(Profile <span
class=SpellE>profile</span>, String name,</pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:3'>                    </span><span class=SpellE><span
+style='mso-tab-count:3'>������������������� </span><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=14 id="_x0000_i1064"
src="../../../../images/tag_1.gif" align=CENTER><span style='mso-tab-count:
-2'>         </span>Stereotype <span class=SpellE>stereotype</span> = <span
+2'>�������� </span>Stereotype <span class=SpellE>stereotype</span> = <span
class=SpellE><span class=GramE>profile.createOwnedStereotype</span></span><span
class=GramE>(</span>name, <span class=SpellE>isAbstract</span>);</pre><pre
style='margin-left:9.0pt'><o:p>&nbsp;</o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'>            </span><span class=GramE>out(</span>&quot;Stereotype '&quot; + <span
+style='mso-tab-count:2'>����������� </span><span class=GramE>out(</span>&quot;Stereotype '&quot; + <span
class=SpellE>stereotype.getQualifiedName</span>() + &quot;' created.&quot;);</pre><pre
style='margin-left:9.0pt'><o:p>&nbsp;</o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'>            </span><span class=GramE>return</span> stereotype;</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> stereotype;</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=SpellE><span class=GramE><code>createOwnedStereotype</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_i1065"
src="../../../../images/tag_1.gif" align=CENTER><span
-style='mso-spacerun:yes'> </span>to ask the profile to create a stereotype with
+style='mso-spacerun:yes'>�</span>to ask the profile to create a stereotype with
the specified name as one of its owned members, and set the <span class=SpellE><code>isAbstract</code></span>
attribute of the stereotype 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'>OK,
-let’s see this method in action. For example, we could create an abstract
-stereotype named ‘<span class=SpellE>EStructuralFeature</span>’ in profile ‘<span
-class=SpellE>ecore</span>’ as follows:</p>
+let�s see this method in action. For example, we could create an abstract
+stereotype named �<span class=SpellE>EStructuralFeature</span>� in profile �<span
+class=SpellE>ecore</span>� as follows:</p>
-<pre style='margin-left:9.0pt'><span style='mso-tab-count:2'>            </span>Stereotype <span
+<pre style='margin-left:9.0pt'><span style='mso-tab-count:2'>����������� </span>Stereotype <span
class=SpellE>eStructuralFeatureStereotype</span> = <span class=SpellE><span
class=GramE>createStereotype</span></span><span class=GramE>(</span></pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:3'>                    </span><span
+style='margin-left:9.0pt'><span style='mso-tab-count:3'>������������������� </span><span
class=SpellE><span class=GramE>ecoreProfile</span></span>, &quot;<span
class=SpellE>EStructuralFeature</span>&quot;, true);</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
-style='mso-spacerun:yes'> </span>Write code to programmatically create the
-remaining (non-abstract) stereotypes (i.e. ‘<span class=SpellE>EAttribute</span>’
-and ‘<span class=SpellE>EReference</span>’) for the <span class=SpellE>Ecore</span>
+style='mso-spacerun:yes'>�</span>Write code to programmatically create the
+remaining (non-abstract) stereotypes (i.e. �<span class=SpellE>EAttribute</span>�
+and �<span class=SpellE>EReference</span>�) for the <span class=SpellE>Ecore</span>
profile.</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
@@ -1075,14 +1077,14 @@ 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
-style='mso-spacerun:yes'> </span>Create the other generalization (i.e. between <span
+style='mso-spacerun:yes'>�</span>Create the other generalization (i.e. between <span
class=SpellE><b style='mso-bidi-font-weight:normal'>EReference</b></span> and <span
class=SpellE><b style='mso-bidi-font-weight:normal'>EStructuralFeature</b></span>)
for the <span class=SpellE>Ecore</span> profile using the UML editor.</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_i1068" src="../../../../images/tip.gif"><span
-style='mso-spacerun:yes'> </span>Be sure to pick the stereotype (the first <span
+style='mso-spacerun:yes'>�</span>Be sure to pick the stereotype (the first <span
class=SpellE><b style='mso-bidi-font-weight:normal'>ecore::EStructuralFeature</b></span>
item) and not the class (it should show up in <b style='mso-bidi-font-weight:
normal'>Properties</b> view as <b style='mso-bidi-font-weight:normal'>&lt;Stereotype&gt;
@@ -1099,55 +1101,55 @@ this point your workspace should look something like this:</p>
</v:shape><![endif]--><![if !vml]><img border=0 width=928 height=810
src="article_files/image016.jpg" v:shapes="_x0000_i1135"><![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'>Let’s
+<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'>Let�s
look at how to perform the same task using Java code. The code snippet below
(from the <span style='font-family:"Courier New"'>GettingStartedWithUML2</span>
class) shows a method that programmatically creates and returns generalization
between specified specific and general classifiers.</p>
-<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'>     </span><span
+<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'>���� </span><span
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
+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
+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_i1069"
src="../../../../images/tag_1.gif" align=CENTER><span style='mso-tab-count:
-3'>                 </span>.<span class=SpellE><span class=GramE>createGeneralization</span></span><span
+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>&nbsp;</o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'>            </span><span class=GramE>out(</span>&quot;Generalization &quot; + <span
+style='mso-tab-count:2'>����������� </span><span class=GramE>out(</span>&quot;Generalization &quot; + <span
class=SpellE>specificClassifier.getQualifiedName</span>() + &quot; -&gt;&gt; &quot;</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:3'>                    </span>+ <span
+style='margin-left:9.0pt'><span style='mso-tab-count:3'>������������������� </span>+ <span
class=SpellE><span class=GramE>generalClassifier.getQualifiedName</span></span><span
class=GramE>(</span>) + &quot; created.&quot;);</pre><pre style='margin-left:
9.0pt'><o:p>&nbsp;</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>
+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"
src="../../../../images/tag_1.gif" align=CENTER><span
-style='mso-spacerun:yes'> </span>as one of its children and sets the general
+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,
-let’s see this method in action. For example, we could create a generalization
-between specific stereotype ‘<span class=SpellE>EAttribute</span>’ and general
-stereotype ‘<span class=SpellE>EStructuralFeature</span>’ as follows:</p>
+let�s see this method in action. For example, we could create a generalization
+between specific stereotype �<span class=SpellE>EAttribute</span>� and general
+stereotype �<span class=SpellE>EStructuralFeature</span>� as follows:</p>
-<pre style='margin-left:9.0pt'><span style='mso-tab-count:2'>            </span><span
+<pre style='margin-left:9.0pt'><span style='mso-tab-count:2'>����������� </span><span
class=GramE>GettingStartedWithUML2.createGeneralization(</span><span
class=SpellE>eAttributeStereotype</span>,</pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:3'>                    </span><span class=SpellE><span
+style='mso-tab-count:3'>������������������� </span><span class=SpellE><span
class=GramE>eStructuralFeatureStereotype</span></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
-style='mso-spacerun:yes'> </span>Write code to programmatically create the
-other generalization (i.e. between ‘<span class=SpellE>EReference</span>’ and ‘<span
-class=SpellE>EStructuralFeature</span>’) for the <span class=SpellE>Ecore</span>
+style='mso-spacerun:yes'>�</span>Write code to programmatically create the
+other generalization (i.e. between �<span class=SpellE>EReference</span>� and �<span
+class=SpellE>EStructuralFeature</span>�) for the <span class=SpellE>Ecore</span>
profile.</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
@@ -1169,7 +1171,7 @@ Right-click and select the <b>New Child &gt; Owned Attribute &gt; 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. &quot;<span class=SpellE>isTransient</span>”) for the <b>Name</b>
+Enter a value (i.e. &quot;<span class=SpellE>isTransient</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)
@@ -1191,40 +1193,40 @@ Right-click and select the <b style='mso-bidi-font-weight:normal'>New Child
<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
-style='mso-spacerun:yes'> </span>Default values for properties (and parameters)
-are represented as value specifications (first-class objects) in UML™ 2.0. Here
+style='mso-spacerun:yes'>�</span>Default values for properties (and parameters)
+are represented as value specifications (first-class objects) in UML� 2.0. Here
we have selected a literal Boolean (whose default value is <span
style='font-family:"Courier New"'>false</span>) as the default value of our
property since its type is <b style='mso-bidi-font-weight:normal'>Boolean</b>.
If the type of the property were <b style='mso-bidi-font-weight:normal'>String</b>,
-we’d have used a literal string instead. Once a default value specification has
+we�d have used a literal string instead. Once a default value specification has
been created, its value can alternatively be set with the owning property
selected via the <b style='mso-bidi-font-weight:normal'>Default</b> 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_i1073" src="../../../../images/tryit.gif"><span
-style='mso-spacerun:yes'> </span>Create the remaining stereotype properties for
-the <span class=SpellE>Ecore</span> profile (i.e. “<span class=SpellE>isUnsettable</span>”,
-“<span class=SpellE>isVolatile</span>”, “visibility”, “<span class=SpellE>xmlName</span>”,
-“<span class=SpellE>xmlNamespace</span>”, and “<span class=SpellE>xmlFeatureKind</span>”
+style='mso-spacerun:yes'>�</span>Create the remaining stereotype properties for
+the <span class=SpellE>Ecore</span> profile (i.e. �<span class=SpellE>isUnsettable</span>�,
+�<span class=SpellE>isVolatile</span>�, �visibility�, �<span class=SpellE>xmlName</span>�,
+�<span class=SpellE>xmlNamespace</span>�, and �<span class=SpellE>xmlFeatureKind</span>�
for <b style='mso-bidi-font-weight:normal'>&lt;Stereotype&gt; <span
-class=SpellE>EStructuralFeature</span></b>; “<span class=SpellE>attributeName</span>”
-and “<span class=SpellE>isID</span>” for <b style='mso-bidi-font-weight:normal'>&lt;Stereotype&gt;
-<span class=SpellE>EAttribute</span></b>; “<span class=SpellE>referenceName</span>”
-and “<span class=SpellE>isResolveProxies</span>” for <b style='mso-bidi-font-weight:
+class=SpellE>EStructuralFeature</span></b>; �<span class=SpellE>attributeName</span>�
+and �<span class=SpellE>isID</span>� for <b style='mso-bidi-font-weight:normal'>&lt;Stereotype&gt;
+<span class=SpellE>EAttribute</span></b>; �<span class=SpellE>referenceName</span>�
+and �<span class=SpellE>isResolveProxies</span>� for <b style='mso-bidi-font-weight:
normal'>&lt;Stereotype&gt; <span class=SpellE>EReference</span></b>) using the
UML editor.</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_i1074" src="../../../../images/tip.gif"><span
-style='mso-spacerun:yes'> </span>Be sure to set the appropriate default value
+style='mso-spacerun:yes'>�</span>Be sure to set the appropriate default value
for each stereotype property so that it is consistent with the corresponding <span
class=SpellE>Ecore</span> property for Rose. In particular, the default value
-for the “<span class=SpellE>isResolveProxies</span>” should be a literal
+for the �<span class=SpellE>isResolveProxies</span>� should be a literal
Boolean with a value of <b style='mso-bidi-font-weight:normal'>true</b> instead
of the default (!) default value of <b style='mso-bidi-font-weight:normal'>false</b>.
-Note also that the types of the “visibility” and “<span class=SpellE>xmlFeatureKind</span>”
+Note also that the types of the �visibility� and �<span class=SpellE>xmlFeatureKind</span>�
properties should be the enumerations we created earlier (i.e. <span
class=SpellE><b style='mso-bidi-font-weight:normal'>ecore::<span
style='mso-bidi-font-weight:bold'>Visibility</span></b></span> and <span
@@ -1240,73 +1242,73 @@ this point your workspace should look something like this:</p>
</v:shape><![endif]--><![if !vml]><img border=0 width=928 height=810
src="article_files/image018.jpg" v:shapes="_x0000_i1136"><![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'>Let’s
+<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'>Let�s
look at how to perform the same task using Java code. The code snippet below
(from the <span style='font-family:"Courier New"'>GettingStartedWithUML2</span>
class) shows a method that programmatically creates and returns an attribute with
a 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
+<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'>���� </span><span
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
+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_i1075"
src="../../../../images/tag_1.gif" align=CENTER><span style='mso-tab-count:
-2'>         </span>Property attribute = <span class=SpellE>class_.<span
+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
+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>&nbsp;</o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'>            </span><span class=SpellE>StringBuffer</span> <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>&nbsp;</o:p></pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:2'>            </span><span
+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>&quot;Attribute '&quot;);</pre><pre
style='margin-left:9.0pt'><o:p>&nbsp;</o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'>            </span><span class=SpellE><span
+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>&nbsp;</o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'>            </span><span class=SpellE><span
+style='mso-tab-count:2'>����������� </span><span class=SpellE><span
class=GramE>sb.append</span></span><span class=GramE>(</span>&quot;' : &quot;);</pre><pre
style='margin-left:9.0pt'><o:p>&nbsp;</o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'>            </span><span class=SpellE><span
+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>&nbsp;</o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'>            </span><span class=SpellE><span
+style='mso-tab-count:2'>����������� </span><span class=SpellE><span
class=GramE>sb.append</span></span><span class=GramE>(</span>&quot; [&quot;);</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:2'>            </span><span
+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>lowerBound</span>);</pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'>            </span><span class=SpellE><span
+style='mso-tab-count:2'>����������� </span><span class=SpellE><span
class=GramE>sb.append</span></span><span class=GramE>(</span>&quot;..&quot;);</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:2'>            </span><span
+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> == <span class=SpellE>upperBound</span></pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:3'>                    </span>? &quot;*&quot;</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:3'>                    </span>: <span
+style='margin-left:9.0pt'><span style='mso-tab-count:3'>������������������� </span>? &quot;*&quot;</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><span
class=SpellE>upperBound</span>));</pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'>            </span><span class=SpellE><span
+style='mso-tab-count:2'>����������� </span><span class=SpellE><span
class=GramE>sb.append</span></span><span class=GramE>(</span>&quot;]&quot;);</pre><pre
style='margin-left:9.0pt'><o:p>&nbsp;</o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'>            </span><span class=SpellE><span
+style='mso-tab-count:2'>����������� </span><span class=SpellE><span
class=GramE>sb.append</span></span><span class=GramE>(</span>&quot; created.&quot;);</pre><pre
style='margin-left:9.0pt'><o:p>&nbsp;</o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'>            </span><span class=GramE>out(</span><span
+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>&nbsp;</o:p></pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:2'>            </span><span
+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: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=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_i1076"
src="../../../../images/tag_1.gif" align=CENTER><span
-style='mso-spacerun:yes'> </span>to ask the class to create a property as one
+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 creates
a literal integer and literal unlimited natural, respectively, and sets its
@@ -1314,34 +1316,34 @@ value to the specified integer value).</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_i1077" src="../../../../images/tip.gif"><span
-style='mso-spacerun:yes'> </span>The <span class=SpellE><code>LiteralUnlimitedNatural.UNLIMITED</code></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.</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,
-let’s see this method in action. For example, we could create an attribute with
-multiplicity 0<span class=GramE>..1</span> of type ‘<span class=SpellE>UMLPrimitiveTypes::Boolean</span>’
-named ‘<span class=SpellE>isTransient</span>’ in stereotype ‘<span
-class=SpellE>EStructuralFeature</span>’ as follows:</p>
+let�s see this method in action. For example, we could create an attribute with
+multiplicity 0<span class=GramE>..1</span> of type �<span class=SpellE>UMLPrimitiveTypes::Boolean</span>�
+named �<span class=SpellE>isTransient</span>� in stereotype �<span
+class=SpellE>EStructuralFeature</span>� as follows:</p>
-<pre style='margin-left:9.0pt'><span style='mso-tab-count:2'>            </span>Property <span
+<pre style='margin-left:9.0pt'><span style='mso-tab-count:2'>����������� </span>Property <span
class=SpellE>isTransientProperty</span> = <span class=GramE>GettingStartedWithUML2.createAttribute(</span></pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:3'>                    </span><span
+style='margin-left:9.0pt'><span style='mso-tab-count:3'>������������������� </span><span
class=SpellE><span class=GramE>eStructuralFeatureStereotype</span></span>, &quot;<span
class=SpellE>isTransient</span>&quot;, <span class=SpellE>booleanPrimitiveType</span>,</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:3'>                    </span>0, 1);</pre>
+style='margin-left:9.0pt'><span style='mso-tab-count:3'>������������������� </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_i1078" src="../../../../images/tryit.gif"><span
-style='mso-spacerun:yes'> </span>Write code to programmatically create the
-remaining stereotype properties (i.e. ‘<span class=SpellE>isUnsettable</span>’,
-‘<span class=SpellE>isVolatile</span>’, ‘visibility’, ‘<span class=SpellE>xmlName</span>’,
-‘<span class=SpellE>xmlNamespace</span>’, and ‘<span class=SpellE>xmlFeatureKind</span>’
-in stereotype ‘<span class=SpellE>EStructuralFeature</span>’; ‘<span
-class=SpellE>attributeName</span>’ and ‘<span class=SpellE>isID</span>’ in
-stereotype ‘<span class=SpellE>EAttribute</span>’; ‘<span class=SpellE>referenceName</span>’
-and ‘<span class=SpellE>isResolveProxies</span>’ in stereotype ‘<span
-class=SpellE>EReference</span>’) for the <span class=SpellE>Ecore</span>
+style='mso-spacerun:yes'>�</span>Write code to programmatically create the
+remaining stereotype properties (i.e. �<span class=SpellE>isUnsettable</span>�,
+�<span class=SpellE>isVolatile</span>�, �visibility�, �<span class=SpellE>xmlName</span>�,
+�<span class=SpellE>xmlNamespace</span>�, and �<span class=SpellE>xmlFeatureKind</span>�
+in stereotype �<span class=SpellE>EStructuralFeature</span>�; �<span
+class=SpellE>attributeName</span>� and �<span class=SpellE>isID</span>� in
+stereotype �<span class=SpellE>EAttribute</span>�; �<span class=SpellE>referenceName</span>�
+and �<span class=SpellE>isResolveProxies</span>� in stereotype �<span
+class=SpellE>EReference</span>�) for the <span class=SpellE>Ecore</span>
profile.</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'>Referencing
@@ -1365,7 +1367,7 @@ 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)
Select the <b style='mso-bidi-font-weight:normal'>UML Editor &gt; Profile &gt;
-Reference <span class=SpellE>Metaclass</span>…</b> menu item.</p>
+Reference <span class=SpellE>Metaclass</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'>3)
Choose a <span class=SpellE>metaclass</span> (i.e. <span class=SpellE><b
@@ -1382,61 +1384,61 @@ this point your workspace should look something like this:</p>
</v:shape><![endif]--><![if !vml]><img border=0 width=928 height=810
src="article_files/image020.jpg" v:shapes="_x0000_i1137"><![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'>Let’s
+<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'>Let�s
look at how to perform the same task using Java code. The code snippet below
shows a method that programmatically references the <span class=SpellE>metaclass</span>
with a specified name in the UML <span class=SpellE>metamodel</span> from a specified
profile and returns it.</p>
-<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'>     </span><span
+<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'>���� </span><span
class=GramE>protected</span> static org.eclipse.uml2.uml.Class <span
class=SpellE>referenceMetaclass</span>(Profile <span class=SpellE>profile</span>,</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:3'>                    </span><span
+style='margin-left:9.0pt'><span style='mso-tab-count:3'>������������������� </span><span
lang=IT style='mso-ansi-language:IT'>String name) {<o:p></o:p></span></pre><pre
style='margin-left:9.0pt'><img border=0 width=24 height=13 id="_x0000_i1079"
src="../../../../images/tag_1.gif" align=CENTER><span lang=IT style='mso-ansi-language:
-IT'><span style='mso-tab-count:2'>         </span>Model umlMetamodel = (Model) load(URI<o:p></o:p></span></pre><pre
+IT'><span style='mso-tab-count:2'>�������� </span>Model umlMetamodel = (Model) load(URI<o:p></o:p></span></pre><pre
style='margin-left:9.0pt'><span lang=IT style='mso-ansi-language:IT'><span
-style='mso-tab-count:3'>                    </span>.createURI(UML2Resource.UML2_METAMODEL_URI));<o:p></o:p></span></pre><pre
+style='mso-tab-count:3'>������������������� </span>.createURI(UML2Resource.UML2_METAMODEL_URI));<o:p></o:p></span></pre><pre
style='margin-left:9.0pt'><span lang=IT style='mso-ansi-language:IT'><o:p>&nbsp;</o:p></span></pre><pre
style='margin-left:9.0pt'><img border=0 width=24 height=13 id="_x0000_i1080"
src="../../../../images/tag_2.gif" align=CENTER><span lang=IT style='mso-ansi-language:
-IT'><span style='mso-tab-count:2'>         </span>org.eclipse.uml2.Class metaclass = (org.eclipse.uml2.uml.Class) umlMetamodel<o:p></o:p></span></pre><pre
+IT'><span style='mso-tab-count:2'>�������� </span>org.eclipse.uml2.Class metaclass = (org.eclipse.uml2.uml.Class) umlMetamodel<o:p></o:p></span></pre><pre
style='margin-left:9.0pt'><span lang=IT style='mso-ansi-language:IT'><span
-style='mso-tab-count:3'>                    </span></span>.<span class=SpellE><span
+style='mso-tab-count:3'>������������������� </span></span>.<span class=SpellE><span
class=GramE>getOwnedType</span></span><span class=GramE>(</span>name);</pre><pre
style='margin-left:9.0pt'><o:p>&nbsp;</o:p></pre><pre style='margin-left:9.0pt'><img
border=0 width=24 height=13 id="_x0000_i1081" src="../../../../images/tag_3.gif"
-align=CENTER><span style='mso-tab-count:2'>         </span><span class=SpellE><span
+align=CENTER><span style='mso-tab-count:2'>�������� </span><span class=SpellE><span
class=GramE>profile.createMetaclassReference</span></span><span class=GramE>(</span><span
class=SpellE>metaclass</span>);</pre><pre style='margin-left:9.0pt'><o:p>&nbsp;</o:p></pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:2'>            </span><span
+style='margin-left:9.0pt'><span style='mso-tab-count:2'>����������� </span><span
class=GramE>out(</span>&quot;<span class=SpellE>Metaclass</span> '&quot; + <span
class=SpellE>metaclass.getQualifiedName</span>() + &quot;' referenced.&quot;);</pre><pre
style='margin-left:9.0pt'><o:p>&nbsp;</o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'>            </span><span class=GramE>return</span> <span
+style='mso-tab-count:2'>����������� </span><span class=GramE>return</span> <span
class=SpellE>metaclass</span>;</pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:1'>     </span>}</pre>
+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 load the <span class=SpellE>metamodel</span> <img border=0 width=24
height=14 id="_x0000_i1082" src="../../../../images/tag_1.gif" align=CENTER><span
-style='mso-spacerun:yes'> </span>containing the UML <span class=SpellE>metaclasses</span>
+style='mso-spacerun:yes'>�</span>containing the UML <span class=SpellE>metaclasses</span>
using a utility method (described later) and a URI defined on the <span
class=SpellE><span style='font-family:"Courier New"'>UMLResource</span></span>
interface. Next, we retrieve the desired (owned) <span class=SpellE>metaclass</span>
from the (meta<span class=GramE>)model</span> by name <img border=0 width=24
height=14 id="_x0000_i1083" src="../../../../images/tag_2.gif" align=CENTER><span
-style='mso-spacerun:yes'> </span>using the convenience method. Finally, we
+style='mso-spacerun:yes'>�</span>using the convenience method. Finally, we
invoke another convenience method <img border=0 width=24 height=14
id="_x0000_i1084" src="../../../../images/tag_3.gif" align=CENTER><span
-style='mso-spacerun:yes'> </span>to create the element import relationship
+style='mso-spacerun:yes'>�</span>to create the element import relationship
between the profile and the <span class=SpellE>metaclass</span>, notify the
user, and return the <span class=SpellE>metaclass</span>.</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 UML resources plug-in (<span
+style='mso-spacerun:yes'>�</span>The UML resources plug-in (<span
style='font-family:"Courier New"'>org.eclipse.uml2.uml.resources</span>)
provides two <span class=SpellE>metamodels</span> (which by convention have a <code>.<span
class=SpellE>metamodel.uml</span></code> file extension), UML2 and <span
@@ -1446,14 +1448,14 @@ class=SpellE><span style='font-family:"Courier New"'>UMLResource</span></span>
interface, as shown above.</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,
-let’s see this method in action. For example, we could reference the <span
-class=SpellE>metaclass</span> named ‘Property’ from profile ‘<span
-class=SpellE>ecore</span>’ as follows:</p>
+let�s see this method in action. For example, we could reference the <span
+class=SpellE>metaclass</span> named �Property� from profile �<span
+class=SpellE>ecore</span>� as follows:</p>
-<pre style='margin-left:9.0pt'><span style='mso-tab-count:2'>            </span><span
+<pre style='margin-left:9.0pt'><span style='mso-tab-count:2'>����������� </span><span
class=GramE>org.eclipse.uml2.uml.Class</span> <span class=SpellE>propertyMetaclass</span> = <span
class=SpellE>referenceMetaclass</span>(</pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:3'>                    </span><span class=SpellE><span
+style='mso-tab-count:3'>������������������� </span><span class=SpellE><span
class=GramE>ecoreProfile</span></span>, <span class=SpellE>UMLPackage.Literals.PROPERTY.getName</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
@@ -1477,7 +1479,7 @@ 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)
Select the <b style='mso-bidi-font-weight:normal'>UML Editor &gt; Stereotype
-&gt; Create Extension…</b> menu item.</p>
+&gt; Create Extension�</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'>3)
Choose a <span class=SpellE>metaclass</span> (i.e. <span class=SpellE><b>uml::</b><b
@@ -1487,7 +1489,7 @@ press the <b style='mso-bidi-font-weight:normal'>Add</b> button, then press the
<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
-style='mso-spacerun:yes'> </span>Create the other extension (i.e. between <span
+style='mso-spacerun:yes'>�</span>Create the other extension (i.e. between <span
class=SpellE><b>uml::</b><b style='mso-bidi-font-weight:normal'>Property</b></span>
and <b style='mso-bidi-font-weight:normal'>&lt;Stereotype&gt; <span
class=SpellE>EReference</span></b>) for the <span class=SpellE>Ecore</span>
@@ -1504,83 +1506,83 @@ src="article_files/image022.jpg" v:shapes="_x0000_i1138"><![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'><img
border=0 width=62 height=13 id="_x0000_i1087" src="../../../../images/tip.gif"><span
-style='mso-spacerun:yes'> </span>You’ll notice that a number of new elements
-have appeared in the UML editor. In particular, you’ll see a new stereotype
+style='mso-spacerun:yes'>�</span>You�ll notice that a number of new elements
+have appeared in the UML editor. In particular, you�ll see a new stereotype
property with a name of the form <span style='font-family:"Courier New"'>base_&lt;<span
class=SpellE>metaclass</span> name&gt;</span>, an extension with a name of the
form <span style='font-family:"Courier New"'>&lt;<span class=SpellE>metaclass</span>
name&gt;_&lt;stereotype name&gt;</span>, and an extension end with a name of
the form <span style='font-family:"Courier New"'>extension_&lt;stereotype
-name&gt;</span>. It’s important that these elements <b style='mso-bidi-font-weight:
+name&gt;</span>. It�s important that these elements <b style='mso-bidi-font-weight:
normal'>not</b> be modified, since the UML2 profile mechanism depends on these
constructs.</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'>Let’s
+<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'>Let�s
look at how to perform the same task using Java code. The code snippet below
shows a method that programmatically creates and returns <span class=GramE>a(</span>n)
(required) extension between a specified <span class=SpellE>metaclass</span>
and a specified stereotype.</p>
-<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'>     </span><span
+<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'>���� </span><span
class=GramE>protected</span> static Extension <span class=SpellE>createExtension</span>(</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:3'>                    </span><span
+style='margin-left:9.0pt'><span style='mso-tab-count:3'>������������������� </span><span
class=GramE>org.eclipse.uml2.uml.Class</span> <span class=SpellE>metaclass</span>, Stereotype <span
class=SpellE>stereotype</span>,</pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:3'>                    </span><span class=SpellE><span
+style='mso-tab-count:3'>������������������� </span><span class=SpellE><span
class=GramE>boolean</span></span> required) {</pre><pre style='margin-left:
9.0pt'><img border=0 width=24 height=13 id="_x0000_i1088"
src="../../../../images/tag_1.gif" align=CENTER><span style='mso-tab-count:
-2'>         </span>Extension <span class=SpellE>extension</span> = <span
+2'>�������� </span>Extension <span class=SpellE>extension</span> = <span
class=SpellE><span class=GramE>stereotype.createExtension</span></span><span
class=GramE>(</span><span class=SpellE>metaclass</span>, required);</pre><pre
style='margin-left:9.0pt'><o:p>&nbsp;</o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'>            </span><span class=GramE>out(</span>(required</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:3'>                    </span>? &quot;Required extension '&quot;</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:3'>                    </span>: &quot;Extension '&quot;) + <span
+style='mso-tab-count:2'>����������� </span><span class=GramE>out(</span>(required</pre><pre
+style='margin-left:9.0pt'><span style='mso-tab-count:3'>������������������� </span>? &quot;Required extension '&quot;</pre><pre
+style='margin-left:9.0pt'><span style='mso-tab-count:3'>������������������� </span>: &quot;Extension '&quot;) + <span
class=SpellE><span class=GramE>extension.getQualifiedName</span></span><span
class=GramE>(</span>) + &quot;' created.&quot;);</pre><pre style='margin-left:
9.0pt'><o:p>&nbsp;</o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'>            </span><span class=GramE>return</span> extension;</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> extension;</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 method on the stereotype that creates an extension (and
its ends) between it and a <span class=SpellE>metaclass</span> <img border=0
width=24 height=13 id="_x0000_i1089" src="../../../../images/tag_1.gif"
-align=CENTER><span style='mso-spacerun:yes'> </span>as one of its siblings
+align=CENTER><span style='mso-spacerun:yes'>�</span>as one of its siblings
(i.e. as a child of its profile namespace). Behind the scenes, the stereotype
also creates the ends of the extension, resulting in a new property on the
stereotype (with a special name) and an extension end owned by the extension (again,
with a special name).</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,
-let’s see this method in action. For example, we could create a non-required
-extension between <span class=SpellE>metaclass</span> ‘Property’ and stereotype
-‘<span class=SpellE>EAttribute</span>’ in profile ‘<span class=SpellE>ecore</span>’
+let�s see this method in action. For example, we could create a non-required
+extension between <span class=SpellE>metaclass</span> �Property� and stereotype
+�<span class=SpellE>EAttribute</span>� in profile �<span class=SpellE>ecore</span>�
as follows:</p>
-<pre style='margin-left:9.0pt'><span style='mso-tab-count:2'>            </span><span
+<pre style='margin-left:9.0pt'><span style='mso-tab-count:2'>����������� </span><span
class=SpellE><span class=GramE>createExtension</span></span><span class=GramE>(</span><span
class=SpellE>propertyMetaclass</span>, <span class=SpellE>eAttributeStereotype</span>, 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_i1090" src="../../../../images/tryit.gif"><span
-style='mso-spacerun:yes'> </span>Write code to programmatically create the
-other extension (i.e. between <span class=SpellE>metaclass</span> ‘Property’
-and stereotype ‘<span class=SpellE>EReference</span>’) for the <span
+style='mso-spacerun:yes'>�</span>Write code to programmatically create the
+other extension (i.e. between <span class=SpellE>metaclass</span> �Property�
+and stereotype �<span class=SpellE>EReference</span>�) for the <span
class=SpellE>Ecore</span> profile.</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'>Defining
Profiles</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'>There.
-We’re done creating (a scaled down version of) the <span class=SpellE>Ecore</span>
-<span class=GramE>profile,</span> and we’re ready to start using it. But before
-we can, there’s one final thing we need to do – <i style='mso-bidi-font-style:
+We�re done creating (a scaled down version of) the <span class=SpellE>Ecore</span>
+<span class=GramE>profile,</span> and we�re ready to start using it. But before
+we can, there�s one final thing we need to do � <i style='mso-bidi-font-style:
normal'>define</i> it. Since a profile effectively represents an augmentation
of a reference <span class=SpellE>metamodel</span> (UML), in order for the
-extensions we’ve defined to appear as though they’re part of the UML <span
-class=SpellE>metamodel</span>, they need to be “defined” at the meta-<span
+extensions we�ve defined to appear as though they�re part of the UML <span
+class=SpellE>metamodel</span>, they need to be �defined� at the meta-<span
class=SpellE>metamodel</span> (i.e. <span class=SpellE>Ecore</span>) level. The
implementation of profile support in UML2 does this by converting the contents
of the profile to an equivalent <span class=SpellE>Ecore</span> representation
@@ -1611,41 +1613,41 @@ src="article_files/image024.jpg" v:shapes="_x0000_i1139"><![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'><img
border=0 width=62 height=13 id="_x0000_i1091" src="../../../../images/tip.gif"><span
-style='mso-spacerun:yes'> </span>You’ll notice that an annotation with source <b
+style='mso-spacerun:yes'>�</span>You�ll notice that an annotation with source <b
style='mso-bidi-font-weight:normal'>http://www.eclipse.org/uml2/2.0.0/UML</b>
has been attached to the profile. It contains the generated <span class=SpellE>Ecore</span>
representation (an <span class=SpellE>Ecore</span> package with classes,
attributes, <span class=SpellE>enums</span>, etc.) of the profile. As with
-extensions, it’s important that this annotation (and its contents) <b
+extensions, it�s important that this annotation (and its contents) <b
style='mso-bidi-font-weight:normal'>not</b> be modified, since the UML2 profile
mechanism depends on these constructs.</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'>Let’s
+<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'>Let�s
look at how to perform the same task using Java code. The code snippet below
shows a method that programmatically defines a specified profile.</p>
-<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'>     </span><span
+<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'>���� </span><span
class=GramE>protected</span> static void <span class=SpellE>defineProfile</span>(Profile <span
class=SpellE>profile</span>) {</pre><pre style='margin-left:9.0pt'><img
border=0 width=24 height=13 id="_x0000_i1092" src="../../../../images/tag_1.gif"
-align=CENTER><span style='mso-tab-count:2'>         </span><span class=SpellE><span
+align=CENTER><span style='mso-tab-count:2'>�������� </span><span class=SpellE><span
class=GramE>profile.define</span></span><span class=GramE>(</span>);</pre><pre
style='margin-left:9.0pt'><o:p>&nbsp;</o:p></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'>            </span><span class=GramE>out(</span>&quot;Profile '&quot; + <span
+style='mso-tab-count:2'>����������� </span><span class=GramE>out(</span>&quot;Profile '&quot; + <span
class=SpellE>profile.getQualifiedName</span>() + &quot;' defined.&quot;);</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: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 method on the profile <img border=0 width=24 height=13
id="_x0000_i1093" src="../../../../images/tag_1.gif" align=CENTER><span
-style='mso-spacerun:yes'> </span>that generates the <span class=SpellE>Ecore</span>
+style='mso-spacerun:yes'>�</span>that generates the <span class=SpellE>Ecore</span>
representation of the profile and increments its version.</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,
-let’s see this method in action. For example, we could define the ‘<span
-class=SpellE>ecore</span>’ profile as follows:</p>
+let�s see this method in action. For example, we could define the �<span
+class=SpellE>ecore</span>� profile as follows:</p>
-<pre style='margin-left:9.0pt'><span style='mso-tab-count:2'>            </span><span
+<pre style='margin-left:9.0pt'><span style='mso-tab-count:2'>����������� </span><span
class=SpellE><span class=GramE>defineProfile</span></span><span class=GramE>(</span><span
class=SpellE>ecoreProfile</span>);</pre>
@@ -1653,7 +1655,7 @@ class=SpellE>ecoreProfile</span>);</pre>
Profiles</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'>Now
-that we’ve spent all this time creating and defining a profile, we’d better
+that we�ve spent all this time creating and defining a profile, we�d better
save our work. When we created our profile using the UML model wizard, a UML
resource was created for us, so now all that needs to be done is to serialize
the contents of our profile as XMI to a file on disk (i.e. <span class=SpellE><code>Ecore.profile.uml</code></span>).
@@ -1662,67 +1664,67 @@ To save a profile 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 the <b>File &gt; Save</b> menu item.</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'>It’s
+<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'>It�s
that simple. Programmatically, we have a bit more work to do because so far,
-we’ve been creating our profile in a vacuum, i.e. without a containing
+we�ve been creating our profile in a vacuum, i.e. without a containing
resource. The code snippet below shows a method that saves a specified package
to a resource with a specified URI.</p>
-<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'>     </span><span
+<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 <span
class=SpellE>uri</span>) {</pre><pre style='margin-left:9.0pt'><img border=0
width=24 height=13 id="_x0000_i1094" src="../../../../images/tag_1.gif"
-align=CENTER><span style='mso-tab-count:2'>         </span>Resource <span
+align=CENTER><span style='mso-tab-count:2'>�������� </span>Resource <span
class=SpellE>resource</span> = <span class=SpellE>RESOURCE_<span class=GramE>SET.createResource</span></span><span
class=GramE>(</span><span class=SpellE>uri</span>);</pre><pre style='margin-left:
9.0pt'><img border=0 width=24 height=13 id="_x0000_i1095"
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
+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>&nbsp;</o:p></pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:2'>            </span><span
+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_i1096" src="../../../../images/tag_3.gif"
-align=CENTER><span style='mso-tab-count:3'>                 </span><span
+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
+style='margin-left:9.0pt'><span style='mso-tab-count:3'>������������������� </span><span
class=GramE>out(</span>&quot;Done.&quot;);</pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'>            </span>} catch (<span class=SpellE>IOException</span> <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_i1097" src="../../../../images/tag_4.gif"
-align=CENTER><span style='mso-tab-count:3'>                 </span><span
+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>
+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 use a statically initialized resource set <img border=0 width=24 height=13
id="_x0000_i1098" src="../../../../images/tag_1.gif" align=CENTER><span
-style='mso-spacerun:yes'> </span>to create a resource with the specified URI,
-add the package to the resource’s contents <img border=0 width=24 height=13
+style='mso-spacerun:yes'>�</span>to create a resource with the specified URI,
+add the package to the resource�s contents <img border=0 width=24 height=13
id="_x0000_i1099" src="../../../../images/tag_2.gif" align=CENTER>, and ask the
resource to save itself <img border=0 width=24 height=13 id="_x0000_i1100"
src="../../../../images/tag_3.gif" align=CENTER><span
-style='mso-spacerun:yes'> </span>using the default options. If an exception
+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_i1101"
src="../../../../images/tag_4.gif" align=CENTER><span
-style='mso-spacerun:yes'> </span>via our handy utility method.</p>
+style='mso-spacerun:yes'>�</span>via our handy utility method.</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,
-let’s see this method in action. For example, we could save the ‘<span
-class=SpellE>ecore</span>’ profile to a resource with URI ‘<span class=SpellE>Ecore.profile.uml</span>’
+let�s see this method in action. For example, we could save the �<span
+class=SpellE>ecore</span>� profile to a resource with URI �<span class=SpellE>Ecore.profile.uml</span>�
(relative to a URI passed in as an argument) as follows:</p>
-<pre style='margin-left:9.0pt'><span style='mso-tab-count:2'>            </span><span
+<pre style='margin-left:9.0pt'><span style='mso-tab-count:2'>����������� </span><span
class=GramE>save(</span><span class=SpellE>ecoreProfile</span>, <span
class=SpellE>URI.createURI</span>(<span class=SpellE>args</span>[0]).<span
class=SpellE>appendSegment</span>(&quot;<span class=SpellE>Ecore</span>&quot;)</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:3'>                    </span>.<span
+style='margin-left:9.0pt'><span style='mso-tab-count:3'>������������������� </span>.<span
class=SpellE><span class=GramE>appendFileExtension</span></span><span
class=GramE>(</span><span class=SpellE>UMLResource.PROFILE_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_i1102" src="../../../../images/tip.gif"><span
-style='mso-spacerun:yes'> </span>The <span class=SpellE><code>UMLResource.PROFILE_FILE_EXTENSION</code></span>
+style='mso-spacerun:yes'>�</span>The <span class=SpellE><code>UMLResource.PROFILE_FILE_EXTENSION</code></span>
constant represents the file extension for UML2 profiles (<code>.<span
class=SpellE>profile.uml</span></code>).</p>
@@ -1730,9 +1732,9 @@ class=SpellE>profile.uml</span></code>).</p>
Models</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'>In
-order to make use of our profile, we’ll need to open a model and load the
-profile. We’ll use the ExtendedPO2 model that was created in the “Getting
-Started with UML2” article (you’ll need to copy it into your project and
+order to make use of our profile, we�ll need to open a model and load the
+profile. We�ll use the ExtendedPO2 model that was created in the �Getting
+Started with UML2� article (you�ll need to copy it into your project and
refresh the workspace first).</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
@@ -1744,19 +1746,19 @@ in the <b style='mso-bidi-font-weight:normal'>Navigator</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'>Behind
the scenes, a resource is obtained from the right kind resource factory (based
-on the extension ‘<b style='mso-bidi-font-weight:normal'>.<span class=SpellE>uml</span></b>’)
+on the extension �<b style='mso-bidi-font-weight:normal'>.<span class=SpellE>uml</span></b>�)
and loaded, and then a new UML editor is opened and populated with the
-resource’s contents.</p>
+resource�s contents.</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
load a profile (or any resource, actually) 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 the <b>UML Editor &gt; Load Resource…</b> menu item.</p>
+Select the <b>UML Editor &gt; Load Resource�</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)
-Press the <b>Browse Workspace…</b> button.</p>
+Press the <b>Browse Workspace�</b> button.</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 resource (i.e. <b>Introduction to UML2 Profiles/<span class=SpellE>Ecore.profile.uml</span></b>)
@@ -1778,37 +1780,37 @@ src="article_files/image026.jpg" v:shapes="_x0000_i1140"><![endif]></p>
we have a bit more work to do. The code snippet below shows a method that loads
a package from a resource with a specified URI.</p>
-<pre style='margin-left:.25in'><span style='mso-tab-count:1'>   </span><span
+<pre style='margin-left:.25in'><span style='mso-tab-count:1'>�� </span><span
class=GramE>protected</span> static org.eclipse.uml2.uml.Package load(URI <span
class=SpellE>uri</span>) {</pre><pre style='margin-left:.25in'><span
-style='mso-tab-count:2'>           </span>org.eclipse.uml2.uml.Package package_ = null;</pre><pre
+style='mso-tab-count:2'>���������� </span>org.eclipse.uml2.uml.Package package_ = null;</pre><pre
style='margin-left:.25in'><o:p>&nbsp;</o:p></pre><pre style='margin-left:.25in'><span
-style='mso-tab-count:2'>           </span><span class=GramE>try</span> {</pre><pre
+style='mso-tab-count:2'>���������� </span><span class=GramE>try</span> {</pre><pre
style='margin-left:.25in'><img border=0 width=24 height=13 id="_x0000_i1103"
src="../../../../images/tag_1.gif" align=CENTER><span style='mso-tab-count:
-3'>                </span>Resource <span class=SpellE>resource</span> = <span
+3'>��������������� </span>Resource <span class=SpellE>resource</span> = <span
class=SpellE>RESOURCE_<span class=GramE>SET.getResource</span></span><span
class=GramE>(</span><span class=SpellE>uri</span>, true);</pre><pre
style='margin-left:.25in'><o:p>&nbsp;</o:p></pre><pre style='margin-left:.25in'><img
border=0 width=24 height=13 id="_x0000_i1104" src="../../../../images/tag_2.gif"
-align=CENTER><span style='mso-tab-count:3'>                </span>package_ = (org.eclipse.uml2.uml.Package) <span
+align=CENTER><span style='mso-tab-count:3'>��������������� </span>package_ = (org.eclipse.uml2.uml.Package) <span
class=SpellE><span class=GramE>EcoreUtil.getObjectByType</span></span><span
class=GramE>(</span></pre><pre style='margin-left:.25in'><span
-style='mso-tab-count:4'>                          </span><span class=SpellE><span
+style='mso-tab-count:4'>������������������������� </span><span class=SpellE><span
class=GramE>resource.getContents</span></span><span class=GramE>(</span>), <span
class=SpellE>UMLPackage.Literals.PACKAGE</span>);</pre><pre style='margin-left:
-.25in'><span style='mso-tab-count:2'>           </span>} catch (<span
+.25in'><span style='mso-tab-count:2'>���������� </span>} catch (<span
class=SpellE>WrappedException</span> we) {</pre><pre style='margin-left:.25in'><img
border=0 width=24 height=13 id="_x0000_i1105" src="../../../../images/tag_3.gif"
-align=CENTER><span style='mso-tab-count:3'>                </span><span
+align=CENTER><span style='mso-tab-count:3'>��������������� </span><span
class=GramE>err(</span><span class=SpellE>we.getMessage</span>());</pre><pre
-style='margin-left:.25in'><span style='mso-tab-count:3'>                   </span><span
+style='margin-left:.25in'><span style='mso-tab-count:3'>������������������ </span><span
class=SpellE><span class=GramE>System.exit</span></span><span class=GramE>(</span>1);</pre><pre
-style='margin-left:.25in'><span style='mso-tab-count:2'>           </span>}</pre><pre
+style='margin-left:.25in'><span style='mso-tab-count:2'>���������� </span>}</pre><pre
style='margin-left:.25in'><o:p>&nbsp;</o:p></pre><pre style='margin-left:.25in'><img
border=0 width=24 height=13 id="_x0000_i1106" src="../../../../images/tag_4.gif"
-align=CENTER><span style='mso-tab-count:2'>        </span><span class=GramE>return</span> package_;</pre><pre
-style='margin-left:.25in'><span style='mso-tab-count:1'>   </span>}</pre>
+align=CENTER><span style='mso-tab-count:2'>������� </span><span class=GramE>return</span> package_;</pre><pre
+style='margin-left:.25in'><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 obtain a resource with the specified URI from our statically initialized
@@ -1816,30 +1818,30 @@ resource <span class=GramE>set </span><img border=0 width=24 height=13
id="_x0000_i1107" src="../../../../images/tag_1.gif" align=CENTER>, asking that
it be loaded on demand. Next, we use an EMF utility method <img border=0
width=24 height=13 id="_x0000_i1108" src="../../../../images/tag_2.gif"
-align=CENTER><span style='mso-spacerun:yes'> </span>to obtain the first object
+align=CENTER><span style='mso-spacerun:yes'>�</span>to obtain the first object
of type <span style='font-family:"Courier New"'>Package</span> from the
-resource’s contents. If an exception occurs, we notify the user <img border=0
+resource�s contents. If an exception occurs, we notify the user <img border=0
width=24 height=13 id="_x0000_i1109" src="../../../../images/tag_3.gif"
-align=CENTER><span style='mso-spacerun:yes'> </span>via our handy utility
+align=CENTER><span style='mso-spacerun:yes'>�</span>via our handy utility
method. Finally, if all is well, we return <img border=0 width=24 height=13
id="_x0000_i1110" src="../../../../images/tag_4.gif" align=CENTER><span
-style='mso-spacerun:yes'> </span>the package.</p>
+style='mso-spacerun:yes'>�</span>the package.</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_i1111" src="../../../../images/tip.gif"><span
-style='mso-spacerun:yes'> </span>The <span class=SpellE><code>EcoreUtil</code></span>
+style='mso-spacerun:yes'>�</span>The <span class=SpellE><code>EcoreUtil</code></span>
class (provided by EMF) defines a number of utilities that you may find quite
useful when working with EMF-based resources.</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,
-let’s see this method in action. For example, we could load the ‘epo2’ model
-from a resource with URI ‘ExtendedPO2.uml’ (relative to a URI passed in as an
+let�s see this method in action. For example, we could load the �epo2� model
+from a resource with URI �ExtendedPO2.uml� (relative to a URI passed in as an
argument) as follows:</p>
-<pre style='margin-left:.25in'><span style='mso-tab-count:2'>           </span><span
+<pre style='margin-left:.25in'><span style='mso-tab-count:2'>���������� </span><span
lang=IT style='mso-ansi-language:IT'>Model epo2Model = (Model) load(URI.createURI(args[0]).appendSegment(<o:p></o:p></span></pre><pre
style='margin-left:.25in'><span lang=IT style='mso-ansi-language:IT'><span
-style='mso-tab-count:3'>                   </span></span>&quot;ExtendedPO2&quot;).<span
+style='mso-tab-count:3'>������������������ </span></span>&quot;ExtendedPO2&quot;).<span
class=SpellE><span class=GramE>appendFileExtension</span></span><span
class=GramE>(</span><span class=SpellE>UMLResource.FILE_EXTENSION</span>));</pre>
@@ -1847,7 +1849,7 @@ class=GramE>(</span><span class=SpellE>UMLResource.FILE_EXTENSION</span>));</pre
Profiles</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'>OK,
-our profile has been created, defined, and saved, and we’re ready to apply it to
+our profile has been created, defined, and saved, and we�re ready to apply it to
our model. Applying a profile means that it is allowed (but not necessarily
required) to apply the stereotypes that are defined in the profile to elements
in the package. A profile application is a special type of package import that
@@ -1860,7 +1862,7 @@ 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)
Select the <b style='mso-bidi-font-weight:normal'>UML Editor &gt; Package &gt;
-Apply Profile…</b> menu item.</p>
+Apply Profile�</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'>3)
Choose a profile (i.e. <span class=SpellE><b style='mso-bidi-font-weight:normal'>ecore</b></span>)<span
@@ -1869,7 +1871,7 @@ button, then press the <b style='mso-bidi-font-weight:normal'>OK</b> button.</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_i1112" src="../../../../images/tip.gif"><span
-style='mso-spacerun:yes'> </span>Be sure to pick the profile we’ve created instead
+style='mso-spacerun:yes'>�</span>Be sure to pick the profile we�ve created instead
of the built-in profile provided by the UML resources plug-in (i.e. <span
class=SpellE><b style='mso-bidi-font-weight:normal'>ecore</b></span>, not <span
class=SpellE><b style='mso-bidi-font-weight:normal'>Ecore</b></span>).</p>
@@ -1885,57 +1887,57 @@ src="article_files/image028.jpg" v:shapes="_x0000_i1141"><![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'><img
border=0 width=62 height=13 id="_x0000_i1113" src="../../../../images/tip.gif"><span
-style='mso-spacerun:yes'> </span>You’ll notice another annotation (with source <b
+style='mso-spacerun:yes'>�</span>You�ll notice another annotation (with source <b
style='mso-bidi-font-weight:normal'>http://www.eclipse.org/uml2/2.0.0/UML</b>)
has been attached, in this case to keep track of the <span class=SpellE>Ecore</span>
representation for the definition of the profile that is currently applied to
-the package. Again, it’s important that this annotation <b style='mso-bidi-font-weight:
+the package. Again, it�s important that this annotation <b style='mso-bidi-font-weight:
normal'>not</b> be modified, since the UML2 profile mechanism depends on this
construct. Note that a newer definition of the profile can be applied using the
same menu item, and a profile (along with all of its stereotypes) can be
unapplied using the <b style='mso-bidi-font-weight:normal'>UML Editor &gt;
-Package &gt; <span class=SpellE>Unapply</span> Profile…</b> menu item.</p>
+Package &gt; <span class=SpellE>Unapply</span> Profile�</b> menu item.</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'>Let’s
+<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'>Let�s
look at how to perform the same task using Java code. The code snippet below
shows a method that programmatically applies a specified profile to a specified
package.</p>
-<pre style='margin-left:8.5pt'><span style='mso-tab-count:1'>     </span><span
+<pre style='margin-left:8.5pt'><span style='mso-tab-count:1'>���� </span><span
class=GramE>protected</span> static void <span class=SpellE>applyProfile</span>(org.eclipse.uml2.uml.Package package_,</pre><pre
-style='margin-left:8.5pt'><span style='mso-tab-count:3'>                    </span><span
+style='margin-left:8.5pt'><span style='mso-tab-count:3'>������������������� </span><span
lang=IT style='mso-ansi-language:IT'>Profile profile) {<o:p></o:p></span></pre><pre
style='margin-left:8.5pt'><img border=0 width=24 height=13 id="_x0000_i1114"
src="../../../../images/tag_1.gif" align=CENTER><span lang=IT style='mso-ansi-language:
-IT'><span style='mso-tab-count:2'>         </span>package_.applyProfile(profile);<o:p></o:p></span></pre><pre
+IT'><span style='mso-tab-count:2'>�������� </span>package_.applyProfile(profile);<o:p></o:p></span></pre><pre
style='margin-left:8.5pt'><span lang=IT style='mso-ansi-language:IT'><o:p>&nbsp;</o:p></span></pre><pre
style='margin-left:8.5pt'><span lang=IT style='mso-ansi-language:IT'><span
-style='mso-tab-count:2'>            </span></span><span class=GramE>out(</span>&quot;Profile '&quot; + <span
+style='mso-tab-count:2'>����������� </span></span><span class=GramE>out(</span>&quot;Profile '&quot; + <span
class=SpellE>profile.getQualifiedName</span>() + &quot;' applied to package '&quot;</pre><pre
-style='margin-left:8.5pt'><span style='mso-tab-count:3'>                    </span>+ <span
+style='margin-left:8.5pt'><span style='mso-tab-count:3'>������������������� </span>+ <span
class=SpellE>package_.<span class=GramE>getQualifiedName</span></span><span
class=GramE>(</span>) + &quot;'.&quot;);</pre><pre style='margin-left:8.5pt'><span
-style='mso-tab-count:1'>     </span>}</pre>
+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 method on the package <img border=0 width=24 height=13
id="_x0000_i1115" src="../../../../images/tag_1.gif" align=CENTER><span
-style='mso-spacerun:yes'> </span>that creates a profile application on the
+style='mso-spacerun:yes'>�</span>that creates a profile application on the
package and sets the profile as the imported profile.</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,
-let’s see this method in action. For example, we could apply the ‘<span
-class=SpellE>ecore</span>’ profile to the ‘epo2’ model as follows:</p>
+let�s see this method in action. For example, we could apply the �<span
+class=SpellE>ecore</span>� profile to the �epo2� model as follows:</p>
-<pre><span style='mso-tab-count:2'>              </span><span class=SpellE><span
+<pre><span style='mso-tab-count:2'>������������� </span><span class=SpellE><span
class=GramE>applyProfile</span></span><span class=GramE>(</span>epo2Model, <span
class=SpellE>ecoreProfile</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'>Applying
Stereotypes</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'>We’re
-on the home stretch now… Once a profile has been applied to a package,
+<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'>We�re
+on the home stretch now� Once a profile has been applied to a package,
stereotypes defined in the profile can be applied to instances of the
appropriate <span class=SpellE>metaclasses</span> (as per the defined
extensions). When a stereotype is applied to an element, that element is
@@ -1952,7 +1954,7 @@ 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)
Select the <b style='mso-bidi-font-weight:normal'>UML Editor &gt; Element &gt;
-Apply Stereotype…</b> menu item.</p>
+Apply Stereotype�</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'>3)
Choose a stereotype (i.e. <span class=SpellE><b style='mso-bidi-font-weight:
@@ -1962,7 +1964,7 @@ style='mso-bidi-font-weight:normal'>OK</b> button.</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_i1116" src="../../../../images/tryit.gif"><span
-style='mso-spacerun:yes'> </span>Apply the appropriate stereotypes to other
+style='mso-spacerun:yes'>�</span>Apply the appropriate stereotypes to other
properties (<b style='mso-bidi-font-weight:normal'>&lt;Property&gt; <span
class=SpellE>shippedOrders</span> : <span class=SpellE>PurchaseOrder</span>
[0..*]</b> in <b style='mso-bidi-font-weight:normal'>&lt;Class&gt; Supplier</b>;
@@ -1988,70 +1990,70 @@ src="article_files/image030.jpg" v:shapes="_x0000_i1142"><![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'><img
border=0 width=62 height=13 id="_x0000_i1117" src="../../../../images/tip.gif"><span
-style='mso-spacerun:yes'> </span>A stereotype (and its tagged values) can be
+style='mso-spacerun:yes'>�</span>A stereotype (and its tagged values) can be
unapplied using the <b style='mso-bidi-font-weight:normal'>UML Editor &gt;
-Element &gt; <span class=SpellE>Unapply</span> Stereotype…</b> menu item.</p>
+Element &gt; <span class=SpellE>Unapply</span> Stereotype�</b> menu item.</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'>Let’s
+<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'>Let�s
look at how to perform the same task using Java code. The code snippet below shows
a method that programmatically applies a specified stereotype to a specified
(named) element.</p>
-<pre style='margin-left:.25in'><span style='mso-tab-count:1'>   </span><span
+<pre style='margin-left:.25in'><span style='mso-tab-count:1'>�� </span><span
class=GramE>protected</span> static void <span class=SpellE>applyStereotype</span>(<span
class=SpellE>NamedElement</span> <span class=SpellE>namedElement</span>,</pre><pre
-style='margin-left:.25in'><span style='mso-tab-count:3'>                   </span>Stereotype <span
+style='margin-left:.25in'><span style='mso-tab-count:3'>������������������ </span>Stereotype <span
class=SpellE>stereotype</span>) {</pre><pre style='margin-left:.25in'><img
border=0 width=24 height=13 id="_x0000_i1118" src="../../../../images/tag_1.gif"
-align=CENTER><span style='mso-tab-count:2'>        </span><span class=SpellE><span
+align=CENTER><span style='mso-tab-count:2'>������� </span><span class=SpellE><span
class=GramE>namedElement.applyStereotype</span></span><span class=GramE>(</span>stereotype);</pre><pre
style='margin-left:.25in'><o:p>&nbsp;</o:p></pre><pre style='margin-left:.25in'><span
-style='mso-tab-count:2'>           </span><span class=GramE>out(</span>&quot;Stereotype '&quot; + <span
+style='mso-tab-count:2'>���������� </span><span class=GramE>out(</span>&quot;Stereotype '&quot; + <span
class=SpellE>stereotype.getQualifiedName</span>()</pre><pre style='margin-left:
-.25in'><span style='mso-tab-count:3'>                   </span>+ &quot;' applied to element '&quot; + <span
+.25in'><span style='mso-tab-count:3'>������������������ </span>+ &quot;' applied to element '&quot; + <span
class=SpellE><span class=GramE>namedElement.getQualifiedName</span></span><span
class=GramE>(</span>) + &quot;'.&quot;);</pre><pre style='margin-left:.25in'><span
-style='mso-tab-count:1'>   </span>}</pre>
+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 method on the element <img border=0 width=24 height=13
id="_x0000_i1119" src="../../../../images/tag_1.gif" align=CENTER><span
-style='mso-spacerun:yes'> </span>that creates an instance of the <span
+style='mso-spacerun:yes'>�</span>that creates an instance of the <span
class=SpellE>Ecore</span> class representing the specified stereotype (using
dynamic EMF) and attaches it to the element using an annotation.</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,
-let’s see this method in action. For example, we could apply the ‘<span
-class=SpellE>EReference</span>’ stereotype to the ‘<span class=SpellE>pendingOrders</span>’
-property of the ‘Supplier’ class in the ‘epo2’ model as follows:</p>
+let�s see this method in action. For example, we could apply the �<span
+class=SpellE>EReference</span>� stereotype to the �<span class=SpellE>pendingOrders</span>�
+property of the �Supplier� class in the �epo2� model as follows:</p>
-<pre style='margin-left:.25in'><span style='mso-tab-count:2'>           </span><span
+<pre style='margin-left:.25in'><span style='mso-tab-count:2'>���������� </span><span
class=GramE>org.eclipse.uml2.uml.Class</span> <span class=SpellE>supplierClass</span> = (org.eclipse.uml2.uml.Class) epo2Model</pre><pre
-style='margin-left:.25in'><span style='mso-tab-count:3'>                   </span>.<span
+style='margin-left:.25in'><span style='mso-tab-count:3'>������������������ </span>.<span
class=SpellE><span class=GramE>getOwnedType</span></span><span class=GramE>(</span>&quot;Supplier&quot;);</pre><pre
style='margin-left:.25in'><o:p>&nbsp;</o:p></pre><pre style='margin-left:.25in'><span
-style='mso-tab-count:2'>           </span>Property <span class=SpellE>pendingOrdersProperty</span> = <span
+style='mso-tab-count:2'>���������� </span>Property <span class=SpellE>pendingOrdersProperty</span> = <span
class=SpellE>supplierClass</span></pre><pre style='margin-left:.25in'><span
-style='mso-tab-count:3'>                   </span>.<span class=SpellE><span
+style='mso-tab-count:3'>������������������ </span>.<span class=SpellE><span
class=GramE>getOwnedAttribute</span></span><span class=GramE>(</span>&quot;<span
class=SpellE>pendingOrders</span>&quot;, null);</pre><pre style='margin-left:
-.25in'><span style='mso-tab-count:2'>           </span><span class=SpellE><span
+.25in'><span style='mso-tab-count:2'>���������� </span><span class=SpellE><span
class=GramE>applyStereotype</span></span><span class=GramE>(</span><span
class=SpellE>pendingOrdersProperty</span>, <span class=SpellE>eReferenceStereotype</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_i1120" src="../../../../images/tryit.gif"><span
-style='mso-spacerun:yes'> </span>Write code to programmatically apply the
+style='mso-spacerun:yes'>�</span>Write code to programmatically apply the
appropriate stereotypes to other properties (i.e.
-‘epo2::Supplier::shippedOrders’, ‘epo2::PurchaseOrder::totalAmount’,
-‘epo2::PurchaseOrder::previousOrder’, ‘epo2::PurchaseOrder::customer’, and
-‘epo2::Customer::orders’) in the ExtendedPO2 model.</p>
+�epo2::Supplier::shippedOrders�, �epo2::PurchaseOrder::totalAmount�,
+�epo2::PurchaseOrder::previousOrder�, �epo2::PurchaseOrder::customer�, and
+�epo2::Customer::orders�) in the ExtendedPO2 model.</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'>Accessing
Stereotype Property Values</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'>At
-long last, we’re ready to get and set values for the properties (tagged values)
+long last, we�re ready to get and set values for the properties (tagged values)
defined in our extensions. To get and set the value for a stereotype property
using the UML editor, follow these steps:</p>
@@ -2071,7 +2073,7 @@ normal'>EReference</b></span>) 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_i1121" src="../../../../images/tryit.gif"><span
-style='mso-spacerun:yes'> </span>Get and set values for other stereotype
+style='mso-spacerun:yes'>�</span>Get and set values for other stereotype
properties (i.e. <b style='mso-bidi-font-weight:normal'>Is Transient</b> and <b
style='mso-bidi-font-weight:normal'>Is Resolve Proxies</b> under <span
class=SpellE><b style='mso-bidi-font-weight:normal'>EReference</b></span> for <b
@@ -2116,56 +2118,56 @@ this point your workspace should look something like this:</p>
</v:shape><![endif]--><![if !vml]><img border=0 width=928 height=946
src="article_files/image032.jpg" v:shapes="_x0000_i1143"><![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'>Let’s
+<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'>Let�s
look at how to perform the same task using Java code. The code snippet below
shows a method that programmatically gets and returns the value of a specified
property of a specified stereotype for a specified element.</p>
-<pre style='margin-left:.25in'><span style='mso-tab-count:1'>   </span><span
+<pre style='margin-left:.25in'><span style='mso-tab-count:1'>�� </span><span
class=GramE>protected</span> static Object <span class=SpellE>getStereotypePropertyValue</span>(</pre><pre
-style='margin-left:.25in'><span style='mso-tab-count:3'>                   </span><span
+style='margin-left:.25in'><span style='mso-tab-count:3'>������������������ </span><span
class=SpellE>NamedElement</span> <span class=SpellE>namedElement</span>, Stereotype <span
class=SpellE>stereotype</span>, Property <span class=SpellE>property</span>) {</pre><pre
style='margin-left:.25in'><img border=0 width=24 height=13 id="_x0000_i1122"
src="../../../../images/tag_1.gif" align=CENTER><span style='mso-tab-count:
-2'>        </span>Object value = <span class=SpellE><span class=GramE>namedElement.getValue</span></span><span
+2'>������� </span>Object value = <span class=SpellE><span class=GramE>namedElement.getValue</span></span><span
class=GramE>(</span>stereotype, <span class=SpellE>property.getName</span>());</pre><pre
style='margin-left:.25in'><o:p>&nbsp;</o:p></pre><pre style='margin-left:.25in'><span
-style='mso-tab-count:2'>           </span><span class=GramE>out(</span>&quot;Value of stereotype property '&quot; + <span
+style='mso-tab-count:2'>���������� </span><span class=GramE>out(</span>&quot;Value of stereotype property '&quot; + <span
class=SpellE>property.getQualifiedName</span>()</pre><pre style='margin-left:
-.25in'><span style='mso-tab-count:3'>                   </span>+ &quot;' on element '&quot; + <span
+.25in'><span style='mso-tab-count:3'>������������������ </span>+ &quot;' on element '&quot; + <span
class=SpellE><span class=GramE>namedElement.getQualifiedName</span></span><span
class=GramE>(</span>) + &quot;' is &quot;</pre><pre style='margin-left:.25in'><span
-style='mso-tab-count:3'>                   </span>+ <span class=SpellE><span
+style='mso-tab-count:3'>������������������ </span>+ <span class=SpellE><span
class=GramE>String.valueOf</span></span><span class=GramE>(</span>value) + &quot;.&quot;);</pre><pre
style='margin-left:.25in'><o:p>&nbsp;</o:p></pre><pre style='margin-left:.25in'><span
-style='mso-tab-count:2'>           </span><span class=GramE>return</span> value;</pre><pre
-style='margin-left:.25in'><span style='mso-tab-count:1'>   </span>}</pre>
+style='mso-tab-count:2'>���������� </span><span class=GramE>return</span> value;</pre><pre
+style='margin-left:.25in'><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 method on the (named) element <img border=0 width=24
height=13 id="_x0000_i1123" src="../../../../images/tag_1.gif" align=CENTER><span
-style='mso-spacerun:yes'> </span>that retrieves the value of a property with a
+style='mso-spacerun:yes'>�</span>that retrieves the value of a property with a
specified name from the dynamically created <span class=SpellE>Ecore</span>
object instance corresponding to the specified applied stereotype, notifies the
user, and returns 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'>OK,
-let’s see this method in action. For example, we could get the value of the ‘<span
-class=SpellE>isVolatile</span>’ property of the ‘<span class=SpellE>EReference</span>’
-stereotype for the ‘<span class=SpellE>pendingOrders</span>’ property of the
-‘Supplier’ class in the ‘epo2’ model as follows:</p>
+let�s see this method in action. For example, we could get the value of the �<span
+class=SpellE>isVolatile</span>� property of the �<span class=SpellE>EReference</span>�
+stereotype for the �<span class=SpellE>pendingOrders</span>� property of the
+�Supplier� class in the �epo2� model as follows:</p>
-<pre style='margin-left:.25in'><span style='mso-tab-count:2'>           </span><span
+<pre style='margin-left:.25in'><span style='mso-tab-count:2'>���������� </span><span
class=SpellE><span class=GramE>getStereotypePropertyValue</span></span><span
class=GramE>(</span><span class=SpellE>pendingOrdersProperty</span>, <span
class=SpellE>eReferenceStereotype</span>,</pre><pre style='margin-left:.25in'><span
-style='mso-tab-count:3'>                   </span><span class=SpellE><span
+style='mso-tab-count:3'>������������������ </span><span class=SpellE><span
class=GramE>isVolatileProperty</span></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_i1124" src="../../../../images/tryit.gif"><span
-style='mso-spacerun:yes'> </span>Write code to programmatically get the values
+style='mso-spacerun:yes'>�</span>Write code to programmatically get the values
of the other stereotype properties for elements in the ExtendedPO2 model.</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'>The
@@ -2173,57 +2175,57 @@ code snippet below shows a method that programmatically sets the value of a
specified property of a specified stereotype for a specified element to a
specified value.</p>
-<pre style='margin-left:.25in'><span style='mso-tab-count:1'>   </span><span
+<pre style='margin-left:.25in'><span style='mso-tab-count:1'>�� </span><span
class=GramE>protected</span> static void <span class=SpellE>setStereotypePropertyValue</span>(<span
class=SpellE>NamedElement</span> <span class=SpellE>namedElement</span>,</pre><pre
-style='margin-left:.25in'><span style='mso-tab-count:3'>                   </span>Stereotype <span
+style='margin-left:.25in'><span style='mso-tab-count:3'>������������������ </span>Stereotype <span
class=SpellE>stereotype</span>, Property <span class=SpellE>property</span>, Object value) {</pre><pre
style='margin-left:.25in'><img border=0 width=24 height=13 id="_x0000_i1125"
src="../../../../images/tag_1.gif" align=CENTER><span style='mso-tab-count:
-2'>        </span><span class=SpellE><span class=GramE>namedElement.setValue</span></span><span
+2'>������� </span><span class=SpellE><span class=GramE>namedElement.setValue</span></span><span
class=GramE>(</span>stereotype, <span class=SpellE>property.getName</span>(), value);</pre><pre
style='margin-left:.25in'><o:p>&nbsp;</o:p></pre><pre style='margin-left:.25in'><span
-style='mso-tab-count:2'>           </span><span class=GramE>out(</span>&quot;Value of stereotype property '&quot; + <span
+style='mso-tab-count:2'>���������� </span><span class=GramE>out(</span>&quot;Value of stereotype property '&quot; + <span
class=SpellE>property.getQualifiedName</span>()</pre><pre style='margin-left:
-.25in'><span style='mso-tab-count:3'>                   </span>+ &quot;' on element '&quot; + <span
+.25in'><span style='mso-tab-count:3'>������������������ </span>+ &quot;' on element '&quot; + <span
class=SpellE><span class=GramE>namedElement.getQualifiedName</span></span><span
class=GramE>(</span>) + &quot;' set to &quot;</pre><pre style='margin-left:
-.25in'><span style='mso-tab-count:3'>                   </span>+ <span
+.25in'><span style='mso-tab-count:3'>������������������ </span>+ <span
class=SpellE><span class=GramE>String.valueOf</span></span><span class=GramE>(</span>value) + &quot;.&quot;);</pre><pre
-style='margin-left:.25in'><span style='mso-tab-count:1'>   </span>}</pre>
+style='margin-left:.25in'><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 method on the (named) element <img border=0 width=24
height=13 id="_x0000_i1126" src="../../../../images/tag_1.gif" align=CENTER><span
-style='mso-spacerun:yes'> </span>that sets the value of a property with a
+style='mso-spacerun:yes'>�</span>that sets the value of a property with a
specified name in the dynamically created <span class=SpellE>Ecore</span>
object instance corresponding to the specified applied stereotype and notifies
the user.</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,
-let’s see this method in action. For example, we could set the value of the ‘<span
-class=SpellE>isVolatile</span>’ property of the ‘<span class=SpellE>EReference</span>’
-stereotype for the ‘<span class=SpellE>pendingOrders</span>’ property of the
-‘Supplier’ class in the ‘epo2’ model to <span class=SpellE><span
+let�s see this method in action. For example, we could set the value of the �<span
+class=SpellE>isVolatile</span>� property of the �<span class=SpellE>EReference</span>�
+stereotype for the �<span class=SpellE>pendingOrders</span>� property of the
+�Supplier� class in the �epo2� model to <span class=SpellE><span
style='font-family:"Courier New"'>Boolean.TRUE</span></span> as follows:</p>
-<pre style='margin-left:.25in'><span style='mso-tab-count:2'>           </span><span
+<pre style='margin-left:.25in'><span style='mso-tab-count:2'>���������� </span><span
class=SpellE><span class=GramE>setStereotypePropertyValue</span></span><span
class=GramE>(</span><span class=SpellE>pendingOrdersProperty</span>, <span
class=SpellE>eReferenceStereotype</span>,</pre><pre style='margin-left:.25in'><span
-style='mso-tab-count:3'>                   </span><span class=SpellE><span
+style='mso-tab-count:3'>������������������ </span><span class=SpellE><span
class=GramE>isVolatileProperty</span></span>, <span class=SpellE>Boolean.TRUE</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_i1127" src="../../../../images/tryit.gif"><span
-style='mso-spacerun:yes'> </span>Write code to programmatically set the values
+style='mso-spacerun:yes'>�</span>Write code to programmatically set the values
of the other stereotype properties for elements in the ExtendedPO2 model.</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>
<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'>Congratulations!
-If you’ve made it this far, you’ve successfully created and applied a simple
-profile programmatically and/or using the UML editor. There’s a whole lot more
+If you�ve made it this far, you�ve successfully created and applied a simple
+profile programmatically and/or using the UML editor. There�s a whole lot more
that could be said, but the purpose of this article was just to introduce you
to the concepts. Stay tuned for more articles on how to develop tools with
UML2.</p>
@@ -2236,7 +2238,7 @@ join the <a href="news://news.eclipse.org/eclipse.modeling.mdt.uml2">newsgroup</
<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'>[1]
-K. Hussey. <span class=GramE>“Getting Started with UML2”.</span> International
+K. Hussey. <span class=GramE>�Getting Started with UML2�.</span> International
Business Machines Corp., 2004, 2006.</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'><span
@@ -2254,17 +2256,17 @@ run the example or view the source code for this article, unzip <a
href="http://download.eclipse.org/modeling/mdt/uml2/downloads/articles/uml2.articles_200607181325.zip">uml2.articles_200607181325.zip</a>
into your Eclipse home directory and import the <code>com.ibm.uml2.articles</code>
plug-in into your workspace as a binary project with linked content (<b>File
-&gt; Import… &gt; External Plug-ins and Fragments</b>). You can run the <code>IntroductionToUML2Profiles</code>
+&gt; Import� &gt; External Plug-ins and Fragments</b>). You can run the <code>IntroductionToUML2Profiles</code>
class as a Java application with two file <span class=SpellE>URIs</span> (e.g.
-“file:/C:/Introduction to UML2 Profiles” “<span class=SpellE>jar<span
+�file:/C:/Introduction to UML2 Profiles� �<span class=SpellE>jar<span
class=GramE>:file</span></span>:/C:/Eclipse
-3.2/eclipse/plugins/org.eclipse.uml2.uml.resources_2.0.0.v200606221411.jar!/”)
+3.2/eclipse/plugins/org.eclipse.uml2.uml.resources_2.0.0.v200606221411.jar!/�)
as program arguments. The first URI should refer to a folder that contains the
-ExtendedPO2 model described in the “Getting Started with UML2” article. The
+ExtendedPO2 model described in the �Getting Started with UML2� article. The
second URI should use the JAR scheme (since the UML resources plug-in is <span
-class=SpellE>JAR’d</span> as of UML2 1.1) and refer to the location of the <span
+class=SpellE>JAR�d</span> as of UML2 1.1) and refer to the location of the <span
style='font-family:"Courier New"'>org.eclipse.uml2.uml.resources</span> plug-<span
-class=SpellE>in’s</span> JAR archive.</p>
+class=SpellE>in�s</span> JAR archive.</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'><span
style='font-size:7.5pt'>Java and all Java-based trademarks and logos are

Back to the top