KWALIFIKACJA INF3 - CZERWIEC 2021

PYTANIE NR 5.
Które stwierdzenie najlepiej opisuje klasę Owoc zdefiniowaną w języku PHP i przedstawioną na listingu?
Ilustracja przedstawia fragment kodu w języku PHP, który definiuje klasę o nazwie 'Owoc'.
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Poprawny opis musi zgadzać się z listingiem: należy policzyć deklaracje właściwości (pól) oraz metody w klasie, a także odczytać modyfikator dostępu. Jeśli przy polu kolor widnieje private, jest ono dostępne wyłącznie wewnątrz metod tej klasy, co odpowiada wskazanemu stwierdzeniu.

Pełne wyjaśnienie:

W PHP klasa składa się m.in. z właściwości (pól) oraz metod. Właściwości rozpoznasz po deklaracjach typu public/protected/private $nazwa, a metody po słowie function. Aby wybrać poprawną odpowiedź, trzeba więc:

  • Policzyć pola zadeklarowane w klasie (np. $nazwa, $kolor).
  • Policzyć metody (każda deklaracja function to metoda).
  • Sprawdzić modyfikatory dostępu: private oznacza dostęp tylko z wnętrza tej samej klasy; public oznacza dostęp z zewnątrz (np. z kodu tworzącego obiekt); protected rozszerza dostęp na klasy dziedziczące.

Odpowiedź "Ma dwa pola i jedną metodę, pole kolor ma zakres widzialności ograniczony tylko do metod klasy." jest poprawna, gdy w listingu widać dokładnie dwie deklaracje właściwości oraz jedną deklarację metody, a właściwość kolor ma modyfikator private. W praktyce jest to element hermetyzacji: dane są ukryte, a dostęp do nich odbywa się przez metody.

Pozostałe odpowiedzi są błędne typowo z następujących powodów:

  • Stwierdzenie o "jednym polu i dwóch metodach" jest niezgodne z liczbą deklaracji w kodzie (częsty błąd to traktowanie konstruktora jako dodatkowej metody bez sprawdzenia, ile jest faktycznych deklaracji function).
  • Stwierdzenie o polu nazwa jako prywatnym jest błędne, jeśli w listingu to inne pole (np. kolor) ma modyfikator private. Trzeba patrzeć na słowo kluczowe przed nazwą pola, nie na intuicję.
  • Stwierdzenie o "jednym konstruktorze" oraz o tym, że "oba pola są dostępne tylko w metodach klasy" odpada, jeśli w kodzie nie ma konstruktora albo pola nie są oba private (np. jedno jest public).

Wskazówka egzaminacyjna: najpierw zaznacz w kodzie wszystkie linie z deklaracją $... (pola), potem wszystkie function ... (metody) i dopiero na końcu analizuj modyfikatory dostępu.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Pole (właściwość) to zmienna zdefiniowana wewnątrz klasy, np. $kolor lub $nazwa. Przechowuje stan obiektu. O dostępie do pola decyduje modyfikator, np. private (tylko w klasie) lub public (również z zewnątrz).
Metoda to funkcja zdefiniowana wewnątrz klasy i wywoływana na obiekcie. W listingu rozpoznasz ją po słowie function. Licząc metody w zadaniu, zliczaj deklaracje function, a nie miejsca, gdzie metoda jest tylko wywoływana.
private oznacza, że do pola lub metody można się odwołać wyłącznie z wnętrza tej samej klasy. Kod poza klasą (np. skrypt tworzący obiekt) nie może bezpośrednio czytać ani zmieniać takiej właściwości, co wspiera hermetyzację.
public daje dostęp do elementu z dowolnego miejsca (po utworzeniu obiektu). private ogranicza dostęp tylko do kodu wewnątrz tej klasy. Na egzaminie INF.3 zwykle sprawdza się umiejętność odczytu tych modyfikatorów w listingu.
Tak, konstruktor jest metodą specjalną (zwykle __construct), ale w zadaniach trzeba sprawdzić, czy w listingu faktycznie występuje. Częsty błąd to zakładanie konstruktora "z automatu" lub mylenie go z inną metodą.
Najpierw znajdź deklaracje właściwości: linie z public/protected/private $.... To są pola. Następnie policz deklaracje z function — to metody. Na końcu dopasuj opis odpowiedzi do liczby elementów i do modyfikatorów dostępu.
Widzialność pól i metod to podstawa bezpiecznego projektowania kodu: ogranicza niekontrolowany dostęp do danych obiektu. W praktyce webowej pomaga utrzymać porządek w kodzie i zmniejsza ryzyko błędów. Egzamin sprawdza umiejętność czytania takiego kodu.
Typowe pomyłki to: mylenie pola z lokalną zmienną w metodzie, zliczanie wywołań zamiast deklaracji function, oraz nieuwzględnianie modyfikatora dostępu (np. wybór odpowiedzi z "private", bo brzmi bardziej profesjonalnie). Pomaga systematyczne zaznaczanie elementów.
Nie. Pole private nie jest dostępne bezpośrednio poza klasą. Aby udostępnić jego wartość, tworzy się metody publiczne, np. getter (odczyt) lub setter (zmiana), które kontrolują sposób dostępu. To klasyczny wzorzec w OOP.
Ćwicz czytanie krótkich listingów: rozpoznawaj pola, metody i konstruktory oraz modyfikatory public/protected/private. Rób mini-zadania: dopisz metodę, zmień widzialność pola i przewiduj konsekwencje. Korzystaj też z dokumentacji PHP o OOP.
info

To pytanie poprawnie rozwiązuje 43% zdających egzamin. trudne

Według specjalistów z branży: "Poprawny opis musi zgadzać się z listingiem: należy policzyć deklaracje właściwości (pól) oraz metody w klasie, a także odczytać modyfikator dostępu."

Źródła:

  • PHP Manual: Visibility (public, protected, private) — https://www.php.net/manual/en/language.oop5.visibility.php — accessed 2026-02-28
  • PHP Manual: Classes and Objects (Basics) — https://www.php.net/manual/en/language.oop5.basic.php — accessed 2026-02-28
  • PHP Manual: Constructors and Destructors — https://www.php.net/manual/en/language.oop5.decon.php — accessed 2026-02-28

Materiały:

  • Dokumentacja PHP: OOP (klasy i obiekty)
  • Dokumentacja PHP: widzialność właściwości i metod
  • Ćwiczenia: modyfikowanie klasy (dodawanie pól/metod) i analiza modyfikatorów dostępu

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego