Co to jest niezmienny obiekt?
W programowaniu obiektowym niezmienny obiekt to obiekt, którego właściwości nie można zmienić po jego utworzeniu. Natomiast większość obiektów to obiekty zmienne, co oznacza, że niektóre lub wszystkie ich właściwości można dowolnie zmieniać po utworzeniu. Różne języki komputerowe mają możliwość tworzenia niezmiennych obiektów, w tym Java, C ++, erlang, Tcl i scala.
Niezmienny obiekt można utworzyć na jeden z dwóch sposobów: przez utworzenie klasy, która z definicji jest niezmienna lub przez jawne zadeklarowanie obiektu, który w inny sposób byłby niezmienny. Metodologia tworzenia niezmiennej klasy różni się w zależności od używanego języka komputera. Niezależnie od języka klasa niezmienna nie może mieć żadnych metod, które mogłyby zmienić jej dane wewnętrzne, ani też żadnych metod, które mogłyby zostać zmienione - tj. Zastąpione lub przeciążone - w sposób, który zmieniłby dane wewnętrzne. Jest to bardziej skomplikowane z obu podejść. Z drugiej strony, aby stworzyć niezmienny obiekt z obiektu, który w przeciwnym razie można zmienić, często można zastosować słowo kluczowe, aby oznaczyć obiekt jako niezmienny.
Na przykład tworzenie niezmiennych obiektów w Javie w dużej mierze opiera się na słowie kluczowym „final”. Szybkim sposobem uczynienia klasy niezmienną w Javie jest zadeklarowanie klasy, a także wszystkich jej metod i elementów danych, jako ostatecznych. Podobną strategię można również zastosować w C ++ ze słowem kluczowym „const”. Te podejścia, w zależności od treści zajęć, mogą jednak nie być najlepsze. Ogólnie rzecz biorąc, obiekty można zwykle uniezależnić od siebie poprzez staranne utrzymanie ich wewnętrznych danych.
Wykonanie niezmiennego obiektu za pomocą słowa kluczowego, jak w powyższym przykładzie, jest często znacznie łatwiejsze niż napisanie całej klasy, aby była niezmienna. Stosowanie tego podejścia wiąże się jednak z niebezpieczeństwami. Podczas jawnego oznaczania niezmiennego obiektu w ten sposób, ważne jest, aby programista upewnił się, że wszystkie odpowiednie właściwości i dane zostały najpierw włączone do obiektu. Poleganie na niekompletnym obiekcie może być niebezpieczne, szczególnie jeśli brakuje mu istotnych informacji.
Jeśli obiekt jest modyfikowalny, ale wymaga poprawnego utworzenia danych niezmiennych, dane niezmienne muszą zostać zainicjowane przed utworzeniem tego obiektu. Obiekty niezmienne są zawsze niezmienne, niezależnie od tego, czy są to wartości danych, czy duże obiekty, i zawsze muszą być traktowane jako takie. Ogólnie rzecz biorąc, niezmienny obiekt nie może zostać zmieniony po utworzeniu, chociaż czasami mogą być kopiowane jako obiekty zmienne. Zwykle można założyć, że obiekt niezmienny i każda jego kopia są również niezmienne, co może zapobiec problemom z danymi lub pamięcią.