<?xml version="1.0" encoding="windows-1252"?>
<XMI xmi.version="1.1" xmlns:UML="omg.org/UML1.3" timestamp="2018-02-23 15:50:55">
	<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_B5447095_CA9D_414d_BE27_368C44BF0942"><UML:Namespace.ownedElement><UML:Class name="EARootClass" xmi.id="EAID_11111111_5487_4080_A7F4_41526CB0AA00" isRoot="true" isLeaf="false" isAbstract="false"/><UML:Package name="Observer" xmi.id="EAPK_B5447095_CA9D_414d_BE27_368C44BF0942" 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:45:31"/><UML:TaggedValue tag="modified" value="2018-01-08 14:39:28"/><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="Subject" xmi.id="EAID_282AD0B5_1AEF_44c0_A72C_353BD2E5DED6" visibility="public" namespace="EAPK_B5447095_CA9D_414d_BE27_368C44BF0942" isRoot="false" isLeaf="false" isAbstract="true" isActive="false"><UML:ModelElement.taggedValue><UML:TaggedValue tag="documentation" value="This class knows its observers and provides an interface for attaching and detaching Observer objects."/><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_B5447095_CA9D_414d_BE27_368C44BF0942"/><UML:TaggedValue tag="date_created" value="2018-01-10 13:30:31"/><UML:TaggedValue tag="date_modified" value="2018-01-10 13:30:31"/><UML:TaggedValue tag="gentype" value="&lt;none&gt;"/><UML:TaggedValue tag="tagged" value="0"/><UML:TaggedValue tag="package_name" value="Observer"/><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="12797"/><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="Attach" 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="observers.addElement(observer);"/><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="{D44B1065-5F91-4147-9BC1-426D7EA7082E}"/><UML:TaggedValue tag="ea_localid" value="2528"/><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-5F91-4147-9BC1-426D7EA7082E}"/></UML:ModelElement.taggedValue><UML:Parameter.defaultValue><UML:Expression/></UML:Parameter.defaultValue></UML:Parameter><UML:Parameter name="observer" kind="in" visibility="public"><UML:Parameter.type><UML:Classifier xmi.idref="EAID_6D4A84FC_0874_4902_84A9_A98D767C31F9"/></UML:Parameter.type><UML:ModelElement.taggedValue><UML:TaggedValue tag="pos" value="0"/><UML:TaggedValue tag="type" value="Observer"/><UML:TaggedValue tag="const" value="0"/><UML:TaggedValue tag="classifier" value="EAID_6D4A84FC_0874_4902_84A9_A98D767C31F9"/><UML:TaggedValue tag="ea_guid" value="{B2ED0A53-A6AE-4aa4-BD61-CFFD290BBA31}"/></UML:ModelElement.taggedValue><UML:Parameter.defaultValue><UML:Expression/></UML:Parameter.defaultValue></UML:Parameter></UML:BehavioralFeature.parameter></UML:Operation><UML:Operation name="Detach" 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="observers.removeElement(observer);"/><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="{793060D1-1469-418f-ACFB-D1169D370C10}"/><UML:TaggedValue tag="ea_localid" value="2529"/><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-1469-418f-ACFB-D1169D370C10}"/></UML:ModelElement.taggedValue><UML:Parameter.defaultValue><UML:Expression/></UML:Parameter.defaultValue></UML:Parameter><UML:Parameter name="observer" kind="in" visibility="public"><UML:Parameter.type><UML:Classifier xmi.idref="EAID_6D4A84FC_0874_4902_84A9_A98D767C31F9"/></UML:Parameter.type><UML:ModelElement.taggedValue><UML:TaggedValue tag="pos" value="0"/><UML:TaggedValue tag="type" value="Observer"/><UML:TaggedValue tag="const" value="0"/><UML:TaggedValue tag="classifier" value="EAID_6D4A84FC_0874_4902_84A9_A98D767C31F9"/><UML:TaggedValue tag="ea_guid" value="{B2F54F1C-0910-4f8a-B4DC-368357B3971A}"/></UML:ModelElement.taggedValue><UML:Parameter.defaultValue><UML:Expression/></UML:Parameter.defaultValue></UML:Parameter></UML:BehavioralFeature.parameter></UML:Operation><UML:Operation name="Notify" 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="foreach( Observer o in observers ) o.Update();"/><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="{4F4FD12B-048A-46a9-83FE-5F09F982E78E}"/><UML:TaggedValue tag="ea_localid" value="2530"/><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-048A-46a9-83FE-5F09F982E78E}"/></UML:ModelElement.taggedValue><UML:Parameter.defaultValue><UML:Expression/></UML:Parameter.defaultValue></UML:Parameter></UML:BehavioralFeature.parameter></UML:Operation></UML:Classifier.feature></UML:Class><UML:Association xmi.id="EAID_63CD0D1D_7AAC_4c3c_B4E9_B7FFC62F4863" visibility="public" isRoot="false" isLeaf="false" isAbstract="false"><UML:ModelElement.taggedValue><UML:TaggedValue tag="style" value="3"/><UML:TaggedValue tag="ea_type" value="Association"/><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="4230"/><UML:TaggedValue tag="ea_sourceName" value="Subject"/><UML:TaggedValue tag="ea_targetName" value="Observer"/><UML:TaggedValue tag="ea_sourceType" value="Class"/><UML:TaggedValue tag="ea_targetType" value="Class"/><UML:TaggedValue tag="ea_sourceID" value="12797"/><UML:TaggedValue tag="ea_targetID" value="12800"/><UML:TaggedValue tag="virtualInheritance" value="0"/><UML:TaggedValue tag="rb" value="1..*"/><UML:TaggedValue tag="rt" value="-observers"/></UML:ModelElement.taggedValue><UML:Association.connection><UML:AssociationEnd visibility="private" aggregation="none" isOrdered="false" isNavigable="false" type="EAID_282AD0B5_1AEF_44c0_A72C_353BD2E5DED6"><UML:ModelElement.taggedValue><UML:TaggedValue tag="containment" value="Unspecified"/><UML:TaggedValue tag="sourcestyle" value="Owned=0;Navigable=Non-Navigable;"/><UML:TaggedValue tag="ea_end" value="source"/></UML:ModelElement.taggedValue></UML:AssociationEnd><UML:AssociationEnd visibility="private" multiplicity="1..*" name="observers" aggregation="none" isOrdered="false" isNavigable="true" type="EAID_6D4A84FC_0874_4902_84A9_A98D767C31F9"><UML:ModelElement.taggedValue><UML:TaggedValue tag="containment" value="Unspecified"/><UML:TaggedValue tag="deststyle" value="Owned=0;Navigable=Navigable;"/><UML:TaggedValue tag="ea_end" value="target"/></UML:ModelElement.taggedValue></UML:AssociationEnd></UML:Association.connection></UML:Association><UML:Generalization subtype="EAID_7998F414_67C3_47f8_B051_B44E225E17D2" supertype="EAID_282AD0B5_1AEF_44c0_A72C_353BD2E5DED6" xmi.id="EAID_AD72227F_E2C0_4e2e_B33B_B5A21612992D" 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="4229"/><UML:TaggedValue tag="ea_sourceName" value="ConcreteSubject"/><UML:TaggedValue tag="ea_targetName" value="Subject"/><UML:TaggedValue tag="ea_sourceType" value="Class"/><UML:TaggedValue tag="ea_targetType" value="Class"/><UML:TaggedValue tag="ea_sourceID" value="12798"/><UML:TaggedValue tag="ea_targetID" value="12797"/><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="$ea_xref_property" value="$XREFPROP=$XID={9196D741-5BF7-4dca-A6D1-6663739EF494}$XID;$NAM=CustomProperties$NAM;$TYP=connector property$TYP;$VIS=Public$VIS;$DES=@PROP=@NAME=isSubstitutable@ENDNAME;@TYPE=boolean@ENDTYPE;@VALU=@ENDVALU;@PRMT=@ENDPRMT;@ENDPROP;$DES;$CLT={AD72227F-E2C0-4e2e-B33B-B5A21612992D}$CLT;$ENDXREF;"/><UML:TaggedValue tag="virtualInheritance" value="0"/></UML:ModelElement.taggedValue></UML:Generalization><UML:Class name="Observer" xmi.id="EAID_6D4A84FC_0874_4902_84A9_A98D767C31F9" visibility="public" namespace="EAPK_B5447095_CA9D_414d_BE27_368C44BF0942" isRoot="false" isLeaf="false" isAbstract="true" isActive="false"><UML:ModelElement.taggedValue><UML:TaggedValue tag="documentation" value="This class defines an updating interface for objects that should be notified of changes in a subject."/><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_B5447095_CA9D_414d_BE27_368C44BF0942"/><UML:TaggedValue tag="date_created" value="2018-01-10 13:30:35"/><UML:TaggedValue tag="date_modified" value="2018-01-10 13:30:35"/><UML:TaggedValue tag="gentype" value="&lt;none&gt;"/><UML:TaggedValue tag="tagged" value="0"/><UML:TaggedValue tag="package_name" value="Observer"/><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="12800"/><UML:TaggedValue tag="ea_eleType" value="element"/><UML:TaggedValue tag="$ea_oprparamsclassified" value="{B2ED0A53-A6AE-4aa4-BD61-CFFD290BBA31},{B2F54F1C-0910-4f8a-B4DC-368357B3971A}"/><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="Update" 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="0"/><UML:TaggedValue tag="returnarray" value="0"/><UML:TaggedValue tag="pure" value="0"/><UML:TaggedValue tag="ea_guid" value="{BBEF15CC-08BA-4bc0-86BB-BB875CC6986B}"/><UML:TaggedValue tag="ea_localid" value="2531"/></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-08BA-4bc0-86BB-BB875CC6986B}"/></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_F3DA040E_9AB7_4ea0_8FC8_DC6D66809058" supertype="EAID_6D4A84FC_0874_4902_84A9_A98D767C31F9" xmi.id="EAID_1231DC1D_E634_4400_B065_1EBF5B363753" 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="4228"/><UML:TaggedValue tag="ea_sourceName" value="ConcreteObserver"/><UML:TaggedValue tag="ea_targetName" value="Observer"/><UML:TaggedValue tag="ea_sourceType" value="Class"/><UML:TaggedValue tag="ea_targetType" value="Class"/><UML:TaggedValue tag="ea_sourceID" value="12799"/><UML:TaggedValue tag="ea_targetID" value="12800"/><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="$ea_xref_property" value="$XREFPROP=$XID={8F65446B-1608-4fca-BE10-EF946B05ADE9}$XID;$NAM=CustomProperties$NAM;$TYP=connector property$TYP;$VIS=Public$VIS;$DES=@PROP=@NAME=isSubstitutable@ENDNAME;@TYPE=boolean@ENDTYPE;@VALU=@ENDVALU;@PRMT=@ENDPRMT;@ENDPROP;$DES;$CLT={1231DC1D-E634-4400-B065-1EBF5B363753}$CLT;$ENDXREF;"/><UML:TaggedValue tag="virtualInheritance" value="0"/></UML:ModelElement.taggedValue></UML:Generalization><UML:Class name="ConcreteSubject" xmi.id="EAID_7998F414_67C3_47f8_B051_B44E225E17D2" visibility="public" namespace="EAPK_B5447095_CA9D_414d_BE27_368C44BF0942" isRoot="false" isLeaf="false" isAbstract="false" isActive="false"><UML:ModelElement.taggedValue><UML:TaggedValue tag="documentation" value="This class stores the state of interest to ConcreteObserver objects and sends notification to its observers when its state changes."/><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_B5447095_CA9D_414d_BE27_368C44BF0942"/><UML:TaggedValue tag="date_created" value="2018-01-10 13:30:36"/><UML:TaggedValue tag="date_modified" value="2018-01-10 13:30:36"/><UML:TaggedValue tag="gentype" value="&lt;none&gt;"/><UML:TaggedValue tag="tagged" value="0"/><UML:TaggedValue tag="package_name" value="Observer"/><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="12798"/><UML:TaggedValue tag="ea_eleType" value="element"/><UML:TaggedValue tag="$ea_oprparamsclassified" value="{B338F056-6B06-424c-8274-C14D037948F3}"/><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:Attribute name="subjectState" changeable="none" visibility="public" ownerScope="instance" targetScope="instance"><UML:Attribute.initialValue><UML:Expression/></UML:Attribute.initialValue><UML:StructuralFeature.type><UML:Classifier xmi.idref="eaxmiid1"/></UML:StructuralFeature.type><UML:ModelElement.taggedValue><UML:TaggedValue tag="type" value="String"/><UML:TaggedValue tag="derived" value="0"/><UML:TaggedValue tag="containment" value="Not Specified"/><UML:TaggedValue tag="length" value="0"/><UML:TaggedValue tag="ordered" value="0"/><UML:TaggedValue tag="precision" value="0"/><UML:TaggedValue tag="scale" value="0"/><UML:TaggedValue tag="collection" value="false"/><UML:TaggedValue tag="position" value="0"/><UML:TaggedValue tag="lowerBound" value="1"/><UML:TaggedValue tag="upperBound" value="1"/><UML:TaggedValue tag="duplicates" value="0"/><UML:TaggedValue tag="ea_guid" value="{A8F0D752-CFD5-4901-93FE-D197DE410DBD}"/><UML:TaggedValue tag="ea_localid" value="13532"/><UML:TaggedValue tag="styleex" value="volatile=0;"/></UML:ModelElement.taggedValue></UML:Attribute></UML:Classifier.feature></UML:Class><UML:Association xmi.id="EAID_51485A96_9FD4_47ff_B087_35FBEF0E23E3" visibility="public" isRoot="false" isLeaf="false" isAbstract="false"><UML:ModelElement.taggedValue><UML:TaggedValue tag="style" value="3"/><UML:TaggedValue tag="ea_type" value="Association"/><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="4227"/><UML:TaggedValue tag="ea_sourceName" value="ConcreteObserver"/><UML:TaggedValue tag="ea_targetName" value="ConcreteSubject"/><UML:TaggedValue tag="ea_sourceType" value="Class"/><UML:TaggedValue tag="ea_targetType" value="Class"/><UML:TaggedValue tag="ea_sourceID" value="12799"/><UML:TaggedValue tag="ea_targetID" value="12798"/><UML:TaggedValue tag="virtualInheritance" value="0"/><UML:TaggedValue tag="rt" value="-subject"/></UML:ModelElement.taggedValue><UML:Association.connection><UML:AssociationEnd visibility="private" aggregation="none" isOrdered="false" isNavigable="false" type="EAID_F3DA040E_9AB7_4ea0_8FC8_DC6D66809058"><UML:ModelElement.taggedValue><UML:TaggedValue tag="containment" value="Unspecified"/><UML:TaggedValue tag="sourcestyle" value="Owned=0;Navigable=Non-Navigable;"/><UML:TaggedValue tag="ea_end" value="source"/></UML:ModelElement.taggedValue></UML:AssociationEnd><UML:AssociationEnd visibility="private" name="subject" aggregation="none" isOrdered="false" isNavigable="true" type="EAID_7998F414_67C3_47f8_B051_B44E225E17D2"><UML:ModelElement.taggedValue><UML:TaggedValue tag="containment" value="Unspecified"/><UML:TaggedValue tag="deststyle" value="Owned=0;Navigable=Navigable;"/><UML:TaggedValue tag="ea_end" value="target"/></UML:ModelElement.taggedValue></UML:AssociationEnd></UML:Association.connection></UML:Association><UML:Class name="ConcreteObserver" xmi.id="EAID_F3DA040E_9AB7_4ea0_8FC8_DC6D66809058" visibility="public" namespace="EAPK_B5447095_CA9D_414d_BE27_368C44BF0942" isRoot="false" isLeaf="false" isAbstract="false" isActive="false"><UML:ModelElement.taggedValue><UML:TaggedValue tag="documentation" value="This class maintains a reference to a ConcreteSubject object, stores state that should stay consistent with the subject's and implements the Observer updating interface to keep its state consistent with the subject's."/><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_B5447095_CA9D_414d_BE27_368C44BF0942"/><UML:TaggedValue tag="date_created" value="2018-01-10 13:30:38"/><UML:TaggedValue tag="date_modified" value="2018-01-10 13:30:38"/><UML:TaggedValue tag="gentype" value="&lt;none&gt;"/><UML:TaggedValue tag="tagged" value="0"/><UML:TaggedValue tag="package_name" value="Observer"/><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="12799"/><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:Attribute name="observerState" changeable="none" visibility="private" ownerScope="instance" targetScope="instance"><UML:Attribute.initialValue><UML:Expression/></UML:Attribute.initialValue><UML:StructuralFeature.type><UML:Classifier xmi.idref="eaxmiid1"/></UML:StructuralFeature.type><UML:ModelElement.taggedValue><UML:TaggedValue tag="type" value="String"/><UML:TaggedValue tag="derived" value="0"/><UML:TaggedValue tag="containment" value="Not Specified"/><UML:TaggedValue tag="length" value="0"/><UML:TaggedValue tag="ordered" value="0"/><UML:TaggedValue tag="precision" value="0"/><UML:TaggedValue tag="scale" value="0"/><UML:TaggedValue tag="collection" value="false"/><UML:TaggedValue tag="position" value="0"/><UML:TaggedValue tag="lowerBound" value="1"/><UML:TaggedValue tag="upperBound" value="1"/><UML:TaggedValue tag="duplicates" value="0"/><UML:TaggedValue tag="ea_guid" value="{F770C0B4-110D-499e-B67A-17881E61EAAE}"/><UML:TaggedValue tag="ea_localid" value="13533"/><UML:TaggedValue tag="styleex" value="volatile=0;"/></UML:ModelElement.taggedValue></UML:Attribute><UML:Operation name="ConcreteObserver" visibility="public" ownerScope="instance" isQuery="false" concurrency="sequential"><UML:ModelElement.taggedValue><UML:TaggedValue tag="const" value="false"/><UML:TaggedValue tag="behaviour" value="this.subject = subject;"/><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="{6D39B113-C22F-4e3d-B035-8E5684F7DEAA}"/><UML:TaggedValue tag="ea_localid" value="2532"/><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="eaxmiid2"/></UML:Parameter.type><UML:ModelElement.taggedValue><UML:TaggedValue tag="pos" value="0"/><UML:TaggedValue tag="const" value="0"/><UML:TaggedValue tag="ea_guid" value="{RETURNID-C22F-4e3d-B035-8E5684F7DEAA}"/></UML:ModelElement.taggedValue><UML:Parameter.defaultValue><UML:Expression/></UML:Parameter.defaultValue></UML:Parameter><UML:Parameter name="subject" kind="in" visibility="public"><UML:Parameter.type><UML:Classifier xmi.idref="EAID_7998F414_67C3_47f8_B051_B44E225E17D2"/></UML:Parameter.type><UML:ModelElement.taggedValue><UML:TaggedValue tag="pos" value="0"/><UML:TaggedValue tag="type" value="ConcreteSubject"/><UML:TaggedValue tag="const" value="0"/><UML:TaggedValue tag="classifier" value="EAID_7998F414_67C3_47f8_B051_B44E225E17D2"/><UML:TaggedValue tag="ea_guid" value="{B338F056-6B06-424c-8274-C14D037948F3}"/></UML:ModelElement.taggedValue><UML:Parameter.defaultValue><UML:Expression/></UML:Parameter.defaultValue></UML:Parameter></UML:BehavioralFeature.parameter></UML:Operation><UML:Operation name="Update" 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="observerState = subject.subjectState;"/><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="{31FA4D1D-B411-49aa-B381-1FC7D7E7FE4D}"/><UML:TaggedValue tag="ea_localid" value="2533"/><UML:TaggedValue tag="styleex" value="ShowBeh=0;"/><UML:TaggedValue tag="override" value="true" xmi.id="EAID_82A1F845_5504_4aa0_89EA_524F10A1881F"/></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-B411-49aa-B381-1FC7D7E7FE4D}"/></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="eaxmiid1" name="String" visibility="private" isRoot="false" isLeaf="false" isAbstract="false"/><UML:DataType xmi.id="eaxmiid2" visibility="private" isRoot="false" isLeaf="false" isAbstract="false"/><UML:DataType xmi.id="eaxmiid0" name="void" visibility="private" isRoot="false" isLeaf="false" isAbstract="false"/></UML:Namespace.ownedElement></UML:Model><UML:Diagram name="Observer" xmi.id="EAID_D5F09E07_7713_42c3_89DE_B268C2C03DD7" diagramType="ClassDiagram" owner="EAPK_B5447095_CA9D_414d_BE27_368C44BF0942" 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 13:29:41"/><UML:TaggedValue tag="modified_date" value="2018-02-07 16:20:09"/><UML:TaggedValue tag="package" value="EAPK_B5447095_CA9D_414d_BE27_368C44BF0942"/><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="1793"/><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=9C7F2542;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=341;Top=305;Right=535;Bottom=393;" subject="EAID_F3DA040E_9AB7_4ea0_8FC8_DC6D66809058" seqno="1" style="DUID=5FB04BD5;"/><UML:DiagramElement geometry="Left=100;Top=314;Right=233;Bottom=384;" subject="EAID_7998F414_67C3_47f8_B051_B44E225E17D2" seqno="2" style="DUID=CF3F14E2;"/><UML:DiagramElement geometry="Left=390;Top=100;Right=486;Bottom=179;" subject="EAID_6D4A84FC_0874_4902_84A9_A98D767C31F9" seqno="3" style="DUID=5BCED7A3;"/><UML:DiagramElement geometry="Left=100;Top=100;Right=233;Bottom=179;" subject="EAID_282AD0B5_1AEF_44c0_A72C_353BD2E5DED6" seqno="4" style="DUID=797FBF2C;"/><UML:DiagramElement geometry="SX=0;SY=0;EX=0;EY=0;EDGE=2;$LLB=;LLT=;LMT=;LMB=;LRT=CX=46:CY=13:OX=-17:OY=-2:HDN=0:BLD=0:ITA=0:UND=0:CLR=-1:ALN=0:DIR=0:ROT=0;LRB=CX=17:CY=13:OX=-19:OY=0:HDN=0:BLD=0:ITA=0:UND=0:CLR=-1:ALN=0:DIR=0:ROT=0;IRHS=;ILHS=;Path=;" subject="EAID_63CD0D1D_7AAC_4c3c_B4E9_B7FFC62F4863" style="Mode=1;EOID=5BCED7A3;SOID=797FBF2C;Color=-1;LWidth=0;Hidden=0;"/><UML:DiagramElement geometry="SX=0;SY=0;EX=0;EY=0;EDGE=4;$LLB=;LLT=;LMT=;LMB=;LRT=CX=36:CY=13:OX=0:OY=0:HDN=0:BLD=0:ITA=0:UND=0:CLR=-1:ALN=0:DIR=0:ROT=0;LRB=;IRHS=;ILHS=;Path=;" subject="EAID_51485A96_9FD4_47ff_B087_35FBEF0E23E3" style="Mode=1;EOID=CF3F14E2;SOID=5FB04BD5;Color=-1;LWidth=0;Hidden=0;"/><UML:DiagramElement geometry="EDGE=1;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=;" subject="EAID_AD72227F_E2C0_4e2e_B33B_B5A21612992D" style="Mode=1;EOID=797FBF2C;SOID=CF3F14E2;Color=-1;LWidth=0;Hidden=0;"/><UML:DiagramElement geometry="EDGE=1;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=;" subject="EAID_1231DC1D_E634_4400_B065_1EBF5B363753" style="Mode=1;EOID=5BCED7A3;SOID=5FB04BD5;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>
