Co to jest niezmienni klasa?
W programowaniu i projektowaniu komputerowym zorientowanym na obiekty niezmiennik klasy to zestaw reguł, które można użyć do określenia, czy instancja obiektowa istnieje w prawidłowym stanie. Z perspektywy projektowania niezmiennik klasy to zestaw granic, między którymi dane w obiekcie muszą być rozpatrzone w odpowiednim, funkcjonalnym stanie. Niezmiennik klasy można zdefiniować w dokumentacji projektowej lub komentarzach kodu źródłowego lub, w niektórych językach programowania, można bezpośrednio zaimplementować w kodzie komputerowym. Program, który korzysta z zakodowanych niezmienników i twierdzeń, może spowodować, że program zaprzestanie wykonywania lub rzucania różnych błędów, gdy nie są spełnione niezmienne warunki. W przeciwieństwie do standardowego sprawdzania błędów, niezmienności klas są zwykle używane wyłącznie w celu zapewnienia, że wewnętrzna implementacja klasy działa, i zwykle nie są wymienione w dokumentacji publicznej lub interfejsach programowania.
Z bardzo podstawowego poziomu, niezmienna klasa zasadniczo jest zbiorem twierdzeńdla klasy. Stwierdzenie, ponownie w prostych słowach, jest stwierdzeniem, które sprawdza część stanu klasy i musi oceniać do realizacji programu, aby kontynuować. Jednym z przykładów stwierdzenia jest stwierdzenie, które zapewnia, że dana liczba całkowita jest zawsze od 1 do 10. Gdy używany jest niezmiennik klasy, twierdzenia są oceniane dla wszystkich odpowiednich części danych posiadanych przez obiekt, zasadniczo sprawdzając, czy wszystkie dane w obiekcie znajdują się w określonych zakresach.
W wielu przypadkach stosowanie niezmiennika klasy silnie przypomina standardowe sprawdzanie błędów, w których zmienne są mierzone, aby upewnić się, że znajdują się w użytecznych granicach lub nie są zerowe. Różnica między stosowaniem niezmienników klasowych a standardowym sprawdzaniem błędów polega jednak na tym, że niezmienności i twierdzenia są głównie używane do przechwytywania błędów, które nie powinny wystąpić, chyba że w kodzie występuje wewnętrzna wada. Kolejna różnica to thPrzy standardowym sprawdzaniu błędów ma tendencję do regeneracji i zmian w przepływie kontroli programu, podczas gdy wynikiem niezmiennego awarii powinien być zakończenie programu. Powodem, dla którego większość programów kończy się, gdy niepowiada się kontrola niezmienna klasy, jest to, że obiekt jest w stanie zagrożonym i nie jest w stanie, w celu spełnienia jego warunków wstępnych i po kreskach niezbędnych do przestrzegania umowy projektowej.
Jedną z właściwości klasy niezmiennych w językach programowania zorientowanych na obiekty, w których są domyślnie zdefiniowane, jest to, że niezmiennik jest mechanizmem odziedziczonym przez dowolne podklasy. Zapobiega to zastępowaniu podklasy wszelkich niezmiennych kontroli wykonywanych w klasie nadrzędnej. Ostatecznie oznacza to, że podklasa nie jest w stanie złamać umowy projektowej ustalonej przez nadklasę, co może powodować nieprzewidywalne wyniki lub trudne do znalezienia błędy programu.