W języku Kotlin, znajduje się taka konstrukcja, jak obiekt klasowy 💡. Jeżeli zależy Ci na pisaniu uporządkowanego kodu, w którym panuje porządek, ład i sprawiedliwość 😄, zdecydowanie warto poznać wspomnianą strukturę! Także...na co jeszcze czekasz 😁?
OBIEKT KLASOWY W JĘZYKU KOTLIN TO "SYNONIM" WZORCA PROJEKTOWEGO
Nim rozwinę nagłówek, wytłumaczę co to w ogóle jest. Obiekt klasowy to struktura, którą piszemy jak klasę, lecz staje się z automatu obiektem. Jeszcze ładniej można napisać, że jest to obiekt unikatowy nieposiadający żadnych innych kopii. Musi być "jedyny w swoim rodzaju" 🌟.
Dlatego nawiązuję do wzorców projektowych, bo istotnie zachowuje się jak jeden z nich, a konkretnie, "singleton". "Singleton" to jeden ze wzorców projektowych należących do kategorii kreacyjnych, który polega na zdefiniowaniu sobie jedynej instancji klasy na całe działanie programu ℹ️. Także gdy potrzebujesz określić sobie taki obiekt, sięgnij po obiekt klasowy i na pewno będziesz szczęśliwy(-a), że nie musisz tego pisać ręcznie, tak jak w Javie 😁!
Przykład kodu źródłowego
A teraz przykład, drogi Czytelniku. Dajmy na to, że mamy za zadanie zaimplementować własny system zapisu aktualnego stanu programu np. do edycji grafiki gry. Plik posiada niestandardowe rozszerzenie, więc wymaga osobnego algorytmu do zapisania wielu plików graficznych, aby je spakować, zaszyfrować i wyeksportować, sprowadzając to do jednej "paczki".
Dobrym pomysłem będzie zaimplementowanie klasy i stworzenie obiektu "singleton", który stanie się ogólnodostępnym eksporterem paczki z grafiką. Raczej ciężko sobie wyobrazić sens tworzenia wielu instancji klasy odpowiadającej za zapis, który za każdym razem będzie taki sam (okno do wyboru miejsca zapisu to zupełnie co innego!) 😉.
Wtedy, zamiast definiować samemu taką klasę, sięgnij po obiekt klasowy w języku Kotlin i napisz coś takiego 👇:
object SaveManager {
fun exportToPackage() {
// instrukcje
}
}Przypomnę, że obiekt klasowy to klasa, która od razu staje się jednocześnie obiektem (instancją). Nie możemy za jej pomocą utworzyć instancji, tak jak ma to miejsce choćby przy klasie danych. Nie posiada ona zdolności do posiadania konstruktorów, zatem próba wstawienia takowego spowoduje błąd kompilacji ⛔.
Po wprowadzeniu przykładowej metody (właściwości też może posiadać), możesz odwołać się do niej w sposób następujący:
SaveManager.exportToPackage()I już 🤩! Możesz śmiało to sobie porównać z wywoływaniem statycznych metod, gdyż statyczność na tym polega, że dane składowe i metody występują W KLASIE, nie w obiekcie (co jak najbardziej ma tu miejsce) ✅!
Zagnieżdżanie obiektów klasowych
Obiekt klasowy w języku Kotlin może być zdefiniowany wewnątrz innej wcześniej utworzonej klasy i kompilator nie będzie się wcale o to "pruł" 😝. Ponadto nie ma żadnych różnic w sposobie zapisu, zatem piszemy tak samo:
class Object {
object StaticMethods {
fun displayAllExistingObjects() {
}
}
}Wszystko 👍! Wtedy powoływanie się na metodę albo właściwość obiektu klasowego będącego częścią innej klasy, wyglądać będzie tak:
Object.StaticMethods.displayAllExistingObjects()Przypominasz sobie może gdzie jeszcze się pisze w taki sam sposób 🤔? Klasy zagnieżdżone? Tak jest! Jeżeli tak pomyślałeś(-aś), to owacje na stojąco 👏!
![]() |
Obiekt klasowy w języku Kotlin to "skrót" do tworzenia "singletona" znanego ze wzorców projektowych. Może on występować zarówno osobno, jak i wewnątrz innej klasy.
I to koniec historyjki o obiektach klasowych 🙂.
