1 ///////////////////////////////////////////////////////////////////////////
2 // Workfile: Observer.cpp
3 // Author: Daniel Giritzer <daniel@giritzer.eu>
5 // Description: Interface für eine Observer Klasse.
7 ///////////////////////////////////////////////////////////////////////////
13 /////////////////////////////////////////////////
14 /// \brief Füge ein zu überwachendes Objekt hinzu.
15 /// \param s Zu überwachendes Objekt.
16 /////////////////////////////////////////////////
17 void Observer::subscribeSubject(Subject* s)
20 throw std::string("Nullpointer given as Subject!");
22 mSubjects.push_back(s);
23 s->subscribeObserver(this);
26 /////////////////////////////////////////////////
27 /// \brief Entferne ein überwachtes Objekt.
28 /// \param s Bereits überwachetes Objekt.
29 /////////////////////////////////////////////////
30 void Observer::unsubscribeSubject(Subject* s)
33 throw std::string("Nullpointer given as Subject!");
35 if(!(std::find(mSubjects.begin(), mSubjects.end(), s) != mSubjects.end()))
36 throw std::string("Not subscribed to this subject!");
40 s->unsubscribeObserver(this);
43 /////////////////////////////////////////////////
44 /// \brief Von Subject Klassen verwendete funktion
45 /// um Observer über änderungen zu
47 /// \param s Objekt mit änderungen.
48 /////////////////////////////////////////////////
49 void Observer::updateObserver(Subject* s)
53 throw std::string("Nullpointer given as Subject!");
55 for(auto curSub : mSubjects)
59 //Funktionsaufruf der Observer
61 updatedBySubject(curSub);
67 throw std::string("Update called by unknown Subject!");