File: main.cc

package info (click to toggle)
aspectc%2B%2B 1.0pre4~svn.20090918-1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 117,308 kB
  • ctags: 410,601
  • sloc: cpp: 1,883,007; ansic: 17,279; sh: 2,190; makefile: 1,088
file content (40 lines) | stat: -rw-r--r-- 1,116 bytes parent folder | download | duplicates (13)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
//=========================================================
// main.cpp
//
// Program main function that demonstrates the Observer
// Design pattern.
//
// In this program:
//
// ConcreteSubject class: ClockTimer
// ConcreteObserver class: DigitalClock
//         AnalogClock
//
// The ClockTimer object changes state by memeber function
// Tick(). This will trigger Update() function for both
// ConcreteObserver DigitalClock and AnalogClock. For demo,
// purpose, the observer objects will print out the current
// time in respond.
//
//=========================================================
#include "ClockTimer.h"
#include "DigitalClock.h"
#include "AnalogClock.h"

int main(void)
{
  ClockTimer timer;

  DigitalClock digitalClock;
  ClockObserver::aspectof ()->addObserver (&timer, &digitalClock);

  AnalogClock analogClock;
  ClockObserver::aspectof ()->addObserver (&timer, &analogClock);
       
  timer.Tick(); // subject state change and update all it's
                // observers which are digitalClock and
                // analogClock in this program
  timer.Tick(); // and again

  return 0;
}