Opdracht 4 code en design

Co-authored-by: Aryan Lala (19097727) <A.E.Lala@student.hhs.nl>
This commit is contained in:
Shaquille Soekhlal 2023-06-11 16:15:15 +02:00
parent 2a64655341
commit 7723e68186
42 changed files with 437 additions and 157 deletions

View File

@ -1 +0,0 @@
#include "Machine.h"

View File

@ -1,4 +0,0 @@
#ifndef __Machine_H
#define __Machine_H
#endif __Machine_H

View File

@ -1 +0,0 @@
#include "Mone.h"

View File

@ -1,4 +0,0 @@
#ifndef __Mone_H
#define __Mone_H
#endif

View File

@ -1 +0,0 @@
#include "Motor.h"

View File

@ -1,4 +0,0 @@
#ifndef __Motor_H
#define __Observer_H
#endif

View File

@ -1 +0,0 @@
#include "Mtwo.h"

View File

@ -1,4 +0,0 @@
#ifndef __Mtwo_H
#define __Mtwo_H
#endif

View File

@ -1 +0,0 @@
#include "Sensor.h"

View File

@ -1,4 +0,0 @@
#ifndef __Sensor_H
#define __Sensor_H
#endif

View File

@ -1 +0,0 @@
#include "MachineImpl.h"

View File

@ -1,4 +0,0 @@
#ifndef __MachioneImpl_H
#define __MachineImpl_H
#endif

View File

@ -1 +0,0 @@
#include "MoneImpl.h"

View File

@ -1,4 +1,17 @@
#ifndef __MoneImpl_H
#define __MoneImpl_H
#include "Domein/Mone.h"
class MoneImpl : public Mone{
private:
Tsensor* t1;
public:
MoneImpl(Tsensor*);
virtual void start();
virtual void stop();
virtual Tsensor* tsensor();
};
#endif

View File

@ -1 +0,0 @@
#include "MtwoImpl.h"

View File

@ -1,4 +0,0 @@
#ifndef __MtwoImpl_H
#define __MtwoImpl_H
#endif

View File

@ -1 +0,0 @@
#include "SensorImpl.h"

View File

@ -1,4 +0,0 @@
#ifndef __SensorImpl_H
#define __SensorImpl_H
#endif

View File

@ -1 +0,0 @@
#include "UI.h"

View File

@ -1,4 +0,0 @@
#ifndef __UI_H
#define __UI_H
#endif

View File

@ -0,0 +1,20 @@
#include "DieselMotor.h"
#include "Tsensor.h"
#include <iostream>
DieselMotor::DieselMotor(Tsensor* t): t1(t){
}
Tsensor* DieselMotor::tsensor(){
return t1;
}
void DieselMotor::start(){
std::cout <<"Diesel motor has started"<<std::endl;
}
void DieselMotor::stop(){
std::cout <<"Diesel motor has stopped"<<std::endl;
}

View File

@ -0,0 +1,17 @@
#ifndef __DieselMotor_H
#define __DieselMotor_H
#include "Mone.h"
class DieselMotor : public Mone{
private:
Tsensor* t1;
public:
DieselMotor(Tsensor*);
virtual void start();
virtual void stop();
virtual Tsensor* tsensor();
};
#endif

View File

@ -0,0 +1,20 @@
#include "ElectrischeMotor.h"
#include "Tsensor.h"
#include <iostream>
ElectrischeMotor::ElectrischeMotor(Tsensor* t): t1(t){
}
Tsensor* ElectrischeMotor::tsensor(){
return t1;
}
void ElectrischeMotor::start(){
std::cout <<"Elektrische motor has started"<<std::endl;
}
void ElectrischeMotor::stop(){
std::cout <<"Elektrische motor has stopped"<<std::endl;
}

View File

@ -0,0 +1,16 @@
#ifndef __ElectrischeMotor_H
#define __ElectrischeMotor_H
#include "Mtwo.h"
class ElectrischeMotor : public Mtwo{
private:
Tsensor* t1;
public:
ElectrischeMotor(Tsensor*);
virtual void start();
virtual void stop();
virtual Tsensor* tsensor();
};
#endif

View File

@ -0,0 +1 @@
#include "Machine.h"

19
Opdracht_4/inc/Machine.h Normal file
View File

@ -0,0 +1,19 @@
#ifndef __Machine_H
#define __Machine_H
class Motor;
class Mone;
class Mtwo;
class Machine {
private:
Motor* m1;
Motor* m2;
public:
virtual Motor* motor1() = 0;
virtual Motor* motor2() = 0;
virtual void run() = 0;
virtual void halt() = 0;
};
#endif

View File

@ -0,0 +1,28 @@
#include "MachineImpl.h"
#include "DieselMotor.h"
#include "ElectrischeMotor.h"
#include "TsensorImpl.h"
MachineImpl::MachineImpl(Motor* m1, Motor* m2): m1(m1), m2(m2){};
void MachineImpl::run(){
t1 = m1->tsensor();
t1->read();
m1->start();
t2 = m2->tsensor();
t2->read();
m2->start();
}
void MachineImpl::halt(){
m1->stop();
m2->stop();
}
Motor* MachineImpl::motor1(){
return m1;
}
Motor* MachineImpl::motor2(){
return m2;
}

View File

@ -0,0 +1,24 @@
#ifndef __MachioneImpl_H
#define __MachineImpl_H
#include "Machine.h"
class Tsensor;
class MachineImpl : public Machine
{
private:
Tsensor* t1;
Tsensor* t2;
Motor* m1;
Motor* m2;
public:
MachineImpl(Motor*,Motor*);
~MachineImpl(){};
virtual Motor* motor1();
virtual Motor* motor2();
virtual void run();
virtual void halt();
};
#endif

10
Opdracht_4/inc/Mone.h Normal file
View File

@ -0,0 +1,10 @@
#ifndef __Mone_H
#define __Mone_H
#include "Motor.h"
class Mone : public Motor{
};
#endif

14
Opdracht_4/inc/Motor.h Normal file
View File

@ -0,0 +1,14 @@
#ifndef __Motor_H
#define __Motor_H
class Tsensor;
class Motor{
public:
virtual ~Motor() {};
virtual Tsensor* tsensor() = 0;
virtual void start() = 0;
virtual void stop() = 0;
};
#endif

10
Opdracht_4/inc/Mtwo.h Normal file
View File

@ -0,0 +1,10 @@
#ifndef __Mtwo_H
#define __Mtwo_H
#include "Motor.h"
class Mtwo : public Motor{
};
#endif

View File

@ -0,0 +1 @@
#include "Tsensor.h"

10
Opdracht_4/inc/Tsensor.h Normal file
View File

@ -0,0 +1,10 @@
#ifndef __Sensor_H
#define __Sensor_H
class Tsensor{
public:
virtual ~Tsensor(){};
virtual void read() = 0;
virtual int temperature() = 0;
};
#endif

View File

@ -0,0 +1,17 @@
#include "TsensorImpl.h"
#include <iostream>
TsensorImpl::TsensorImpl(): temperatuur(0){
}
void TsensorImpl::read(){
std::cout << "Voer een temperatuur in: ";
std::cin >> temperatuur;
std::cout << endl;
notify();
}
int TsensorImpl::temperature(){
return temperatuur;
}

View File

@ -0,0 +1,17 @@
#ifndef __TsensorImpl_H
#define __TsensorImpl_H
#include "Tsensor.h"
#include "Observer.h"
class TsensorImpl : public Tsensor, public Subject{
private:
int temperatuur;
public:
TsensorImpl();
virtual ~TsensorImpl(){};
virtual void read();
virtual int temperature();
};
#endif

10
Opdracht_4/inc/UI.cpp Normal file
View File

@ -0,0 +1,10 @@
#include "UI.h"
#include "TsensorImpl.h"
#include <iostream>
using namespace std;
UI::UI(TsensorImpl* t) : Observer(t){}
void UI::update() {cout << dynamic_cast<TsensorImpl*>(getSubject())->temperature() << endl;}

17
Opdracht_4/inc/UI.h Normal file
View File

@ -0,0 +1,17 @@
#ifndef __UI_H
#define __UI_H
class TsensorImpl;
#include "Observer.h"
class UI : public Observer{
private:
TsensorImpl* t;
public:
UI(TsensorImpl*);
virtual ~UI(){};
virtual void update();
};
#endif

22
Opdracht_4/main.cpp Normal file
View File

@ -0,0 +1,22 @@
#include "inc/MachineImpl.h"
#include "inc/DieselMotor.h"
#include "inc/ElectrischeMotor.h"
#include "inc/TsensorImpl.h"
#include "inc/UI.h"
int main (){
TsensorImpl* t1 = new TsensorImpl();
TsensorImpl* t2 = new TsensorImpl();
DieselMotor* diesel = new DieselMotor(t1);
ElectrischeMotor* elec = new ElectrischeMotor(t2);
UI* interface1 = new UI(t1);
UI* interface2 = new UI(t2);
MachineImpl* machine = new MachineImpl(diesel, elec);
machine->run();
machine->halt();
return 0;
}

View File

@ -1,19 +1,19 @@
<mxfile host="65bd71144e">
<diagram id="KfANXQmF8nHkjfM11mp0" name="Page-1">
<mxGraphModel dx="1552" dy="1160" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<mxGraphModel dx="1614" dy="1006" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="0"/>
<mxCell id="1" style="" parent="0"/>
<mxCell id="65" value="" style="rounded=0;whiteSpace=wrap;html=1;labelBackgroundColor=#d1d1d2;strokeColor=#001DBC;fontSize=16;fillColor=#0050ef;fontColor=#ffffff;" parent="1" vertex="1">
<mxGeometry x="350" y="750" width="950" height="510" as="geometry"/>
<mxCell id="65" value="" style="rounded=0;whiteSpace=wrap;html=1;labelBackgroundColor=#d1d1d2;strokeColor=#006EAF;fontSize=16;fillColor=#1ba1e2;fontColor=#ffffff;" parent="1" vertex="1">
<mxGeometry x="350" y="750" width="950" height="430" as="geometry"/>
</mxCell>
<mxCell id="2" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d80073;strokeColor=#A50040;fontColor=#ffffff;" parent="1" vertex="1">
<mxGeometry y="100" width="360" height="1160" as="geometry"/>
<mxCell id="2" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#D882C7;strokeColor=#FF66B3;fontColor=#ffffff;" parent="1" vertex="1">
<mxGeometry y="100" width="360" height="1080" as="geometry"/>
</mxCell>
<mxCell id="3" value="&lt;font style=&quot;font-size: 16px;&quot;&gt;Infrastructure Layer&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="120" y="100" width="160" height="30" as="geometry"/>
</mxCell>
<mxCell id="30" value="" style="rounded=0;whiteSpace=wrap;html=1;labelBackgroundColor=#d1d1d2;strokeColor=#B20000;fontSize=16;fillColor=#FF0000;fontColor=#ffffff;" parent="1" vertex="1">
<mxCell id="30" value="" style="rounded=0;whiteSpace=wrap;html=1;labelBackgroundColor=#d1d1d2;strokeColor=#B37524;fontSize=16;fillColor=#FF944D;fontColor=#ffffff;gradientColor=none;" parent="1" vertex="1">
<mxGeometry x="360" y="100" width="940" height="210" as="geometry"/>
</mxCell>
<mxCell id="31" value="&lt;font style=&quot;font-size: 16px;&quot;&gt;Interface Layer&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
@ -25,13 +25,6 @@
<mxCell id="36" value="&lt;font style=&quot;font-size: 16px;&quot;&gt;Domain Implementatie Layer&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="360" y="320" width="230" height="30" as="geometry"/>
</mxCell>
<mxCell id="62" value="" style="endArrow=none;html=1;fontSize=12;exitX=1;exitY=0;exitDx=0;exitDy=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="540" y="930" as="sourcePoint"/>
<mxPoint x="540" y="870" as="targetPoint"/>
<Array as="points"/>
</mxGeometry>
</mxCell>
<mxCell id="66" value="&lt;span style=&quot;font-size: 16px;&quot;&gt;Domain&amp;nbsp;Layer&lt;br&gt;&lt;/span&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="350" y="750" width="120" height="30" as="geometry"/>
</mxCell>
@ -43,9 +36,6 @@
<mxCell id="125" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="390" y="368" width="890" height="332" as="geometry"/>
</mxCell>
<mxCell id="127" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="370" y="780" width="920" height="440" as="geometry"/>
</mxCell>
<mxCell id="115" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="90" y="140" width="230" height="390" as="geometry"/>
</mxCell>
@ -55,62 +45,74 @@
<mxCell id="124" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="890" y="135" width="230" height="140" as="geometry"/>
</mxCell>
<mxCell id="280" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="370" y="780" width="920" height="330" as="geometry"/>
</mxCell>
<mxCell id="281" value="M" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="860" y="1050" width="30" height="30" as="geometry"/>
</mxCell>
<mxCell id="282" value="2" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="820" y="1050" width="30" height="30" as="geometry"/>
</mxCell>
<mxCell id="145" value="Classes" parent="0"/>
<mxCell id="200" value="Mone &lt;implementatie&gt;" style="swimlane;fontStyle=0;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;fillColor=none;fontColor=#ffffff;strokeColor=#c5c7c9;" vertex="1" parent="145">
<mxCell id="200" value="DieselMotor" style="swimlane;fontStyle=0;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;fillColor=none;fontColor=#ffffff;strokeColor=#c5c7c9;" parent="145" vertex="1">
<mxGeometry x="561" y="539" width="160" height="126" as="geometry">
<mxRectangle x="340" y="380" width="170" height="26" as="alternateBounds"/>
</mxGeometry>
</mxCell>
<mxCell id="201" value="" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=#c5c7c9;fillColor=none;" vertex="1" parent="200">
<mxCell id="201" value="" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=#c5c7c9;fillColor=none;" parent="200" vertex="1">
<mxGeometry y="26" width="160" height="40" as="geometry"/>
</mxCell>
<mxCell id="202" value="+ tsensor() : Tsensor&lt;br&gt;+ start() : void&lt;br&gt;+ stop() : void" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=#c5c7c9;fillColor=none;" vertex="1" parent="200">
<mxCell id="202" value="+ tsensor() : Tsensor&lt;br&gt;+ start() : void&lt;br&gt;+ stop() : void" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=#c5c7c9;fillColor=none;" parent="200" vertex="1">
<mxGeometry y="66" width="160" height="60" as="geometry"/>
</mxCell>
<mxCell id="203" value="Machine &lt;implementatie&gt;" style="swimlane;fontStyle=0;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=20;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;fillColor=none;fontColor=#ffffff;strokeColor=#c5c7c9;" vertex="1" parent="145">
<mxCell id="203" value="Machine &lt;implementatie&gt;" style="swimlane;fontStyle=0;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=20;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;fillColor=none;fontColor=#ffffff;strokeColor=#c5c7c9;" parent="145" vertex="1">
<mxGeometry x="411" y="379" width="160" height="100" as="geometry">
<mxRectangle x="340" y="380" width="170" height="26" as="alternateBounds"/>
</mxGeometry>
</mxCell>
<mxCell id="204" value="" style="text;html=1;align=left;verticalAlign=middle;resizable=1;points=[];autosize=1;strokeColor=#c5c7c9;fillColor=none;" vertex="1" parent="203">
<mxCell id="204" value="" style="text;html=1;align=left;verticalAlign=middle;resizable=1;points=[];autosize=1;strokeColor=#c5c7c9;fillColor=none;" parent="203" vertex="1">
<mxGeometry y="20" width="160" height="10" as="geometry"/>
</mxCell>
<mxCell id="205" value="+ motor1() : Motor&lt;br&gt;+ motor2() : Motor&lt;br&gt;+ run() : void&lt;br&gt;+ halt() : void" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=#c5c7c9;fillColor=none;" vertex="1" parent="203">
<mxCell id="205" value="+ motor1() : Motor&lt;br&gt;+ motor2() : Motor&lt;br&gt;+ run() : void&lt;br&gt;+ halt() : void" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=#c5c7c9;fillColor=none;" parent="203" vertex="1">
<mxGeometry y="30" width="160" height="70" as="geometry"/>
</mxCell>
<mxCell id="206" value="Mtwo &lt;implementatie&gt;" style="swimlane;fontStyle=0;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;fillColor=none;fontColor=#ffffff;strokeColor=#c5c7c9;" vertex="1" parent="145">
<mxCell id="206" value="ElectrischeMotor" style="swimlane;fontStyle=0;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;fillColor=none;fontColor=#ffffff;strokeColor=#c5c7c9;" parent="145" vertex="1">
<mxGeometry x="831" y="539" width="160" height="100" as="geometry">
<mxRectangle x="340" y="380" width="170" height="26" as="alternateBounds"/>
</mxGeometry>
</mxCell>
<mxCell id="207" value="" style="text;html=1;align=left;verticalAlign=middle;resizable=1;points=[];autosize=1;strokeColor=#c5c7c9;fillColor=none;" vertex="1" parent="206">
<mxCell id="207" value="" style="text;html=1;align=left;verticalAlign=middle;resizable=1;points=[];autosize=1;strokeColor=#c5c7c9;fillColor=none;" parent="206" vertex="1">
<mxGeometry y="26" width="160" height="14" as="geometry"/>
</mxCell>
<mxCell id="208" value="+ tsensor() : Tsensor&lt;br&gt;+ start() : void&lt;br&gt;+ stop() : void" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=#c5c7c9;fillColor=none;" vertex="1" parent="206">
<mxCell id="208" value="+ tsensor() : Tsensor&lt;br&gt;+ start() : void&lt;br&gt;+ stop() : void" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=#c5c7c9;fillColor=none;" parent="206" vertex="1">
<mxGeometry y="40" width="160" height="60" as="geometry"/>
</mxCell>
<mxCell id="209" value="Tsensor &lt;implementatie&gt;" style="swimlane;fontStyle=0;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;fillColor=none;fontColor=#ffffff;strokeColor=#c5c7c9;" vertex="1" parent="145">
<mxGeometry x="1111" y="549" width="160" height="80" as="geometry">
<mxCell id="209" value="Tsensor &lt;implementatie&gt;" style="swimlane;fontStyle=0;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;fillColor=none;fontColor=#ffffff;strokeColor=#c5c7c9;" parent="145" vertex="1">
<mxGeometry x="1111" y="460" width="160" height="96" as="geometry">
<mxRectangle x="340" y="380" width="170" height="26" as="alternateBounds"/>
</mxGeometry>
</mxCell>
<mxCell id="210" value="" style="text;html=1;align=left;verticalAlign=middle;resizable=1;points=[];autosize=1;strokeColor=#c5c7c9;fillColor=none;" vertex="1" parent="209">
<mxGeometry y="26" width="160" height="14" as="geometry"/>
<mxCell id="278" value="-temperatuur: int" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=#c5c7c9;fillColor=none;" parent="209" vertex="1">
<mxGeometry y="26" width="160" height="30" as="geometry"/>
</mxCell>
<mxCell id="211" value="+read(): void&lt;br&gt;+temperatuur(): Integer" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=#c5c7c9;fillColor=none;" vertex="1" parent="209">
<mxGeometry y="40" width="160" height="40" as="geometry"/>
<mxCell id="211" value="+read(): void&lt;br&gt;+temperatuur(): Integer" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=#c5c7c9;fillColor=none;" parent="209" vertex="1">
<mxGeometry y="56" width="160" height="40" as="geometry"/>
</mxCell>
<mxCell id="212" value="" style="edgeStyle=elbowEdgeStyle;elbow=horizontal;endArrow=classic;html=1;curved=0;rounded=0;endSize=8;startSize=8;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="145" target="209">
<mxCell id="212" value="" style="edgeStyle=elbowEdgeStyle;elbow=horizontal;endArrow=classic;html=1;curved=0;rounded=0;endSize=8;startSize=8;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="145" source="264" target="209" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="1010.9999999999995" y="254" as="sourcePoint"/>
<mxPoint x="311" y="599" as="targetPoint"/>
<Array as="points">
<mxPoint x="1191" y="400"/>
<mxPoint x="1011" y="360"/>
<mxPoint x="1191" y="410"/>
<mxPoint x="1180" y="410"/>
<mxPoint x="1191" y="430"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="213" value="" style="edgeStyle=elbowEdgeStyle;elbow=horizontal;endArrow=classic;html=1;curved=0;rounded=0;endSize=8;startSize=8;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=-0.004;exitY=0.298;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="145" source="205">
<mxCell id="213" value="" style="edgeStyle=elbowEdgeStyle;elbow=horizontal;endArrow=classic;html=1;curved=0;rounded=0;endSize=8;startSize=8;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0.006;exitY=0.317;exitDx=0;exitDy=0;exitPerimeter=0;" parent="145" source="211" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="1021" y="264" as="sourcePoint"/>
<mxPoint x="281" y="415" as="targetPoint"/>
@ -119,102 +121,96 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="214" value="" style="endArrow=block;endSize=10;endFill=0;shadow=0;strokeWidth=1;rounded=0;edgeStyle=elbowEdgeStyle;elbow=vertical;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.563;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;fillColor=#e51400;strokeColor=#B20000;" edge="1" parent="145" source="211">
<mxCell id="214" value="" style="endArrow=block;endSize=10;endFill=0;shadow=0;strokeWidth=1;rounded=0;edgeStyle=elbowEdgeStyle;elbow=vertical;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fillColor=#f5f5f5;strokeColor=#FFFFFF;exitX=0.563;exitY=1.036;exitDx=0;exitDy=0;exitPerimeter=0;" parent="145" source="211" target="226" edge="1">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="1221" y="699" as="sourcePoint"/>
<mxPoint x="1200" y="560" as="sourcePoint"/>
<mxPoint x="1190.9999999999995" y="789" as="targetPoint"/>
<Array as="points"/>
</mxGeometry>
</mxCell>
<mxCell id="215" value="" style="endArrow=block;endSize=10;endFill=0;shadow=0;strokeWidth=1;rounded=0;edgeStyle=elbowEdgeStyle;elbow=vertical;fillColor=#e51400;strokeColor=#B20000;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="145">
<mxCell id="215" value="" style="endArrow=block;endSize=10;endFill=0;shadow=0;strokeWidth=1;rounded=0;edgeStyle=elbowEdgeStyle;elbow=vertical;fillColor=#e51400;strokeColor=#FFFFFF;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="145" edge="1">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="900.9999999999995" y="639" as="sourcePoint"/>
<mxPoint x="891.0000000000005" y="802.5" as="targetPoint"/>
<Array as="points"/>
</mxGeometry>
</mxCell>
<mxCell id="216" value="" style="endArrow=block;endSize=10;endFill=0;shadow=0;strokeWidth=1;rounded=0;edgeStyle=elbowEdgeStyle;elbow=vertical;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fillColor=#e51400;strokeColor=#B20000;" edge="1" parent="145">
<mxCell id="216" value="" style="endArrow=block;endSize=10;endFill=0;shadow=0;strokeWidth=1;rounded=0;edgeStyle=elbowEdgeStyle;elbow=vertical;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fillColor=#e51400;strokeColor=#FFFFFF;" parent="145" edge="1">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="641" y="665" as="sourcePoint"/>
<mxPoint x="611" y="786" as="targetPoint"/>
<Array as="points"/>
</mxGeometry>
</mxCell>
<mxCell id="217" value="" style="endArrow=block;endSize=10;endFill=0;shadow=0;strokeWidth=1;rounded=0;edgeStyle=elbowEdgeStyle;elbow=vertical;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.471;exitY=1.022;exitDx=0;exitDy=0;exitPerimeter=0;fillColor=#e51400;strokeColor=#B20000;" edge="1" parent="145" source="205">
<mxCell id="217" value="" style="endArrow=block;endSize=10;endFill=0;shadow=0;strokeWidth=1;rounded=0;edgeStyle=elbowEdgeStyle;elbow=vertical;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.471;exitY=1.022;exitDx=0;exitDy=0;exitPerimeter=0;fillColor=#e51400;strokeColor=#B20000;" parent="145" source="205" edge="1">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="491.0799999999999" y="479" as="sourcePoint"/>
<mxPoint x="461" y="929" as="targetPoint"/>
<Array as="points"/>
</mxGeometry>
</mxCell>
<mxCell id="220" value="Machine &lt;interface&gt;" style="swimlane;fontStyle=0;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;fillColor=none;fontColor=#ffffff;strokeColor=#c5c7c9;" vertex="1" parent="145">
<mxCell id="220" value="Machine &lt;interface&gt;" style="swimlane;fontStyle=0;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;fillColor=none;fontColor=#ffffff;strokeColor=#c5c7c9;" parent="145" vertex="1">
<mxGeometry x="380" y="930" width="160" height="100" as="geometry">
<mxRectangle x="340" y="380" width="170" height="26" as="alternateBounds"/>
</mxGeometry>
</mxCell>
<mxCell id="221" value="" style="text;html=1;align=left;verticalAlign=middle;resizable=1;points=[];autosize=1;strokeColor=#c5c7c9;fillColor=none;" vertex="1" parent="220">
<mxCell id="221" value="" style="text;html=1;align=left;verticalAlign=middle;resizable=1;points=[];autosize=1;strokeColor=#c5c7c9;fillColor=none;" parent="220" vertex="1">
<mxGeometry y="26" width="160" height="4" as="geometry"/>
</mxCell>
<mxCell id="222" value="+ motor1() : Motor&lt;br&gt;+ motor2() : Motor&lt;br&gt;+ run() : void&lt;br&gt;+ halt() : void" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=#c5c7c9;fillColor=none;" vertex="1" parent="220">
<mxCell id="222" value="+ motor1() : Motor&lt;br&gt;+ motor2() : Motor&lt;br&gt;+ run() : void&lt;br&gt;+ halt() : void" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=#c5c7c9;fillColor=none;" parent="220" vertex="1">
<mxGeometry y="30" width="160" height="70" as="geometry"/>
</mxCell>
<mxCell id="223" value="Motor &lt;interface&gt;" style="swimlane;fontStyle=0;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;fillColor=none;fontColor=#ffffff;strokeColor=#c5c7c9;" vertex="1" parent="145">
<mxCell id="223" value="Motor &lt;interface&gt;" style="swimlane;fontStyle=0;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;fillColor=none;fontColor=#ffffff;strokeColor=#c5c7c9;" parent="145" vertex="1">
<mxGeometry x="780" y="950" width="160" height="100" as="geometry">
<mxRectangle x="340" y="380" width="170" height="26" as="alternateBounds"/>
</mxGeometry>
</mxCell>
<mxCell id="224" value="" style="text;html=1;align=left;verticalAlign=middle;resizable=1;points=[];autosize=1;strokeColor=#c5c7c9;fillColor=none;" vertex="1" parent="223">
<mxCell id="224" value="" style="text;html=1;align=left;verticalAlign=middle;resizable=1;points=[];autosize=1;strokeColor=#c5c7c9;fillColor=none;" parent="223" vertex="1">
<mxGeometry y="26" width="160" height="14" as="geometry"/>
</mxCell>
<mxCell id="225" value="+ tsensor() : Tsensor&lt;br&gt;+ start() : void&lt;br&gt;+ stop() : void" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=#c5c7c9;fillColor=none;" vertex="1" parent="223">
<mxCell id="225" value="+ tsensor() : Tsensor&lt;br&gt;+ start() : void&lt;br&gt;+ stop() : void" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=#c5c7c9;fillColor=none;" parent="223" vertex="1">
<mxGeometry y="40" width="160" height="60" as="geometry"/>
</mxCell>
<mxCell id="226" value="TSensor &lt;interface&gt;" style="swimlane;fontStyle=0;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;fillColor=none;fontColor=#ffffff;strokeColor=#c5c7c9;" vertex="1" parent="145">
<mxGeometry x="1110" y="790" width="160" height="80" as="geometry">
<mxCell id="226" value="TSensor &lt;interface&gt;" style="swimlane;fontStyle=0;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;fillColor=none;fontColor=#ffffff;strokeColor=#c5c7c9;" parent="145" vertex="1">
<mxGeometry x="1115" y="970" width="160" height="80" as="geometry">
<mxRectangle x="340" y="380" width="170" height="26" as="alternateBounds"/>
</mxGeometry>
</mxCell>
<mxCell id="227" value="" style="text;html=1;align=left;verticalAlign=middle;resizable=1;points=[];autosize=1;strokeColor=#c5c7c9;fillColor=none;" vertex="1" parent="226">
<mxCell id="227" value="" style="text;html=1;align=left;verticalAlign=middle;resizable=1;points=[];autosize=1;strokeColor=#c5c7c9;fillColor=none;" parent="226" vertex="1">
<mxGeometry y="26" width="160" height="14" as="geometry"/>
</mxCell>
<mxCell id="228" value="+read(): void&lt;br&gt;+temperatuur(): Integer" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=#c5c7c9;fillColor=none;" vertex="1" parent="226">
<mxCell id="228" value="+read(): void&lt;br&gt;+temperatuur(): Integer" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=#c5c7c9;fillColor=none;" parent="226" vertex="1">
<mxGeometry y="40" width="160" height="40" as="geometry"/>
</mxCell>
<mxCell id="229" value="Mone &lt;interface&gt;" style="swimlane;fontStyle=0;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;fillColor=none;fontColor=#ffffff;strokeColor=#c5c7c9;" vertex="1" parent="145">
<mxCell id="229" value="Mone &lt;interface&gt;" style="swimlane;fontStyle=0;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;fillColor=none;fontColor=#ffffff;strokeColor=#c5c7c9;" parent="145" vertex="1">
<mxGeometry x="530" y="787" width="160" height="83" as="geometry">
<mxRectangle x="340" y="380" width="170" height="26" as="alternateBounds"/>
</mxGeometry>
</mxCell>
<mxCell id="230" value="" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=#c5c7c9;fillColor=none;" vertex="1" parent="229">
<mxCell id="230" value="" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=#c5c7c9;fillColor=none;" parent="229" vertex="1">
<mxGeometry y="26" width="160" height="40" as="geometry"/>
</mxCell>
<mxCell id="231" value="Mtwo &lt;interface&gt;" style="swimlane;fontStyle=0;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;fillColor=none;fontColor=#ffffff;strokeColor=#c5c7c9;" vertex="1" parent="145">
<mxCell id="231" value="Mtwo &lt;interface&gt;" style="swimlane;fontStyle=0;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;fillColor=none;fontColor=#ffffff;strokeColor=#c5c7c9;" parent="145" vertex="1">
<mxGeometry x="810" y="803.5" width="160" height="83" as="geometry">
<mxRectangle x="340" y="380" width="170" height="26" as="alternateBounds"/>
</mxGeometry>
</mxCell>
<mxCell id="232" value="" style="text;html=1;align=left;verticalAlign=middle;resizable=1;points=[];autosize=1;strokeColor=#c5c7c9;fillColor=none;" vertex="1" parent="231">
<mxCell id="232" value="" style="text;html=1;align=left;verticalAlign=middle;resizable=1;points=[];autosize=1;strokeColor=#c5c7c9;fillColor=none;" parent="231" vertex="1">
<mxGeometry y="26" width="160" height="40" as="geometry"/>
</mxCell>
<mxCell id="233" value="" style="endArrow=none;html=1;fontSize=16;" edge="1" parent="145">
<mxCell id="233" value="" style="endArrow=none;html=1;fontSize=16;exitX=1.014;exitY=0.364;exitDx=0;exitDy=0;exitPerimeter=0;" parent="145" source="225" target="226" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="970" y="830" as="sourcePoint"/>
<mxPoint x="1110" y="830" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="234" value="&lt;font style=&quot;font-size: 12px;&quot;&gt;M&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=16;" vertex="1" parent="145">
<mxGeometry x="970" y="800" width="30" height="30" as="geometry"/>
<mxCell id="235" value="&lt;font style=&quot;font-size: 12px;&quot;&gt;S&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=16;" parent="145" vertex="1">
<mxGeometry x="1080" y="980" width="30" height="30" as="geometry"/>
</mxCell>
<mxCell id="235" value="&lt;font style=&quot;font-size: 12px;&quot;&gt;S&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=16;" vertex="1" parent="145">
<mxGeometry x="1080" y="801" width="30" height="30" as="geometry"/>
<mxCell id="236" value="1" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=12;" parent="145" vertex="1">
<mxGeometry x="1080" y="1010" width="30" height="30" as="geometry"/>
</mxCell>
<mxCell id="236" value="1" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=12;" vertex="1" parent="145">
<mxGeometry x="1080" y="830" width="30" height="30" as="geometry"/>
</mxCell>
<mxCell id="237" value="1" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=12;" vertex="1" parent="145">
<mxGeometry x="970" y="830" width="30" height="30" as="geometry"/>
</mxCell>
<mxCell id="238" value="" style="endArrow=block;endSize=10;endFill=0;shadow=0;strokeWidth=1;rounded=0;edgeStyle=elbowEdgeStyle;elbow=vertical;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="145" target="223">
<mxCell id="238" value="" style="endArrow=block;endSize=10;endFill=0;shadow=0;strokeWidth=1;rounded=0;edgeStyle=elbowEdgeStyle;elbow=vertical;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="145" target="223" edge="1">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="890" y="890" as="sourcePoint"/>
<mxPoint x="890" y="900" as="targetPoint"/>
@ -223,7 +219,7 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="239" value="" style="endArrow=none;html=1;fontSize=12;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="145" source="229">
<mxCell id="239" value="" style="endArrow=none;html=1;fontSize=12;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="145" source="229" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="830" y="1060" as="sourcePoint"/>
<mxPoint x="880" y="920" as="targetPoint"/>
@ -233,7 +229,7 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="240" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;dashed=1;labelBackgroundColor=none;startFill=0;endArrow=open;endFill=0;endSize=10;fontFamily=Verdana;fontSize=10;entryX=0;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="145" target="223">
<mxCell id="240" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;dashed=1;labelBackgroundColor=none;startFill=0;endArrow=open;endFill=0;endSize=10;fontFamily=Verdana;fontSize=10;entryX=0;entryY=0;entryDx=0;entryDy=0;" parent="145" target="223" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="780" y="950"/>
@ -242,90 +238,72 @@
<mxPoint x="650" y="949.4999999999999" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="241" value="1" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="145">
<mxGeometry x="380" y="1030" width="30" height="30" as="geometry"/>
</mxCell>
<mxCell id="242" value="&amp;nbsp;M" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="145">
<mxGeometry x="400" y="1030" width="40" height="30" as="geometry"/>
</mxCell>
<mxCell id="243" value="" style="endArrow=none;html=1;fontSize=12;exitX=0.184;exitY=1.005;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="145">
<mxCell id="243" value="" style="endArrow=none;html=1;fontSize=12;exitX=0.184;exitY=1.005;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.461;entryY=1.003;entryDx=0;entryDy=0;entryPerimeter=0;" parent="145" target="225" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="400.44000000000005" y="1029.35" as="sourcePoint"/>
<mxPoint x="961" y="886" as="targetPoint"/>
<Array as="points">
<mxPoint x="401" y="1156"/>
<mxPoint x="961" y="1156"/>
<mxPoint x="401" y="1090"/>
<mxPoint x="854" y="1090"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="244" value="" style="endArrow=block;endSize=10;endFill=0;shadow=0;strokeWidth=1;rounded=0;edgeStyle=elbowEdgeStyle;elbow=vertical;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.471;exitY=1.022;exitDx=0;exitDy=0;exitPerimeter=0;fillColor=#e51400;strokeColor=#B20000;" edge="1" parent="145">
<mxCell id="244" value="" style="endArrow=block;endSize=10;endFill=0;shadow=0;strokeWidth=1;rounded=0;edgeStyle=elbowEdgeStyle;elbow=vertical;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.471;exitY=1.022;exitDx=0;exitDy=0;exitPerimeter=0;fillColor=#e51400;strokeColor=default;" parent="145" edge="1">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="486.3599999999999" y="480.53999999999996" as="sourcePoint"/>
<mxPoint x="461" y="929" as="targetPoint"/>
<Array as="points"/>
</mxGeometry>
</mxCell>
<mxCell id="245" value="1" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="145">
<mxGeometry x="532" y="900" width="30" height="30" as="geometry"/>
</mxCell>
<mxCell id="246" value="1" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="145">
<mxGeometry x="532" y="870" width="30" height="30" as="geometry"/>
</mxCell>
<mxCell id="247" value="Mone" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="145">
<mxGeometry x="500" y="870" width="50" height="30" as="geometry"/>
</mxCell>
<mxCell id="248" value="M" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="145">
<mxGeometry x="510" y="900" width="30" height="30" as="geometry"/>
</mxCell>
<mxCell id="249" value="Observer &lt;interface&gt;" style="swimlane;fontStyle=0;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;fillColor=none;fontColor=#ffffff;strokeColor=#c5c7c9;" vertex="1" parent="145">
<mxCell id="249" value="Observer &lt;interface&gt;" style="swimlane;fontStyle=0;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;fillColor=none;fontColor=#ffffff;strokeColor=#c5c7c9;" parent="145" vertex="1">
<mxGeometry x="120" y="150" width="160" height="86" as="geometry">
<mxRectangle x="340" y="380" width="170" height="26" as="alternateBounds"/>
</mxGeometry>
</mxCell>
<mxCell id="250" value="# getSubject() : Subject" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=#c5c7c9;fillColor=none;" vertex="1" parent="249">
<mxCell id="250" value="# getSubject() : Subject" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=#c5c7c9;fillColor=none;" parent="249" vertex="1">
<mxGeometry y="26" width="160" height="30" as="geometry"/>
</mxCell>
<mxCell id="251" value="+ update() : void" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=#c5c7c9;fillColor=none;" vertex="1" parent="249">
<mxCell id="251" value="+ update() : void" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=#c5c7c9;fillColor=none;" parent="249" vertex="1">
<mxGeometry y="56" width="160" height="30" as="geometry"/>
</mxCell>
<mxCell id="252" value="Subject" style="swimlane;fontStyle=0;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;fillColor=none;" vertex="1" parent="145">
<mxCell id="252" value="Subject" style="swimlane;fontStyle=0;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;fillColor=none;" parent="145" vertex="1">
<mxGeometry x="120" y="340" width="160" height="160" as="geometry">
<mxRectangle x="340" y="380" width="170" height="26" as="alternateBounds"/>
</mxGeometry>
</mxCell>
<mxCell id="253" value="&lt;span style=&quot;color: rgb(240, 240, 240); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; float: none; display: inline !important; background-color: rgb(216, 0, 115);&quot;&gt;- L : list&amp;lt;Observer*&amp;gt;&lt;/span&gt;" style="text;whiteSpace=wrap;html=1;fontSize=10;fontFamily=Verdana;fontColor=default;" vertex="1" parent="252">
<mxCell id="253" value="&lt;span style=&quot;color: rgb(240, 240, 240); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; float: none; display: inline !important; background-color: rgb(216, 130, 199);&quot;&gt;- L : list&amp;lt;Observer*&amp;gt;&lt;/span&gt;" style="text;whiteSpace=wrap;html=1;fontSize=10;fontFamily=Verdana;fontColor=default;" parent="252" vertex="1">
<mxGeometry y="26" width="160" height="30" as="geometry"/>
</mxCell>
<mxCell id="254" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" vertex="1" parent="252">
<mxCell id="254" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="252" vertex="1">
<mxGeometry y="56" width="160" height="8" as="geometry"/>
</mxCell>
<mxCell id="255" value="# notify() : void" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="252">
<mxCell id="255" value="# notify() : void" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="252" vertex="1">
<mxGeometry y="64" width="160" height="24" as="geometry"/>
</mxCell>
<mxCell id="256" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" vertex="1" parent="252">
<mxCell id="256" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="252" vertex="1">
<mxGeometry y="88" width="160" height="8" as="geometry"/>
</mxCell>
<mxCell id="257" value="&lt;span style=&quot;color: rgb(240, 240, 240); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; float: none; display: inline !important; background-color: rgb(216, 0, 115);&quot;&gt;+ remove (Observer*) : void&lt;/span&gt;" style="text;whiteSpace=wrap;html=1;fontSize=10;fontFamily=Verdana;fontColor=default;" vertex="1" parent="252">
<mxCell id="257" value="&lt;span style=&quot;color: rgb(240, 240, 240); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; float: none; display: inline !important; background-color: rgb(216, 130, 199);&quot;&gt;+ remove (Observer*) : void&lt;/span&gt;" style="text;whiteSpace=wrap;html=1;fontSize=10;fontFamily=Verdana;fontColor=default;" parent="252" vertex="1">
<mxGeometry y="96" width="160" height="32" as="geometry"/>
</mxCell>
<mxCell id="258" value="&lt;font face=&quot;Helvetica&quot;&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;+ insert (Observer*) : void&lt;/span&gt;&lt;/font&gt;" style="text;whiteSpace=wrap;html=1;fontSize=10;fontFamily=Verdana;fontColor=default;" vertex="1" parent="252">
<mxCell id="258" value="&lt;font face=&quot;Helvetica&quot;&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;+ insert (Observer*) : void&lt;/span&gt;&lt;/font&gt;" style="text;whiteSpace=wrap;html=1;fontSize=10;fontFamily=Verdana;fontColor=default;" parent="252" vertex="1">
<mxGeometry y="128" width="160" height="30" as="geometry"/>
</mxCell>
<mxCell id="259" style="edgeStyle=none;html=1;endArrow=open;endFill=0;entryX=0.653;entryY=0.003;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0.647;exitY=0.989;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="145" source="251" target="252">
<mxCell id="259" style="edgeStyle=none;html=1;endArrow=open;endFill=0;entryX=0.653;entryY=0.003;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0.647;exitY=0.989;exitDx=0;exitDy=0;exitPerimeter=0;" parent="145" source="251" target="252" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="380.00000000000017" y="290" as="targetPoint"/>
<mxPoint x="219" y="260" as="sourcePoint"/>
</mxGeometry>
</mxCell>
<mxCell id="260" style="edgeStyle=none;html=1;exitX=0.25;exitY=0;exitDx=0;exitDy=0;endArrow=open;endFill=0;entryX=0.249;entryY=1.005;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="145" source="252" target="251">
<mxCell id="260" style="edgeStyle=none;html=1;exitX=0.25;exitY=0;exitDx=0;exitDy=0;endArrow=open;endFill=0;entryX=0.249;entryY=1.005;entryDx=0;entryDy=0;entryPerimeter=0;" parent="145" source="252" target="251" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="161" y="259" as="targetPoint"/>
<mxPoint x="504.8100000000001" y="470.0100000000002" as="sourcePoint"/>
</mxGeometry>
</mxCell>
<mxCell id="261" value="" style="edgeStyle=elbowEdgeStyle;elbow=horizontal;endArrow=classic;html=1;curved=0;rounded=0;endSize=8;startSize=8;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" edge="1" parent="145" target="249">
<mxCell id="261" value="" style="edgeStyle=elbowEdgeStyle;elbow=horizontal;endArrow=classic;html=1;curved=0;rounded=0;endSize=8;startSize=8;" parent="145" source="262" target="249" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="1010" y="155" as="sourcePoint"/>
<mxPoint x="1030" y="40" as="sourcePoint"/>
<mxPoint x="670" y="70" as="targetPoint"/>
<Array as="points">
<mxPoint x="400" y="130"/>
@ -333,32 +311,94 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="262" value="UI" style="swimlane;fontStyle=0;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;fillColor=none;fontColor=#ffffff;strokeColor=#c5c7c9;" vertex="1" parent="145">
<mxCell id="262" value="UI" style="swimlane;fontStyle=0;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;fillColor=none;fontColor=#ffffff;strokeColor=#c5c7c9;" parent="145" vertex="1">
<mxGeometry x="930" y="155" width="160" height="100" as="geometry">
<mxRectangle x="340" y="380" width="170" height="26" as="alternateBounds"/>
</mxGeometry>
</mxCell>
<mxCell id="263" value="" style="text;html=1;align=left;verticalAlign=middle;resizable=1;points=[];autosize=1;strokeColor=#c5c7c9;fillColor=none;" vertex="1" parent="262">
<mxCell id="263" value="" style="text;html=1;align=left;verticalAlign=middle;resizable=1;points=[];autosize=1;strokeColor=#c5c7c9;fillColor=none;" parent="262" vertex="1">
<mxGeometry y="26" width="160" height="14" as="geometry"/>
</mxCell>
<mxCell id="264" value="+ update() : void" style="text;whiteSpace=wrap;html=1;" vertex="1" parent="262">
<mxCell id="264" value="+ update() : void" style="text;whiteSpace=wrap;html=1;" parent="262" vertex="1">
<mxGeometry y="40" width="160" height="60" as="geometry"/>
</mxCell>
<mxCell id="265" value="Main" style="swimlane;fontStyle=0;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;fillColor=none;fontColor=#ffffff;strokeColor=#c5c7c9;" vertex="1" parent="145">
<mxCell id="265" value="Main" style="swimlane;fontStyle=0;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;fillColor=none;fontColor=#ffffff;strokeColor=#c5c7c9;" parent="145" vertex="1">
<mxGeometry x="580" y="160" width="160" height="100" as="geometry">
<mxRectangle x="340" y="380" width="170" height="26" as="alternateBounds"/>
</mxGeometry>
</mxCell>
<mxCell id="266" value="" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=#c5c7c9;fillColor=none;" vertex="1" parent="265">
<mxCell id="266" value="" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=#c5c7c9;fillColor=none;" parent="265" vertex="1">
<mxGeometry y="26" width="160" height="40" as="geometry"/>
</mxCell>
<mxCell id="267" value="+ main(): void" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=#c5c7c9;fillColor=none;" vertex="1" parent="265">
<mxCell id="267" value="+ main(): void" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=#c5c7c9;fillColor=none;" parent="265" vertex="1">
<mxGeometry y="66" width="160" height="30" as="geometry"/>
</mxCell>
<mxCell id="268" value="" style="endArrow=classic;html=1;entryX=0;entryY=0.25;entryDx=0;entryDy=0;" edge="1" parent="145" target="264">
<mxCell id="272" value="" style="edgeStyle=elbowEdgeStyle;elbow=horizontal;endArrow=classic;html=1;curved=0;rounded=0;endSize=8;startSize=8;exitX=1.002;exitY=0.739;exitDx=0;exitDy=0;exitPerimeter=0;" parent="145" source="202" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="740" y="210" as="sourcePoint"/>
<mxPoint x="790" y="160" as="targetPoint"/>
<mxPoint x="651" y="549" as="sourcePoint"/>
<mxPoint x="1135" y="970" as="targetPoint"/>
<Array as="points">
<mxPoint x="1135" y="800"/>
<mxPoint x="1041" y="390"/>
<mxPoint x="1221" y="440"/>
<mxPoint x="1210" y="440"/>
<mxPoint x="1221" y="460"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="274" value="" style="edgeStyle=elbowEdgeStyle;elbow=horizontal;endArrow=classic;html=1;curved=0;rounded=0;endSize=8;startSize=8;entryX=0.25;entryY=0;entryDx=0;entryDy=0;" parent="145" target="226" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="990" y="609" as="sourcePoint"/>
<mxPoint x="1121" y="490" as="targetPoint"/>
<Array as="points">
<mxPoint x="1155" y="790"/>
<mxPoint x="1051" y="400"/>
<mxPoint x="1231" y="450"/>
<mxPoint x="1220" y="450"/>
<mxPoint x="1231" y="470"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="275" value="" style="edgeStyle=elbowEdgeStyle;elbow=horizontal;endArrow=classic;html=1;curved=0;rounded=0;endSize=8;startSize=8;strokeWidth=1;" parent="145" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="410" y="448" as="sourcePoint"/>
<mxPoint x="780" y="1033" as="targetPoint"/>
<Array as="points">
<mxPoint x="330" y="680"/>
<mxPoint x="310" y="900"/>
<mxPoint x="510" y="1080"/>
<mxPoint x="310" y="1120"/>
<mxPoint x="220" y="1120"/>
<mxPoint x="290" y="1070"/>
<mxPoint x="300" y="840"/>
<mxPoint x="510" y="1070"/>
<mxPoint x="340" y="870"/>
<mxPoint x="1051" y="400"/>
<mxPoint x="1231" y="450"/>
<mxPoint x="1220" y="450"/>
<mxPoint x="1231" y="470"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="279" value="" style="edgeStyle=elbowEdgeStyle;elbow=horizontal;endArrow=classic;html=1;curved=0;rounded=0;endSize=8;startSize=8;strokeWidth=1;exitX=1.007;exitY=0.551;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="145" source="205" target="226">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="750" y="440" as="sourcePoint"/>
<mxPoint x="1120" y="1025" as="targetPoint"/>
<Array as="points">
<mxPoint x="1100" y="730"/>
<mxPoint x="650" y="892"/>
<mxPoint x="850" y="1072"/>
<mxPoint x="650" y="1112"/>
<mxPoint x="560" y="1112"/>
<mxPoint x="630" y="1062"/>
<mxPoint x="640" y="832"/>
<mxPoint x="850" y="1062"/>
<mxPoint x="680" y="862"/>
<mxPoint x="1391" y="392"/>
<mxPoint x="1571" y="442"/>
<mxPoint x="1560" y="442"/>
<mxPoint x="1571" y="462"/>
</Array>
</mxGeometry>
</mxCell>
</root>