12  Pola i metody statyczne

  1. Stwórz klasę Person. Klasa powinna zawierać pole name oraz statyczne pole counter. Zadaniem jest zwiększanie wartości counter za każdym razem, gdy tworzona jest nowa instancja klasy Person. Dodaj metodę, która zwróci wartość counter. Stwórz przypadek testowy.

  2. Stwórz klasę Mathematics, która posiada pole statyczne PI, które przechowuje przybliżoną wartość liczby \(\pi\). Upewnij się, że wartość tego pola jest niemodyfikowalna. Stwórz przypadek testowy.

  3. Stwórz klasę Singleton, która używa pola statycznego do przechowywania jednej i tylko jednej instancji tej klasy. Klasa powinna zawierać prywatny konstruktor oraz publiczną statyczną metodę getInstance(), która zwraca jedyną instancję klasy Singleton. Stwórz przypadek testowy.

  4. Stwórz klasę Configuration, która zawiera pole statyczne applicationVersion z domyślną wartością “1.0”. Dodaj metody pozwalające na odczyt i zmianę tej wartości. Stwórz przypadek testowy.

  5. Stwórz klasę Calculator, która posiada podstawowe metody matematyczne: dodawanie, odejmowanie, mnożenie i dzielenie. Zaimplementuj te metody jako metody statyczne. Utwórz drugą klasę, w której przetestujesz te metody bez tworzenia instancji klasy Calculator.

  6. Stwórz klasę ShapeFactory, która posiada metody statyczne do tworzenia różnych figur geometrycznych, takich jak koła, kwadraty czy trójkąty. Następnie stwórz klasę testową, w której wykorzystasz te metody do stworzenia różnych figur, bez potrzeby tworzenia instancji klasy ShapeFactory.

  7. Stwórz klasę Settings, która posiada różne parametry konfiguracyjne aplikacji (np. wersja, język). Dodaj metody niestatyczne do zmiany tych parametrów oraz statyczną metodę defaultSettings(), która zwróci domyślną konfigurację aplikacji. W klasie testowej zobacz, jak działają obie grupy metod i jakie są między nimi różnice.

  8. Utwórz klasę Configuration, która posiada pole statyczne applicationVersion oraz pole statyczne applicationName. Jedno z tych pól oznacz jako final. Zastanów się, co by się stało, gdybyś chciał zaktualizować wartość jednego z tych pól w trakcie działania aplikacji.

  9. Stwórz klasę Product, która zawiera pole statyczne numberOfProducts oraz pole statyczne MAX_PRODUCTS. Pole numberOfProducts będzie służyć do zliczania ilości utworzonych produktów, a MAX_PRODUCTS do ograniczenia ich liczby. Oznacz tylko jedno z tych pól słowem kluczowym final i zastanów się nad konsekwencjami tego wyboru.