Mechanizm programowania obiektowego w C++, wykorzystujący funkcje wirtualne (z ang. Virtual), który przy wywołaniu metod zwalnia programistę z obowiązku sprawdzenia jaką klasę pochodną aktualnie obsługuje, np. przez wskaźnik nosi nazwę
Mechanizm programowania obiektowego w C++, wykorzystujący funkcje wirtualne (z ang. Virtual), który przy wywołaniu metod zwalnia programistę z obowiązku sprawdzenia jaką klasę pochodną aktualnie obsługuje, np. przez wskaźnik nosi nazwę
Wyjaśnienie i uzasadnienie dydaktyczne
Poprawna odpowiedź: D
Uzasadnienie i szersze wyjaśnienie:
Opisany w pytaniu mechanizm to polimorfizm (a konkretnie jego odmiana dynamiczna, realizowana w czasie wykonania). Dzięki użyciu słowa kluczowego virtual przy metodzie w klasie bazowej, kompilator wie, że decyzja o tym, która wersja metody ma zostać wywołana (czy ta z klasy bazowej, czy przesłonięta w klasie pochodnej), ma być podjęta w trakcie działania programu. Odbywa się to na podstawie rzeczywistego typu obiektu, na który wskazuje wskaźnik lub referencja, a nie na podstawie typu samego wskaźnika. Pozwala to na traktowanie obiektów różnych klas pochodnych w jednolity sposób (poprzez wskaźnik do klasy bazowej), a system sam dba o wywołanie odpowiedniej, specyficznej dla danego obiektu implementacji metody.
Dlaczego pozostałe odpowiedzi są nieprawidłowe?
- A. dziedziczenia: Jest warunkiem koniecznym do wystąpienia polimorfizmu, ale nie jest samym mechanizmem dynamicznego wyboru metody.
- B. przeciążenia (overloading): Dotyczy istnienia wielu funkcji o tej samej nazwie, ale różnych parametrach. Jest to polimorfizm statyczny, rozwiązywany w czasie kompilacji.
- C. hermetyzacji: To zasada ukrywania wewnętrznych danych obiektu i udostępniania ich tylko przez publiczne metody.
Chcesz poćwiczyć całą kwalifikację INF.04?
Egzamin próbny na czas, nauka działami, losowe pytanie albo przegląd całej bazy — wszystko w przeglądarce i bez zakładania konta.
Pojęcia z tego pytania
- Dziedziczenie (Inheritance w OOP)Mechanizm programowania obiektowego pozwalający klasie pochodnej (podrzędnej) na przejęcie pól i metod z klasy bazowej (nadrzędnej) oraz ich rozszerzenie lub modyfikację.
- Hermetyzacja (Enkapsulacja w OOP)Jeden z fundamentalnych filarów programowania obiektowego, polegający na ukrywaniu wewnętrznego stanu obiektu (pól prywatnych) i udostępnianiu kontrolowanego dostępu przez publiczne metody/właściwości.
- Polimorfizm (Wielopostaciowość w OOP)Cecha programowania obiektowego pozwalająca na jednakowe traktowanie obiektów różnych klas pochodnych za pośrednictwem wspólnego interfejsu lub klasy bazowej z różną implementacją zachowań.
Podobne pytania z działu „Dziedziczenie i polimorfizm”
Ten sam obszar materiału z kwalifikacji INF.04. W całej bazie znajdziesz 20 pytań z tego działu.
- #92
Co można powiedzieć o metodach klasy Point?
- #173
Dziedziczenie jest stosowane, gdy istnieje potrzeba
- #207
W przedstawionym kodzie zostało zaprezentowane jedno z podstawowych założeń programowania obiektowego. Jest to
- #237
Odpowiednikami zmiennych i funkcji programowania strukturalnego są w programowaniu obiektowym
- #355
Przekazywanie zależności do klasy poprzez konstruktor nazywane jest