KWALIFIKACJA INF2 + INF3 - CZERWIEC 2011

PYTANIE NR 31.
W obiektowym języku programowania klasę P utworzono, wykorzystując istniejącą klasę B. Które określenie nie opisuje tego działania?
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
W dziedziczeniu klasa potomna jest tworzona na podstawie klasy bazowej, więc poprawnie mówi się, że "wywodzi się z", "rozszerza" lub "dziedziczy po" klasie B. Określenie "generuje" sugeruje wytwarzanie obiektów (kreację instancji) albo kodu, a nie relację dziedziczenia między klasami.

Pełne wyjaśnienie:

Dziedziczenie to mechanizm programowania obiektowego, w którym klasa potomna powstaje na bazie klasy bazowej. Oznacza to, że klasa potomna przejmuje (zgodnie z regułami dostępu) elementy klasy bazowej i może je rozszerzać lub modyfikować, tworząc relację typu IS-A (klasa P jest szczególnym przypadkiem typu B).

Dlatego sformułowania "wywodzi się z klasy B", "rozszerza klasę B" oraz "dziedziczy po klasie B" są typowymi, poprawnymi opisami tej samej relacji. W praktyce spotyka się je także jako odpowiedniki terminów z dokumentacji języków: derives from, extends, inherits from.

Natomiast określenie "generuje" nie jest standardowym terminem opisującym dziedziczenie. "Generowanie" kojarzy się z mechanizmami kreacji (np. wytwarzanie obiektów przez fabrykę/builder) albo z generowaniem kodu, czyli z czynnościami innymi niż definicja relacji między klasami. Relacja dziedziczenia nie polega na tym, że jedna klasa "produkuje" drugą w czasie działania programu, lecz na tym, że w projekcie/definicji typu jedna klasa jest zbudowana na podstawie drugiej.

Typowe pułapki na egzaminie to przeoczenie negacji w pytaniu ("nie opisuje") oraz mylenie dziedziczenia z kompozycją: kompozycja opisuje relację HAS-A (obiekt zawiera inny obiekt), a dziedziczenie relację IS-A (typ jest specjalizacją innego typu). W tym zadaniu trzeba rozpoznać termin, który nie pasuje do dziedziczenia.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Dziedziczenie to mechanizm OOP, w którym klasa potomna powstaje na podstawie klasy bazowej i przejmuje jej elementy (zgodnie z regułami dostępu). Tworzy to relację typu IS-A, czyli "P jest rodzajem B", a nie "P zawiera B".
Jeśli można powiedzieć "X jest Y" (np. "Samochód jest Pojazdem"), to zwykle pasuje dziedziczenie. Gdy naturalne jest "X ma Y" (np. "Samochód ma Silnik"), to częściej pasuje kompozycja lub agregacja, a nie dziedziczenie.
"Generowanie" sugeruje wytwarzanie czegoś (np. obiektów albo kodu), czyli proces kreacji. Dziedziczenie opisuje natomiast relację typów między klasami (bazowa–pochodna), a nie to, że jedna klasa produkuje drugą podczas działania programu.
Najczęściej spotkasz: "klasa P dziedziczy po klasie B", "klasa P wywodzi się z klasy B" oraz "klasa P rozszerza klasę B". To poprawne, praktyczne odpowiedniki terminów z dokumentacji języków.
W Javie i C# dziedziczenie klasy oznacza się słowem kluczowym extends (Java) lub składnią dziedziczenia w definicji klasy (C# używa dwukropka). W zadaniach egzaminacyjnych często pojawia się polski odpowiednik "rozszerza".
W Pythonie klasa potomna podaje klasy bazowe w nawiasie, np. class P(B):. Terminologicznie mówi się, że klasa P "inherits from" B, czyli po polsku "dziedziczy po" lub "wywodzi się z" klasy B.
Dziedziczenie to relacja IS-A (typ jest specjalizacją typu bazowego). Kompozycja to relacja HAS-A (obiekt zawiera inny obiekt jako część). W praktyce kompozycja często daje większą elastyczność niż rozbudowane hierarchie dziedziczenia.
W kontekście OOP i pytań egzaminacyjnych "rozszerza klasę" jest standardowym opisem dziedziczenia (np. Java: extends). Uwaga: "rozszerza" może też potocznie oznaczać "dodaje funkcje", ale nadal chodzi o relację klasa potomna–bazowa.
Uczniowie często zaznaczają poprawny opis dziedziczenia, bo automatycznie szukają stwierdzenia prawdziwego. W pytaniach z negacją trzeba najpierw ustalić, które odpowiedzi pasują do dziedziczenia, a dopiero potem wybrać tę jedną, która nie pasuje.
Najpierw sprowadź opcje do znanych odpowiedników: extends/derives/inherits = dziedziczenie. Następnie odrzuć sformułowania kojarzące się z tworzeniem obiektów (np. "tworzy", "generuje", "produkuje"). Na końcu sprawdź, czy pytanie nie zawiera negacji.
info

To pytanie poprawnie rozwiązuje 56% zdających egzamin. średnie

Specjaliści zwracają uwagę: "W dziedziczeniu klasa potomna jest tworzona na podstawie klasy bazowej, więc poprawnie mówi się, że "wywodzi się z", "rozszerza" lub "dziedziczy po" klasie B."

Źródła:

  • Oracle Java Tutorials: Inheritance (Using the Keyword extends) — https://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html — dostęp 2026-02-27
  • Python 3 Documentation: The Python Tutorial / Classes (Inheritance) — https://docs.python.org/3/tutorial/classes.html — dostęp 2026-02-27
  • cppreference.com: Inheritance (C++ language) — https://en.cppreference.com/w/cpp/language/inheritance — dostęp 2026-02-27

Materiały:

  • Dokumentacja języka Java: sekcja o dziedziczeniu klas (extends)
  • Dokumentacja Python: sekcja o dziedziczeniu (inheritance)
  • C++ reference: opis dziedziczenia (base/derived classes)

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego