Przejdź do głównej treści

Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Zawód: Technik informatyk, Technik programista

Kategorie: Programowanie webowe Algorytmy i podstawy informatyki

Słowa kluczowe: Hermetyzacja (enkapsulacja) Kwalifikatory dostępu

Jak nazywa się mechanizm programowania obiektowego, w którym wywołanie tej samej metody na obiektach różnych klas pochodnych (np. przez referencję do klasy bazowej) powoduje wykonanie różnych implementacji tej metody?

A. polimorfizm
B. hermetyzacja (enkapsulacja)
C. przeładowanie (overloading)
D. rekurencja
Chodzi o polimorfizm, czyli jedną z najważniejszych cech programowania obiektowego. Mechanizm ten pozwala traktować obiekty różnych klas pochodnych w jednolity sposób, np. przez referencję do klasy bazowej albo przez interfejs, a mimo to wykonywać właściwą implementację metody dla konkretnego obiektu. W praktyce często działa to przez przesłanianie metod i dynamiczne wiązanie w czasie działania programu. Przykład: klasa bazowa Figura ma metodę obliczPole, a klasy Kolo, Prostokat i Trojkat implementują ją inaczej. Kod korzystający z listy obiektów typu Figura nie musi wiedzieć, z jaką dokładnie figurą pracuje, bo wywołanie obliczPole samo trafi do odpowiedniej wersji. Moim zdaniem to jest bardzo praktyczne, bo zmniejsza liczbę instrukcji warunkowych typu if i ułatwia rozbudowę programu. W dobrych praktykach branżowych polimorfizm łączy się z interfejsami, klasami abstrakcyjnymi oraz zasadami SOLID, szczególnie zasadą podstawienia Liskov i zasadą otwarte-zamknięte. Dzięki temu kod jest bardziej elastyczny, testowalny i mniej zależny od konkretnych klas.
W tym pytaniu łatwo pomylić kilka pojęć z programowania obiektowego, bo wszystkie brzmią dość technicznie i często występują obok siebie w jednym projekcie. Przeładowanie, czyli overloading, oznacza utworzenie kilku metod o tej samej nazwie, ale z inną listą parametrów, na przykład zapisz(String tekst) i zapisz(int liczba). Decyzja, która wersja zostanie użyta, zwykle wynika z argumentów przekazanych do metody, a nie z tego, jaki rzeczywisty typ obiektu znajduje się pod referencją klasy bazowej. To inny mechanizm niż dynamiczne wybranie implementacji w klasie pochodnej. Hermetyzacja, nazywana też enkapsulacją, dotyczy ukrywania szczegółów działania obiektu i ochrony jego stanu, na przykład przez pola prywatne oraz metody publiczne typu get i set. Jest bardzo ważna dla jakości kodu, ale nie opisuje sytuacji, w której ta sama metoda działa inaczej w zależności od konkretnej klasy obiektu. Rekurencja to z kolei technika algorytmiczna, gdzie funkcja lub metoda wywołuje samą siebie, np. przy obliczaniu silni albo przechodzeniu drzewa katalogów. Typowy błąd myślowy polega na tym, że ktoś widzi tę samą nazwę metody i od razu myśli o przeładowaniu. Tutaj kluczowe jest jednak to, że obiekty są różnych klas pochodnych, a wywołanie przez typ bazowy uruchamia różne implementacje. To właśnie polimorfizm, najczęściej realizowany przez przesłanianie metod i dynamiczne wiązanie.

Wymagane logowanie

Ocenianie trudności pytań jest dostępne tylko dla zalogowanych użytkowników. Zaloguj się, aby skorzystać z pełni możliwości platformy.

Twoja ocena pomoże innym uczniom w przygotowaniu do egzaminu, a Tobie pozwoli na dostęp do spersonalizowanych statystyk.

Zgłoś błąd w pytaniu

Rozwiń sekcję i zmień pole, którego dotyczy błąd. Wysłane zostaną tylko zmienione sekcje.

Błędna kwalifikacja
Błąd w treści pytania
Błąd w treści odpowiedzi
Błąd w obrazie
Dane kontaktowe (opcjonalnie)
Podaj email, jeśli chcesz otrzymać informację o rozpatrzeniu zgłoszenia.