Wzorce obiektów w znacznym stopniu ułatwiają konstrukcję aplikacji. Pozwalają one na tworzenie „klocków”, z których następnie aplikacja jest składana. Wzorzec może łączyć w całość grupę obiektów lub w prostszych przypadkach zawierać pojedynczy obiekt, ale z wstępnie ustawionymi właściwościami. Wzorce mogą posiadać parametry, które służą do określenia sposobu działania wzorca w miejscu jego osadzenia na diagramie.
W przykładzie zajmiemy się konstrukcją jednoobiektowego wzorca opartego na obiekcie klasy Miernik. Wzorzec będzie sygnalizował przekroczenie dwóch limitów alarmowych, a wartości limitów i zakresy wartości będą pobierane z bazy definicji zmiennych.
Tabela: Parametry wzorca.
Parametry wzorca |
||
EndAngle |
|
|
|
Wartość domyślna |
405 |
StartAngle |
|
|
|
Wartość domyślna |
135 |
Variable |
|
|
|
Wartość domyślna |
|
Wzorzec będzie posiadał 3 parametry. StartAngle i EndAngle określają krańcowe kąty skali miernika. Maja one określone wartości domyślne – w miejscu osadzenia wzorca trzeba będzie podać wartość tych parametrów tylko wtedy, gdy będą one inne od domyślnych. Parametr Variable służy do przekazania nazwy zmiennej procesowej, której wartość będzie pokazywana na mierniku.
W trakcie przygotowania (edycji) wzorca, można podać testowe wartości parametrów. Pozwala to na sprawdzenie, czy wzorzec zachowuje się zgodnie z oczekiwaniami.
Częściową parametryzację obiektu Miernik stanowiącego zawartość wzorca pokazuje poniższa tabela.
Tabela: Wybrane parametry obiektu Miernik.
Właściwości podstawowe |
||
|
Główna zmienna |
%Variable |
|
Obrazek tła |
!GaugeBkImage |
|
Pokaż limity |
Tak |
|
Wartość |
# |
|
Wartość minimalna |
@DisplayRangeFrom |
|
Wartość maksymalna |
@DisplayRangeTo |
|
Wartość LL |
@DisplayRangeFrom |
|
Wartość L |
@LimitLo |
|
Wartość H |
@LimitHi |
|
Wartość HH |
@DisplayRangeTo |
|
Kąt początkowy |
%StartAngle |
|
Kąt końcowy |
%EndAngle |
|
Kolor wartości poprawnej |
!GaugeProperColor |
|
Kolor L |
Yellow |
|
Kolor H |
Yellow |
Właściwości stanowe, stan podstawowy |
||
|
Kolor wskazówki |
!GaugePointerColor |
|
Kolor tła |
!GaugeBkColor |
|
Kolor otoczki |
=Property(GaugeBkImage) == "" ? Property(GaugeOutlineColor) : Transparent |
|
Kolor podziałki |
!GaugeScaleColor |
|
Kolor czcionki |
!GaugeFontColor |
Zmienna główna obiektu jest zdefiniowana jako %Variable. Oznacza to odwołanie do parametru wzorca o nazwie Variable. Nazwa zmiennej zostanie przekazana do wzorca w miejscu jego osadzenia na diagramie. W podobny sposób zdefiniowane są właściwości Kąt początkowy i Kąt końcowy.
Część właściwości, m.in. Obrazek tła, zdefiniowane są przez odwołanie do właściwości globalnej. Odwołania tego typu określone są przez prefiks !. W efekcie, wygląd wzorca może być zmieniany przez zmianę wartości właściwości globalnej. Ten sposób parametryzacji ma szczególnie sens wtedy, gdy właściwości globalne są współużywane przez wiele wzorców i obiektów – pozwala to na łatwą zmianę wyglądu całej aplikacji.
Wyrażenie =Property(GaugeBkImage) == "" ? Property(GaugeOutlineColor) : Transparent użyte we właściwości Kolor otoczki pokazuje warunkowe ustawienie koloru w zależności od wartości właściwości globalnej (pobieranej funkcją Property). Jeżeli właściwość globalna GaugeBkImage nie jest zdefiniowana (jest pusta), to kolor otoczki określa wartość właściwości globalnej GaugeOutlineColor. W przeciwnym wypadku otoczka jest ukrywana poprzez wybranie koloru przezroczystego.
Właściwość Wartość określona jest w sposób typowy – notacja # oznacza wartość zmiennej głównej. Ponieważ zmienna główna jest określona parametrem wzorca, to położenie wskazówki miernika będzie wynikało z wartości zmiennej o nazwie przekazanej w parametrze wzorca. Definicje właściwości zakresów i limitów alarmowych odwołują się do atrybutów zmiennej (prefiks @). Tutaj też następuje pośrednie odwołanie do atrybutu zmiennej określonej parametrem wzorca.
Właściwości Kolor L i Kolor H zdefiniowane są bezpośrednio. Gdyby zaszła konieczność użycia innych kolorów, to możliwe byłyby dwie strategie. Można stworzyć bliźniaczy wzorzec o inaczej ustawionych kolorach przekroczeń lub dodać dwa dodatkowe parametry kolorów i zrobić jeden wzorzec uniwersalny.