Witam:) Mam problem:) posaidam takie zadanie:
Zdefiniować klasę bazowa Subject zawierającą trzy funkcje f(), g() i h(). Następnie z klasy tej wyprowadzić
klasy Implementation1, Implementation2 i Proxy. Ta ostatnia powinna zawierać wskaźnik do
obiektu typu Subject, a wszystkie jej metody powinny zwracać i być wywoływane na rzecz wskaźnika
takiego właśnie typu obiektu. Konstruktor klasy Proxy powinien inicjalizować wskaźnik do typu
Subject zainstalowanego w jej wnętrzu. W programie głównym zdefiniować dwa różne obiekty Proxy,
posiadające inna implementacje. Następnie zmodyfikować klasę Proxy w sposób umożliwiający
dynamiczna zmiane implementacji tej klasy.
oto fragment kodu:
#include <cstdlib>
#include <iostream>
using namespace std;
class Subject
{
public:
Subject(){};
~Subject(){};
void f(){cout<<"\n Funkcja f z klasy Subject\n";}; //funkcja
void g(){cout<<"\n Funkcja g z klasy Subject\n";}; //funkcja
void h(){cout<<"\n Funkcja h z klasy Subject\n";}; //funkcja
};
/////////////////////////////////////////////////////////
class Implementation1: public Subject
{
public:
Implementation1(){};
~Implementation1(){};
void f(){cout<<"\n Funkcja f z klasy Implementation1\n";};//funkcja
void g(){cout<<"\n Funkcja g z klasy Implementation1\n";};//funkcja
void h(){cout<<"\n Funkcja h z klasy Implementation1\n";}; //funkcja
};
/////////////////////////////////////////////////////////
class Implementation2: public Subject
{
public:
Implementation2(){};
~Implementation2(){};
void f(){cout<<"\n Funkcja f z klasy Implementation2\n";};//funkcja
void g(){cout<<"\n Funkcja g z klasy Implementation2\n";};//funkcja
void h(){cout<<"\n Funkcja h z klasy Implementation2\n";}; //funkcja
};
/////////////////////////////////////////////////////////
class Proxy: public Subject
{
public:
Subject *wsk; //wskaźnik do obiektu typu Subject
Proxy(Subject x);
~Proxy(){};
Subject* f(); //metody zwracajace i wywoływane na rzecz wskaźnika *wsk
Subject* g(); //metody zwracajace i wywoływane na rzecz wskaźnika *wsk
Subject* h(); //metody zwracajace i wywoływane na rzecz wskaźnika *wsk
};
/////////////////////////////////////////////////////////
Proxy::Proxy(Subject x):wsk(&x)
{
//wsk=&x; //to samo co w liscie inicjalizacyjnej
}
/////////////////////////////////////////////////////////
Subject* Proxy::f()
{
Subject* obiekt1;
return obiekt1;
}
/////////////////////////////////////////////////////////
Subject* Proxy::g()
{
Subject* obiekt2;
return obiekt2;
}
/////////////////////////////////////////////////////////
Subject* Proxy::h()
{
Subject* obiekt3;
return obiekt3;
}
/////////////////////////////////////////////////////////
int main(int argc, char *argv[])
{
system("PAUSE");
return EXIT_SUCCESS;
}
moj problem plega na tym ze nie rozumiem zbytnio " W programie głównym zdefiniować dwa różne obiekty Proxy, posiadające inna implementacje. Następnie zmodyfikować klasę Proxy w sposób umożliwiający dynamiczna zmiane implementacji tej klasy."
czy ktos moglby mi to wyjasnic i dokonczyc zaczety kod?? z gory dzieki
Pozdrawiam