Przejdź do głównej treści
  1. Strona główna
  2. Technik informatyk
  3. INF.03
  4. Pytanie

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 Kwalifikatory dostępu w programowaniu obiektowym

Aby zadeklarować pole klasy, do którego dostęp mają jedynie metody tej klasy, a które nie jest dostępne dla klas pochodnych, należy użyć kwalifikatora dostępu

Źle. „Publikowany” to nie jest modyfikator dostępu znany z popularnych języków obiektowych.
Źle. Modyfikator public daje dostęp do pola z dowolnego miejsca w programie, więc nie jest ono w żaden sposób ukryte.
Dobrze. Modyfikator private udostępnia pole wyłącznie metodom tej samej klasy - nawet klasy pochodne go nie widzą.
Źle. Modyfikator protected udostępnia pole także klasom pochodnym, a pytanie wymaga, by były one wykluczone.
Pole, które ma być widoczne tylko dla metod własnej klasy i niedostępne dla klas pochodnych, deklarujemy z modyfikatorem private. To najsilniejsze ograniczenie dostępu: pole prywatne istnieje w obiekcie, ale odwołać się do niego może wyłącznie kod tej samej klasy. Realizuje to zasadę hermetyzacji (enkapsulacji) - ukrywamy wewnętrzny stan obiektu i wystawiamy go na zewnątrz przez kontrolowane metody (gettery i settery). Dzięki temu nikt z zewnątrz, ani nawet klasa dziedzicząca, nie zmieni pola w sposób łamiący jego poprawność. Przykładowo pole z saldem konta zadeklarowane jako prywatne można modyfikować jedynie przez metody klasy, które pilnują reguł biznesowych.
Kluczem jest tu sformułowanie „dostęp mają jedynie metody tej klasy” oraz wykluczenie klas pochodnych. Modyfikator public robi dokładnie odwrotność - otwiera pole na cały program, więc odwoła się do niego każdy kod, łącznie z obcymi klasami; o żadnym ukryciu danych nie ma mowy. Kuszący bywa protected, bo faktycznie ogranicza dostęp, ale o jeden poziom za mało: pole chronione widzą metody tej klasy oraz wszystkich klas dziedziczących, a w pytaniu klasy pochodne mają być właśnie odcięte. „Publikowany” to z kolei pułapka - taki modyfikator dostępu nie występuje w popularnych językach obiektowych (Java, C#, C++, PHP), więc nie ma czego z nim porównywać. Pozostaje private, który zamyka pole w obrębie jednej klasy i jako jedyny spełnia oba warunki: dostęp tylko z metod tej klasy i brak dostępu dla potomków.

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. Wyślemy 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.