6.1.3 Właściwości stanowe

 

Właściwości stanowe to specjalny rodzaj właściwości pozwalający na łatwe tworzenie obiektów zmieniających swój wygląd w zależności od stanu aplikacji i kontrolowanego procesu. Możliwe jest uzyskanie podobnych efektów bez wykorzystania grup stanowych, ale wymaga to użycia znacznie bardziej skomplikowanych wyrażeń.

Idea działania właściwości stanowych polega na tworzeniu wielu grup identycznych właściwości. W każdej z tych grup, właściwości mogą być definiowane w różny sposób. Oprócz tego grupa posiada dodatkową właściwość Warunek stanu typu logicznego, która określa, czy grupa brana jest pod uwagę przy wyliczaniu efektywnej wartości właściwości użytej do wyświetlenia obiektu.

Algorytm wyliczania wartości właściwości jest następujący:

·         Wyszukiwana jest grupa, której warunek stanu ma wartość Tak, a definicja właściwości nie jest pusta.

·          Jeżeli jest tylko jedna taka grupa, to wartość właściwości wynika z definicji użytej w tej grupie.

·         Jeżeli jest więcej takich grup, to wartość właściwości pobierana jest z definicji ostatniej takiej grupy.

·         Jeżeli żadna grupa nie jest aktywna, lub w żadnej z aktywnych grup właściwość nie jest zdefiniowana, to wartość określana jest na podstawie definicji w grupie podstawowej (pierwszej).

 


 

Przykład:

Rys. Przykład właściwości stanowych.

 

W pokazanym fragmencie definicji obiektu klasy Obraz pokazane jest, w jaki sposób wygląd obiektu uzależniony jest od wartości zmiennej oraz jej statusu. Grupa stanowa numer 1 aktywna jest wtedy, gdy wartość zmiennej głównej obiektu jest równa 0. Grupa stanowa numer 2 aktywna jest wtedy, gdy status zmiennej głównej jest niepoprawny. Sposób określenia wartości właściwości jest następujący:

Wartość zmiennej głównej jest różna od 1, a status zmiennej jest poprawny

Wartości wszystkich właściwości są pobierane z grupy podstawowej.

Wartość zmiennej głównej jest równa 1, status zmiennej jest poprawny

Wyświetlany obraz to bt2_rad_green, obraz jest obrócony o 180 stopni i ma zmienioną jasność ze współczynnikiem 0,1. Pozostałe ustawienia są pobierane z grupy podstawowej.

Wartość zmiennej głównej jest różna od 1, status zmiennej jest niepoprawny

Obrazek jest przekreślony  i ma zmienioną jasność ze współczynnikiem 0,3. Pozostałe ustawienia są pobierane z grupy podstawowej, w szczególności wyświetlony obraz to bt2_rad_red.

Wartość zmiennej głównej jest równa 1, status zmiennej jest niepoprawny

Wyświetlany obraz to bt2_rad_green, obraz jest obrócony o 180 stopni, przekreślony  i ma zmienioną jasność ze współczynnikiem 0,3. Współczynnik jasności pochodzi z grupy kontrolującej status zmiennej ponieważ jest ona zdefiniowana później.