Pakiet programów do zdalnego nauczania Programowania Orientowanego Obiektowo
Dzisiaj jest
Poniedziałek, 16 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



Istota metody szablonowej

Na podstawie zamieszczonego przykładu można uznać, iż wzorzec Metoda szablonowa jest niczym więcej niż wykorzystaniem zwykłego mechanizmu polimorfizmu - w zależności od klasy konkretnej przypisanej do wskaźnika klasy bazowej wykonywane są odpowiednie implementacje metod wirtualnych.

Rzeczywiście – polimorfizm jest jednym z najważniejszych elementów działania wzorca. Jednak istnieje dodatkowy aspekt, który charakteryzuje przedstawiony przykład. Mowa tu o prywatnych metodach polimorficznych.

Zwykle metody polimorficzne są publiczne i przeznaczone dla klienta korzystającego z danej hierarchii klas. Tutaj jest inaczej – dostęp prywatny oznacza, że klient nie może żądać wykonania pojedynczych kroków algorytmu. Jedyną możliwością jest zażądanie wykonania metody szablonowej (metoda symuluj() w przykładzie), która wykona wszystkie kroki algorytmu. Ale dostęp prywatny to również inne następstwa – klasy pochodne również nie mogą wywołać metody prywatnej (klasy, które co ciekawe przesłaniają implementację tej metody). Jest to bardzo dobry przykład enkapsulacji – poszczególne kroki są ukryte przed klientem, a nawet przez klasami pochodnymi. Mogą one bowiem tylko je przedefiniować, ale nigdy nie mogą ich wywołać z własnych metod.

W niektórych językach przesłanianie metod prywatnych jest niemożliwe. W takim wypadku należy pójść na kompromis i uczynić takie metody chronionymi (bądź np. w języku Java z dostępem modułowym – bez kwalifikatora w definicji).

Elementem na który należy zwrócić także uwagę jest metoda szablonowa symuluj(). Jest ona zadeklarowana w klasie bazowej jako niewirtualna. Znaczy to, że klasy pochodne nie mogą jej przesłonić. Powoduje to spójność algorytmu – jego kroki będą zawsze będą wykonywane w odpowiedniej, raz zdefiniowanej kolejności.

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