Wielokrotne wykorzystanie kodu w kontekście dziedziczenia

0

Witam ponownie.

Czytałem już masę artykułów ale dalej nie rozumiem na czym polega to wielokrotne wykorzystanie kodu. Czy ktoś mógłby mi podać jakiś sensowny przykład, który to wykorzystuje?

Dziękuje z góry :)

Pytanie być może banalne, ale nigdzie w internecie nie znalazłem żadnych konkretnych przykładów użycia.

Pozdrawiam

0

z tym że nic tam nie ma o klasach w C++... ani o dziedziczeniu

0

miło że ktoś odpowiedział :(

1
class base
  {
   protected:
   virtual ostream &out(ostream &s)const=0;
  };
ostream &operator<<(ostream &s,const base &b) { return b.out(s); }

Dalej rozgałęziasz klasę poprzez dziedziczenie, nadpisujesz metodę out i już możesz wrzucać obiekt do dowolnego strumienia.
np:

class point:base
  {
   public:
   double x,y;
   point(double x,double y):x(x),y(y) {}
   protected:
   virtual ostream &out(ostream &s)const { return s<<x<<','<<y; }
  };
...
point p(3,4);
cout<<p<<endl;
0

Do czego są metody czysto wirtualne to wiem :), klasy abstrakcyjne także, ale gdzie tu jest wielokrotne użycie kodu? W którym miejscu? Wiem, że pytanie może być banalne ale próbuję to zrozumieć już dłuższy czas i dalej nie wiem.

0

Nie masz przeciążenia operatora przesunięcia dla klasy point, oraz dla każdej innej pochodzącej od base owszem w tym przypadku nie dużo tego kodu ale na tej samej zasadzie możesz napisać cokolwiek.

0

tu masz przykład
http://www.tutorialspoint.com/cplusplus/cpp_inheritance.htm
Dzięki temu, że pola width oraz height są zadeklarowane w klasie bazowej(Shape) nie musiusz ich deklarować w klasie pochodnej(np. Rectangle) bo one te pola już posiadają.
Klasę Shape może rozszerzać dowoli(aż skończą Ci się pomysły na figury:))
Czy to jest użycie wielokrotne kodu klasy Shape?

1

pokoduj to zrozumiesz, samo czytanie g.. Ci da

0

Na hasło "wielokrotne użycie kodu" połączone z dziedziczeniem od razu kojarzy mi się wzorzec strategia. Prosty wzorzec, używany przez programistów nawet bez wiedzy że ta technika jest opisana jakimś wzorcem.

EDIT
Wzorzec dekorator też by pasował pod wielokrotne użycie kodu + dziedziczenie. No ale często składanie obiektów też ma tu miejsce więc nie wiem czy wpasowuje się w Twoje pytanie ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1