Przejdź do treści
Pewniak INF.04Średni

Klasa z konstruktorem i metodami

Klasa Kosc, klasa operująca na tablicy, walidator PESEL — w każdym arkuszu INF.04 pierwsze zadanie to napisanie klasy. Schemat, który punktuje, niezależnie od tematu.

Pierwsza część praktycznej z INF.04 to prawie zawsze aplikacja konsolowa z jedną klasą. Raz jest to klasa reprezentująca kość do gry, raz operacje na tablicy, raz walidator numeru. Temat się zmienia, budowa nie — i to jest dobra wiadomość, bo szkielet możesz mieć w głowie gotowy.

1. Szkielet, który pasuje do każdego tematu

class Kosc
{
  private int liczbaScian;
  private Random generator;

  // konstruktor
  public Kosc(int liczbaScian)
  {
      this.liczbaScian = liczbaScian;
      this.generator = new Random();
  }

  // metoda główna klasy
  public int Rzut()
  {
      return generator.Next(1, liczbaScian + 1);
  }

  // getter wymagany przez arkusz
  public int GetLiczbaScian()
  {
      return liczbaScian;
  }
}

Trzy elementy, których arkusz zawsze wymaga

Pola prywatne, konstruktor przypisujący wartości i metody publiczne udostępniające działanie. Jeśli treść wymienia nazwy pól albo metod, przepisz je co do znaku — egzaminator sprawdza zgodność z poleceniem, nie elegancję.

2. Hermetyzacja, czyli dlaczego pola są prywatne

Publiczne pole daje dostęp do wnętrza obiektu każdemu i pozwala ustawić wartość bezsensowną — kość o zerowej liczbie ścian, ujemny wiek, pusty numer. Pole prywatne z metodą dostępową pozwala sprawdzić wartość, zanim się ją przyjmie:

public void SetLiczbaScian(int wartosc)
{
  if (wartosc < 4)
      throw new ArgumentException("Kość musi mieć co najmniej 4 ściany");

  liczbaScian = wartosc;
}

To zwykle osobno punktowany element, a przy okazji naturalne wejście do zadania z testami jednostkowymi, które w arkuszu z 2026 roku było trzecią częścią egzaminu.

3. Błędy, które widać w pierwszej minucie sprawdzania

  • Nazwa klasy inna niż w poleceniu. Arkusz mówi Kosc, w kodzie jest Dice — punkt przepada, choć program działa.
  • Konstruktor bez parametrów, gdy treść ich wymaga. Wartości ustawione na sztywno wewnątrz klasy nie realizują polecenia.
  • Nowy Random tworzony przy każdym rzucie. Kolejne wywołania zwracają tę samą liczbę — generator ma powstać raz, w konstruktorze.
  • Cały kod wrzucony do Main. Zadanie wprost prosi o klasę i bez niej nie ma czego oceniać.

Podstawy programowania obiektowego rozpisaliśmy w teorii INF.04.

Kolejne zagadnienie, które warto mieć opanowane:

Walidacja danych wejściowych i cyfra kontrolna