1 ///////////////////////////////////////////////////////////////////////////
2 // Workfile: Observer.cpp
3 // Author: Daniel Giritzer <daniel@giritzer.eu>
5 // Description: Interface für eine Observer Klasse.
7 ///////////////////////////////////////////////////////////////////////////
14 /////////////////////////////////////////////////
15 /// \brief Füge ein zu überwachendes Objekt hinzu.
16 /// \param s Zu überwachendes Objekt.
17 /////////////////////////////////////////////////
18 void Observer::subscribeSubject(Subject* s)
21 throw std::string("Nullpointer given as Subject!");
23 mSubjects.push_back(s);
24 s->subscribeObserver(this);
27 /////////////////////////////////////////////////
28 /// \brief Entferne ein überwachtes Objekt.
29 /// \param s Bereits überwachetes Objekt.
30 /////////////////////////////////////////////////
31 void Observer::unsubscribeSubject(Subject* s)
34 throw std::string("Nullpointer given as Subject!");
36 if(!(std::find(mSubjects.begin(), mSubjects.end(), s) != mSubjects.end()))
37 throw std::string("Not subscribed to this subject!");
41 s->unsubscribeObserver(this);
44 /////////////////////////////////////////////////
45 /// \brief Von Subject Klassen verwendete funktion
46 /// um Observer über änderungen zu
48 /// \param s Objekt mit änderungen.
49 /////////////////////////////////////////////////
50 void Observer::updateObserver(Subject* s)
54 throw std::string("Nullpointer given as Subject!");
56 for(auto curSub : mSubjects)
60 //Funktionsaufruf der Observer
62 updatedBySubject(curSub);
68 throw std::string("Update called by unknown Subject!");