Pakiet programów do zdalnego nauczania Programowania Orientowanego Obiektowo
Dzisiaj jest
Środa, 18 Lipiec 2018
Zarejestrowanych użytkowników: 4
Dostępnych pytań testowych: 102
HOME
Strona tytułowa pracy dyplomowej
NAUKA
Materiały dydaktyczne związane z OOP
TESTY
Sprawdzenie poziomu zdobytej wiedzy
ZASOBY
Literatura i zasoby sieciowe o OOP
ŹRÓDŁA
Zbiór projektów dydaktycznych z OOP
KONTO
Możliwość śledzenia własnych postępów
INFO



Zmiana strategii w czasie działania

Ważna zaletą stosowania wzorca Strategia jest możliwość dowolnego wymieniania obiektów strategii w czasie działania programu. W prezentowanym przykładzie realizowane jest to za pomocą metody zmienAlgorytm().

Jest to istotnie zaleta w stosunku do rozwiązań opartych na statycznym dziedziczeniu. Aby przedstawić zalety wzorca Strategia wobec dziedziczenia można by podjąć próbę implementacji klasy Regulator w oparciu o dziedziczenie. Wówczas abstrakcyjna klasa bazowa Regulator implementowała by wspólny interfejs i wspólne operacje wszystkich regulatorów (np. wyznaczenie wartości sterującej, zwracanie wartości uchybu itp). Każdy konkretny algorytm dziedziczył by klasę Regulator implementując odpowiednio wszystkie metody czysto wirtualne. Mimo, iż takie rozwiązanie jest zgodne z zasadami programowania obiektowego (regulator P jest regulatorem co wyraża związek dziedziczenia) to jego statyczność sprawia problemy.

Chodzi przede wszystkim o to, że z chwilą zmiany regulatora (np. przez klasę pętli regulacji) niszczy się stary obiekt a tworzy nowy. Problem w tym, że bardzo często część stanu starego obiektu byłaby pożądana do zachowania w nowym obiekcie (np. odwołanie do obiektu generującego przebiegi wartości zadanej itp). Wynika więc z tego konieczność albo ponownego inicjowania stanu, albo zastosowania wzorca Pamiątka (umożliwiającego kopiowanie części stanów), albo rozszerzenie interfejsu klasy Regulator o metody pozwalające na dostęp do części stanu (w celu ich skopiowania). Ostatnie rozwiązanie wymusza przyjaźń z klasą nadrzędną (np. pętli regulacji) lub złamanie zasad enkapsulacji i udostępnienie pewnych składników lub metod dostępowych jako publiczne.

Wzorzec Strategia nie zawiera tej wady. Dzięki temu, że część wspólna stanu wszystkich algorytmów może być przechowywana w klasie Regulator zmiana algorytmu nie powoduje utraty tego stanu.

Adamik Łukasz, Politechnika Śląska w Gliwicach (AEiI) - 2010/11