
Projektowanie i programowanie obiektowe to dziś standard w produkcji oprogramowania. Język UML, powszechnie stosowane narzędzie opisu projektów i architektury oprogramowania, systematyzuje i upraszcza proces projektowania. Projektowanie systemów w oparciu o przypadki użycia oraz role, odpowiedzialność i współpracę obiektów, pozwala na skoncentrowanie się na tym, jak powinien działać system, bez zbyt wczesnego zagłębiania się w szczegóły implementacyjne. Dopiero po opracowaniu prawidłowego projektu można zacząć zastanawiać się, jak zaimplementować projekt przy użyciu klas, interfejsów i hierarchii dziedziczenia.
Książka "Projektowanie obiektowe. Role, odpowiedzialność i współpraca" przedstawia metodykę projektowania obiektowego noszącą nazwę "Projektowania Sterowanego Odpowiedzialnością". Przedstawia praktyczne zasady projektowania obiektów będących integralnymi elementami systemu, w którym każdy obiekt ma specyficzną rolę i zakres odpowiedzialności. Autorzy prezentują najnowsze praktyki i techniki "Projektowania Sterowanego Odpowiedzialnością", a także przedstawiają sposoby ich stosowania w rozwoju nowoczesnych aplikacji obiektowych. Książka przedstawia strategie znajdowania kandydatów na obiekty i zawiera praktyczne przykłady oraz porady, dzięki którym bez problemu wykorzystasz opisywane w niej metody.
- Stereotypy ról obiektów
- Analiza opisu systemu
- Model biznesowy systemu
- Wyszukiwanie kandydatów na obiekty
- Przydzielanie odpowiedzialności obiektom
- Definiowanie współpracy pomiędzy obiektami
- Przekazywanie sterowania w obiektach i systemie
Przedsłowie autorstwa Ivara Jacobsona (9)Przedsłowie autorstwa Johna Vlissidesa (11)
Przedmowa (13)
Rozdział 1. Pojęcia używane w projektowaniu (17)
- Maszyneria obiektowa (17)
- Role (19)
- Stereotypy ról obiektów (20)
- Rola, odpowiedzialność i współpraca (21)
- Kontrakty obiektów (23)
- Gwarancje warunków użycia i następstw (23)
- Obiekty dziedzinowe (24)
- Obiekty specyficzne dla aplikacji (25)
- Interfejsy (27)
- Klasy (28)
- Dwie role (28)
- Złożenie (30)
- Dziedziczenie (31)
- Organizacje obiektów (32)
- Komponenty (33)
- Wzorce (33)
- Zastosowanie wzorca podwójnego rozdziału (34)
- Rzeczywiste korzyści z używania wzorców (38)
- Schematy, sp. z o.o. (38)
- Architektura (40)
- Style architektoniczne (41)
- Sterowanie scentralizowane (43)
- Sterowanie rozproszone - brak centrów (43)
- Sterowanie delegowane (44)
- Badanie interakcji - przykład architektury warstwowej (44)
- Umieszczanie obiektów w warstwach (46)
- Opis projektu (47)
- Podsumowanie (48)
- Zalecane lektury (48)
- Proces widzenia, opisywania i projektowania (52)
- Uruchamianie produkcji - definicja i planowanie (55)
- Przygotowanie sceny - wstępny opis (55)
- Przystępujemy do produkcji - projekt (57)
- "Widzenie" z wielu perspektyw (59)
- Pisanie scenariusza - analiza opisów (59)
- Opisy użytkowania (60)
- Inne specyfikacje (67)
- Słowniki (67)
- Obiekty konceptualne (68)
- Obsadzanie ról - projektowanie badawcze (69)
- Karty CRC (70)
- Rozwiązania - używanie wzorców (72)
- Poszukiwanie rozwiązania (75)
- Przeskakiwanie od pomysłów do szczegółów (76)
- Przed premierą - dopracowywanie projektu (77)
- Projektowanie a elastyczność i rozszerzalność (79)
- Projektowanie a niezawodność (80)
- Tworzenie przewidywalnych, spójnych i zrozumiałych projektów (80)
- Podsumowanie (81)
- Zalecane lektury (82)
- Strategia odkrywania (86)
- Szukanie obiektów i ról, a następnie klas (87)
- Po co opis projektu? (88)
- Strategie poszukiwań (91)
- Czymże jest nazwa? (93)
- Opisywanie kandydatów (98)
- Charakteryzowanie kandydatów (102)
- Łączenie kandydatów (103)
- Poszukiwanie wspólnych cech (105)
- Obrona kandydatów (107)
- Podsumowanie (109)
- Zalecana lektura (109)
- Czym jest odpowiedzialność? (111)
- Skąd bierze się odpowiedzialność? (113)
- Strategie przydzielania odpowiedzialności (124)
- Zapisywanie odpowiedzialności (125)
- Wstępne przypisywanie odpowiedzialności (127)
- Wychodzenie z kłopotów (136)
- Implementacja obiektów i odpowiedzialności (138)
- Obiekt może grać wiele ról (138)
- Projektowanie metod obsługujących odpowiedzialność (140)
- Testowanie jakości kandydatów (141)
- Podsumowanie (142)
- Zalecane lektury (143)
- Czym jest współpraca między obiektami? (145)
- Przygotowanie do współpracy (146)
- Opisywanie współpracy kandydatów (146)
- Opis projektu aplikacji "Mów za mnie" (147)
- Warianty współpracy (148)
- Kto steruje? (149)
- Na ile obiekty mogą sobie ufać? (150)
- Strategie identyfikacji współpracy (152)
- Badanie roli każdego obiektu - stereotypy implikują współpracę (153)
- Zakresy odpowiedzialności implikują współpracę (159)
- Projektowanie szczegółów złożonego zakresu odpowiedzialności (160)
- Projektowanie współpracy dla konkretnych zadań (162)
- Identyfikowanie pasujących wzorców projektowych (162)
- Jak architektura wpływa na współpracę? (164)
- Rozwiązywanie problemów we współpracy (164)
- Symulacja współpracy (167)
- Planowanie symulacji (168)
- Przeprowadzanie symulacji (170)
- Projektowanie dobrej współpracy (173)
- Prawo Demeter - studium przypadku (174)
- Umożliwianie współpracy (176)
- Wskazówki dotyczące nawiązywania połączeń (177)
- Projektowanie niezawodnej współpracy (178)
- Kiedy możemy uznać, że skończyliśmy? (179)
- Podsumowanie (180)
- Zalecane lektury (181)
- Czym jest styl sterowania? (183)
- Warianty stylów sterowania (184)
- Kompromisy (185)
- Centralizowanie sterowania (186)
- Delegowanie sterowania (187)
- Ograniczenia decyzji sterujących (188)
- Tworzenie centrów sterowania (191)
- Studium przypadku - styl sterowania dla zdarzeń użytkownika (192)
- Centralizowanie sterowania w BudowniczymKomunikatu (195)
- Przenoszenie podejmowania decyzji do metod stanu w BudowniczymKomunikatu (203)
- Abstrahowanie od decyzji (204)
- Delegowanie kolejnych zakresów odpowiedzialności (206)
- Projektowanie stylu sterowania dla sąsiedztwa Podpowiadacza (208)
- Projektowanie podobnego centrum sterowania - jak zachować spójność? (211)
- Podsumowanie (217)
- Opowiadanie o współpracy (219)
- Strategia tworzenia historii o współpracy (220)
- Ustalanie zakresu, poziomu i tonu historii (221)
- Lista opisywanych aspektów (222)
- Określenie poziomu szczegółowości (223)
- Widok z lotu ptaka (223)
- Uczestnicy przypadku współpracy (225)
- Sekwencja interakcji pomiędzy współpracownikami (227)
- Widok szczegółowy (229)
- Widok skoncentrowany na interakcji (230)
- Widok implementacyjny (231)
- Widok ilustrujący adaptację współpracy (232)
- Gdy nie wystarczają diagramy sekwencji (234)
- Wybór odpowiedniej formy (237)
- Opowiedzmy, narysujmy, opiszmy - wskazówki (239)
- Organizowanie pracy (244)
- Wyróżnianie (244)
- Odsłanianie historii (245)
- Przekazywanie podstawowych informacji (246)
- Składanie wszystkiego w całość (247)
- Konserwacja historii (247)
- Podsumowanie (248)
- Zalecane lektury (249)
- Zrozumienie konsekwencji awarii (251)
- Zwiększanie niezawodności systemu (253)
- Określanie zaufanych współpracowników (254)
- Współpraca zaufana i niepewna (254)
- Konsekwencje zaufania (257)
- Gdzie zwiększać niezawodność? (258)
- Co wynika z przypadków użycia (258)
- Rozróżnianie wyjątków i błędów (259)
- Wyjątki obiektowe a wyjątki z przypadków użycia (260)
- Podstawy wyjątków obiektowych (260)
- Strategie obsługi wyjątków i błędów (265)
- Określanie obiektu odpowiedzialnego za podjęcie działań (267)
- Projektowanie rozwiązania (269)
- Burza mózgów na temat wyjątków (270)
- Ograniczmy zakres (271)
- Opisywanie strategii obsługi wyjątków (273)
- Dokumentowanie projektu obsługi wyjątków (273)
- Określanie formalnych kontraktów (277)
- Przegląd projektu (279)
- Podsumowanie (281)
- Zalecane lektury (281)
- Co oznacza "bycie elastycznym"? (283)
- Stopnie elastyczności (285)
- Konsekwencje elastycznego rozwiązania (286)
- Określanie wymagań elastyczności (287)
- Opisywanie zmienności (291)
- Warianty i ich realizacja (293)
- Identyfikacja wpływu zmienności (294)
- Badanie strategii realizacji elastyczności (294)
- Użycie szablonów i punktów zaczepienia do zapewnienia elastyczności (295)
- Rola wzorców w elastycznych projektach (302)
- Zmiana działania obiektu - wzorzec Strategii (302)
- Ukrycie współpracujących obiektów - wzorzec Mediatora (303)
- Dopasowywanie istniejących obiektów - wzorzec Adaptera (303)
- W jaki sposób wzorce zwiększają elastyczność? (305)
- Jak dokumentować elastyczność projektu? (305)
- Pamiętajmy o czytelnikach (309)
- Opisywanie sposobu wprowadzania zmian (310)
- Zmiana projektu działającego systemu (312)
- Podsumowanie (314)
- Zalecane lektury (314)
- Natura projektowania oprogramowania (317)
- Rozwiązywanie problemów dotyczących jądra (318)
- Określmy ramy problemu (319)
- Rozwiązywanie problemów odkrywczych (322)
- Historia o zarządzaniu dzieloną informacją (322)
- Historia o złożoności problemu komunikacji (324)
- Historia o problemie projektowym, którego nie dało się uprościć (325)
- Czy problemy odkrywcze mogą być złośliwe? (326)
- Strategie rozwiązywania problemów odkrywczych (327)
- Przeformułowanie problemu (328)
- Syntezowanie rozwiązania (329)
- Praca nad resztą problemów (330)
- Projektowanie odpowiedzialne (331)
- Zalecane lektury (334)
Skorowidz (341)