Witam.
Poniżej naszkicowałem schemat projektu swojego programu.
Chodzi o to że mam klasę bazową Figura i klasy, które z niej dziedziczą.
Używam funkcji wirtualnych i korzystam z dobrodziejstw polimorfizmu.
Do programu należy jednak dodać nową funkcjonalność, trzeba logować to co się dzieje z obiektem podczas rysowania.
Gdyby sprawa ograniczała się do jednej funkcji logującej, dodał bym ją do każdej klasy i po problemie.
Problem w tym że tych funkcji logujących mam na chwilę obecną już pięć.
Więc aż się prosi zbudować nową klasę Logger i tam umieścić odpowiedni kod obsługujący logowanie.
Nie wiem tylko jak to zrobić ażeby przy okazji nadal korzystać z polimorfizmu??
Nie chciał bym w tej nowej klasie Logger stosować instrukcji if() switch()... w zależności od tego z jakim obiektem będzie ona miała do czynienia.
Proszę o jakieś sugestie jak ten problem rozwiązać??
class Figura
{
public:
virtual void rysuj (void) { }
};
class Elipsa : public Figura
{
public:
void rysuj (void){ printf ("Rysuj elipse\n") }
};
class Kwadrat : public Figura
{
public:
void rysuj (void){ printf ("Rysuj kwadrat\n") }
};
int main (void)
{
Figura *wskF=new Elipsa();
wskF->rysuj(); //rysuje elipse
}
Pozdrawiam.