diff --git a/Opdracht_2/DigitaleMeter.cpp b/Opdracht_2/DigitaleMeter.cpp index 6fd58c8..1f1c532 100644 --- a/Opdracht_2/DigitaleMeter.cpp +++ b/Opdracht_2/DigitaleMeter.cpp @@ -7,5 +7,5 @@ DigitaleMeter::DigitaleMeter(Snelheid* s): Observer(s){ } void DigitaleMeter::update(){ - cout << "Digitaal " << dynamic_cast (getSubject()) -> geef(); + cout << "Digitaal " << dynamic_cast (getSubject()) -> geef() << endl; } \ No newline at end of file diff --git a/Opdracht_2/class_2a.drawio b/Opdracht_2/class_2a.drawio index 44b1777..41336a5 100644 --- a/Opdracht_2/class_2a.drawio +++ b/Opdracht_2/class_2a.drawio @@ -1,6 +1,6 @@ - + @@ -376,177 +376,177 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -554,10 +554,10 @@ - - + + - + @@ -565,130 +565,136 @@ - + - + + + + + + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/Opdracht_3/Opdracht_3_Alt/main.cpp b/Opdracht_3/Opdracht_3_Alt/main.cpp new file mode 100644 index 0000000..3d724d0 --- /dev/null +++ b/Opdracht_3/Opdracht_3_Alt/main.cpp @@ -0,0 +1,88 @@ +// ================================================================ +// Infrastructure Layer +// ================================================================ +#include +#include +#include + +using namespace std; + +class Subject; + +class Observer{ +private: Subject* S; + +protected: Subject* getSubject() const { return S; } + +public: Observer (Subject* s); + virtual ~Observer (); + virtual void update () = 0; +}; + +class Subject{ + +private: list L; + +protected: virtual void notify (); + +public: Subject () { } + virtual ~Subject() { } + virtual void insert (Observer* s) { L.push_front(s); } + virtual void remove (Observer* s) { L.remove(s); } +}; + +void Subject::notify (){ + for (list::iterator i=L.begin(); i!=L.end(); ++i) + (*i)->update(); +} + +Observer::Observer (Subject* s) : S(s){ + getSubject()->insert(this); +} +Observer::~Observer (){ + getSubject()->remove(this); +} + +// ================================================================ +// DomainLayer +// ================================================================ +class Element{ +public: + virtual ~Element () {} + virtual int draw () = 0; + virtual string name () = 0; +}; + +class Ninja : public Element, public Subject{ +private: string Name; + int AantalLevens; +public: Ninja (string n) : Name(n), AantalLevens(1) { } + virtual int draw () { return AantalLevens; } + virtual string name () { return Name; } + virtual int aantalLevens () { return AantalLevens; } + virtual void incLevens () { AantalLevens++; notify(); } + virtual void decLevens () { AantalLevens--; notify(); } +}; +// ================================================================ +// Interfacelayer +// ================================================================ +class NinjaWindow : public Observer{ +private: Ninja* N; +public: NinjaWindow (Ninja* n) : Observer(n) {} + virtual ~NinjaWindow () {} + //virtual void draw() { cout << N.name() << N.draw() << endl; } + virtual void update() {cout << dynamic_cast(getSubject())->name() << dynamic_cast(getSubject())->draw();} +}; + +int main( ){ + Ninja h("Henk"), j("Joop"); + NinjaWindow hW(&h), jW(&j); + h.incLevens(); + h.incLevens(); + j.incLevens(); + j.incLevens(); + j.incLevens(); + h.incLevens(); + return 0; +} +// ================================================================ \ No newline at end of file diff --git a/Opdracht_3/main.cpp b/Opdracht_3/main.cpp new file mode 100644 index 0000000..9d22bd5 --- /dev/null +++ b/Opdracht_3/main.cpp @@ -0,0 +1,88 @@ +// ================================================================ +// Infrastructure Layer +// ================================================================ +#include +#include +#include + +using namespace std; + +class Subject; + +class Observer{ +private: Subject* S; + +protected: Subject* getSubject() const { return S; } + +public: Observer (Subject* s); + virtual ~Observer (); + virtual void update () = 0; +}; + +class Subject{ + +private: list L; + +protected: virtual void notify (); + +public: Subject () { } + virtual ~Subject() { } + virtual void insert (Observer* s) { L.push_front(s); } + virtual void remove (Observer* s) { L.remove(s); } +}; + +void Subject::notify (){ + for (list::iterator i=L.begin(); i!=L.end(); ++i) + (*i)->update(); +} + +Observer::Observer (Subject* s) : S(s){ + getSubject()->insert(this); +} +Observer::~Observer (){ + getSubject()->remove(this); +} + +// ================================================================ +// DomainLayer +// ================================================================ +class Element{ +public: + virtual ~Element () {} + virtual void draw () = 0; + virtual string name () = 0; +}; + +class Ninja : public Element, public Subject{ +private: string Name; + int AantalLevens; +public: Ninja (string n) : Name(n), AantalLevens(1) { } + virtual void draw () { cout << name() << AantalLevens << endl; } + virtual string name () { return Name; } + virtual int aantalLevens () { return AantalLevens; } + virtual void incLevens () { AantalLevens++; notify(); } + virtual void decLevens () { AantalLevens--; notify(); } +}; +// ================================================================ +// Interfacelayer +// ================================================================ +class NinjaWindow : public Observer{ +private: Ninja* N; +public: NinjaWindow (Ninja* n) : Observer(n) {} + virtual ~NinjaWindow () {} + //virtual void draw() { N.draw(); } + virtual void update(){dynamic_cast(getSubject())->draw();} +}; + +int main( ){ + Ninja h("Henk"), j("Joop"); + NinjaWindow hW(&h), jW(&j); + h.incLevens(); + h.incLevens(); + j.incLevens(); + j.incLevens(); + j.incLevens(); + h.incLevens(); + return 0; +} +// ================================================================ \ No newline at end of file diff --git a/Opdracht_3/opdracht3.drawio b/Opdracht_3/opdracht3.drawio new file mode 100644 index 0000000..dc53c72 --- /dev/null +++ b/Opdracht_3/opdracht3.drawio @@ -0,0 +1,326 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file