Powtórka – Counter i Utility
Część sekcji Programowanie obiektowe ścieżki Java w Coddy. Lekcja 19 z 87.
Wyzwanie
ŁatwyZbudujmy kompletny system, który łączy klasę Counter do śledzenia instancji z klasą narzędziową MathUtils — wykorzystując wszystko, czego nauczyłeś się o zmiennych statycznych, metodach statycznych, blokach statycznych i stałych.
Utworzysz trzy pliki, aby uporządkować swój kod:
Counter.java: Utwórz klasę, która śledzi liczbę utworzonych instancji:- Prywatna zmienna statyczna do zliczania łącznej liczby instancji
- Prywatna zmienna instancji
id, która przechowuje unikatowy identyfikator każdego licznika - Konstruktor, który zwiększa łączną liczbę i przypisuje bieżącą wartość licznika jako id tej instancji
- Metoda
getId(), która zwraca unikatowe id tego licznika - Metoda statyczna
getTotalCount(), która zwraca liczbę utworzonych obiektów Counter
MathUtils.java: Utwórz klasę narzędziową zawierającą wyłącznie składowe statyczne (nigdy nie jest instancjonowana):- Publiczna stała
PIo wartości3.14159 - Publiczna stała
HALFo wartości0.5 - Metoda statyczna
square(int n), która zwraca n do kwadratu - Metoda statyczna
cube(int n), która zwraca n do sześcianu - Metoda statyczna
circleArea(double radius), która zwraca PI * radius * radius
- Publiczna stała
Main.java: Pokaż współpracę obu klas. Otrzymasz dwa dane wejściowe: liczbę do działań matematycznych oraz liczbę obiektów Counter do utworzenia. Wypisz:Square: [value]Cube: [value]Circle area (radius=[number]): [value](pole sformatowane do 2 miejsc po przecinku)- Dla każdego utworzonego licznika wypisz:
Counter [id] created - Na koniec:
Total counters: [count]
Otrzymasz dwa dane wejściowe: liczbę (int) do obliczeń matematycznych oraz liczbę (int) określającą, ile obiektów Counter utworzyć.
Pamiętaj, aby odwoływać się do składowych statycznych za pomocą nazwy klasy (na przykład MathUtils.PI i Counter.getTotalCount()) oraz używać String.format("%.2f", value) do formatowania wartości dziesiętnych.
Spróbuj swoich sił
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int number = scanner.nextInt();
int count = scanner.nextInt();
// TODO: Użyj metod statycznych MathUtils, aby obliczyć i wypisać:
// - Kwadrat: [value]
// - Sześcian: [value]
// - Circle area (radius=[number]): [value] (sformatowane do 2 miejsc po przecinku)
// TODO: Utwórz 'count' obiektów Counter
// Dla każdego utworzonego obiektu Counter wypisz: Counter [id] created
// TODO: Wypisz łączną liczbę utworzonych liczników
// Total counters: [count]
}
}
Wszystkie lekcje w sekcji Programowanie obiektowe
1Podstawy programowania obiektowego
Pliki zewnętrzneWprowadzenie do programowania obiektowegoKlasy a obiektySłowo kluczowe thisMetodyPola (atrybuty)Metoda konstruktoraPrzeciążanie konstruktoraPodsumowanie — prosty kalkulator4Dziedziczenie
Podstawy dziedziczenia (extends)Słowo kluczowe superPrzesłanianie metod (@Override)Łańcuch wywołań konstruktorówKlasa ObjectDziedziczenie jedno- i wielopoziomoweDlaczego Java nie obsługuje wielodziedziczenia klasPodsumowanie – hierarchia pracowników7Metody specjalne i klasa Object
Metoda toString()equals() i hashCode()Metoda clone()compareTo() i ComparableInterfejs ComparatorPodsumowanie — własne sortowanie10Obsługa wyjątków w programowaniu obiektowym
Hierarchia klas wyjątkówWłasne wyjątkiBłędy sprawdzane a niesprawdzaneWzorzec try-with-resourcesPodsumowanie – zweryfikowany użytkownik2Modyfikatory dostępu i enkapsulacja
Przegląd poziomów dostępuMetody pobierające i ustawiająceUkrywanie informacjiSłowo kluczowe finalPodsumowanie — menedżer kont bankowych5Polimorfizm
Podstawy przeciążania metodPrzesłanianie metod (w czasie wykonywania)Rzutowanie w górę i w dółOperator instanceofKlasy i metody abstrakcyjnePowtórka — kalkulator figur8Zaawansowane koncepcje OOP
Kompozycja a dziedziczenieAgregacja a kompozycjaKlasy wewnętrzne, zagnieżdżone i anonimoweEnumy i metody enumówRekordy (Java 16+)Klasy zapieczętowane (Java 17+)11Wzorce projektowe — część 1
Wprowadzenie do wzorców projektowychWzorzec SingletonWzorzec FactoryWzorzec BuilderWzorzec ObserverWzorzec Strategy3Właściwości klas i składowe statyczne
Zmienne instancji a zmienne statyczneMetody statyczneBloki statyczneStałe (static final)Powtórka – Counter i Utility6Interfejsy i klasy abstrakcyjne
Wprowadzenie do interfejsówImplementowanie interfejsówImplementacja wielu interfejsówMetody domyślne i statyczne w interfejsieKlasy abstrakcyjne a interfejsyInterfejsy funkcyjnePodsumowanie — system płatnościPoćwicz samodzielnie: Kompilator Java online