<?xml version="1.0" encoding="windows-1252"?>
<XMI xmi.version="1.1" xmlns:UML="omg.org/UML1.3" timestamp="2018-02-23 15:51:08">
	<XMI.header><XMI.documentation><XMI.exporter>Enterprise Architect</XMI.exporter><XMI.exporterVersion>2.5</XMI.exporterVersion></XMI.documentation></XMI.header><XMI.content><UML:Model name="EA Model" xmi.id="MX_EAID_4B435262_AEDD_4053_8616_2B96CE50F788"><UML:Namespace.ownedElement><UML:Class name="EARootClass" xmi.id="EAID_11111111_5487_4080_A7F4_41526CB0AA00" isRoot="true" isLeaf="false" isAbstract="false"/><UML:Package name="Template Method" xmi.id="EAPK_4B435262_AEDD_4053_8616_2B96CE50F788" isRoot="false" isLeaf="false" isAbstract="false" visibility="public"><UML:ModelElement.taggedValue><UML:TaggedValue tag="parent" value="EAPK_47E8F9BA_533A_459a_9018_5ECFBCDCDF04"/><UML:TaggedValue tag="created" value="2018-01-08 11:47:56"/><UML:TaggedValue tag="modified" value="2018-01-08 14:41:17"/><UML:TaggedValue tag="iscontrolled" value="0"/><UML:TaggedValue tag="version" value="1.0"/><UML:TaggedValue tag="isprotected" value="0"/><UML:TaggedValue tag="usedtd" value="0"/><UML:TaggedValue tag="logxml" value="0"/><UML:TaggedValue tag="packageFlags" value="CRC=0;"/><UML:TaggedValue tag="phase" value="1.0"/><UML:TaggedValue tag="status" value="Proposed"/><UML:TaggedValue tag="author" value="Stephen Maguire"/><UML:TaggedValue tag="complexity" value="1"/><UML:TaggedValue tag="ea_stype" value="Public"/><UML:TaggedValue tag="tpos" value="0"/><UML:TaggedValue tag="gentype" value="&lt;none&gt;"/></UML:ModelElement.taggedValue><UML:Namespace.ownedElement><UML:Class name="AbstractClass" xmi.id="EAID_00B93968_FDB3_4139_AF42_1720935F5FA9" visibility="public" namespace="EAPK_4B435262_AEDD_4053_8616_2B96CE50F788" isRoot="false" isLeaf="false" isAbstract="true" isActive="false"><UML:ModelElement.taggedValue><UML:TaggedValue tag="documentation" value="This class (a) defines abstract primitive operations that concrete subclasses define to implement steps of an algorithm, and (b) implements a template method defining the skeleton of an algorithm."/><UML:TaggedValue tag="isSpecification" value="false"/><UML:TaggedValue tag="ea_stype" value="Class"/><UML:TaggedValue tag="ea_ntype" value="0"/><UML:TaggedValue tag="version" value="1.0"/><UML:TaggedValue tag="package" value="EAPK_4B435262_AEDD_4053_8616_2B96CE50F788"/><UML:TaggedValue tag="date_created" value="2018-01-10 14:08:48"/><UML:TaggedValue tag="date_modified" value="2018-01-10 14:08:48"/><UML:TaggedValue tag="gentype" value="&lt;none&gt;"/><UML:TaggedValue tag="tagged" value="0"/><UML:TaggedValue tag="package_name" value="Template Method"/><UML:TaggedValue tag="phase" value="1.0"/><UML:TaggedValue tag="author" value="Stephen Maguire"/><UML:TaggedValue tag="complexity" value="1"/><UML:TaggedValue tag="status" value="Proposed"/><UML:TaggedValue tag="tpos" value="0"/><UML:TaggedValue tag="ea_localid" value="12810"/><UML:TaggedValue tag="ea_eleType" value="element"/><UML:TaggedValue tag="style" value="BackColor=-1;BorderColor=-1;BorderWidth=-1;FontColor=-1;VSwimLanes=1;HSwimLanes=1;BorderStyle=0;"/></UML:ModelElement.taggedValue><UML:Classifier.feature><UML:Operation name="TemplateMethod" visibility="public" ownerScope="instance" isQuery="false" concurrency="sequential"><UML:ModelElement.taggedValue><UML:TaggedValue tag="type" value="void"/><UML:TaggedValue tag="const" value="false"/><UML:TaggedValue tag="behaviour" value="// do something&#xA;&#xA;PrimitiveOperation1();&#xA;&#xA;// do something&#xA;&#xA;PrimitiveOperation2();&#xA;&#xA;// do something"/><UML:TaggedValue tag="synchronised" value="0"/><UML:TaggedValue tag="concurrency" value="Sequential"/><UML:TaggedValue tag="position" value="0"/><UML:TaggedValue tag="returnarray" value="0"/><UML:TaggedValue tag="pure" value="0"/><UML:TaggedValue tag="ea_guid" value="{42BB1D96-50AE-4ecd-8AB8-9567007D99DC}"/><UML:TaggedValue tag="ea_localid" value="2545"/><UML:TaggedValue tag="styleex" value="ShowBeh=0;"/></UML:ModelElement.taggedValue><UML:BehavioralFeature.parameter><UML:Parameter kind="return" visibility="public"><UML:Parameter.type><UML:Classifier xmi.idref="eaxmiid0"/></UML:Parameter.type><UML:ModelElement.taggedValue><UML:TaggedValue tag="pos" value="0"/><UML:TaggedValue tag="type" value="void"/><UML:TaggedValue tag="const" value="0"/><UML:TaggedValue tag="ea_guid" value="{RETURNID-50AE-4ecd-8AB8-9567007D99DC}"/></UML:ModelElement.taggedValue><UML:Parameter.defaultValue><UML:Expression/></UML:Parameter.defaultValue></UML:Parameter></UML:BehavioralFeature.parameter></UML:Operation><UML:Operation name="PrimitiveOperation1" visibility="public" ownerScope="instance" isQuery="false" concurrency="sequential"><UML:ModelElement.taggedValue><UML:TaggedValue tag="type" value="void"/><UML:TaggedValue tag="const" value="false"/><UML:TaggedValue tag="isAbstract" value="1"/><UML:TaggedValue tag="synchronised" value="0"/><UML:TaggedValue tag="concurrency" value="Sequential"/><UML:TaggedValue tag="position" value="1"/><UML:TaggedValue tag="returnarray" value="0"/><UML:TaggedValue tag="pure" value="0"/><UML:TaggedValue tag="ea_guid" value="{0678A13D-5658-41c4-AAEC-E2D626992A77}"/><UML:TaggedValue tag="ea_localid" value="2546"/></UML:ModelElement.taggedValue><UML:BehavioralFeature.parameter><UML:Parameter kind="return" visibility="public"><UML:Parameter.type><UML:Classifier xmi.idref="eaxmiid0"/></UML:Parameter.type><UML:ModelElement.taggedValue><UML:TaggedValue tag="pos" value="0"/><UML:TaggedValue tag="type" value="void"/><UML:TaggedValue tag="const" value="0"/><UML:TaggedValue tag="ea_guid" value="{RETURNID-5658-41c4-AAEC-E2D626992A77}"/></UML:ModelElement.taggedValue><UML:Parameter.defaultValue><UML:Expression/></UML:Parameter.defaultValue></UML:Parameter></UML:BehavioralFeature.parameter></UML:Operation><UML:Operation name="PrimitiveOperation2" visibility="public" ownerScope="instance" isQuery="false" concurrency="sequential"><UML:ModelElement.taggedValue><UML:TaggedValue tag="type" value="void"/><UML:TaggedValue tag="const" value="false"/><UML:TaggedValue tag="isAbstract" value="1"/><UML:TaggedValue tag="synchronised" value="0"/><UML:TaggedValue tag="concurrency" value="Sequential"/><UML:TaggedValue tag="position" value="2"/><UML:TaggedValue tag="returnarray" value="0"/><UML:TaggedValue tag="pure" value="0"/><UML:TaggedValue tag="ea_guid" value="{72A636A8-1C66-439c-95E1-A579FFA58FC9}"/><UML:TaggedValue tag="ea_localid" value="2547"/></UML:ModelElement.taggedValue><UML:BehavioralFeature.parameter><UML:Parameter kind="return" visibility="public"><UML:Parameter.type><UML:Classifier xmi.idref="eaxmiid0"/></UML:Parameter.type><UML:ModelElement.taggedValue><UML:TaggedValue tag="pos" value="0"/><UML:TaggedValue tag="type" value="void"/><UML:TaggedValue tag="const" value="0"/><UML:TaggedValue tag="ea_guid" value="{RETURNID-1C66-439c-95E1-A579FFA58FC9}"/></UML:ModelElement.taggedValue><UML:Parameter.defaultValue><UML:Expression/></UML:Parameter.defaultValue></UML:Parameter></UML:BehavioralFeature.parameter></UML:Operation></UML:Classifier.feature></UML:Class><UML:Generalization subtype="EAID_482A8FEF_D3D4_4ead_BC8D_153BBE61046C" supertype="EAID_00B93968_FDB3_4139_AF42_1720935F5FA9" xmi.id="EAID_89CD17B3_53D1_4afa_9AE6_777DE9EB1B5D" visibility="public"><UML:ModelElement.taggedValue><UML:TaggedValue tag="style" value="3"/><UML:TaggedValue tag="ea_type" value="Generalization"/><UML:TaggedValue tag="direction" value="Source -&gt; Destination"/><UML:TaggedValue tag="linemode" value="3"/><UML:TaggedValue tag="linecolor" value="-1"/><UML:TaggedValue tag="linewidth" value="0"/><UML:TaggedValue tag="seqno" value="0"/><UML:TaggedValue tag="headStyle" value="0"/><UML:TaggedValue tag="lineStyle" value="0"/><UML:TaggedValue tag="ea_localid" value="4238"/><UML:TaggedValue tag="ea_sourceName" value="ConcreteClass"/><UML:TaggedValue tag="ea_targetName" value="AbstractClass"/><UML:TaggedValue tag="ea_sourceType" value="Class"/><UML:TaggedValue tag="ea_targetType" value="Class"/><UML:TaggedValue tag="ea_sourceID" value="12811"/><UML:TaggedValue tag="ea_targetID" value="12810"/><UML:TaggedValue tag="src_visibility" value="Public"/><UML:TaggedValue tag="src_aggregation" value="0"/><UML:TaggedValue tag="src_isOrdered" value="false"/><UML:TaggedValue tag="src_isNavigable" value="false"/><UML:TaggedValue tag="dst_visibility" value="Public"/><UML:TaggedValue tag="dst_aggregation" value="0"/><UML:TaggedValue tag="dst_isOrdered" value="false"/><UML:TaggedValue tag="dst_isNavigable" value="false"/><UML:TaggedValue tag="virtualInheritance" value="0"/></UML:ModelElement.taggedValue></UML:Generalization><UML:Class name="ConcreteClass" xmi.id="EAID_482A8FEF_D3D4_4ead_BC8D_153BBE61046C" visibility="public" namespace="EAPK_4B435262_AEDD_4053_8616_2B96CE50F788" isRoot="false" isLeaf="false" isAbstract="false" isActive="false"><UML:ModelElement.taggedValue><UML:TaggedValue tag="documentation" value="This class implements the primitive operations to carry out subclass-specific steps of the algorithm."/><UML:TaggedValue tag="isSpecification" value="false"/><UML:TaggedValue tag="ea_stype" value="Class"/><UML:TaggedValue tag="ea_ntype" value="0"/><UML:TaggedValue tag="version" value="1.0"/><UML:TaggedValue tag="package" value="EAPK_4B435262_AEDD_4053_8616_2B96CE50F788"/><UML:TaggedValue tag="date_created" value="2018-01-10 14:08:50"/><UML:TaggedValue tag="date_modified" value="2018-01-10 14:08:50"/><UML:TaggedValue tag="gentype" value="&lt;none&gt;"/><UML:TaggedValue tag="tagged" value="0"/><UML:TaggedValue tag="package_name" value="Template Method"/><UML:TaggedValue tag="phase" value="1.0"/><UML:TaggedValue tag="author" value="Stephen Maguire"/><UML:TaggedValue tag="complexity" value="1"/><UML:TaggedValue tag="status" value="Proposed"/><UML:TaggedValue tag="tpos" value="0"/><UML:TaggedValue tag="ea_localid" value="12811"/><UML:TaggedValue tag="ea_eleType" value="element"/><UML:TaggedValue tag="style" value="BackColor=-1;BorderColor=-1;BorderWidth=-1;FontColor=-1;VSwimLanes=1;HSwimLanes=1;BorderStyle=0;"/></UML:ModelElement.taggedValue><UML:Classifier.feature><UML:Operation name="PrimitiveOperation1" visibility="public" ownerScope="instance" isQuery="false" concurrency="sequential"><UML:ModelElement.taggedValue><UML:TaggedValue tag="type" value="void"/><UML:TaggedValue tag="const" value="false"/><UML:TaggedValue tag="synchronised" value="0"/><UML:TaggedValue tag="concurrency" value="Sequential"/><UML:TaggedValue tag="position" value="1"/><UML:TaggedValue tag="returnarray" value="0"/><UML:TaggedValue tag="pure" value="0"/><UML:TaggedValue tag="ea_guid" value="{DAD241E6-12CB-4477-AAE2-AA8BF220FB4C}"/><UML:TaggedValue tag="ea_localid" value="2548"/><UML:TaggedValue tag="override" value="true" xmi.id="EAID_AB048169_ACB5_4a36_B740_485E9FE0FB8E"/></UML:ModelElement.taggedValue><UML:BehavioralFeature.parameter><UML:Parameter kind="return" visibility="public"><UML:Parameter.type><UML:Classifier xmi.idref="eaxmiid0"/></UML:Parameter.type><UML:ModelElement.taggedValue><UML:TaggedValue tag="pos" value="0"/><UML:TaggedValue tag="type" value="void"/><UML:TaggedValue tag="const" value="0"/><UML:TaggedValue tag="ea_guid" value="{RETURNID-12CB-4477-AAE2-AA8BF220FB4C}"/></UML:ModelElement.taggedValue><UML:Parameter.defaultValue><UML:Expression/></UML:Parameter.defaultValue></UML:Parameter></UML:BehavioralFeature.parameter></UML:Operation><UML:Operation name="PrimitiveOperation2" visibility="public" ownerScope="instance" isQuery="false" concurrency="sequential"><UML:ModelElement.taggedValue><UML:TaggedValue tag="type" value="void"/><UML:TaggedValue tag="const" value="false"/><UML:TaggedValue tag="synchronised" value="0"/><UML:TaggedValue tag="concurrency" value="Sequential"/><UML:TaggedValue tag="position" value="2"/><UML:TaggedValue tag="returnarray" value="0"/><UML:TaggedValue tag="pure" value="0"/><UML:TaggedValue tag="ea_guid" value="{94A9816A-86D5-4fc5-8885-CE7A2C636E04}"/><UML:TaggedValue tag="ea_localid" value="2549"/><UML:TaggedValue tag="override" value="true" xmi.id="EAID_12C0D909_C60F_4bbe_8DEC_E29B94795EB1"/></UML:ModelElement.taggedValue><UML:BehavioralFeature.parameter><UML:Parameter kind="return" visibility="public"><UML:Parameter.type><UML:Classifier xmi.idref="eaxmiid0"/></UML:Parameter.type><UML:ModelElement.taggedValue><UML:TaggedValue tag="pos" value="0"/><UML:TaggedValue tag="type" value="void"/><UML:TaggedValue tag="const" value="0"/><UML:TaggedValue tag="ea_guid" value="{RETURNID-86D5-4fc5-8885-CE7A2C636E04}"/></UML:ModelElement.taggedValue><UML:Parameter.defaultValue><UML:Expression/></UML:Parameter.defaultValue></UML:Parameter></UML:BehavioralFeature.parameter></UML:Operation></UML:Classifier.feature></UML:Class></UML:Namespace.ownedElement></UML:Package><UML:DataType xmi.id="eaxmiid0" name="void" visibility="private" isRoot="false" isLeaf="false" isAbstract="false"/></UML:Namespace.ownedElement></UML:Model><UML:Diagram name="Template Method" xmi.id="EAID_1757019F_674B_4782_A785_4680A5CE10AD" diagramType="ClassDiagram" owner="EAPK_4B435262_AEDD_4053_8616_2B96CE50F788" toolName="Enterprise Architect 2.5"><UML:ModelElement.taggedValue><UML:TaggedValue tag="version" value="1.0"/><UML:TaggedValue tag="author" value="Stephen Maguire"/><UML:TaggedValue tag="created_date" value="2018-01-10 14:08:30"/><UML:TaggedValue tag="modified_date" value="2018-02-07 16:38:04"/><UML:TaggedValue tag="package" value="EAPK_4B435262_AEDD_4053_8616_2B96CE50F788"/><UML:TaggedValue tag="type" value="Logical"/><UML:TaggedValue tag="swimlanes" value="locked=false;orientation=0;width=0;inbar=false;names=false;color=-1;bold=false;fcol=0;tcol=-1;ofCol=-1;ufCol=-1;hl=0;ufh=0;hh=0;cls=0;bw=0;hli=0;SwimlaneFont=lfh:-11,lfw:0,lfi:0,lfu:0,lfs:0,lfface:Carlito,lfe:0,lfo:0,lfchar:1,lfop:0,lfcp:0,lfq:2,lfpf=0,lfWidth=0;"/><UML:TaggedValue tag="matrixitems" value="locked=false;matrixactive=false;swimlanesactive=true;kanbanactive=false;width=1;clrLine=0;"/><UML:TaggedValue tag="ea_localid" value="1796"/><UML:TaggedValue tag="EAStyle" value="ShowPrivate=1;ShowProtected=1;ShowPublic=1;HideRelationships=0;Locked=0;Border=1;HighlightForeign=1;PackageContents=1;SequenceNotes=0;ScalePrintImage=0;PPgs.cx=1;PPgs.cy=1;DocSize.cx=826;DocSize.cy=1169;ShowDetails=0;Orientation=P;Zoom=100;ShowTags=0;OpParams=1;VisibleAttributeDetail=0;ShowOpRetType=1;ShowIcons=1;CollabNums=0;HideProps=0;ShowReqs=0;ShowCons=0;PaperSize=9;HideParents=0;UseAlias=0;HideAtts=0;HideOps=0;HideStereo=0;HideElemStereo=0;ShowTests=0;ShowMaint=0;ConnectorNotation=UML 2.1;ExplicitNavigability=0;ShowShape=1;AllDockable=0;AdvancedElementProps=1;AdvancedFeatureProps=1;AdvancedConnectorProps=1;m_bElementClassifier=1;SPT=1;ShowNotes=0;SuppressBrackets=0;SuppConnectorLabels=0;PrintPageHeadFoot=0;ShowAsList=0;"/><UML:TaggedValue tag="styleex" value="SaveTag=79A51E40;ExcludeRTF=0;DocAll=0;HideQuals=0;AttPkg=1;ShowTests=0;ShowMaint=0;SuppressFOC=1;MatrixActive=0;SwimlanesActive=1;KanbanActive=0;MatrixLineWidth=1;MatrixLineClr=0;MatrixLocked=0;TConnectorNotation=UML 2.1;TExplicitNavigability=0;AdvancedElementProps=1;AdvancedFeatureProps=1;AdvancedConnectorProps=1;m_bElementClassifier=1;SPT=1;MDGDgm=;STBLDgm=;ShowNotes=0;VisibleAttributeDetail=0;ShowOpRetType=1;SuppressBrackets=0;SuppConnectorLabels=0;PrintPageHeadFoot=0;ShowAsList=0;SuppressedCompartments=;Theme=:119;"/></UML:ModelElement.taggedValue><UML:Diagram.element><UML:DiagramElement geometry="Left=100;Top=264;Right=254;Bottom=381;" subject="EAID_482A8FEF_D3D4_4ead_BC8D_153BBE61046C" seqno="1" style="OpInh=1;DUID=D20025C5;"/><UML:DiagramElement geometry="Left=100;Top=100;Right=254;Bottom=198;" subject="EAID_00B93968_FDB3_4139_AF42_1720935F5FA9" seqno="2" style="DUID=BA0D16B9;"/><UML:DiagramElement geometry="EDGE=1;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=;" subject="EAID_89CD17B3_53D1_4afa_9AE6_777DE9EB1B5D" style="Mode=2;EOID=BA0D16B9;SOID=D20025C5;Color=-1;LWidth=0;Hidden=0;"/></UML:Diagram.element></UML:Diagram></XMI.content><XMI.difference/><XMI.extensions xmi.extender="Enterprise Architect 2.5"><EAModel.paramSub/></XMI.extensions></XMI>
