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.

  10. W jednym projekcie wykonaj czynności:

A. Stwórz klasę SportsFacility, która powinna być umieszczona w pakiecie pl.edu.uwm.wmii.sports.

B. Klasa powinna zawierać trzy atrybuty:

C. W klasie SportsFacility, zaimplementuj statyczną metodę createStadium(String type, String location, int capacity). Metoda ma zwrócić nowy obiekt typu SportsFacility, którego pola ustawione są z argumentów metody.

D. W klasie SportsFacility, zaimplementuj nie-statyczną metodę createFacility(String type, String location, int capacity). Metoda ma zwrócić nowy obiekt typu SportsFacility, którego pola ustawione są z argumentów metody.

E. Stwórz klasę TestSportsFacility, umieść ją w innym pliku w pakiecie pl.edu.uwm.wmii.sports. W klasie TestSportsFacility dodaj metodę main. Wywołaj w niej metody z punktu C i D.

  1. W jednym projekcie wykonaj czynności:

A. Stwórz klasę Software, która powinna być umieszczona w pakiecie pl.edu.uwm.wmii.software.

B. Klasa powinna zawierać trzy atrybuty:

C. W klasie Software, zaimplementuj statyczną metodę isLicenseAvailable z argumentem typu Software. Metoda ma zwrócić wartość logiczną sprawdzającą czy liczba licencji oprogramowania przekazanego jako argument jest większa niż 3. Dla argumentu będącego nullem zwróć false.

D. W klasie Software, zaimplementuj nie-statyczną metodę isLicenseAvailable bez argumentu. Metoda ma zwrócić wartość logiczną sprawdzającą czy liczba licencji bieżącego obiektu jest większa niż 3.

E. Stwórz klasę TestSoftware, umieść ją w innym pliku w pakiecie pl.edu.uwm.wmii.software. W klasie TestSoftware dodaj metodę main. Wywołaj w niej metody z punktu C i D.