Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00559 008265 10456788 na godz. na dobę w sumie
Projektowanie zorientowane obiektowo. Wzorce projektowe - książka
Projektowanie zorientowane obiektowo. Wzorce projektowe - książka
Autor: , Liczba stron: 256
Wydawca: Helion Język publikacji: polski
ISBN: 83-7197-831-6 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> programowanie >> wzorce projektowe
Porównaj ceny (książka, ebook, audiobook).
W książce omówiono programowanie obiektowe (OOP) i wzorce projektowe (design patterns) -- dwa terminy, które zrobiły ostatnio zawrotną karierę. Programowanie obiektowe jest podstawą dominujących obecnie języków programowania, takich jak C++ czy Java. Jego znajomość to jedna z podstawowych kompetencji współczesnego programisty. Kolejnym etapem wtajemniczenia są wzorce projektowe: sprawdzone sposoby radzenia sobie z typowymi zadaniami.

Kto nie pozna podstawowych zasad programowania obiektowego, nie zrozumie wzorców projektowych. Kto nie przyswoi sobie stosowanie wzorców, nie wykorzysta pełni możliwości programowania obiektowego. Dlatego oba te -- nierozerwalnie związane ze sobą zagadnienia omówiono w jednej pozycji, która uczy programowania obiektowego poprzez naukę wzorców projektowych, nie oddzielając sztucznie tych dwóch dziedzin.

Autorzy starają się przekonać Czytelnika, że odpowiednie stosowania właściwych wzorców projektowych możliwe jest na każdym etapie tworzenia aplikacji: od analizy, przez projektowanie, do implementacji. Co więcej, pozwala ono wyrobić prawidłowe nawyki programowania obiektowego. Książka jest wspaniałym uzupełnieniem wiedzy początkujących i średnio zaawansowanych analityków, projektantów i programistów Javy, C++ i innych języków zorientowanych obiektowo.
Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

IDZ DO IDZ DO PRZYK£ADOWY ROZDZIA£ PRZYK£ADOWY ROZDZIA£ SPIS TREĎCI SPIS TREĎCI KATALOG KSI¥¯EK KATALOG KSI¥¯EK KATALOG ONLINE KATALOG ONLINE ZAMÓW DRUKOWANY KATALOG ZAMÓW DRUKOWANY KATALOG TWÓJ KOSZYK TWÓJ KOSZYK DODAJ DO KOSZYKA DODAJ DO KOSZYKA CENNIK I INFORMACJE CENNIK I INFORMACJE ZAMÓW INFORMACJE ZAMÓW INFORMACJE O NOWOĎCIACH O NOWOĎCIACH ZAMÓW CENNIK ZAMÓW CENNIK CZYTELNIA CZYTELNIA FRAGMENTY KSI¥¯EK ONLINE FRAGMENTY KSI¥¯EK ONLINE Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: helion@helion.pl Projektowanie zorientowane obiektowo. Wzorce projektowe Autorzy: Alan Shalloway, James R. Trott T³umaczenie: Jaromir Senczyk ISBN: 83-7197-831-6 Tytu³ orygina³u: Design Patterns Explained: A New Perspective on Object-Oriented Design Format: B5, stron: 256 W ksi¹¿ce omówiono programowanie obiektowe (OOP) i wzorce projektowe (design patterns) -- dwa terminy, które zrobi³y ostatnio zawrotn¹ karierê. Programowanie obiektowe jest podstaw¹ dominuj¹cych obecnie jêzyków programowania, takich jak C++ czy Java. Jego znajomoġæ to jedna z podstawowych kompetencji wspó³czesnego programisty. Kolejnym etapem wtajemniczenia s¹ wzorce projektowe: sprawdzone sposoby radzenia sobie z typowymi zadaniami. Kto nie pozna podstawowych zasad programowania obiektowego, nie zrozumie wzorców projektowych. Kto nie przyswoi sobie stosowanie wzorców, nie wykorzysta pe³ni mo¿liwoġci programowania obiektowego. Dlatego oba te — nierozerwalnie zwi¹zane ze sob¹ zagadnienia omówiono w jednej pozycji, która uczy programowania obiektowego poprzez naukê wzorców projektowych, nie oddzielaj¹c sztucznie tych dwóch dziedzin. Autorzy tej ksi¹¿ki staraj¹ siê przekonaæ Czytelnika, ¿e odpowiednie stosowania w³aġciwych wzorców projektowych mo¿liwe jest na ka¿dym etapie tworzenia aplikacji: od analizy, przez projektowanie, do implementacji. Co wiêcej, pozwala ono wyrobiæ prawid³owe nawyki programowania obiektowego. Dwa w jednym: poznaj programowanie obiektowe poprzez wzorce projektowe. • Podstawowe zasady obiektowoġci • Hermetyzacja i jej znaczenie • Jêzyk i notacja UML • Wzorce: fasady, adaptacji, mostu, fabryki abstrakcyjnej, dekoratora, singletonu, • Zasady projektowania z u¿yciem wzorców blokowania dwufazowego, metody szablonu i fabryki Spis treści Przedmowa ............................................................................................................ 9 Część I Wprowadzenie do programowania obiektowego................................. 17 Rozdział 1. Obiektowość .................................................................................... 19 Przegląd...................................................1...................................................1.......................19 Zanim pojawiły się obiekty: dekompozycja funkcjonalna................................................19 Problem określenia wymagań ...................................................1........................................21 Zmiany wymagań a dekompozycja funkcjonalna ...................................................1..........22 Postępowanie w sytuacji zmieniających się wymagań ...................................................1..24 Obiektowość...................................................1...................................................1................26 Programowanie obiektowe w praktyce ...................................................1..........................31 Szczególne rodzaje metod...................................................1..............................................33 Podsumowanie ...................................................1...................................................1............34 Rozdział 2. Język UML ........................................................................................ 37 Przegląd...................................................1...................................................1.......................37 Czym jest język UML? ...................................................1..................................................37 Zastosowanie języka UML...................................................1.............................................38 Diagram klas ...................................................1...................................................1...............39 Diagramy interakcji...................................................1...................................................1.....43 Podsumowanie ...................................................1...................................................1............45 Część II Ograniczenia tradycyjnie pojmowanego projektowania obiektowego .. 47 Rozdział 3. Problem wymagający uniwersalnego rozwiązania .............................. 49 Przegląd...................................................1...................................................1.......................49 Pozyskanie informacji z systemu CAD/CAM ...................................................1...............49 Terminologia dziedziny zastosowań ...................................................1..............................50 Opis problemu ...................................................1...................................................1............ .51 Prawdziwe wyzwania...................................................1...................................................1..53 Podsumowanie ...................................................1...................................................1............56 Rozdział 4. Standardowe rozwiązanie obiektowe .................................................. 57 Przegląd...................................................1...................................................1.......................57 Rozwiązanie wykorzystujące specjalizację...................................................1....................57 Podsumowanie ...................................................1...................................................1............63 Dodatek: Przykłady w języku C++ ...................................................1................................63 6 Projektowanie zorientowane obiektowo. Wzorce projektowe Część III Wzorce projektowe ........................................................................... 67 Rozdział 5. Wprowadzenie do wzorców projektowych.......................................... 69 Przegląd...................................................1...................................................1.......................69 Wzorce projektowe wywodzą się z architektury i antropologii ........................................70 Wzorce projektowe — od architektury do programowania ..............................................73 Po co studiować wzorce projektowe? ...................................................1............................75 Inne zalety studiowania wzorców projektowych ...................................................1...........78 Podsumowanie ...................................................1...................................................1............79 Rozdział 6. Wzorzec fasady................................................................................. 81 Przegląd...................................................1...................................................1.......................81 Wprowadzenie do fasady ...................................................1...............................................81 Fasada...................................................1...................................................1..........................82 Praktyczne uwagi na temat zastosowania fasady ...................................................1...........84 Zastosowanie fasady w rozwiązaniu problemu CAD/CAM .............................................85 Podsumowanie ...................................................1...................................................1............85 Rozdział 7. Wzorzec adaptera ............................................................................. 87 Przegląd...................................................1...................................................1.......................87 Wprowadzenie do wzorca adaptera...................................................1................................87 Adapter ...................................................1...................................................1........................88 Praktyczne uwagi na temat zastosowania adaptera...................................................1........92 Zastosowanie adaptera w celu rozwiązania problemu CAD/CAM ..................................94 Podsumowanie ...................................................1...................................................1............95 Dodatek: Przykład w języku C++ ...................................................1..................................95 Rozdział 8. Poszerzamy horyzonty ....................................................................... 97 Przegląd...................................................1...................................................1.......................97 Obiekty ...................................................1...................................................1.................. ......98 Hermetyzacja...................................................1...................................................1...............99 Określ zmienność i hermetyzuj ją ...................................................1................................101 Wspólności i zmienności a klasy abstrakcyjne ...................................................1............104 Podsumowanie ...................................................1...................................................1..........105 Rozdział 9. Wzorzec mostu ............................................................................... 107 Przegląd...................................................1...................................................1.....................107 Wprowadzenie do wzorca mostu ...................................................1.................................107 Przykład problemu wymagającego zastosowania mostu ................................................108 Obserwacja dotycząca zastosowań wzorców projektowych ...........................................116 Wyprowadzenie wzorca mostu ...................................................1....................................117 Wzorzec mostu — retrospekcja ...................................................1...................................125 Praktyczne uwagi na temat zastosowań mostu ...................................................1............125 Podsumowanie ...................................................1...................................................1..........128 Dodatek: przykłady kodu w języku C++ ...................................................1.....................130 Rozdział 10. Wzorzec fabryki abstrakcyjnej ......................................................... 135 Przegląd...................................................1...................................................1.....................135 Wprowadzenie do wzorca fabryki abstrakcyjnej ...................................................1.........135 Fabryka abstrakcyjna — przykład zastosowania ...................................................1.........136 Implementacja wzorca fabryki abstrakcyjnej...................................................1...............141 Praktyczne uwagi na temat stosowania fabryki abstrakcyjnej ........................................144 Zastosowanie fabryki abstrakcyjnej w rozwiązaniu problemu CAD/CAM....................146 Podsumowanie ...................................................1...................................................1..........147 Dodatek: przykłady w języku C++ ...................................................1..............................147 Spis treści 7 Część IV Projektowanie z wykorzystaniem wzorców ...................................... 149 Rozdział 11. W jaki sposób projektują eksperci? ................................................ 151 Przegląd...................................................1...................................................1.....................151 Tworzenie przez dodawanie wyróżnień ...................................................1.......................151 Podsumowanie ...................................................1...................................................1..........156 Rozdział 12. Rozwiązanie problemu CAD/CAM z wykorzystaniem wzorców projektowych ....................................... 159 Przegląd...................................................1...................................................1.....................159 Przypomnienie problemu CAD/CAM...................................................1..........................159 Projektowanie z wykorzystaniem wzorców...................................................1.................160 Projektowanie z wykorzystaniem wzorców: etap 1 ...................................................1.....161 Projektowanie z wykorzystaniem wzorców: etap 2a ...................................................1...161 Projektowanie z wykorzystaniem wzorców: etap 2b ...................................................1...165 Projektowanie z wykorzystaniem wzorców: etap 2c ...................................................1...168 Projektowanie z wykorzystaniem wzorców: etap 2d (fasada) ........................................168 Projektowanie z wykorzystaniem wzorców: etap 2d (adapter).......................................169 Projektowanie z wykorzystaniem wzorców: etap 2d (fabryka abstrakcyjna) .................170 Projektowanie z wykorzystaniem wzorców: etap 3 ...................................................1.....170 Porównanie z poprzednimi wersjami rozwiązania...................................................1.......170 Podsumowanie ...................................................1...................................................1..........172 Rozdział 13. Zasady i strategie projektowania z wykorzystaniem wzorców .......... 173 Przegląd...................................................1...................................................1.....................173 Zasada otwarcia i zamknięcia ...................................................1......................................174 Zasada projektowania w kontekście...................................................1.............................174 Zasada zawierania zmienności ...................................................1.....................................177 Podsumowanie ...................................................1...................................................1..........178 Część V Obsługa zmienności za pomocą wzorców projektowych ................... 179 Rozdział 14. Wzorzec strategii ............................................................................ 181 Omówienie ...................................................1...................................................1................181 Sposób obsługi nowych wymagań ...................................................1...............................181 Studium problemu i początkowe wymagania ...................................................1..............183 Obsługa nowych wymagań ...................................................1..........................................184 Wzorzec strategii...................................................1...................................................1.......187 Praktyczne uwagi na temat stosowania wzorca strategii ................................................188 Podsumowanie ...................................................1...................................................1..........189 Rozdział 15. Wzorzec dekoratora ........................................................................ 191 Omówienie ...................................................1...................................................1................191 Nowe szczegóły...................................................1...................................................1.........191 Wzorzec dekoratora...................................................1...................................................1...193 Zastosowanie dekoratora w omawianym studium problemu..........................................194 Inne zastosowania: operacje wejścia i (lub) wyjścia...................................................1....196 Praktyczne uwagi na temat stosowania dekoratora...................................................1......198 Podsumowanie ...................................................1...................................................1..........199 Dodatek: Przykłady w języku C++ ...................................................1..............................199 Rozdział 16. Wzorzec singletonu oraz wzorzec blokowania dwufazowego ............. 201 Przegląd...................................................1...................................................1.....................201 Wprowadzenie do wzorca singletonu ...................................................1..........................202 Zastosowanie wzorca singletonu...................................................1..................................202 Wariant: wzorzec blokowania dwufazowego ...................................................1..............204 Praktyczne uwagi na temat zastosowania singletonu i blokowania dwufazowego............205 Podsumowanie ...................................................1...................................................1..........206 Dodatek: przykłady w języku C++ ...................................................1..............................206 8 Projektowanie zorientowane obiektowo. Wzorce projektowe Rozdział 17. Wzorzec obserwatora ...................................................................... 207 Omówienie ...................................................1...................................................1................207 Kategorie wzorców ...................................................1...................................................1...207 Nowe wymagania...................................................1...................................................1......208 Wzorzec obserwatora ...................................................1...................................................1209 Zastosowanie wzorca obserwatora...................................................1...............................210 Praktyczne uwagi na temat zastosowania obserwatora...................................................1215 Podsumowanie ...................................................1...................................................1..........216 Dodatek: przykłady kodu w języku C++ ...................................................1.....................216 Rozdział 18. Wzorzec metody szablonu ............................................................... 219 Przegląd...................................................1...................................................1.....................219 Nowe wymagania...................................................1...................................................1......219 Wzorzec metody szablonu ...................................................1...........................................220 Zastosowanie wzorca metody szablonu ...................................................1.......................220 Praktyczne uwagi na temat zastosowania szablonu metody ...........................................221 Podsumowanie ...................................................1...................................................1..........222 Rozdział 19. Wzorzec metody fabryki .................................................................. 223 Przegląd...................................................1...................................................1.....................223 Nowe wymaganie...................................................1...................................................1......223 Wzorzec metody fabryki ...................................................1..............................................224 Praktyczne uwagi dotyczące zastosowania wzorca metody fabryki ...............................225 Podsumowanie ...................................................1...................................................1..........226 Rozdział 20. Macierz analizy ............................................................................... 227 Przegląd...................................................1...................................................1.....................227 Zmienność w świecie rzeczywistym ...................................................1............................227 Studium zmienności: system sprzedaży przez Internet...................................................1228 Uwagi praktyczne...................................................1...................................................1......233 Podsumowanie ...................................................1...................................................1..........234 Część VI Zakończenie i początek .................................................................. 235 Rozdział 21. Wzorce projektowe i nowa perspektywa projektowania obiektowego....237 Przegląd...................................................1...................................................1.....................237 Podsumowanie zasad obiektowości ...................................................1.............................238 Hermetyzacja implementacji za pomocą wzorców projektowych ..................................238 Analiza wspólności i zmienności i wzorce projektowe ..................................................239 Dekompozycja dziedziny problemu poprzez określenie odpowiedzialności..................239 Powiązania wewnątrz wzorców ...................................................1...................................240 Wzorce i projektowanie w kontekście ...................................................1.........................241 Uwagi praktyczne...................................................1...................................................1......242 Podsumowanie ...................................................1...................................................1..........242 Rozdział 22. Bibliografia ..................................................................................... 243 Programowanie zorientowane obiektowo: strony WWW...............................................243 Zalecana lektura na temat wzorców projektowych i obiektowości.................................244 Lektura przeznaczona dla programistów korzystających z języka Java .........................245 Lektura przeznaczona dla programistów korzystających z języka C++ .........................246 Lektura przeznaczona dla programistów korzystających z języka COBOL...................246 Lektura dotycząca metodyki Extreme Programming...................................................1...246 Zalecana lektura dotycząca programowania ...................................................1................247 Ulubiona lektura autorów...................................................1.............................................247 Skorowidz........................................................................................................... 249 Rozdział 5. Wprowadzenie do wzorców projektowych Przegląd Rozdział ten wprowadza pojęcie wzorców projektowyche. Omawiam w nim:  powstanie wzorców projektowych w architekturze i iceh zastosowanie w dziedzinie projektowania oprogramowania;  powody studiowania wzorców projektowych. Wzorce projektowe stanowią jedno z najważniejszych osiągnięć programowania obiek- towego. Są one przedmiotem zainteresowania autorów książek fachowych, przed- miotem szkoleń oraz podstawą opracowania nowych narzędzi analitycznych. Często można spotkać się przy tym ze stwierdzeniem, że aby rozpocząć studiowanie wzor- ców projektowych, niezbędne jest doskonałe opanowanie podstaw programowania obiektowego. Z mojej praktyki wynika coś zupełnie przeciwnego: wczesne przyswo- jenie sobie tematyki wzorców projektowych w procesie uczenia się technik obiekto- wych znakomicie ułatwia właściwe zrozumienie analizy i projektowania obiektowego. W pozostałej części książki omówię nie tylko wzorce projektowe, ale także sposób, w jaki ujawniają one i wymuszają zasady poprawnego projektowania obiektowego. Mam nadzieję, że w ten sposób ułatwię czytelnikowi głębsze zrozumienie tych zasad, a także będę mógł pokazać mu, dlaczego wzorce projektowe stanowią przykłady do- skonałych, obiektowych rozwiązań. Część przedstawionego tu materiału może wydać się czytelnikowi nieco zbyt abstrakcyj- na i filozoficzna. Warto jednak zapoznać się z nim. Rozdział ten kładzie bowiem pod- waliny pod właściwe zrozumienie tematyki wzorców projektowych. Zrozumienie za- wartego w nim materiału ułatwi czytelnikowi posługiwanie się wzorcami projektowymi. 70 Część III ♦ Wzorce projektowe Wiele z zaprezentowanych pomysłów pochodzi z książki „The Timeless Way of Build- ing”1 autorstwa Christophera Alexandra. Wykorzystywać je będeę w całej książce. Wzorce projektowe wywodzą się z architektury i antropologii Wiele lat temu architekt o nazwisku Christopher Alexander zadał sobie pytanie: „czy jakość jest cechą obiektywną?”. Czy piękno doskonałych rozwiązań istnieje jedynie dla tych, którzy je dostrzegają, czy też istnieje powszechna zgoda w kwestii tego, co jest piękne, a co nie jest? Alexander był szczególnie zainteresowany pojęciem piękna w odniesieniu do jakości rozwiązań architektonicznych i sposobem, w jaki określamy ich doskonałość. Jeśli mamy na przykład zaprojektować mamy wejście domu, to skąd będziemy wiedzieć, że uzyskane rozwiązanie jest dobre? Czy potrafimy to właściwie rozpoznać? Czy istnieje jakaś obiektywna podstawa takiej oceny? Czy tkwi ona w sa- mym projekcie, czy powstaje raczej na zasadzie opineii większości? Alexander postuluje istnienie obiektywnych podstaw oceny rozwiązań architektonicz- nych. Według niego taka, a nie inna ocena rozwiązania architektonicznego nie wynika z czyjegoś gustu. Doskonałość rozwiązania możemy ocenić na podstawie obiektyw- nych przesłanek. Podobne wnioski uzyskano w dziedzinie antropologii kultury. Sugeruje się, że w da- nej kulturze, jednostki zgadzają się ze sobą w znacznym stopniu co do tego, czy dane rozwiązanie jest doskonałe. Wspólna kultura sprawia, że obiektywny sposób oceny góruje nad indywidualnymi gustami. Sądzę więc, że istnieją transcendentne wzorce, które stanowią obiektywną podstawę oceny danego rozwiązania. Jedna z głównych gałęzi antropologii kultury zajmuje się właśnie poszukiwaniem wzorców służących do opisu zachowań i wartości wewnątrz poszczególnych ekultur2. Koncepcja wzorców projektowych także zakłada, że jakość oprogramowania można zmierzyć w obiektywny sposób. Jeśli jednak zaakceptujemy możliwość obiektywnego rozpoznania i opisania dobrych rozwiązań, czy nie powinniśmy także umieć je skonstruować? Wydaje mi się, że Alexan- der musiał zadać sobie pytanie: Co takiego możemy odnaleźć w rozwiązaniu dobrym, czmego brakuje rozwiązaniom złym? A także: Co takiego możemy odnaleźć w rozwiązaniu złym, czegmo nie ma dobre rozwiązanie? 1 2 Alexander C., Ishikawa S., Silverstein M.: The Timeless Way of Building, Nowy Jork: Oxford University Press, 1979. Antropolog Ruth Benedict jest pionierem analizy kultur wykoCrzystujących wzorce. Przykłady znajdzie czytelnik w pracy Benedict, R.: The Chrysanthemum and the Sword, Boston: Houghton Mifflin, 1946. Rozdział 5. ♦ Wprowadzenie do wzorców projektowych 71 Pytania te wynikają z przekonania Alexandra dotyczącego tego, że jeśli jakość roz- wiązań jest ich cechą obiektywną, to powinniśmy potrafić zidentyfikować przyczyny tego, że jedne rozwiązania są dobre, a inne złe. Aby znaleźć właściwe odpowiedzi Alexander, studiował rozwiązania budynków, ulic, miast, właściwie wszelkie aspekty przestrzeni, którą otacza się człowiek. Rezultatem tych obserwacji było odkrycie, że dobre rozwiązania maeją szereg cech wspólnych. Rozwiązania architektoniczne różnią się między sobą, nawet jeśli są tego samego ty- pu. Mimo tych różnic mogą jednak szczycić się doskonaełą jakością. Na przykład dwa różne portyki mogą różnić się swoją konstrukcją, a jednak mieć rów- nie wysoką jakość. Mogą bowiem stanowić rozwiązanie różnych problemów w przy- padku różnych budynków. Jeden z portyków służyć może przejściu z ulicy do drzwi frontowych budynku, a drugi dodatkowo dostarczać cienia w słoneczny dzień. Oba portyki mogą także rozwiązywać ten sam problem na różnee sposoby. Alexander zdawał sobie sprawę z tego, że struktur architektonicznych nie wolno roz- patrywać w oderwaniu od problemów, których rozwiązanie stanowią. Próbując ziden- tyfikować pojęcie jakości projektów zrozumiał, że powinien poszukiwać go analizu- jąc różne rozwiązania tego samego problemu. Na rysunku 5.1 przedstawiono dwa rozwiązania problemu wyróżnienia wejścia. Rysunek 5.1. Struktury architektoniczne mogą różnie wyglądać, ale nadal rozwiązywać ten sam problem Alexander odkrył, że zawężając pole analizy do rozwiązań tego samego problemu, moż- na dokładniej określić podobieństwa rozwiązań o wysokiej jakości. Podobieństwa te nazwał wzorcami. Zdefiniował pojęcie wzorca jako „rozwiązanie problemu ew określonym kontekście”: „Każdy wzorzec opisuje problem, który ciągle pojawia się w naszej dziedzinie, a następnie określa zasadniczą część jego rozwiązania w taki sposób, by można było zastosować je nawet milion razy, za każdym razem w nieco inny sposób”3. Dokonajmy przeglądu pracy Alexandra, aby zilustrować to stwierdzenie. W tabeli 5.1 prezentuję fragmenty jego książki zatytułowanej „The Timeless Way of Building”4, która stanowi doskonałe przedstawienie filozofii wzoreców. 3 4 Alexander C., Ishikawa S., Silverstein M.: A Pattern Language, Nowy Jork: Oxford University Press, 1977, s. x. Alexander C., Ishikawa S., Silverstein M.: The Timeless Way of Building, Nowy Jork: Oxford University Press, 1979. 72 Część III ♦ Wzorce projektowe Tabela 5.1. Fragmenty „The Timeless Way of Building” Alexander pisze… Mój komentarz W ten sam sposób prawidłowo zaprojektowane podwórze pomaga mieszkańcom korzystać z niego. Zastanówmy się nad siłami, które rządzą na podwórzu. Najbardziej podstawowa kieruje tam mieszkańców w poszukiwaniu przestrzeni na zewnątrz budynku, w której zachować mogą swoją prywatność. Popatrzeć w gwiazdy, nacieszyć się słońcem czy rosnącymi tam roślinami. Działają tam także bardziej subtelne siły. Jeśli na przykład podwórze jest zamknięte ze wszystkich stron, mieszkańcy nie czują się tam dobrze i unikają przebywania na nim. Widok na odległą, większą przestrzeń okazuje się niezbędny. Jeśli mieszkańcy codziennie przechodzić będą przez podwórze w drodze do swoich normalnych zajęć, to przyzwyczają się do niego, będą uważać za naturalne miejsce pobytu i chętniej będą przebywać na podwórzu. Natomiast podwórze, na które mieszkańcy muszą wejść, jeśli tego „chcą”, nie jest dobrze znajomym miejscem i zwykle pozostaje nieużywane. Ludzie preferują spędzanie czasu w miejscach, do których są przyzwyczajeni. Istnieje także pewna bariera, która w subtelny, ale skuteczny sposób powstrzymuje nas przed przekroczeniem granicy pomiędzy wnętrzem a podwórzem. Jeśli natomiast istnieje pewna przestrzeń — na przykład portyk lub weranda, częściowo otwarta na zewnątrz i psychologicznie znajdująca się „w połowie drogi” pomiędzy wnętrzem a podwórzem, to sprawia ona, że łatwiej jest postawić każdy krok zbliżający nas do wyjścia na zewnątrz... Gdy podwórze posiada widok na większą przestrzeń, przecinają je ścieżki wiodące do różnych pomieszczeń, a ponadto ozdabia je portyk lub weranda, to działające na podwórzu siły same skłaniają mieszkańców do przebywania na nim. Widok na nieograniczoną przestrzeń stwarza poczucie komfortu, przecinające podwórze ścieżki pozwalają łatwiej się do niego przyzwyczaić, a portyk ułatwia wyjście na podwórze. W ten sposób stopniowo podwórze staje się miejscem, w którym mieszkańcy chętnie przebywają. Wzorzec posiada nazwę oraz zastosowanie. Tutaj nazwą jest podwórze, a jego zadaniem — pomoc mieszkańcom w korzystaniu z niego. Chociaż czasami jest to oczywiste, ważne jest to, by określić wprost rozwiązywany problem, który jest przecież powodem zastosowania danego wzorca. Tak czyni też Alexander w przypadku podwórza. Wskazuje trudności wynikające z uproszczonego rozwiązania oraz metody jego poprawy. Przyzwyczajenie i rutyna często są przyczyną, dla której nie dostrzegamy rzeczy oczywistych. Wartość wzorca polega na tym, że mniej doświadczeni projektanci mogą wykorzystać zawartą we wzorcu wiedzę dotyczącą poprawnego rozwiązania problemu. Autor proponuje rozwiązanie jednego z istotnych, a często pomijanych aspektów problemu podwórza. Alexander opowiada, w jaki sposób zaprojektować dobre podwórze... ... a ponadto wskazuje, skąd pochodzi wartość takiego rozwiązania. Rozdział 5. ♦ Wprowadzenie do wzorców projektowych 73 Tak więc opis wzorca według Alexandra składa się z czteerech elementów:  z nazwy wzorca;    z zadania wzorca, czyli problemu, którego stanowi rozweiązanie; ze sposobu rozwiązania problemu; z ograniczeń i sił, które należy wziąć pod uwagę stosuejąc rozwiązanie. Alexander postuluje istnienie wzorców dla dowolnych problemów w dziedzinie archi- tektury. Zaleca także wspólne zastosowanie wielu wzorców w celu rozwiązania zło- żonych problemów architektonicznych. W dalszej części książki przedstawię sposoby jednoczesnego wykorzystania wielu wzor- ców. Teraz jednak skoncentruję się na stwierdzeniu Alexandra, które dotyczy tego, że wzorce są przydatne do rozwiązywania poszczególnyche problemów. Wzorce projektowe — od architektury do programowania Czytelnikowi może nasunąć się tutaj pytanie — co wspólnego mają zagadnienie z dziedziny architektury z programowaniem? Na początku lat 90. grupa programistów zetknęła się z książką Alexandra dotyczącą wzorców projektowych. Zaczęli się zastanawiać, czy wnioski autora dotyczące wzorców w architekturze nie są także prawdziwe w przypadku projektowania oprogramowania5:   czy tworząc programy spotykamy się z problemami, któree rozwiązać można w podobny sposób? czy w przypadku projektowania oprogramowania można ezastosować wzorce tak, by pomagały one w tworzeniu konkretnych rozwiązeań? Odpowiedź na tak postawione pytania była według nich jednoznacznie pozytywna. Należało wobec tego zidentyfikować przynajmniej kilka wzorców i opracować meto- dy dalszego ich katalogowania. Na początku lat 90. wiele osób zajmowało się problematyką wzorców projektowych. Jednak największy wpływ na prace tej społeczności wywarła książka „Design Pat- terns: Elemensts of Reusable Object-Oriented Software”6, której autorami byli Gamma, 5 6 Podobną problematyką zajmowało się w Europie w latach osiemdzieCsiątych konsorcjum ESPRIT. W ramach projektów 1098 oraz 5248 rozwinięto opartą na wzorcach metCodologię projektowania nazwaną KADS (Knowledge Analysis and Design System) służącą do wykorzystania wzorców do tworzenia systemów ekspertowych. Karen Gardner rozszerCzyła później wzorce KADS o problematykę obiektowości. Patrz: Gardner, K.: Cognitive Patterns: Problem-Solving Frameworks for Object Technology, Nowy Jork: Cambridge University Press, 1998. Gamma E., Helm R., Johnson R., Vlissides J.: Design Patterns: Elements of Reusable Object-Oriented Software, Reading, Mass.: Addison-Wesley, 1995. 74 Część III ♦ Wzorce projektowe Helm, Johnson i Vlissides. Podkreślając znaczenie tej pracy autorów często określa się mianem Bandy Czworga. Pozycja ta spełniła następujące, ważne zadania:     pokazała zastosowanie wzorców projektowych w dziedzeinie projektowania oprogramowania; zaproponowała sposób katalogowania i opisu wzorców perojektowych; skatalogowała 23 wzorce projektowe; postulowała wprowadzenie do projektowania obiektowegeo szeregu zasad i strategii opartych na wzorcach projektowych. Ważne jest to, aby czytelnik zrozumiał, że autorzy tej książki nie stworzyli opisanych w niej wzorców projektowych. Zidentyfikowali raczej wzorce używane przez progra- mistów i uważane powszechnie za przykłady doskonałych rozwiązań pewnych pro- blemów (zwróćmy w tym miejscu uwagę na podobieństwo do epracy Alexandra). Do dnia dzisiejszego zaproponowano szereg różnych sposobów opisu wzorców pro- jektowych. Jako że książka niniejsza nie jest poświęcona procesowi wyszukiwania nowych wzorców, nie jest ważne, który z tych sposobów jest najlepszy. Każdy ze spo- sobów opisu wzorców jest dobry, jeśli uwzględnia elementy wymienione w tabeli 5.2. Tabela 5.2. Kluczowe elementy opisu wzorców Element Nazwa Intencja Problem Opis Identyfikuje wzorzec. Zastosowanie wzorca. Dany wzorzec próbuje go rozwiązać. Rozwiązanie Sposób, w jaki wzorzec rozwiązuje problem w danym kontekście. Uczestnicy i współpracownicy Byty w obrębie wzorca. Konsekwencje Implementacja Dodatkowe efekty wynikające z zastosowania wzorca. Sposób, w jaki można zaimplementować wzorzec. Uwaga: implementacja dotyczy zawsze konkretnego zastosowania wzorca i nie powinna być mylona z konstrukcją wzorca. Referencja do pracy Bandy Czworga Wskazanie źródła, w którym znajdziemy więcej informacji na temat wzorca. Dla każdego z opisanych w książce wzorców przedstawię jednostronicowe zestawie- nie najważniejszych jego cech. Konsekwencje Termin konsekwencje użyty w odniesieniu do opisu wzorców często nie jest rozumiany wła- ściwie. Zastosowany na co dzień zwykle posiada wydźwięk negatywny (rzadko powiemy: „Wy- grałem na loterii! Konsekwencją będzie to, że nie muszę już chodzić do pracy”). W przypadku wzorców projektowych konsekwencje oznaczają po prostyu związek przyczynowo-skutkowy. Rozdział 5. ♦ Wprowadzenie do wzorców projektowych 75 Po co studiować wzorce projektowe? Kiedy czytelnik ma już ogólne pojęcie o tym, czym są wzorce projektowe, może za- stanawiać się, czy warto się nimi zajmować. Istnieje wiele powodów — mniej lub bardziej oczywistych — dla których warto to robić. Najczęściej podaje się określony zestaw powodów, dla których warto poznać wzorce projektowe.  Możliwość wykorzystania istniejących, sprawdzonych wczeeśniej sposobów projektowania przyspiesza pracę nad projektem i pozewala uniknąć błędów na etapie projektowania. Stosując wzorce projektowee wykorzystujemy sumę doświadczeń innych projektantów; nie musimy już samodezielnie wymyślać rozwiązań typowych problemów.  Praca w zespole i komunikacja pomiędzy jego członkamei wymaga istnienia podstawowego, wspólnego zasobu terminologii oraz wspólenej perspektywy oglądu problemu. Wzorce projektowe zapewniają wspólny epunkt odniesienia w fazie analizy i projektowania. Według mnie istnieje jeszcze trzeci, równie ważny powód, dla którego każdy projek- tant powinien zapoznać się z tą tematyką.  Wzorce projektowe dają ogólną perspektywę widzenia eproblemów, a także projektowania obiektowego, co uwalnia projektanta od ekonieczności zbyt wczesnego zgłębiania szczegółów. Mam nadzieję, że po przeczytaniu tej książki czytelnik zgodzi się ze mną, że jest to jeden z najważniejszych powodów studiowania wzorcówe projektowych. Aby zilustrować tę korzyść płynącą ze studiowania wzorców, posłużę się przykładem rozmowy dwu stolarzy, która dotyczy konstrukcji szuflaed7. Pierwszy Stolarz: W jaki sposób wykonamy te szuflady? Drugi Stolarz: Myślę, że połączenia zrobimy w ten sposób, że przetniemey drewno najpierw prosto w dół, potem z powrotem pod ekątem 45º, a później znowu w przeciwnym kierunku prosto w dół, a potem ceofniemy się do góry pod kątem 45º, potem znów prosto, a później... Czy czytelnik potrafi już powiedzieć, o czym oni rozmaweiają? Czy opis ten nie jest zbyt zagmatwany? O czym właściwie mówi Drugi Stolarz? Zbyt wiele szczegółów utrudnia nam prawidłowe zrozumienie. Spróbujmy wykonać rysu- nek na podstawie usłyszanego opisu. 7 Autorzy zainspirowani zostali jednym z wykładów Ralpha JohCnsona i zaadaptowali go na potrzeby książki. 76 Część III ♦ Wzorce projektowe Drugi Stolarz mówi: A na rysunku wygląda to następująco: „Myślę, że połączenia zrobimy w ten sposób, że przetniemy drewno najpierw prosto w dół, potem z powrotem pod kątem 45º...” „później znowu w przeciwnym kierunku prosto w dół, a potem cofniemy się do góry pod kątem 45º, potem znów prosto, a później...” „... aż otrzymamy połączenie „na wpust”” Czy nie przypomina to wielu opisów kodu programu? Takich, w których programista opisuje jego działanie następująco: „A tutaj w pętli wykonam..., po czym rozwiążę to za poemocą serii instrukcji warunkowych...i dodam instrukcję wyboru, aby odpowiedenio obsłużyć...”. Z takiego opisu uzyskamy być może informacje o szczegółach działania kodu, ale na pewno nie o tym, co program w rzeczywistości robi i w jaki sposób dzmiała! Wiadomo, że w praktyce żaden stolarz nie wypowiada się w ten sposób. Przedstawio- ny dialog powinien rozpocząć się inaczej. Pierwszy Stolarz: Użyjemy połączeń wpustowych czy „na skos”? Od razu możemy zauważyć jakościową różnicę. Stolarz omawia teraz problem na wyż- szym poziomie abstrakcji, koncentrując się na problemie jakości rozwiązania. Unika zagłębiania się w szczegóły związane z realizacją koenkretnego rozwiązania. Mówiąc o połączeniu „na skos” ma on na myśli następującą charakterystykę tego roz- wiązania:  prostotę — wystarczy przyciąć łączone krawędzie pod kątem 45º, ea następnie połączyć, zbić lub skleić je razem (patrz: rysunek 5.2); Rozdział 5. ♦ Wprowadzenie do wzorców projektowych 77 Rysunek 5.2. Połączenie „na skos”   delikatność — jako że to połączenie jest ono mniej wytrzymałe oed połączenia „na wpust”, nie powinno być poddawane dużym obciążeniom; niepozorność — połączenie takie trudniej zauważyć niż połączenie „na wpust”. Kiedy natomiast omawia połączenie „na wpust” (którego opis wykonania przedsta- wiłem wcześniej), to ma na myśli zupełnie inną charakteerystykę rozwiązania:     większy stopień złożoności — wykonanie połączenia „na wpust” jest bardziej skomplikowane i dlatego jest ono droższe; odporność na zmiany temperatury i wilgotności — gdy czynniki te ulegają zmianie, drewno rozszerza się lub kurczy, a połączeniee pozostaje trwałe; niezależność od innych technologii łączenia — połączenia „na wpust” nie wymagają zastosowania kleju; estetykę — porządnie wykonane połączenie „na wpust” cieszy okeo swoim wzorem. Innymi słowy — połączenie „na wpust” jest trwałe, odporne, estetyczne i skompliko- wane (a tym samym — drogie). Kiedy więc Pierwszy Stolarz zapytał: Użyjemy połączeń wpustowych czy „na skos”?... ... to prawdziwą intencją tego pytania było: Czy powinniśmy wykonać połączenie w kosztowny, ale za eto trwały i estetyczny sposób, czy raczej zrobimy to szybko i taenio? Możemy więc powiedzieć, że rozmowa stolarzy odbywa się teraz na dwu poziomach: jednym, który jest związany z dosłownym znaczeniem ich wypowiedzi, oraz na dru- gim — tzw. „metapoziomie”, ukrytym dla laika i bogatszym w znaczenia. Poziom ten moglibyśmy nazwać poziomem „wzorców stolarskich”. Stanowi on odbicie zagad- nień związanych z rozwiązaniami stosowanymi przez setolarzy. W pierwszej wersji dialogu te istotne zagadnienia zostały zastąpione omówieniem szcze- gółów implementacji połączeń. W drugim przypadku — Pierwszy Stolarz zamierzał podjąć decyzję o wyborze rozwiązania kierując się jeego jakością i kosztem. Który z tych sposobów jest bardziej efektywny? 78 Część III ♦ Wzorce projektowe Zastosowanie wzorców z pewnością podnosi poziom abstrakcji naszego myślenia o pro- blemie. W trakcie lektury dalszej części książki czytelnik przekona się, że dzięki temu uzyskujemy nowe, doskonalsze sposoby projektowania. Na tym właśnie polega potę- ga wzorców projektowych. Inne zalety studiowania wzorców projektowych Z moich doświadczeń związanych z pracą w grupach wykorzystujących wzorce pro- jektowe wynika, że ich zastosowanie nie tylko pomaga w opracowaniu poprawnych rozwiązań, ale także sprzyja edukacji członków zespołu. Mniej doświadczeni projek- tanci mają okazję obserwować swoich starszych kolegów skutecznie stosujących wzor- ce projektowe, co wzmacnia to ich motywację do zapoznania się z tematyką wzorców. Większość wzorców projektowych sprzyja tworzeniu rozwiązań, które łatwo jest póź- niej modyfikować. Ponieważ na opracowanie rozwiązań oferowanych przez wzorce składa się suma doświadczeń i wysiłków wielu projektantów, to z reguły są to bardzo przemyślane struktury, które łatwiej radzą sobie ze wszelkimi zmianami niż rozwią- zania utworzone ad hoc. Studiowanie wzorców projektowych prowadzić może także do zdecydowanego po- głębienia rozumienia podstawowych zasad projektowania obiektowego. Zaobserwo- wałem to niezliczoną ilość razy podczas prowadzonych przeze mnie kursów. Rozpo- czynałem je od krótkiego wprowadzenia do problemu obiektowości, po czym od razu przechodziłem do przedstawiania wzorców projektowych, które służyły mi także jako ilustracja zastosowania podstawowych koncepcji obiektowych (hermetyzacji, dziedzi- czenia i polimorfizmu). Pod koniec trzeciego dnia szkolenia uczestnicy zwykle dosko- nale już rozumieli istotę tych koncepcji, mimo że większość czasu poświęcona była wzorcom projektowym. Banda Czworga sugeruje kilka strategii służących do tworzenia poprawnych rozwią- zań obiektowych. W szczególności należą do nich:    projektowanie z wykorzystaniem interfejsów; preferowanie wykorzystania kompozycji zamiast dziedeziczenia; odnajdowanie zmienności i hermetyzowanie jej. Strategie te znajdują zastosowanie w przypadku większości wzorców projektowych przedstawionych w tej książce. Nawet jeśli czytelnik pozna tylko niektóre z nich, to powinno to wystarczyć, aby przekonać się o użyteczności przedstawionych strategii. Pomaga to później wykorzystać je w praktyce (nawet w przypadkach, w których wzor- ce projektowe nie znajdują bezpośredniego zastosowaneia). Rozdział 5. ♦ Wprowadzenie do wzorców projektowych 79 Inną zaletą wzorców projektowych jest to, że pozwalają one tworzyć rozwiązania skomplikowanych problemów bez nadmiernie rozbudowanych hierarchii dziedzicze- nia. Nawet jeśli wzorce nie znajdują w nich czasami bezpośredniego zastosowania, to i tak uniknięcie wielopoziomowych hierarchii dziedziczenia zawsze prowadzi do do- skonalszych rozwiązań. Podsumowanie W rozdziale tym przedstawiłem to, czym są wzorce projektowe. Christopher Alexan- der napisał, że „wzorce stanowią rozwiązanie problemu w kontekście”. Wzorce sta- nowią zatem coś więcej niż tylko rodzaj szablonu oferującego gotowe rozwiązanie danego problemu. Są też sposobem opisu motywacji, ponieważ zawierają informację zarówno o prześladującym nas problemie, jak i rozwiązaeniu, które chcemy stworzyć. Dokonałem także przeglądu powodów, dla których warto studiować wzorce projek- towe. Studia takie pomagają projektantom:         tworzyć sprawdzone, solidne rozwiązania powtarzającyceh się problemów; uzyskać wspólną terminologię opisu problemu poprawiająecą komunikację w zespole; myśleć o rozwiązaniu problemu na wyższym poziomie abstraekcji; przeanalizować jakość uzyskanego rozwiązania, a nie tyelko jego działanie; usprawnić edukację zespołu jako całości i poszczególneych jego członków; zwiększyć możliwość wprowadzania modyfikacji w oprogrameowaniu; tworzyć doskonalsze rozwiązania (nawet gdy nie wykorzystują one wzorców); znaleźć rozwiązania alternatywne do wykorzystujących reozbudowane hierarchie dziedziczenia.
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Projektowanie zorientowane obiektowo. Wzorce projektowe
Autor:
,

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: