Zpo-1-wyk-Slajd23
Hermetyzacja danych (1)
Hermetyzacja danych jest zwykle utożsamiana z hermetyzacją w ogólniejszym znaczeniu, co nie jest błędem, ale sporym uproszczeniem. Umieszczenie w klasie pary metod set/get dla każdego pola nie jest wystarczające, aby uznać ją za prawidłowo zamkniętą przed niepowołanym dostępem z zewnątrz.
W przedstawionym przykładzie klasa Ocena posiada bezparametrowy konstruktor oraz kilka metod, m.in. zmieniającą wartość oceny. Błąd polega właśnie na sposobie przechowywania wartości oceny. Wywołanie konstruktora spowoduje utworzenie obiektu Oceny bez wartości tej oceny, czyli obiektu ułomnego. Bezpośrednio po tym obiekt znajduje się w stanie nieustalonym, ponieważ nie można poznać oceny, jaką reprezentuje. Podobnie, udostępnienie metody zmieniającej wartość oceny może doprowadzić do jej swobodnej modyfikacji, bez wiedzy nauczyciela i/lub ucznia, co może naruszyć spójność systemu.