Dziedziczenie

Strona g│≤wna

 

Dziedziczenie

Dzisiaj zajmiemy siΩ wstΩpem do dziedziczenia, w nastΩpnych odcinkach m.in. funkcje wirtualne wszystko o operacjach wej╢cia/wyj╢cia. Na koniec zajmiemy siΩ szczeg≤│owo algorytmami w C++. 

A wiΩc... let’s start! 

Dziedziczenie pozwala na zdefiniowanie nowej klasy (zak│adam, ┐e wiecie czym jest klasa) przy wykorzystaniu ju┐ istniej▒cej. 

Oto przyk│adowa klasa: 

   class punkty
   {
    public:
      float a,b;
      punkty(float,float);
      void wypisz();
      void przesu±(float,float);
   }; 

Za│≤┐my, ┐e w naszym programie nagle wynik│a potrzeba u┐ycia dodatkowej klasy, kt≤ra r≤┐ni siΩ od tej jedynie w kilku szczeg≤│ach. Zapewne wielu pomy╢li, ┐e w takim przypadku trzeba stworzyµ definicjΩ nowej klasy. Ot≤┐ nie! Poniewa┐ w│a╢nie technika zwana dziedziczeniem s│u┐y do tworzenia klas pochodnych (st▒d nazwa ‘dziedziczenie’-jedna klasa dziedziczy pewne cechy od drugiej). 

Jak dzia│a dziedziczenie? 

Przyk│adowo chcemy, by nowa klasa mia│a dodatkowy sk│adnik (dan▒) 

   char nazwa[20]; 

a tak┐e zmieniona funkcjΩ wypisz. 

Nowa klasa powinna zostaµ zdefiniowana w nastΩpuj▒cy spos≤b: 

   class punkciki: public punkty
   {
    public:
    char nazwa[20];
    punkciki(float=0,float=0,char* =NULL);
    void wypisz();
   }; 

W ten spos≤b powsta│a nowa klasa o nazwie punkciki (klasa pochodna) wywodz▒ca siΩ od klasy punkty (klasa podstawowa). 

Bardzo wa┐na w naszej klasie pochodnej jest pierwsza linijka: 

 class punkciki: public punkty 

Wyra┐enie znajduj▒ce siΩ po dwukropku nazywa siΩ list▒ pochodzenia. Informuje ona od czego wywodzi siΩ klasa pochodna. 

W klasie pochodnej mo┐emy zdefiniowaµ: 

*dodatkowe dane sk│adowe (w naszym przyk│adzie:char nazwa[20];),
*dodatkowe funkcje sk│adowe (w naszym przyk│adzie zmienili╢my funkcjΩ wypisz).
*sk│adnik (np: funkcjΩ) istniej▒cy ju┐ w danej klasie podstawowej. 

 W ten spos≤b mo┐emy poprawiµ kszta│t czego╢, co nie odpowiada nam w klasie podstawowej a czego nie chcemy dziedziczyµ w danej klasie w istniej▒cym kszta│cie. 

Ju┐ trochΩ wiem, czyli czas na eksperymenty. 

Jest to jedynie wstΩp do zagadnienia dziedziczenia. Ale ju┐ zachΩcam do eksperymentowania. Je┐eli po waszych zmianach program siΩ wysypie, nie przejmujcie siΩ tym; spr≤bujcie jeszcze raz, wszak najlepiej uczymy siΩ na w│asnych b│Ωdach. 

Serdecznie pozdrawiam i zapraszam na kolejne odcinki.     

Rafa│ Skopowski <black13.dark@tenbit.pl>