| <html> |
| |
| <head> |
| <meta http-equiv=Content-Type content="text/html; charset=windows-1252"> |
| <meta name=ProgId content=PowerPoint.Slide> |
| <meta name=Generator content="Microsoft PowerPoint 10"> |
| <link id=Main-File rel=Main-File |
| href="../EclipseCon2008_LongTalk_NewFeaturesOfUML2.htm"> |
| <link rel=Preview href=preview.wmf> |
| <meta name=Robots content=NoIndex> |
| <script src=script.js></script><script><!-- |
| if( !(IsWin("PPTOtl")||IsWin("PPTNav")||IsWin("PPTOtlNav")) ) |
| { |
| obj = GetObj("Main-File") |
| parent.location.href=obj.href |
| } |
| var gOtlHiliteClr="#ffffff",gOtlNormalClr="#000000",gOtlActiveClr="#ffff00",gSelected="",gTxtState=false,gChildEntryTable=new Array() |
| function Load() |
| { |
| if( IsWin("PPTOtl" ) ){ LoadOtl(); parent.gOtlLoaded=true; return } |
| if( g_supportsPPTHTML ) { |
| if( IsWin("PPTNav" ) ){ LoadNav("NavObj",UpdNav); parent.gNavLoaded=true; return } |
| if( IsWin("PPTOtlNav" ) ){ LoadNav("OtlNavObj",UpdOtlNav); parent.gOtlNavLoaded=true; return } |
| } |
| } |
| function Upd(){ if( IsWin("PPTNav") ) LoadNav("NavObj",UpdNav) } |
| function LoadNav( oId,UpdFunc ) |
| { |
| document.ondragstart=CancelDrag |
| document.onselectstart=CancelDrag |
| document.body.style.margin=2 |
| UpdFunc() |
| obj=document.all.item(oId) |
| obj.style.display="block" |
| obj.style.visibility="visible" |
| document.bgColor="threedface" |
| if( parent.frames["PPTNts"] ) |
| notesBtn.style.display = "" |
| if( parent.gHasNarration ) |
| nb_voiceBorder.style.display = "" |
| } |
| function LoadOtl() |
| { |
| var otl=GetObj("OtlObj") |
| otl.style.display="block" |
| otl.style.visibility="visible" |
| if( gOtlActiveClr == "" ) gOtlActiveClr=document.linkColor |
| if( gOtlHiliteClr == "" ) gOtlHiliteClr=document.fgColor |
| if( gOtlNormalClr == "" ) |
| gOtlNormalClr=document.bgColor |
| else |
| document.bgColor=gOtlNormalClr |
| InitArray() |
| if( ObjExists( parent.gCurSld ) ) { |
| ChangeState( parent.gCurSld,gOtlNormalClr,gOtlHiliteClr ) |
| gSelected=parent.gCurSld |
| } |
| else gSelected = -1 |
| UpdOtl() |
| } |
| function UpdOtl(){ UpdIdx(parent.gCurSld) } |
| function UpdIdx( idx ) |
| { |
| if( gSelected != idx ) { |
| if( gSelected > 0 ) |
| ChangeState( gSelected,gOtlHiliteClr,gOtlNormalClr ) |
| if( ObjExists( idx ) ) { |
| gSelected = idx |
| ChangeState( gSelected,gOtlNormalClr,gOtlHiliteClr ) |
| } |
| else gSelected = -1 |
| } |
| if( gTxtState != parent.gOtlTxtExp ) { |
| state = "block" |
| if( !parent.gOtlTxtExp ) |
| state="none" |
| for(ii=0; ii<gChildEntryTable.length; ii++) { |
| obj=gChildEntryTable[ii]; |
| if( obj.id == null ) continue; |
| if( obj.id.indexOf("PPTC") >= 0 ) |
| obj.style.display=state; |
| } |
| gTxtState=parent.gOtlTxtExp |
| if( ObjExists( gSelected ) ) |
| ChangeState( gSelected,gOtlNormalClr,gOtlHiliteClr ) |
| } |
| } |
| function InitArray() |
| { |
| count=0 |
| var list=GetTags(document,"DIV"); |
| for(ii=0; ii<list.length; ii++) { |
| obj=list.item(ii) |
| if( obj.id == null ) continue |
| if( obj.id.indexOf("PPTC") >= 0 ) |
| gChildEntryTable[count++]=obj |
| } |
| } |
| function ChangeState( idx,fgColor,bgColor ) |
| { |
| obj=GetObj("PPTL"+idx) |
| obj.style.color=fgColor |
| obj=GetObj("PPTP"+idx) |
| obj.style.backgroundColor=bgColor |
| } |
| function ChgClr( o,clr ){ if( o.id != "PPTL"+gSelected ) o.style.color=clr } |
| function Over( src ){ ChgClr(GetLink(src),gOtlActiveClr) } |
| function Out( src ){ ChgClr(GetLink(src),gOtlHiliteClr) } |
| function Follow(src){ window.location.href = GetLink(src).href; } |
| function ObjExists( ii ) { obj=GetObj("PPTP"+ii ); return( obj ) } |
| function GoToSld( href ){ UpdIdx(parent.GetSldNum(href)); parent.GoToSld( href ) } |
| function CancelDrag(){ window.event.cancelBubble=true;window.event.returnValue=false} |
| function GetLink(src) |
| { |
| if(src.tagName=="A") return src |
| else return GetTags(src,"A").item(0) |
| } |
| function UpdNav() |
| { |
| txt = "<center>"; |
| if( parent.GetHrefObj( parent.gCurSld ).mOrigVis == 1 ) |
| txt += "Slide " + parent.GetCurSldNum() + " of " + parent.GetNumSlds() |
| else |
| txt += "Hidden Slide" |
| txt += "</center>"; |
| nav_text.innerHTML = txt; |
| if( !parent.HasPrevSld() ) |
| gBtnArr["nb_prev"].Enabled(0) |
| else |
| gBtnArr["nb_prev"].Enabled(1) |
| if( !parent.HasNextSld() ) |
| gBtnArr["nb_next"].Enabled(0) |
| else |
| gBtnArr["nb_next"].Enabled(1) |
| gBtnArr["nb_nts"].SetEnabled() |
| gBtnArr["nb_nts"].SetFlag( parent.gHasNts ) |
| gBtnArr["nb_sldshw"].Enabled(1) |
| gBtnArr["nb_voice"].Enabled(1) |
| } |
| function UpdOtlNav() |
| { |
| gBtnArr["nb_otl"].SetEnabled(); |
| if( parent.gOtlOpen ) |
| gBtnArr["nb_otlTxt"].Enabled( true ); |
| else |
| document.all.item("nb_otlTxtBorder").style.visibility = "hidden"; |
| } |
| |
| //--></script> |
| <style> |
| <!--.PTxt |
| {position:relative; |
| width:100%; |
| margin-top:5px; |
| padding-left:2px; |
| font-weight:bold;} |
| .CTxt |
| {position:relative; |
| width:100%; |
| margin-top:5px;} |
| a |
| {color:white; |
| text-decoration:none;} |
| ul |
| {color:white; |
| margin-bottom:0px; |
| margin-left:20px;} |
| .sldNum |
| {margin-top:5px; |
| color:white;} |
| .button |
| {position:absolute; |
| width:32px; |
| height:20px; |
| border-style:solid; |
| border-width:1px; |
| border-color:threedface;} |
| --> |
| </style> |
| </head> |
| |
| <body onload="Load()" style='margin:2px'> |
| |
| <div id=NavObj onload="Load()" onmouseover="BtnOnOver()" |
| onmousedown="BtnOnDown()" onmouseout="BtnOnOut()" onmouseup="BtnOnUp()" |
| onkeypress="_KPH()" style='display:none;visibility:hidden'> |
| <table id="notesBtn" style='position:absolute;display:none;width:70px' align=left cellpadding=0 |
| cellspacing=0> |
| <td nowrap> |
| <div id="nb_ntsElem" align=center style='position:relative;padding:3px; |
| font-family:Arial;color:buttontext;font-size:9pt'><img src="notes_flag.gif" |
| border=0 id="notes_flag" style='display:none'><span |
| style='mso-spacerun:yes'> </span>Notes</div> |
| <div title="Show/Hide Notes" id="nb_nts" style='position:absolute;top:0%; |
| left:0%;width:100%;height:100%'></div> |
| </td> |
| </table> |
| |
| <table style='position:relative;width:70px' align=right cellpadding=0 cellspacing=0> |
| <td nowrap> |
| <div id="nb_sldshwText" title="Full |
| Screen Slide Show" align=center style='position:relative;margin-left:20px;padding:3px; |
| font-family:Arial;color:buttontext;font-size:9pt;cursor:default'>Slide |
| Show</div> |
| <div id="nb_sldshwBorder" title="Full Screen Slide Show" style='position:absolute;top:0%;left:0%;width:100%;height:20px'> |
| <div style='position:absolute;clip:rect(0px, 18px, 18px, 0px)'><img |
| src="buttons.gif" id="nb_sldshw" style='position:relative;left:-254px'></div> |
| </div> |
| </td> |
| <td> |
| <div id="nb_voiceBorder" style='display:none;position:absolute;top:0;left:-40px; |
| width:20px;height:20px'> |
| <div style='position:absolute;clip:rect(0px, 18px, 18px, 0px)'><img |
| src="buttons.gif" id="nb_voice" title="Pause/Play Narration" style='position: |
| relative;left:-290px'></div> |
| </div> |
| </td> |
| </table> |
| |
| <table style='position:relative' align=center cellpadding=0 cellspacing=0> |
| <td nowrap> |
| <div id="nb_prevBorder" class=button style='left:-30px'> |
| <div style='position:absolute;clip:rect(0px, 30px, 18px, 0px)'><img |
| src="buttons.gif" id="nb_prev" title="Previous Slide" style='position:relative; |
| left:0px'></div> |
| </div> |
| <span id="nav_text" style='position:relative;top:3px;width:100px;font-family: |
| Arial;color:buttontext;font-size:9pt'></span> |
| <div id="nb_nextBorder" class=button> |
| <div style='position:absolute;clip:rect(0px, 30px, 18px, 0px)'><img |
| src="buttons.gif" id="nb_next" title="Next Slide" style='position:relative; |
| left:-90px'></div> |
| </div> |
| </td> |
| </table> |
| </div> |
| |
| <div id=OtlNavObj onload="Load()" onmouseover="BtnOnOver()" |
| onmousedown="BtnOnDown()" onmouseout="BtnOnOut()" onmouseup="BtnOnUp()" |
| onkeypress="_KPH()" style='display:none;visibility:hidden'> |
| |
| <table style='position:relative;width:70px' align=left cellpadding=0 cellspacing=0> |
| <td nowrap><div title="Show/Hide |
| Outline" id="nb_otl" |
| style='position:absolute;top:0%;left:0%;width:100%;height:100%;cursor:default'> |
| <div id="nb_otlElem" align=center style='position:relative;padding:3px;font-family:Arial; |
| color:buttontext;font-size:9pt'>Outline</div></div> |
| </td> |
| </table> |
| |
| <table style='position:relative' align=center cellpadding=0 cellspacing=0> |
| <td> |
| <div style='position:absolute;left:-18px;width:24px;height:20px;border-style: |
| solid;border-width:1px;border-color:threedface' id="nb_otlTxtBorder"> |
| <div style='position:absolute;clip:rect(0px, 22px, 18px, 0px)'><img |
| src=buttons.gif id="nb_otlTxt" title="Expand/Collapse Outline" |
| style='position:relative;left:-157px'></div> |
| </div> |
| </td> |
| </table> |
| |
| </div> |
| |
| <div id=OtlObj style='display:none;visibility:hidden;'> |
| |
| |
| <table width="100%" style='font-family:Arial;font-size:9pt'> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>1</font></div> |
| </td> |
| <td width="100%"> |
| <div id=PPTP1 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0001.htm');" id=PPTL1>New Features of UML2: |
| Generics, Static Profile Definition and OCL integration</a></font></div> |
| <div id=PPTC1 class=CTxt style='display:none'><font size=2> |
| <ul> |
| <li>Long Talk</li> |
| <li>(170)</li> |
| <br> |
| <br> |
| <li>James Bruck</li> |
| <li>IBM Rational Software</li> |
| <li>UML2 Committer</li> |
| </ul> |
| </font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>2</font></div> |
| </td> |
| <td> |
| <div id=PPTP2 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0010.htm');" id=PPTL2>Agenda</a></font></div> |
| <div id=PPTC2 class=CTxt style='display:none'><font size=2> |
| <ul> |
| <li>Introduction</li> |
| <br> |
| <br> |
| <li>New Features:</li> |
| <br> |
| <br> |
| <ul> |
| <li>Generics</li> |
| </ul> |
| <br> |
| <ul> |
| <li>Static Profile Definition</li> |
| </ul> |
| <br> |
| <ul> |
| <li>OCL Integration</li> |
| <br> |
| <br> |
| </ul> |
| <li>Summary</li> |
| <br> |
| <br> |
| <br> |
| </ul> |
| </font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>3</font></div> |
| </td> |
| <td> |
| <div id=PPTP3 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0011.htm');" id=PPTL3>Introduction: Fill up |
| your Toolbox</a></font></div> |
| <div id=PPTC3 class=CTxt style='display:none'><font size=2> |
| <ul> |
| <li>Creating architectures using basic modeling techniques (Class diagrams, |
| Sequence diagrams etc.) is just the first step.</li> |
| <ul> |
| <br> |
| <br> |
| </ul> |
| <li>Expand your toolbox by adding:</li> |
| <ul> |
| <li>Generics/Templates</li> |
| <ul> |
| <li>Ability to express generic reusable behavior.</li> |
| <br> |
| <br> |
| </ul> |
| <li>Static profile definition</li> |
| <ul> |
| <li>Generate code from profile</li> |
| <li>Now you can specify behavior in your profiles.</li> |
| <br> |
| <br> |
| </ul> |
| <li>OCL Integration</li> |
| <ul> |
| <li>Ability to create constraints, attach them to your model and have all |
| the code necessary to evaluate the constraints using the MDT-OCL |
| project.</li> |
| <br> |
| <br> |
| </ul> |
| </ul> |
| <li>Combination of these tools allows you to make practical use of your |
| models.</li> |
| </ul> |
| </font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>4</font></div> |
| </td> |
| <td> |
| <div id=PPTP4 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0012.htm');" id=PPTL4>Agenda</a></font></div> |
| <div id=PPTC4 class=CTxt style='display:none'><font size=2> |
| <ul> |
| <li>Introduction</li> |
| <br> |
| <br> |
| <li>New Features</li> |
| <br> |
| <br> |
| <ul> |
| <li>Generics</li> |
| </ul> |
| <br> |
| <ul> |
| <li>Static Profile Definition</li> |
| </ul> |
| <br> |
| <ul> |
| <li>OCL Integration</li> |
| <br> |
| <br> |
| </ul> |
| <li>Summary</li> |
| <br> |
| <br> |
| <br> |
| </ul> |
| </font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>5</font></div> |
| </td> |
| <td> |
| <div id=PPTP5 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0013.htm');" id=PPTL5>Generics: Why Bother?</a></font></div> |
| <div id=PPTC5 class=CTxt style='display:none'><font size=2> |
| <ul> |
| <li>Generics in Java.</li> |
| <ul> |
| <li>Enhance reusability of an API by isolating generic behavior.</li> |
| <li>Lists and Maps are commonly used since the implementation doesnt care |
| about the types contained their clients do.</li> |
| <ul> |
| <br> |
| <br> |
| </ul> |
| </ul> |
| <li>Generics in UML®.</li> |
| <ul> |
| <li>Practical Uses</li> |
| <ul> |
| <li>In an EMF-based modeling world, a practical end-goal of modeling is to |
| generate code.</li> |
| <li>Understanding how to express templates and model precisely using UML |
| constructs is useful.</li> |
| </ul> |
| </ul> |
| </ul> |
| </font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>6</font></div> |
| </td> |
| <td> |
| <div id=PPTP6 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0014.htm');" id=PPTL6>Generics: Overview</a></font></div> |
| <div id=PPTC6 class=CTxt style='display:none'><font size=2> |
| <ul> |
| <li>The code generation process from UML to Java uses EMF.</li> |
| <ul> |
| <li><span style='mso-spacerun:yes'> </span>An intermediate Ecore |
| representation is created.</li> |
| <li><span style='mso-spacerun:yes'> </span>Behind the scenes, MDT-UML2 |
| converts from UML to Ecore.</li> |
| </ul> |
| <br> |
| </ul> |
| </font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>7</font></div> |
| </td> |
| <td> |
| <div id=PPTP7 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0015.htm');" id=PPTL7>Generics: Concepts The |
| Players</a></font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>8</font></div> |
| </td> |
| <td> |
| <div id=PPTP8 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0016.htm');" id=PPTL8>Generics: Concepts - UML</a></font></div> |
| <div id=PPTC8 class=CTxt style='display:none'><font size=2> |
| <ul> |
| <li>A TemplateableElement that contains a TemplateSignature is referred to |
| as a Template.</li> |
| <br> |
| <br> |
| <li><span style='mso-spacerun:yes'> </span>If a TemplateableElement has |
| template parameters, a small dashed rectangle is superimposed.</li> |
| <br> |
| <br> |
| </ul> |
| </font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>9</font></div> |
| </td> |
| <td> |
| <div id=PPTP9 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0017.htm');" id=PPTL9>Generics: Concepts - UML</a></font></div> |
| <div id=PPTC9 class=CTxt style='display:none'><font size=2> |
| <ul> |
| <br> |
| <br> |
| </ul> |
| </font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>10</font></div> |
| </td> |
| <td> |
| <div id=PPTP10 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0018.htm');" id=PPTL10>Generics: Concepts |
| The Players</a></font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>11</font></div> |
| </td> |
| <td> |
| <div id=PPTP11 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0063.htm');" id=PPTL11>Generics: Concepts - |
| Java</a></font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>12</font></div> |
| </td> |
| <td> |
| <div id=PPTP12 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0019.htm');" id=PPTL12>Generics: Concepts - |
| UML</a></font></div> |
| <div id=PPTC12 class=CTxt style='display:none'><font size=2> |
| <ul> |
| <li>TemplateBinding</li> |
| <ul> |
| <li>Substitution of actual parameters for the formal template parameters.</li> |
| </ul> |
| </ul> |
| </font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>13</font></div> |
| </td> |
| <td> |
| <div id=PPTP13 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0021.htm');" id=PPTL13>Generics: Examples |
| Generic Operations</a></font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>14</font></div> |
| </td> |
| <td> |
| <div id=PPTP14 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0022.htm');" id=PPTL14>Generics: Examples - |
| Wildcards</a></font></div> |
| <div id=PPTC14 class=CTxt style='display:none'><font size=2> |
| <ul> |
| <li>In Java, wildcards are represented by ? which stands for an unknown |
| type.</li> |
| <br> |
| <br> |
| <li>When we talk about bounds we refer to the ability to specify that |
| bindings must either be the super type of some classifier or extend some |
| classifier.</li> |
| </ul> |
| </font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>15</font></div> |
| </td> |
| <td> |
| <div id=PPTP15 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0023.htm');" id=PPTL15>Generics: Examples - |
| Wildcards</a></font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>16</font></div> |
| </td> |
| <td> |
| <div id=PPTP16 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0024.htm');" id=PPTL16>Generics: Enhanced |
| Profile</a></font></div> |
| <div id=PPTC16 class=CTxt style='display:none'><font size=2> |
| <ul> |
| <li>UML cannot capture everything.</li> |
| <li><<eGenericType>></li> |
| <ul> |
| <li>For code generation, we want to mark classes as intermediary constructs |
| (not included in final Java representation).</li> |
| <li>Introduce upper and lower bounds.</li> |
| </ul> |
| <li><<eTypeParameter>></li> |
| <ul> |
| <li>Introduce multiple bounds.</li> |
| </ul> |
| </ul> |
| </font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>17</font></div> |
| </td> |
| <td> |
| <div id=PPTP17 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0025.htm');" id=PPTL17>Generics: Examples - |
| Wildcards</a></font></div> |
| <div id=PPTC17 class=CTxt style='display:none'><font size=2> |
| <ul> |
| <li>Lets revisit our previous example with wildcards and now consider |
| stereotype properties.</li> |
| <ul> |
| <li>We can set the upper and lower bounds on our |
| <<EGeneric>> stereotype.</li> |
| <li>In the case of our Wildcard_extends_Car, we have the following:</li> |
| </ul> |
| </ul> |
| </font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>18</font></div> |
| </td> |
| <td> |
| <div id=PPTP18 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0026.htm');" id=PPTL18>Generics: Examples |
| Multiple Constraining Classifiers</a></font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>19</font></div> |
| </td> |
| <td> |
| <div id=PPTP19 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0078.htm');" id=PPTL19>Generics: Demo</a></font></div> |
| <div id=PPTC19 class=CTxt style='display:none'><font size=2> |
| <ul> |
| <li>Code generation from a model with generics specified.</li> |
| <br> |
| <br> |
| <ul> |
| <br> |
| </ul> |
| </ul> |
| </font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>20</font></div> |
| </td> |
| <td> |
| <div id=PPTP20 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0028.htm');" id=PPTL20>Generics: Tips & |
| Resources</a></font></div> |
| <div id=PPTC20 class=CTxt style='display:none'><font size=2> |
| <ul> |
| <li>Anything that can be expressed in Java can be represented with UML |
| constructs.</li> |
| <br> |
| <br> |
| <li>Remember that in UML, you need concrete representations of your generic |
| classes (bound classes) in order to use them.</li> |
| <ul> |
| <li>These extra constructs are not required in Java or EMF.</li> |
| </ul> |
| <br> |
| <li>If you get stuck</li> |
| <ul> |
| <li>Use the Ecore to UML2 converter.<span style='mso-spacerun:yes'> |
| </span>Start with EMF representation and then generate UML |
| representation.</li> |
| <li>Can be simpler for those who understand EMF.</li> |
| <ul> |
| <br> |
| <br> |
| </ul> |
| </ul> |
| <li>Changes to upcoming version of UML meta-model.</li> |
| <ul> |
| <li>RTF issue: http://www.omg.org/issues/uml2-rtf.html#Issue11243</li> |
| </ul> |
| </ul> |
| </font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>21</font></div> |
| </td> |
| <td> |
| <div id=PPTP21 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0029.htm');" id=PPTL21>Generics: References</a></font></div> |
| <div id=PPTC21 class=CTxt style='display:none'><font size=2> |
| <ul> |
| <li>More in-depth articles can be found on the UML2 wiki</li> |
| <ul> |
| <li><span style='mso-spacerun:yes'> </span>http://wiki.eclipse.org/MDT-UML2</li> |
| </ul> |
| <br> |
| <li>UML superstructure specification</li> |
| <ul> |
| <li><span style='mso-spacerun:yes'> </span>http://www.omg.org/cgi-bin/doc?formal/07-02-05</li> |
| </ul> |
| <br> |
| <li>The generics tutorial</li> |
| <ul> |
| <li>http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf</li> |
| <br> |
| <br> |
| </ul> |
| <li>Java Generics FAQ by Angelika Langer</li> |
| <ul> |
| <li>http://www.angelikalanger.com/GenericsFAQ/JavaGenericsFAQ.html</li> |
| <br> |
| <br> |
| </ul> |
| <br> |
| <br> |
| </ul> |
| </font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>22</font></div> |
| </td> |
| <td> |
| <div id=PPTP22 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0030.htm');" id=PPTL22>Agenda</a></font></div> |
| <div id=PPTC22 class=CTxt style='display:none'><font size=2> |
| <ul> |
| <li>Introduction</li> |
| <br> |
| <br> |
| <li>New Features:</li> |
| <br> |
| <br> |
| <ul> |
| <li>Generics</li> |
| </ul> |
| <br> |
| <ul> |
| <li>Static Profile Definition</li> |
| </ul> |
| <br> |
| <ul> |
| <li>OCL Integration</li> |
| <br> |
| <br> |
| </ul> |
| <li>Summary</li> |
| <br> |
| <br> |
| <br> |
| </ul> |
| </font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>23</font></div> |
| </td> |
| <td> |
| <div id=PPTP23 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0031.htm');" id=PPTL23>Static Profile |
| Definition: What is a profile?</a></font></div> |
| <div id=PPTC23 class=CTxt style='display:none'><font size=2> |
| <ul> |
| <li>A profile is a lightweight extension mechanism for UML.</li> |
| <ul> |
| <li>Does not specialize meta-types from UML, rather uses meta-class |
| extensions.</li> |
| </ul> |
| <br> |
| <li>It enables customization of UML for a specific domain to make modeling |
| easier.</li> |
| <br> |
| <br> |
| <li>Primary extension construct is the Stereotype.</li> |
| <br> |
| <br> |
| <li>Stereotypes can be used to add:</li> |
| <ul> |
| <li>Keywords</li> |
| <li>Constraints</li> |
| <li>Images</li> |
| <li>Properties</li> |
| <li>Behavior</li> |
| </ul> |
| </ul> |
| </font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>24</font></div> |
| </td> |
| <td> |
| <div id=PPTP24 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0067.htm');" id=PPTL24>Static Profile |
| Definition: Example</a></font></div> |
| <div id=PPTC24 class=CTxt style='display:none'><font size=2> |
| <ul> |
| <li>Stereotype extending Class meta-class from UML.</li> |
| <ul> |
| <br> |
| <br> |
| </ul> |
| </ul> |
| </font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>25</font></div> |
| </td> |
| <td> |
| <div id=PPTP25 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0074.htm');" id=PPTL25>Static Profile |
| Definition: Workflow - Current</a></font></div> |
| <div id=PPTC25 class=CTxt style='display:none'><font size=2> |
| <ul> |
| <li>We create our profile using UML.</li> |
| <li>Define our profile.</li> |
| <li>Use our profile by setting applying profile and stereotypes.</li> |
| <li>Get and set properties of the stereotype.</li> |
| </ul> |
| </font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>26</font></div> |
| </td> |
| <td> |
| <div id=PPTP26 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0071.htm');" id=PPTL26>Static Profile |
| Definition: Current Workflow</a></font></div> |
| <div id=PPTC26 class=CTxt style='display:none'><font size=2> |
| <ul> |
| <li>The current workflow involves defining our profiles.</li> |
| <ul> |
| <li>Generates an Ecore representation.</li> |
| <li>Makes use of dynamic EMF.</li> |
| <ul> |
| <br> |
| <br> |
| </ul> |
| </ul> |
| </ul> |
| </font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>27</font></div> |
| </td> |
| <td> |
| <div id=PPTP27 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0066.htm');" id=PPTL27>Static Profile |
| Definition: What is it?</a></font></div> |
| <div id=PPTC27 class=CTxt style='display:none'><font size=2> |
| <ul> |
| <li>When we talk about Static Profile Definition we are talking about |
| generating code from our profile.</li> |
| <br> |
| <br> |
| <li>The define step is therefore no longer necessary.<span |
| style='mso-spacerun:yes'> </span>It is replaced by a code generation |
| step.</li> |
| <ul> |
| <br> |
| <br> |
| </ul> |
| <li>Both workflows will be supported going forward.</li> |
| <ul> |
| <li>Older workflow can be useful for rapid testing.</li> |
| </ul> |
| </ul> |
| </font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>28</font></div> |
| </td> |
| <td> |
| <div id=PPTP28 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0035.htm');" id=PPTL28>Static Profile |
| Definition: Workflow (New)</a></font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>29</font></div> |
| </td> |
| <td> |
| <div id=PPTP29 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0037.htm');" id=PPTL29>Static Profile |
| Definition: Setting nsURI.</a></font></div> |
| <div id=PPTC29 class=CTxt style='display:none'><font size=2> |
| <ul> |
| <li>Set the nsURI of the <<EPackage>> stereotype applied to the |
| profile root.</li> |
| </ul> |
| </font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>30</font></div> |
| </td> |
| <td> |
| <div id=PPTP30 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0038.htm');" id=PPTL30>Static Profile |
| Definition: Code Generation.</a></font></div> |
| <div id=PPTC30 class=CTxt style='display:none'><font size=2> |
| <ul> |
| <li>Generating Code for your Profile.</li> |
| <li>Reference UML and Ecore generator models since you do not need to |
| regenerate code for them.</li> |
| </ul> |
| </font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>31</font></div> |
| </td> |
| <td> |
| <div id=PPTP31 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0039.htm');" id=PPTL31>Static Profile |
| Definition: Extension Point.</a></font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>32</font></div> |
| </td> |
| <td> |
| <div id=PPTP32 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0076.htm');" id=PPTL32>Static Profile |
| Definition: Demo</a></font></div> |
| <div id=PPTC32 class=CTxt style='display:none'><font size=2> |
| <ul> |
| <li>Code generation.</li> |
| <li>Derived properties in profiles.</li> |
| <br> |
| <br> |
| <ul> |
| <br> |
| </ul> |
| </ul> |
| </font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>33</font></div> |
| </td> |
| <td> |
| <div id=PPTP33 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0075.htm');" id=PPTL33>Static Profile |
| Definition: Why Bother?</a></font></div> |
| <div id=PPTC33 class=CTxt style='display:none'><font size=2> |
| <ul> |
| <li>Introduce behavior.</li> |
| <br> |
| <br> |
| <li>Customize generated code.</li> |
| <br> |
| <br> |
| <li>Opens up possibilities for derived constraints.</li> |
| <br> |
| <br> |
| <li>Getting and setting values are easier and more intuitive since an |
| instance of the object is returned.</li> |
| </ul> |
| </font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>34</font></div> |
| </td> |
| <td> |
| <div id=PPTP34 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0064.htm');" id=PPTL34>Static Profile |
| Definition: Examples - Current</a></font></div> |
| <div id=PPTC34 class=CTxt style='display:none'><font size=2> |
| <ul> |
| <li>Applying stereotype.</li> |
| </ul> |
| </font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>35</font></div> |
| </td> |
| <td> |
| <div id=PPTP35 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0040.htm');" id=PPTL35>Static Profile |
| Definition: Examples - New</a></font></div> |
| <div id=PPTC35 class=CTxt style='display:none'><font size=2> |
| <ul> |
| <li>Applying stereotype.</li> |
| </ul> |
| </font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>36</font></div> |
| </td> |
| <td> |
| <div id=PPTP36 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0041.htm');" id=PPTL36>Static Profile |
| Definition: Versioning Issues</a></font></div> |
| <div id=PPTC36 class=CTxt style='display:none'><font size=2> |
| <ul> |
| <li>With the older way of working with profiles, when changes are made, we |
| must re-define the profile.</li> |
| <ul> |
| <li>We are left with multiple Ecore representations.</li> |
| <li>These representations can be difficult to maintain.</li> |
| </ul> |
| </ul> |
| </font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>37</font></div> |
| </td> |
| <td> |
| <div id=PPTP37 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0072.htm');" id=PPTL37>Static Profile |
| Definition: Versioning Issues</a></font></div> |
| <div id=PPTC37 class=CTxt style='display:none'><font size=2> |
| <ul> |
| <li>With Static Profile Definition, if we introduce API breaking changes, we |
| would have to update the nsURI.</li> |
| <ul> |
| <li>Similar to how meta-models change.</li> |
| <br> |
| <br> |
| </ul> |
| <li>We dont have to change the nsURI if the changes are backward |
| compatible.</li> |
| <ul> |
| <br> |
| <br> |
| </ul> |
| <br> |
| </ul> |
| </font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>38</font></div> |
| </td> |
| <td> |
| <div id=PPTP38 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0058.htm');" id=PPTL38>Static Profile |
| Definition: Summary</a></font></div> |
| <div id=PPTC38 class=CTxt style='display:none'><font size=2> |
| <ul> |
| <li>Preferred approach going forward.</li> |
| <br> |
| <br> |
| <li>Easier to work with.</li> |
| <br> |
| <br> |
| <li>Introduce behavior.</li> |
| <br> |
| <br> |
| <li>Combine with our next topic: OCL Integration.</li> |
| <br> |
| <br> |
| <br> |
| </ul> |
| </font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>39</font></div> |
| </td> |
| <td> |
| <div id=PPTP39 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0042.htm');" id=PPTL39>Static Profile |
| Definition: References</a></font></div> |
| <div id=PPTC39 class=CTxt style='display:none'><font size=2> |
| <ul> |
| <li>More in-depth articles can be found on the UML2 wiki: http://wiki.eclipse.org/MDT-UML2</li> |
| <br> |
| <br> |
| <li>New and Noteworthy section: http://wiki.eclipse.org/index.php/MDT_1.0_New_and_Noteworthy#Static_Profile_Definition</li> |
| <br> |
| <br> |
| <br> |
| <ul> |
| <br> |
| </ul> |
| <br> |
| </ul> |
| </font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>40</font></div> |
| </td> |
| <td> |
| <div id=PPTP40 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0043.htm');" id=PPTL40>Agenda</a></font></div> |
| <div id=PPTC40 class=CTxt style='display:none'><font size=2> |
| <ul> |
| <li>Introduction</li> |
| <br> |
| <br> |
| <li>New Features:</li> |
| <br> |
| <br> |
| <ul> |
| <li>Generics</li> |
| </ul> |
| <br> |
| <ul> |
| <li>Static Profile Definition</li> |
| </ul> |
| <br> |
| <ul> |
| <li>OCL Integration</li> |
| <br> |
| <br> |
| </ul> |
| <li>Summary</li> |
| <br> |
| <br> |
| <br> |
| </ul> |
| </font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>41</font></div> |
| </td> |
| <td> |
| <div id=PPTP41 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0044.htm');" id=PPTL41>OCL Integration: What |
| is it?</a></font></div> |
| <div id=PPTC41 class=CTxt style='display:none'><font size=2> |
| <ul> |
| <li>OCL is designed to be a simple language for specification of constraints |
| and queries in models.</li> |
| <br> |
| <br> |
| <li>Specifying Constraints</li> |
| <br> |
| <br> |
| <ul> |
| <li>Invariant constraint condition on attributes (or any feature of |
| context classifier) must always be true.</li> |
| </ul> |
| <br> |
| <ul> |
| <li>Query specified as the body expression of an operation.</li> |
| </ul> |
| <br> |
| <li>Have code generated from the expressions entered in the UML model.</li> |
| </ul> |
| </font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>42</font></div> |
| </td> |
| <td> |
| <div id=PPTP42 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0045.htm');" id=PPTL42>OCL Integration: Why |
| Bother?</a></font></div> |
| <div id=PPTC42 class=CTxt style='display:none'><font size=2> |
| <ul> |
| <li>Constraints can be evaluated at runtime.</li> |
| <ul> |
| <li>Automated constraint checking allows greater integrity of the model.</li> |
| </ul> |
| <br> |
| <li>Catch errors early.</li> |
| <br> |
| <br> |
| <li>Embellish your code with doc tags containing OCL.</li> |
| <br> |
| <br> |
| <li>UML is not enough.</li> |
| <br> |
| <br> |
| </ul> |
| </font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>43</font></div> |
| </td> |
| <td> |
| <div id=PPTP43 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0046.htm');" id=PPTL43>OCL Integration: |
| Example</a></font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>44</font></div> |
| </td> |
| <td> |
| <div id=PPTP44 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0047.htm');" id=PPTL44>OCL Integration: |
| Example-Invariant Constraint</a></font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>45</font></div> |
| </td> |
| <td> |
| <div id=PPTP45 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0061.htm');" id=PPTL45>OCL Integration: |
| Example-Invariant Constraint</a></font></div> |
| <div id=PPTC45 class=CTxt style='display:none'><font size=2> |
| <ul> |
| <li>OCL dependencies automatically added.</li> |
| </ul> |
| </font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>46</font></div> |
| </td> |
| <td> |
| <div id=PPTP46 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0048.htm');" id=PPTL46>OCL Integration: |
| Example-Invariant Constraint</a></font></div> |
| <div id=PPTC46 class=CTxt style='display:none'><font size=2> |
| <ul> |
| <li>context: Specifies the element we are referring to.</li> |
| <ul> |
| <li>Context in this example is Car</li> |
| </ul> |
| <li>self: Keyword that indicates the current object.</li> |
| </ul> |
| </font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>47</font></div> |
| </td> |
| <td> |
| <div id=PPTP47 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0073.htm');" id=PPTL47>OCL Integration: |
| Example-Body Condition</a></font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>48</font></div> |
| </td> |
| <td> |
| <div id=PPTP48 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0049.htm');" id=PPTL48>OCL Integration: |
| Example-Body Condition</a></font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>49</font></div> |
| </td> |
| <td> |
| <div id=PPTP49 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0050.htm');" id=PPTL49>OCL Integration: |
| Example-Body Condition</a></font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>50</font></div> |
| </td> |
| <td> |
| <div id=PPTP50 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0051.htm');" id=PPTL50>OCL Integration: Code |
| Generation</a></font></div> |
| <div id=PPTC50 class=CTxt style='display:none'><font size=2> |
| <ul> |
| <br> |
| <li>Specify that you would like Invariant Constraints processed.</li> |
| <br> |
| <br> |
| <li>Specify Operation Bodies to be added.</li> |
| <br> |
| <br> |
| <br> |
| </ul> |
| </font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>51</font></div> |
| </td> |
| <td> |
| <div id=PPTP51 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0077.htm');" id=PPTL51>OCL Integration: Demo</a></font></div> |
| <div id=PPTC51 class=CTxt style='display:none'><font size=2> |
| <ul> |
| <li>Code generation.</li> |
| <li>Validation.</li> |
| <ul> |
| <br> |
| <br> |
| </ul> |
| </ul> |
| </font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>52</font></div> |
| </td> |
| <td> |
| <div id=PPTP52 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0062.htm');" id=PPTL52>OCL Integration: Try it |
| out.</a></font></div> |
| <div id=PPTC52 class=CTxt style='display:none'><font size=2> |
| <ul> |
| <li>Output</li> |
| </ul> |
| </font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>53</font></div> |
| </td> |
| <td> |
| <div id=PPTP53 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0053.htm');" id=PPTL53>OCL Integration: Tips</a></font></div> |
| <div id=PPTC53 class=CTxt style='display:none'><font size=2> |
| <ul> |
| <li>Have a look at bugzilla https://bugs.eclipse.org/bugs/show_bug.cgi?id=105199 |
| for an example of how to hook in validation of your model</li> |
| <ul> |
| <br> |
| <br> |
| </ul> |
| <li>Refer to OCL article at: http://www.eclipse.org/articles/article.php?file=Article-EMF-Codegen-with-OCL/index.html</li> |
| <br> |
| <br> |
| </ul> |
| </font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>54</font></div> |
| </td> |
| <td> |
| <div id=PPTP54 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0054.htm');" id=PPTL54>Agenda</a></font></div> |
| <div id=PPTC54 class=CTxt style='display:none'><font size=2> |
| <ul> |
| <li>Introduction</li> |
| <br> |
| <br> |
| <li>New Features:</li> |
| <br> |
| <br> |
| <ul> |
| <li>Generics</li> |
| </ul> |
| <br> |
| <ul> |
| <li>Static Profile Definition</li> |
| </ul> |
| <br> |
| <ul> |
| <li>OCL Integration</li> |
| <br> |
| <br> |
| </ul> |
| <li>Summary</li> |
| <br> |
| <br> |
| <br> |
| </ul> |
| </font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>55</font></div> |
| </td> |
| <td> |
| <div id=PPTP55 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0055.htm');" id=PPTL55>Summary</a></font></div> |
| <div id=PPTC55 class=CTxt style='display:none'><font size=2> |
| <ul> |
| <li>Weve looked at:</li> |
| <ul> |
| <li>Generics</li> |
| <li>Static Profile Definition</li> |
| <li>OCL Integration</li> |
| <br> |
| <br> |
| </ul> |
| <li>Tooling should make it easy for you to use these features.</li> |
| <br> |
| <br> |
| <li>Try it out and report issues.</li> |
| <br> |
| <br> |
| </ul> |
| </font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>56</font></div> |
| </td> |
| <td> |
| <div id=PPTP56 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0057.htm');" id=PPTL56>"Thank You!"</a></font></div> |
| <div id=PPTC56 class=CTxt style='display:none'><font size=2> |
| <ul> |
| <li>Thank You!</li> |
| </ul> |
| </font></div> |
| </td> |
| </tr> |
| <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)" |
| style='cursor:hand'> |
| <td align=right valign=top> |
| <div class=sldNum><font size=2>57</font></div> |
| </td> |
| <td> |
| <div id=PPTP57 class=PTxt><font size=2><a |
| href="javascript:GoToSld('slide0059.htm');" id=PPTL57>Legal Notices</a></font></div> |
| <div id=PPTC57 class=CTxt style='display:none'><font size=2> |
| <ul> |
| <br> |
| <li>Copyright © IBM Corp., 2007-2008.<span style='mso-spacerun:yes'> |
| </span>All rights reserved.<span style='mso-spacerun:yes'> |
| </span>Source code in this presentation is made available under the EPL, |
| v1.0; remainder of the presentation is licensed under Creative Commons |
| Att. Nc Nd 2.5 license.</li> |
| <br> |
| <br> |
| <li>IBM and the IBM logo are trademarks or registered trademarks of IBM |
| Corporation in the United States, other countries, or both.</li> |
| <br> |
| <br> |
| <li>Rational and the Rational logo are trademarks or registered trademarks |
| of International Business Corporation in the United States, other |
| countries, or both.</li> |
| <br> |
| <br> |
| <li>UML, Unified Modeling Language, and MOF are trademarks or registered |
| trademarks of Object Management Group, Inc.</li> |
| <br> |
| <br> |
| <li>Java and all Java-based trademarks, among others, are trademarks or |
| registered trademarks of Sun Microsystems in the United States, other |
| countries, or both</li> |
| <br> |
| <br> |
| <li>Eclipse and the Eclipse logo are trademarks of the Eclipse Foundation, |
| Inc.</li> |
| <br> |
| <br> |
| <li>Other company, product, and service names may be trademarks or service |
| marks of others.</li> |
| <br> |
| <br> |
| <li>THE INFORMATION DISCUSSED IN THIS PRESENTATION IS PROVIDED FOR |
| INFORMATIONAL PURPOSES ONLY.<span style='mso-spacerun:yes'> |
| </span>WHILE EFFORTS WERE MADE TO VERIFY THE COMPLETENESS AND ACCURACY |
| OF THE INFORMATION, IT IS PROVIDED AS IS WITHOUT WARRANTY OF ANY KIND, |
| EXPRESS OR IMPLIED, AND IBM SHALL NOT BE RESPONSIBLE FOR ANY DAMAGES |
| ARISING OUT OF THE USE OF, OR OTHERWISE RELATED TO, SUCH |
| INFORMATION.<span style='mso-spacerun:yes'> </span>ANY INFORMATION |
| CONCERNING IBMS PRODUCT PLANS OR STRATEGY IS SUBJECT TO CHANGE BY IBM |
| WITHOUT NOTICE.</li> |
| <br> |
| <br> |
| <br> |
| </ul> |
| </font></div> |
| </td> |
| </tr> |
| </table> |
| |
| |
| |
| </div> |
| </body> |
| |
| </html> |