Question: Use the observer design pattern. Get them to work in Visual Studio or GCC * Add additional properties to Customer if necessary * Add additional

Use the observer design pattern.
Get them to work in Visual Studio or GCC
* Add additional properties to Customer if necessary
* Add additional code to the existing observers to show their functionalities, use the Customer reference to get information about the customer
* Add a third type of "observer" to the project for the Customer
* Prove that this new "observer" is working (by adding outputs)
Your code should include outputs during object Constructor runs. Make changes to the Customer's properties and try notifying the observers. WelcomeLetter.h
#pragma once
#include "Observer.h"
#include "Customer.h"
class WelcomeLetter : public Observer
{
public:
WelcomeLetter(void);
void update( Customer *myCust);
public:
~WelcomeLetter(void);
};AddrVerification.cc
include "AddrVerification.h"
#include
using namespace std;
AddrVerification::AddrVerification(void)
{
}
AddrVerification::~AddrVerification(void)
{
}
void AddrVerification::update ( Customer *myCust)
{
// do Address verification stuff here
// can get more information about customer
// in question by using myCust
cout<<"in AddrVerification update"<
using namespace std;
Customer::Customer(void)
{
}
Customer::~Customer(void)
{
}
void Customer::attach( Observer *myObserver)
{
myObs.push_back( myObserver);
}
void Customer::detach( Observer *myObserver)
{
for (int i=0; i< myObs.size(); i++)
{
if (myObs[i]== myObserver)
{
myObs.erase(myObs.begin()+i);
return;
}
}
}
void Customer::notifyObs()
{
// set arg to something that helps
// tell the Observers what happened
for (int i=0; i< myObs.size(); i++)
{
myObs[i]->update(this);
}
}
string* Customer::getState()
{
string *state= new string;
// set state
return 0l;
}
Customer.h
#pragma once
#include
#include
#include
#include "Observer.h"
using namespace std;
class Customer
{
public:
Customer(void);
void attach( Observer *myObserver);
void detach( Observer *myObserver);
string* getState();
void notifyObs();
private:
vector myObs;
public:
~Customer(void);
};
CustomerTest.cc
#include "Observer.h"
#include "Customer.h"
#include "AddrVerification.h"
#include "WelcomeLetter.h"
#include
int main()
{
Customer *customer = new Customer();
WelcomeLetter *wl = new WelcomeLetter();
AddrVerification *av = new AddrVerification();
customer->attach(wl);
customer->attach(av);
customer->notifyObs();
cin.get();
}
Observer.cc
#include "Observer.h"
Observer::Observer(void)
{
}
Observer::~Observer(void)
{
}
Observer.h
#pragma once
class Customer;
class Observer
{
public:
Observer(void);
virtual void update( Customer *myCust)=0;
public:
~Observer(void);
};
WelcomeLetter.cc
#include "WelcomeLetter.h"
#include
using namespace std;
WelcomeLetter::WelcomeLetter(void)
{
}
WelcomeLetter::~WelcomeLetter(void)
{
}
void WelcomeLetter::update( Customer *myCust)
{
// do Welcome Letter stuff
// here can get more
// information about customer
// in question by using myCust
cout<<"in welcome letter update"< endl WelcomeLetter.h
#pragma once
#include "Observer.h"
#include "Customer.h"
class WelcomeLetter : public Observer
{
public:
WelcomeLetter(void);
void update( Customer *myCust);
public:
~WelcomeLetter(void);
};

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!