Przykładowe zadania do Laboratorium 8From MJanik(Difference between revisions)
Majanik (Talk | contribs)
(Created page with "'''Wirtualność oraz polimorfizm''' (tu rozumiany jako możliwość wyboru postaci funkcji w trakcie działania programu) stanowią zupełnie inne podejście do programowania ni...") Newer edit → Revision as of 10:20, 4 December 2012Wirtualność oraz polimorfizm (tu rozumiany jako możliwość wyboru postaci funkcji w trakcie działania programu) stanowią zupełnie inne podejście do programowania niż programowanie proceduralne, które do tej pory wykorzystywaliśmy. Są najważniejszą cechą programowania orientowanego obiektowo (OOP – Object Oriented Programming) w języku C++ (inaczej mówiąc: orientującego się według typu obiektu) i mają ogromne możliwości, które objawiają się w pełni przy dużych projektach. To z tego powodu język ten jest wykorzystywany w pisaniu wielkich aplikacji, od systemów operacyjnych po gry komputerowe.
virtual double Pole() { return 0; } (domyślnie niech zwraca 0). Klasy pochodne powinny zwracać odpowiednie pola w zależności od typu figury. W programie głównym należy: a. stworzyć obiekt klasy figura. Wypisać pole. b. stworzyć obiekt klasy prostokat. Wypisać pole. c. stworzyć obiekt klasy okrag. Wypisać pole. d. zamienić funkcje Pole() w klasie Figura na metode czysto wirtualną i poprawiamy program tak, by się skompilował – czego nie możemy wtedy w programie zrobić? virtual double Pole() = 0; Wskazówka: wszystkie metody czysto wirutalne muszą istnieć w klasach pochodnych. Klasa, która ma co najmniej jedną funkcję czysto wirtualną nazywamy klasą abstrakcyjną
Klasa abstrakcyjna jest klasą jakby nieskończoną. Jej dokończenie realizowane jest przez klasy pochodne. Należy zwrócić jeszcz uwagę na pewną zasadę, którą należy stosować: Jeśli klasa deklaruje jedną ze swoich funkcji jako virtual, wówczas jej destruktor deklarujemy także jako virtual. Skoro w klasie deklarujemy jakąś funkcję wirtualną, to znaczy, że na obiekty klas pochodnych zamierzamy czasem mówić jak na obiekty klasy podstawowej, co przy późniejszym niszczeniu obiektów mogłoby być problemem – nie zwalnialibyśmy pamięci dla niekórych składników klas pochodnych.
Należy wziąć dowolny z programów realizowanych na zajęciach, który posiada więcej niż jeden plik .cpp, oraz zrealizować na nim po kolei wszystkie polecenia i zmiany opisane w pliku: |