Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00376 009668 10453580 na godz. na dobę w sumie
Head First Object-Oriented Analysis and Design. Edycja polska (Rusz głową!) - książka
Head First Object-Oriented Analysis and Design. Edycja polska (Rusz głową!) - książka
Autor: , , Liczba stron: 616
Wydawca: Helion Język publikacji: polski
ISBN: 978-83-246-0965-9 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> programowanie >> uml - programowanie
Porównaj ceny (książka, ebook, audiobook).

Poznaj techniki analizy i projektowania obiektowego

Systemy informatyczne stają się coraz bardziej rozbudowane. Programowanie obiektowe znacznie ułatwia ich tworzenie i późniejsze modyfikacje, aby jednak system był sprawny i funkcjonalny, musi zostać zaprojektowany w oparciu o prawidłowo zebrane wymagania. Tu również z pomocą przychodzi metodologia obiektowa -- wzorce projektowe, język UML i odpowiednie narzędzia niezwykle ułatwiają przygotowanie dobrego projektu.

Jeśli rozbudowane przykłady, skomplikowane diagramy i niezrozumiałe wywody teoretyczne wywołują w Tobie niechęć, koniecznie sięgnij po tę książkę! Dzięki niej poznasz metody analizy i projektowania obiektowego w nietypowy i ciekawy sposób, wykorzystujący najnowsze teorie skutecznego przekazywania wiedzy. Przeczytasz o tym, w jaki sposób warto gromadzić wymagania i oczekiwania użytkowników wobec projektowanego systemu, jak uwzględniać w projekcie postulowane zmiany i przeprowadzać proces analizy obiektowej. Nauczysz się stosować notację UML do przedstawiania struktury systemu i przetwarzanych przez niego danych. Dowiesz się także, jak testować projektowany system.

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

Head First Object-Oriented Analysis and Design. Edycja polska Autor: Brett D. McLaughlin, Gary Pollice, David West T‡umaczenie: Piotr Rajca ISBN: 978-83-246-0965-9 Tytu‡ orygina‡u: Head First Object-Oriented Analysis and Design Format: 200x230, stron: 616 Przyk‡ady na ftp: 165 kB Poznaj techniki analizy i projektowania obiektowego (cid:149) Naucz siŒ zbiera(cid:230) wymagania od u¿ytkownik(cid:243)w systemu (cid:149) Zarz„dzaj zmianami w specyfikacji (cid:149) Przeprowad(cid:159) analizŒ i wykonaj projekt Systemy informatyczne staj„ siŒ coraz bardziej rozbudowane. Programowanie obiektowe znacznie u‡atwia ich tworzenie i p(cid:243)(cid:159)niejsze modyfikacje, aby jednak system by‡ sprawny i funkcjonalny, musi zosta(cid:230) zaprojektowany w oparciu o prawid‡owo zebrane wymagania. Tu r(cid:243)wnie¿ z pomoc„ przychodzi metodologia obiektowa (cid:150) wzorce projektowe, jŒzyk UML i odpowiednie narzŒdzia niezwykle u‡atwiaj„ przygotowanie dobrego projektu. Je(cid:156)li rozbudowane przyk‡ady, skomplikowane diagramy i niezrozumia‡e wywody teoretyczne wywo‡uj„ w Tobie niechŒ(cid:230), koniecznie siŒgnij po tŒ ksi„¿kŒ! DziŒki niej poznasz metody analizy i projektowania obiektowego w nietypowy i ciekawy spos(cid:243)b, wykorzystuj„cy najnowsze teorie skutecznego przekazywania wiedzy. Przeczytasz o tym, w jaki spos(cid:243)b warto gromadzi(cid:230) wymagania i oczekiwania u¿ytkownik(cid:243)w wobec projektowanego systemu, jak uwzglŒdnia(cid:230) w projekcie postulowane zmiany i przeprowadza(cid:230) proces analizy obiektowej. Nauczysz siŒ stosowa(cid:230) notacjŒ UML do przedstawiania struktury systemu i przetwarzanych przez niego danych. Dowiesz siŒ tak¿e, jak testowa(cid:230) projektowany system. (cid:149) Zasady i cele projektowania obiektowego (cid:149) Gromadzenie wymagaæ (cid:149) Przypadki u¿ycia (cid:149) Analiza obiektowa (cid:149) Diagramy UML przedstawiaj„ce strukturŒ systemu (cid:149) Korzystanie ze wzorc(cid:243)w projektowych (cid:149) Projektowanie architektury systemu (cid:149) Testowanie Wydawnictwo Helion ul. Ko(cid:156)ciuszki 1c 44-100 Gliwice tel. 032 230 98 63 e-mail: helion@helion.pl Spis treści (skrócony) Spis treści 1 Dobrze zaprojektowane aplikacje są super. Tu zaczyna się wspaniałe oprogramowanie 2 Gromadzenie wymagań. Daj im to, czego chcą 3 Wymagania ulegają zmianom. Kocham cię, jesteś doskonały… A teraz — zmień się 4 Analiza. Zaczynamy używać naszych aplikacji w rzeczywistym świecie 5 Część 1. Dobry projekt = elastyczne oprogramowanie. Nic nie pozostaje wiecznie takie samo Przerywnik. Obiektowa katastrofa Część 2. Dobry projekt = elastyczne oprogramowanie. Zabierz swoje oprogramowanie na 30-minutowy trening 6 Rozwiązywanie naprawdę dużych problemów. „Nazywam się Art Vandelay... jestem Architektem” 7 Architektura. Porządkowanie chaosu 8 Zasady projektowania. Oryginalność jest przereklamowana 9 10 Proces projektowania i analizy obiektowej. Scalając to wszystko w jedno Iteracja i testowanie. Oprogramowanie jest wciąż przeznaczone dla klienta Dodatek A Pozostałości Dodatek B Witamy w Obiektowie Skorowidz 31 83 137 169 221 245 257 301 343 395 441 499 571 589 603 Spis treści (szczegółowy) Wprowadzenie Twój mózg koncentruje się na analizie i projektowaniu obiektowym. Podczas gdy Ty starasz się czegoś nauczyć, Twój mózg robi Ci przysługę i dba o to, abyś przez przypadek nie zapamiętał zdobywanych informacji. Myśli sobie: „Lepiej zostawić trochę miejsca na bardziej istotne sprawy, na przykład jakich zwierząt unikać albo czy jazda na snowboardzie nago jest dobrym pomysłem”. W jaki zatem sposób możesz oszukać swój mózg i przekonać go, że Twoje życie zależy od znajomości analizy i projektowania obiektowego? Dla kogo jest ta książka? Wiemy, co sobie myślisz Metapoznanie: myślenie o myśleniu Zmuś swój mózg do posłuszeństwa Ważne uwagi Recenzenci techniczni Podziękowania 20 21 23 25 26 28 29  Spis treści 1 Dobrze zaprojektowane aplikacje są super Tu zaczyna się wspaniałe oprogramowanie A zatem, w jaki sposób w praktyce pisze się wspaniałe oprogramowanie? Zawsze bardzo trudno jest określić, od czego należy zacząć. Czy aplikacja faktycznie robi to, co powinna robić i czego od niej oczekujemy? A co z takimi problemami jak powtarzający się kod — przecież to nie może być dobre ani właściwe rozwiązanie, prawda? Zazwyczaj trudno jest określić, które z wielu problemów należy rozwikłać w pierwszej kolejności, a jednocześnie mieć pewność, że podczas wprowadzania poprawek nie popsujemy innych fragmentów aplikacji. Bez obaw. Po zakończeniu lektury tego rozdziału będziesz już dokładnie wiedział, jak pisać doskonałe oprogramowanie, i pewnie podążał w kierunku trwałego poprawienia sposobu tworzenia programów. I w końcu zrozumiesz, dlaczego OOA D to czteroliterowy skrót (pochodzący od angielskich słów: Object-Oriented Analysis and Design, analiza i projektowanie obiektowe), który Twoja matka chciałaby, byś poznał. Niby skąd mam wiedzieć, od czego należy zacząć? Mam wrażenie, że ilekroć zaczynam pracę nad nowym projektem, każdy ma inne zdanie odnośnie tego, co należy zrobić w pierwszej kolejności. Czasami zrobię coś dobrze, lecz czasami kończy się na tym, że muszę przerobić całą aplikację od początku, bo zacząłem w złym miejscu. A ja chcę jedynie pisać świetne oprogramowanie! A zatem, od czego powinienem zacząć pisanie aplikacji dla Ryśka? Rock-and-roll jest wieczny! Nowa elegancka aplikacja Ryśka… Co przede wszystkim zmieniłbyś w aplikacji Ryśka? Doskonałe oprogramowanie… ma więcej niż jedną z wymienionych już cech Wspaniałe oprogramowanie w trzech prostych krokach W pierwszej kolejności skoncentruj się na funkcjonalności Test Szukamy problemów Analiza metody search() Stosuj proste zasady projektowania obiektowego Projekt po raz pierwszy, projekt po raz drugi Jak łatwo można wprowadzać zmiany w Twojej aplikacji? Poddawaj hermetyzacji to, co się zmienia Delegowanie Nareszcie doskonałe oprogramowanie (jak na razie) OOA D ma na celu tworzenie wspaniałego oprogramowania, a nie dodanie Ci papierkowej roboty Kluczowe zagadnienia 32 33 38 40 43 48 53 55 56 61 66 68 71 73 76 79 80  Spis treści 2 Gromadzenie wymagań Daj im to, czego chcą Każdy lubi zadowolonych klientów. Już wiesz, że pierwszy krok w pisaniu doskonałego oprogramowania polega na upewnieniu się, czego chce klient. Ale jak się dowiedzieć, czego klient oczekuje? Co więcej — skąd mieć pewność, że klient w ogóle wie, czego tak naprawdę chce? Właśnie wówczas na arenę wkraczają „dobre wymagania”. W tym rozdziale dowiesz się, w jaki sposób zadowolić klientów, upewniając się, że dostarczysz im właśnie to, czego chcą. Kiedy skończysz lekturę, wszystkie swoje projekty będziesz mógł opatrzyć etykietą „Satysfakcja gwarantowana” i posuniesz się o kolejny krok na drodze do tworzenia doskonałego oprogramowania… i to za każdym razem. Nadszedł czas na kolejny pokaz Twych programistycznych umiejętności Test programu Nieprawidłowe zastosowanie (coś w tym stylu) Czym jest wymaganie? Tworzenie listy wymagań Zaplanuj, co może się popsuć w systemie Problemy w działaniu systemu są obsługiwane przez ścieżki alternatywne (Ponowne) przedstawienie przypadku użycia Jeden przypadek użycia, trzy części Porównaj wymagania z przypadkami użycia Twój system musi działać w praktyce Poznajemy Szczęśliwą Ścieżkę Przybornik projektanta 84 87 89 90 92 96 98 100 102 106 113 120 134 Drzwiczki dla psa oraz pilot stanowią elementy systemu, bądź też znajdują się wewnątrz niego. System  Spis treści 3 Wymagania ulegają zmianom Kocham cię, jesteś doskonały… A teraz — zmień się Sądzisz, że dowiedziałeś się już wszystkiego o tym, czego chciał klient? Nie tak szybko… A zatem przeprowadziłeś rozmowy z klientem, zgromadziłeś wymagania, napisałeś przypadki użycia, napisałeś i dostarczyłeś klientowi odlotową aplikację. W końcu nadszedł czas na miłego, relaksującego drinka, nieprawdaż? Pewnie… aż do momentu gdy klient uzna, że tak naprawdę chce czegoś innego niż to, co Ci powiedział. Bardzo podoba mu się to, co zrobiłeś — poważnie! — jednak obecnie nie jest już w pełni usatysfakcjonowany. W rzeczywistym świecie wymagania zawsze się zmieniają; to Ty musisz sobie z tymi zmianami poradzić i pomimo nich zadbać o zadowolenie klienta. Jesteś bohaterem! Jesteś patałachem! Jedyny pewnik analizy i projektowania obiektowego Ścieżka oryginalna? Ścieżka alternatywna? Kto to wie? Przypadki użycia muszą być zrozumiałe przede wszystkim dla Ciebie Od startu do mety: jeden scenariusz Wyznanie Ścieżki Alternatywnej Uzupełnienie listy wymagań Powielanie kodu jest bardzo złym pomysłem Ostateczny test drzwiczek Napisz swoją własną zasadę projektową! Przybornik projektanta 138 139 141 146 148 150 152 156 164 166 167 168 public void pressButton() { System.out.println(”Naciśnięto przycisk na pilocie...”); if (door.isOpen()) { door.close(); } else { door.open(); final Timer timer = new Timer(); timer.schedule(new TimerTask() { public void run() { door.close(); timer.cancel(); } }, 5000); } class Remote { press- Button() } (cid:60)(cid:79)(cid:87)(cid:89)(cid:94)(cid:79)(cid:24)(cid:84)(cid:75)(cid:96)(cid:75)  Spis treści 4 Analiza Zaczynamy używać naszych aplikacji w rzeczywistym świecie Czas zdać ostatnie egzaminy i zacząć stosować nasze aplikacje w rzeczywistym świecie. Twoje aplikacje muszą robić nieco więcej, niż jedynie działać prawidłowo na komputerze, którego używasz do ich tworzenia — komputerze o dużej mocy i doskonale skonfigurowanym; Twoje aplikacje muszą działać w takich warunkach, w jakich rzeczywiści klienci będą ich używali. W tym rozdziale zastanowimy się, jak zyskać pewność, że nasze aplikacje będą działać w rzeczywistym kontekście. Dowiesz się w nim, w jaki sposób analiza tekstowa może przekształcić stworzony wcześniej przypadek użycia w klasy i metody, które na pewno będą działać zgodnie z oczekiwaniami klienta. A kiedy skończysz lekturę tego rozdziału, także i Ty będziesz mógł powiedzieć: „Dokonałem tego! Moje oprogramowanie jest gotowe do zastosowania w rzeczywistym świecie!”. Kiedy już określiłam, jakich klas i operacji będę potrzebować, odpowiednio zaktualizowałam diagram klas. Jeden pies, dwa psy, trzy psy, cztery… Twoje oprogramowanie ma kontekst Określ przyczynę problemu Zaplanuj rozwiązanie Opowieść o dwóch programistach Delegowanie w kodzie Szymka — analiza szczegółowa Potęga aplikacji, których elementy są ze sobą luźno powiązane Zwracaj uwagę na rzeczowniki występujące w przypadku użycia Od dobrej analizy do dobrych klas… Diagramy klas bez tajemnic Diagramy klas to nie wszystko Kluczowe zagadnienia 170 171 172 173 180 184 186 191 204 206 211 215 W tym kontekście rzeczy przybierają zły obrót znacznie częściej. class DogDoor { open() } DogDoor.java Rzeczywisty Świat W rzeczywistym świecie spotykamy inne psy, koty, gryzonie oraz całą masę innych problemów; a wszystkie te czynniki mają tylko jeden cel — doprowadzić do awarii naszego oprogramowania.  Spis treści 5 (część 1.) Dobry projekt = elastyczne oprogramowanie Nic nie pozostaje wiecznie takie samo Zmiany są nieuniknione. Niezależnie od tego, jak bardzo podoba Ci się Twoje oprogramowanie w jego obecnej postaci, to najprawdopodobniej jutro zostanie ono zmodyfikowane. A im bardziej utrudnisz wprowadzanie modyfikacji w aplikacji, tym trudniej będzie Ci w przyszłości reagować na zmiany potrzeb klienta. W tym rozdziale mamy zamiar odwiedzić naszego starego znajomego oraz spróbować poprawić projekt istniejącego oprogramowania. Na tym przykładzie przekonamy się, jak niewielkie zmiany mogą doprowadzić do poważnych problemów. Prawdę mówiąc, jak się okaże, odkryte przez nas kłopoty będą tak poważne, że ich rozwiązanie będzie wymagało rozdziału składającego się aż z DWÓCH części! 5(przerywnik) Firma Gitary/Instrumenty Strunowe Ryśka rozwija się Klasy abstrakcyjne Diagramy klas bez tajemnic (ponownie) Ściągawka z UML-a Porady dotyczące problemów projektowych Trzy kroki tworzenia wspaniałego oprogramowania (po raz kolejny) 222 225 230 231 237 239 (cid:51)(cid:80)(cid:73)(cid:83)(cid:1)(cid:84)(cid:82)(cid:69)(cid:117)(cid:67)(cid:73) Obiektowa Katastrofa! (cid:56)(cid:75)(cid:84)(cid:76)(cid:75)(cid:92)(cid:78)(cid:100)(cid:83)(cid:79)(cid:84)(cid:10)(cid:90)(cid:89)(cid:90)(cid:95)(cid:86)(cid:75)(cid:92)(cid:88)(cid:99)(cid:10)(cid:91)(cid:95)(cid:83)(cid:100)(cid:10)(cid:97)(cid:10)(cid:57)(cid:76)(cid:83)(cid:79)(cid:85)(cid:94)(cid:89)(cid:97)(cid:83)(cid:79) (cid:63)(cid:88)(cid:83)(cid:85)(cid:75)(cid:88)(cid:83)(cid:79) (cid:92)(cid:99)(cid:100)(cid:99)(cid:85)(cid:75) (cid:61)(cid:184)(cid:75)(cid:97)(cid:88)(cid:83)(cid:10) (cid:90)(cid:92)(cid:89)(cid:84)(cid:79)(cid:85)(cid:94)(cid:75)(cid:88)(cid:77)(cid:83) (cid:53)(cid:89)(cid:88)(cid:93)(cid:94)(cid:92)(cid:95)(cid:85)(cid:77)(cid:84)(cid:79)(cid:10) (cid:95)(cid:210)(cid:99)(cid:97)(cid:75)(cid:88)(cid:79)(cid:10)(cid:10) (cid:97)(cid:10)(cid:85)(cid:89)(cid:78)(cid:100)(cid:83)(cid:79)(cid:10) (cid:63)(cid:94)(cid:92)(cid:100)(cid:99)(cid:87)(cid:75)(cid:88)(cid:83)(cid:79)(cid:10)(cid:10) (cid:83)(cid:10)(cid:97)(cid:83)(cid:79)(cid:86)(cid:89)(cid:85)(cid:92)(cid:89)(cid:94)(cid:88)(cid:79)(cid:10) (cid:95)(cid:210)(cid:99)(cid:77)(cid:83)(cid:79) (cid:56)(cid:79)(cid:92)(cid:97)(cid:83)(cid:77)(cid:75)(cid:10) (cid:89)(cid:90)(cid:92)(cid:89)(cid:81)(cid:92)(cid:75)(cid:87)(cid:89)(cid:97)(cid:75)(cid:88)(cid:83)(cid:75) (cid:14)(cid:27)(cid:26)(cid:26) (cid:14)(cid:27)(cid:26)(cid:26) (cid:14)(cid:27)(cid:26)(cid:26) (cid:14)(cid:27)(cid:26)(cid:26) (cid:14)(cid:27)(cid:26)(cid:26) (cid:14)(cid:28)(cid:26)(cid:26) (cid:14)(cid:28)(cid:26)(cid:26) (cid:14)(cid:28)(cid:26)(cid:26) (cid:14)(cid:28)(cid:26)(cid:26) (cid:14)(cid:28)(cid:26)(cid:26) (cid:14)(cid:29)(cid:26)(cid:26) (cid:14)(cid:29)(cid:26)(cid:26) (cid:14)(cid:29)(cid:26)(cid:26) (cid:14)(cid:29)(cid:26)(cid:26) (cid:14)(cid:29)(cid:26)(cid:26) (cid:14)(cid:30)(cid:26)(cid:26) (cid:14)(cid:30)(cid:26)(cid:26) (cid:14)(cid:30)(cid:26)(cid:26) (cid:14)(cid:30)(cid:26)(cid:26) (cid:14)(cid:30)(cid:26)(cid:26) 10 (cid:18)(cid:20) Spis treści 5(część 2.) Dobry projekt = elastyczne oprogramowanie Zabierz swoje oprogramowanie na 30-minutowy trening Czy kiedykolwiek marzyłeś o tym, by być nieco bardziej elastycznym w działaniu? Jeśli kiedykolwiek wpadłeś w kłopoty podczas prób wprowadzania zmian w aplikacji, to zazwyczaj oznacza to, że Twoje oprogramowanie powinno być nieco bardziej elastyczne i odporne. Aby pomóc swojej aplikacji, będziesz musiał przeprowadzić odpowiednią analizę, zastanowić się nad niezbędnymi zmianami w projekcie i dowiedzieć się, w jaki sposób rozluźnić zależności pomiędzy jej elementami. I w końcu, w wielkim finale, przekonasz się, że większa spójność może pomóc w rozwiązaniu problemu powiązań. Brzmi interesująco? A zatem przewróć kartkę — przystępujemy do poprawiania nieelastycznej aplikacji. Wróćmy do aplikacji wyszukiwawczej Ryśka Dokładniejsza analiza metody search() Korzyści, jakie dała nam analiza Dokładniejsza analiza klas instrumentów Śmierć projektu (decyzja) Zmieńmy złe decyzje projektowe na dobre Zastosowanie „podwójnej hermetyzacji” w aplikacji Ryśka Nigdy nie obawiaj się wprowadzania zmian Elastyczna aplikacja Ryśka Testowanie dobrze zaprojektowanej aplikacji Ryśka Jak łatwo można zmodyfikować aplikację Ryśka? Wielki konkurs łatwości modyfikacji Spójna klasa realizuje jedną operację naprawdę dobrze Przegląd zmian wprowadzanych w oprogramowaniu dla Ryśka Doskonałe oprogramowanie to zazwyczaj takie, które jest „wystarczająco dobre” Przybornik projektanta 258 261 262 265 270 271 273 279 282 285 289 290 293 296 298 300 11 Spis treści 6 Rozwiązywanie naprawdę dużych problemów „Nazywam się Art Vandelay… jestem Architektem” Nadszedł czas, by zbudować coś NAPRAWDĘ DUŻEGO. Czy jesteś gotów? Zdobyłeś już wiele narzędzi do swojego projektanckiego przybornika, jednak w jaki sposób z nich skorzystasz, kiedy będziesz musiał napisać coś naprawdę dużego? Cóż, może jeszcze nie zdajesz sobie z tego sprawy, ale dysponujesz wszystkimi narzędziami, jakie mogą być potrzebne do skutecznego rozwiązywania poważnych problemów. Niebawem poznasz kilka nowych narzędzi, takich jak analiza dziedziny oraz diagramy przypadków użycia, jednak nawet one bazują na wiadomościach, które już zdobyłeś, takich jak uważne słuchanie klienta oraz dokładne zrozumienie, co trzeba napisać, zanim jeszcze przystąpimy do faktycznego pisania kodu. Przygotuj się… nadszedł czas, byś sprawdził, jak sobie radzisz w roli architekta. Rozwiązywanie dużych problemów Wszystko zależy od sposobu spojrzenia na duży problem Wymagania i przypadki użycia to dobry punkt wyjściowy… Potrzebujemy znacznie więcej informacji Określanie możliwości Możliwość czy wymaganie Przypadki użycia nie zawsze pomagają ujrzeć ogólny obraz tworzonego oprogramowania Diagramy przypadków użycia (cid:51)(cid:80)(cid:73)(cid:83)(cid:1)(cid:84)(cid:82)(cid:69)(cid:117)(cid:67)(cid:73) Mały aktor Aktorzy to także ludzie (no dobrze… nie zawsze) A zatem zabawmy się w analizę dziedziny! Dziel i rządź Nie zapominaj, kim tak naprawdę jest klient Czym jest wzorzec projektowy? Potęga OOA D (i trochę zdrowego rozsądku) Przybornik projektanta 302 303 308 309 312 314 316 318 323 324 329 331 335 337 340 342 12 Spis treści 7 Architektura Porządkowanie chaosu Gdzieś musisz zacząć, jednak uważaj, żeby wybrać właściwe „gdzieś ”! Już wiesz, jak podzielić swoją aplikację na wiele małych problemów, jednak oznacza to tylko i wyłącznie tyle, iż obecnie nie masz jednego dużego, lecz WIELE małych problemów. W tym rozdziale spróbujemy pomóc Ci w określeniu, gdzie należy zacząć, i upewnimy się, że nie będziesz marnował czasu na zajmowanie się nie tym, co trzeba. Nadeszła pora, by pozbierać te wszystkie drobne kawałki na Twoim biurku i zastanowić się, jak można je przekształcić w uporządkowaną i dobrze zaprojektowaną aplikację. W tym czasie poznasz niesłychanie ważne „trzy P dotyczące architektury” i dowiesz się, że Risk to znacznie więcej niż jedynie słynna gra wojenna z lat 80. Czy czujesz się nieco przytłoczony? Potrzebujemy architektury Zacznijmy od funkcjonalności Co ma znaczenie dla architektury Trzy „P” dotyczące architektury Wszystko sprowadza się do problemu ryzyka Scenariusze pomagają zredukować ryzyko Koncentruj się na jednej możliwości w danej chwili Architektura jest strukturą Twojego projektu Podobieństwa po raz kolejny Analiza podobieństw: ścieżka do elastycznego oprogramowania Co to znaczy? Zapytaj klienta Zmniejszanie ryzyka pomaga pisać wspaniałe oprogramowanie Kluczowe zagadnienia 344 346 349 351 352 358 361 369 371 375 381 386 391 392 (cid:56)(cid:75)(cid:84)(cid:87)(cid:88)(cid:83)(cid:79)(cid:84)(cid:93)(cid:100)(cid:99)(cid:77)(cid:82)(cid:10)(cid:93)(cid:100)(cid:75)(cid:88)(cid:93)(cid:10)(cid:88)(cid:75)(cid:10)(cid:100)(cid:78)(cid:166)(cid:210)(cid:79)(cid:88)(cid:83)(cid:79)(cid:10)(cid:97)(cid:10)(cid:94)(cid:79)(cid:92)(cid:87)(cid:83)(cid:88)(cid:83)(cid:79)(cid:24) (cid:52)(cid:79)(cid:78)(cid:79)(cid:88)(cid:10)(cid:90)(cid:92)(cid:89)(cid:77)(cid:79)(cid:88)(cid:94)(cid:10)(cid:93)(cid:100)(cid:75)(cid:88)(cid:93)(cid:22)(cid:10) (cid:76)(cid:99)(cid:10)(cid:93)(cid:99)(cid:93)(cid:94)(cid:79)(cid:87)(cid:10)(cid:78)(cid:100)(cid:83)(cid:75)(cid:184)(cid:75)(cid:184)(cid:10)(cid:90)(cid:92)(cid:75)(cid:97)(cid:83)(cid:78)(cid:184)(cid:89)(cid:97)(cid:89)(cid:24) (cid:52)(cid:79)(cid:78)(cid:99)(cid:88)(cid:83)(cid:79)(cid:10)(cid:85)(cid:83)(cid:86)(cid:85)(cid:75)(cid:10)(cid:92)(cid:100)(cid:79)(cid:77)(cid:100)(cid:99)(cid:10) (cid:87)(cid:89)(cid:210)(cid:79)(cid:10)(cid:90)(cid:89)(cid:97)(cid:75)(cid:210)(cid:88)(cid:83)(cid:79)(cid:10)(cid:88)(cid:75)(cid:97)(cid:75)(cid:86)(cid:83)(cid:168)(cid:24) (cid:62)(cid:75)(cid:85)(cid:10)(cid:76)(cid:86)(cid:83)(cid:93)(cid:85)(cid:89)(cid:10)(cid:83)(cid:78)(cid:79)(cid:75)(cid:184)(cid:95)(cid:22)(cid:10)(cid:84)(cid:75)(cid:85)(cid:10)(cid:94)(cid:99)(cid:86)(cid:85)(cid:89)(cid:10) (cid:89)(cid:90)(cid:92)(cid:89)(cid:81)(cid:92)(cid:75)(cid:87)(cid:89)(cid:97)(cid:75)(cid:88)(cid:83)(cid:79)(cid:10)(cid:87)(cid:89)(cid:210)(cid:79)(cid:10)(cid:76)(cid:99)(cid:168)(cid:11) 13 class Tile { ge- { ge- tUnit() tUnit() } } (cid:62)(cid:83)(cid:86)(cid:79)(cid:24)(cid:84)(cid:75)(cid:96)(cid:75) (cid:62)(cid:83)(cid:86)(cid:79)(cid:24)(cid:84)(cid:75)(cid:96)(cid:75) (cid:62)(cid:83)(cid:86)(cid:79)(cid:24)(cid:84)(cid:75)(cid:96)(cid:75) (cid:44)(cid:89)(cid:75)(cid:92)(cid:78)(cid:24)(cid:84)(cid:75)(cid:96)(cid:75) (cid:63)(cid:88)(cid:83)(cid:94) (cid:94)(cid:99)(cid:90)(cid:79)(cid:36)(cid:10)(cid:61)(cid:94)(cid:92)(cid:83)(cid:88)(cid:81) (cid:90)(cid:92)(cid:89)(cid:90)(cid:79)(cid:92)(cid:94)(cid:83)(cid:79)(cid:93)(cid:36)(cid:10)(cid:55)(cid:75)(cid:90) (cid:93)(cid:79)(cid:94)(cid:62)(cid:99)(cid:90)(cid:79)(cid:18)(cid:61)(cid:94)(cid:92)(cid:83)(cid:88)(cid:81)(cid:19) (cid:81)(cid:79)(cid:94)(cid:62)(cid:99)(cid:90)(cid:79)(cid:18)(cid:19)(cid:36)(cid:10)(cid:61)(cid:94)(cid:92)(cid:83)(cid:88)(cid:81) (cid:93)(cid:79)(cid:94)(cid:58)(cid:92)(cid:89)(cid:90)(cid:79)(cid:92)(cid:94)(cid:99)(cid:18)(cid:61)(cid:94)(cid:92)(cid:83)(cid:88)(cid:81)(cid:22)(cid:10)(cid:57)(cid:76)(cid:84)(cid:79)(cid:77)(cid:94)(cid:19) (cid:81)(cid:79)(cid:94)(cid:58)(cid:92)(cid:89)(cid:90)(cid:79)(cid:92)(cid:94)(cid:99)(cid:18)(cid:61)(cid:94)(cid:92)(cid:83)(cid:88)(cid:81)(cid:19)(cid:36)(cid:10)(cid:57)(cid:76)(cid:84)(cid:79)(cid:77)(cid:94) class Unit { Unit { Unit() Unit() } } class Board { ge- (cid:63)(cid:88)(cid:83)(cid:94)(cid:24)(cid:84)(cid:75)(cid:96)(cid:75) (cid:63)(cid:88)(cid:83)(cid:94)(cid:24)(cid:84)(cid:75)(cid:96)(cid:75) (cid:63)(cid:88)(cid:83)(cid:94)(cid:24)(cid:84)(cid:75)(cid:96)(cid:75) tUnit() } (cid:92) (cid:92) (cid:94) (cid:94) (cid:79) (cid:79) (cid:87) (cid:87) (cid:23) (cid:23) (cid:89) (cid:89) (cid:85) (cid:85) (cid:99) (cid:99) (cid:100) (cid:100) (cid:99) (cid:99) (cid:60) (cid:60) (cid:10) (cid:10) (cid:83) (cid:83) (cid:85) (cid:85) (cid:86) (cid:86) (cid:79) (cid:79) (cid:83) (cid:83) (cid:65) (cid:65) Spis treści Zasada otwarte- -zamknięte Zasada jednej odpowiedzialności 1 8 Zasady projektowania Oryginalność jest przereklamowana Powielanie jest najlepszą formą unikania głupoty. Nic chyba nie daje większej satysfakcji niż opracowanie całkowicie nowego i oryginalnego rozwiązania problemu, który męczy nas od wielu dni… aż do czasu gdy okaże się, że ktoś rozwikłał ten sam problem już wcześniej, a co gorsza — zrobił to znacznie lepiej niż my. W tym rozdziale przyjrzymy się kilku zasadom projektowania, które udało się sformułować podczas tych wszystkich lat stosowania komputerów, i dowiemy się, w jaki sposób mogą one sprawić, że staniesz się lepszym programistą. Porzuć ambitne myśli o „zrobieniu tego lepiej” — lektura tego rozdziału udowodni Ci, jak pisać programy sprytniej i szybciej. Zasada projektowania — w skrócie Zasada otwarte-zamknięte OCP, krok po kroku Zasada nie powtarzaj się Zasada DRY dotyczy obsługi jednego wymagania w jednym miejscu Zasada jednej odpowiedzialności Wykrywanie wielu odpowiedzialności Przechodzenie od wielu do jednej odpowiedzialności Zasada podstawienia Liskov Studium błędnego sposobu korzystania z dziedziczenia LSP ujawnia ukryte problemy związane ze strukturą dziedziczenia Musi istnieć możliwość zastąpienia typu bazowego jego typem pochodnym Naruszenia LSP sprawiają, że powstający kod staje się mylący Deleguj funkcjonalność do innej klasy Użyj kompozycji, by zebrać niezbędne zachowania z kilku innych klas Agregacja — kompozycja bez nagłego zakończenia Agregacja a kompozycja Dziedziczenie jest jedynie jedną z możliwości Kluczowe zagadnienia Przybornik projektanta 396 397 399 402 404 410 412 415 420 421 422 423 424 426 428 432 433 434 437 438 Zasada nie powtarzaj się Zasada podstawienia Liskov Spis treści 9 Powtarzanie i testowanie Oprogramowanie jest wciąż przeznaczone dla klienta Czas pokazać klientowi, jak bardzo Ci na nim zależy. Nękają Cię szefowie? Klienci są zmartwieni? Udziałowcy wciąż zadają pytanie: „Czy wszystko będzie zrobione na czas?”. Żadna ilość nawet wspaniale zaprojektowanego kodu nie zadowoli Twoich klientów; musisz pokazać im coś działającego. Teraz, kiedy dysponujesz już solidnym przybornikiem z narzędziami do programowania obiektowego, nadszedł czas, byś udowodnił swoim klientom, że pisane przez Ciebie oprogramowanie naprawdę działa. W tym rozdziale poznasz dwa sposoby pracy nad implementacją możliwości funkcjonalnych tworzonego oprogramowania — dzięki nim Twoi klienci poczują błogie ciepło, które sprawi, że powiedzą o Tobie: „O tak, nie ma co do tego wątpliwości, jest właściwą osobą do napisania naszej aplikacji!”. (cid:50)(cid:79)(cid:90)(cid:87)(cid:73)(cid:146)(cid:90)(cid:65)(cid:78)(cid:73)(cid:69)(cid:1)(cid:78)(cid:82)(cid:1)(cid:18)(cid:27)(cid:1)(cid:43)(cid:79)(cid:78)(cid:67)(cid:69)(cid:78)(cid:84)(cid:82)(cid:85)(cid:74)(cid:69)(cid:77)(cid:89)(cid:1)(cid:83)(cid:73)(cid:195)(cid:1)(cid:78)(cid:65)(cid:1)(cid:80)(cid:79)(cid:68)(cid:79)(cid:66)(cid:73)(cid:69)(cid:202)(cid:83)(cid:84)(cid:87)(cid:65)(cid:67)(cid:72)(cid:1)(cid:1) (cid:63)(cid:88)(cid:83)(cid:94) (cid:94)(cid:99)(cid:90)(cid:79)(cid:36)(cid:10)(cid:61)(cid:94)(cid:92)(cid:83)(cid:88)(cid:81) (cid:90)(cid:92)(cid:89)(cid:90)(cid:79)(cid:92)(cid:94)(cid:83)(cid:79)(cid:93)(cid:36)(cid:10)(cid:55)(cid:75)(cid:90) (cid:83)(cid:78)(cid:36)(cid:10)(cid:83)(cid:88)(cid:94)(cid:10) (cid:88)(cid:75)(cid:87)(cid:79)(cid:36)(cid:10)(cid:61)(cid:94)(cid:92)(cid:83)(cid:88)(cid:81)(cid:10) (cid:97)(cid:79)(cid:75)(cid:90)(cid:89)(cid:88)(cid:93)(cid:36)(cid:10)(cid:65)(cid:79)(cid:75)(cid:90)(cid:89)(cid:88)(cid:10)(cid:20)(cid:10) (cid:93)(cid:79)(cid:94)(cid:62)(cid:99)(cid:90)(cid:79)(cid:18)(cid:61)(cid:94)(cid:92)(cid:83)(cid:88)(cid:81)(cid:19) (cid:81)(cid:79)(cid:94)(cid:62)(cid:99)(cid:90)(cid:79)(cid:18)(cid:19)(cid:36)(cid:10)(cid:61)(cid:94)(cid:92)(cid:83)(cid:88)(cid:81) (cid:93)(cid:79)(cid:94)(cid:58)(cid:92)(cid:89)(cid:90)(cid:79)(cid:92)(cid:94)(cid:99)(cid:18)(cid:61)(cid:94)(cid:92)(cid:83)(cid:88)(cid:81)(cid:22)(cid:10)(cid:57)(cid:76)(cid:84)(cid:79)(cid:77)(cid:94)(cid:19) (cid:81)(cid:79)(cid:94)(cid:58)(cid:92)(cid:89)(cid:90)(cid:79)(cid:92)(cid:94)(cid:99)(cid:18)(cid:61)(cid:94)(cid:92)(cid:83)(cid:88)(cid:81)(cid:19)(cid:36)(cid:10)(cid:57)(cid:76)(cid:84)(cid:79)(cid:77)(cid:94) (cid:81)(cid:79)(cid:94)(cid:51)(cid:78)(cid:18)(cid:19)(cid:36)(cid:10)(cid:83)(cid:88)(cid:94)(cid:10) (cid:93)(cid:79)(cid:94)(cid:56)(cid:75)(cid:87)(cid:79)(cid:18)(cid:61)(cid:94)(cid:92)(cid:83)(cid:88)(cid:81)(cid:19)(cid:10) (cid:81)(cid:79)(cid:94)(cid:56)(cid:75)(cid:87)(cid:79)(cid:18)(cid:19)(cid:36)(cid:10)(cid:61)(cid:94)(cid:92)(cid:83)(cid:88)(cid:81)(cid:10) (cid:75)(cid:78)(cid:78)(cid:65)(cid:79)(cid:75)(cid:90)(cid:89)(cid:88)(cid:18)(cid:65)(cid:79)(cid:75)(cid:90)(cid:89)(cid:88)(cid:19)(cid:10) (cid:81)(cid:79)(cid:94)(cid:65)(cid:79)(cid:75)(cid:90)(cid:89)(cid:88)(cid:93)(cid:18)(cid:19)(cid:36)(cid:10)(cid:65)(cid:79)(cid:75)(cid:90)(cid:89)(cid:88)(cid:93)(cid:10)(cid:20)(cid:10) (cid:55)(cid:83)(cid:90)(cid:89)(cid:83)(cid:84)(cid:75)(cid:73)(cid:69)(cid:0)(cid:87)(cid:142)(cid:65)(cid:119)(cid:67)(cid:73)(cid:87)(cid:79)(cid:119)(cid:67)(cid:73)(cid:12)(cid:0) (cid:75)(cid:84)(cid:206)(cid:82)(cid:69)(cid:0)(cid:83)(cid:148)(cid:0)(cid:87)(cid:83)(cid:80)(cid:206)(cid:76)(cid:78)(cid:69)(cid:0)(cid:68)(cid:76)(cid:65)(cid:0) (cid:87)(cid:83)(cid:90)(cid:89)(cid:83)(cid:84)(cid:75)(cid:73)(cid:67)(cid:72)(cid:0)(cid:74)(cid:69)(cid:68)(cid:78)(cid:79)(cid:83)(cid:84)(cid:69)(cid:75)(cid:12)(cid:0) (cid:90)(cid:79)(cid:83)(cid:84)(cid:65)(cid:142)(cid:89)(cid:0)(cid:80)(cid:82)(cid:90)(cid:69)(cid:68)(cid:83)(cid:84)(cid:65)(cid:87)(cid:73)(cid:79)(cid:78)(cid:69)(cid:0) (cid:87)(cid:0)(cid:75)(cid:76)(cid:65)(cid:83)(cid:73)(cid:69)(cid:0)(cid:53)(cid:78)(cid:73)(cid:84)(cid:0)(cid:87)(cid:0)(cid:70)(cid:79)(cid:82)(cid:77)(cid:73)(cid:69)(cid:0) (cid:79)(cid:68)(cid:82)(cid:197)(cid:66)(cid:78)(cid:89)(cid:67)(cid:72)(cid:0)(cid:90)(cid:77)(cid:73)(cid:69)(cid:78)(cid:78)(cid:89)(cid:67)(cid:72)(cid:14) (cid:51)(cid:90)(cid:89)(cid:77)(cid:69)(cid:75)(cid:0)(cid:68)(cid:79)(cid:83)(cid:90)(cid:69)(cid:68)(cid:142)(cid:0) (cid:68)(cid:79)(cid:0)(cid:87)(cid:78)(cid:73)(cid:79)(cid:83)(cid:75)(cid:85)(cid:12)(cid:0)(cid:154)(cid:69)(cid:0) (cid:73)(cid:68)(cid:69)(cid:78)(cid:84)(cid:89)(cid:70)(cid:73)(cid:75)(cid:65)(cid:84)(cid:79)(cid:82)(cid:0)(cid:74)(cid:69)(cid:68)(cid:78)(cid:79)(cid:83)(cid:84)(cid:75)(cid:73)(cid:0) (cid:66)(cid:197)(cid:68)(cid:90)(cid:73)(cid:69)(cid:0)(cid:79)(cid:75)(cid:82)(cid:69)(cid:119)(cid:76)(cid:65)(cid:78)(cid:89)(cid:0) (cid:87)(cid:0)(cid:75)(cid:79)(cid:78)(cid:83)(cid:84)(cid:82)(cid:85)(cid:75)(cid:84)(cid:79)(cid:82)(cid:90)(cid:69)(cid:0)(cid:75)(cid:76)(cid:65)(cid:83)(cid:89)(cid:0) (cid:53)(cid:78)(cid:73)(cid:84)(cid:12)(cid:0)(cid:65)(cid:0)(cid:90)(cid:65)(cid:84)(cid:69)(cid:77)(cid:0)(cid:78)(cid:73)(cid:69)(cid:0)(cid:77)(cid:65)(cid:0) (cid:80)(cid:79)(cid:84)(cid:82)(cid:90)(cid:69)(cid:66)(cid:89)(cid:0)(cid:68)(cid:69)(cid:70)(cid:73)(cid:78)(cid:73)(cid:79)(cid:87)(cid:65)(cid:78)(cid:73)(cid:65)(cid:0) (cid:79)(cid:68)(cid:82)(cid:197)(cid:66)(cid:78)(cid:69)(cid:74)(cid:0)(cid:77)(cid:69)(cid:84)(cid:79)(cid:68)(cid:89)(cid:0)(cid:83)(cid:69)(cid:84)(cid:41)(cid:68)(cid:8)(cid:9)(cid:14) (cid:36)(cid:76)(cid:65)(cid:0)(cid:75)(cid:65)(cid:154)(cid:68)(cid:69)(cid:74)(cid:0)(cid:90)(cid:0)(cid:78)(cid:79)(cid:87)(cid:89)(cid:67)(cid:72)(cid:0) (cid:87)(cid:142)(cid:65)(cid:119)(cid:67)(cid:73)(cid:87)(cid:79)(cid:119)(cid:67)(cid:73)(cid:0)(cid:75)(cid:76)(cid:65)(cid:83)(cid:89)(cid:0) (cid:51)(cid:90)(cid:89)(cid:77)(cid:69)(cid:75)(cid:0)(cid:90)(cid:68)(cid:69)(cid:70)(cid:73)(cid:78)(cid:73)(cid:79)(cid:87)(cid:65)(cid:142)(cid:0) (cid:79)(cid:68)(cid:80)(cid:79)(cid:87)(cid:73)(cid:69)(cid:68)(cid:78)(cid:73)(cid:148)(cid:0)(cid:80)(cid:65)(cid:82)(cid:197)(cid:0)(cid:77)(cid:69)(cid:84)(cid:79)(cid:68)(cid:14) Twój przybornik narzędziowy powoli się wypełnia Wspaniałe oprogramowanie tworzy się iteracyjnie Schodzenie w głąb: dwie proste opcje Programowanie w oparciu o możliwości Programowanie w oparciu o przypadki użycia Dwa podejścia do tworzenia oprogramowania Analiza możliwości Pisanie scenariuszy testowych Programowanie w oparciu o testy Podobieństwa po raz wtóry Kładziemy nacisk na podobieństwa Hermetyzujemy wszystko Dopasuj testy do projektu Testy bez tajemnic… Udowodnij klientowi, że wszystko idzie dobrze Jak dotąd używaliśmy programowania w oparciu o kontrakt Tak naprawdę programowanie w oparciu o kontrakt dotyczy zaufania Programowanie defensywne Podziel swoją aplikację na mniejsze fragmenty funkcjonalności Kluczowe zagadnienia Przybornik projektanta 442 444 445 446 447 448 452 455 458 460 464 466 470 472 478 480 481 482 491 493 496 (cid:21)(cid:23)(cid:21)(cid:1) (cid:50)(cid:79)(cid:90)(cid:68)(cid:90)(cid:73)(cid:65)(cid:140)(cid:1)(cid:26)(cid:15) 1 Spis treści 10 Proces projektowania i analizy obiektowej Scalając to wszystko w jedno Czy dotarliśmy już do celu? Poświęciliśmy sporo czasu i wysiłku, by poznać wiele różnych sposobów pozwalających poprawić jakość tworzonego oprogramowania; teraz jednak nadeszła pora, by połączyć i podsumować wszystkie zdobyte informacje. Na to właśnie czekałeś: mamy zamiar zebrać wszystko, czego się nauczyłeś, i pokazać Ci, że wszystkie te informacje stanowią części jednego procesu, którego możesz wielokrotnie używać, by tworzyć wspaniałe oprogramowanie. (cid:51)(cid:80)(cid:73)(cid:83)(cid:1)(cid:84)(cid:82)(cid:69)(cid:117)(cid:67)(cid:73) Tworzenie oprogramowania w stylu obiektowym Trans-Obiektów Mapa metra w Obiektowie Lista możliwości Przypadki użycia odpowiadają zastosowaniu, możliwości odpowiadają funkcjonalności A teraz zacznij powtarzać te same czynności Dokładniejsza analiza sposobu reprezentacji sieci metra Używać klasy Line czy też nie używać... oto jest pytanie Najważniejsze sprawy związane z klasą Subway Ochrona własnych klas Czas na przerwę Wróćmy znowu do etapu określania wymagań Koncentruj się na kodzie, a potem na klientach Powtarzanie sprawia, że problemy stają się łatwiejsze Jak wygląda trasa? Samemu sprawdź Przewodnik Komunikacyjny po Obiektowie Ktoś chętny na trzeci cykl prac? Podróż jeszcze nie dobiegła końca… 500 504 506 509 515 519 521 530 536 539 547 549 551 555 560 564 567 569 Rozmowa z klientem (cid:54)(cid:83)(cid:93)(cid:94)(cid:75)(cid:10) (cid:54)(cid:83)(cid:93)(cid:94)(cid:75)(cid:10) (cid:87)(cid:89)(cid:210)(cid:86)(cid:83)(cid:97)(cid:89)(cid:196)(cid:77)(cid:83) (cid:87)(cid:89)(cid:210)(cid:86)(cid:83)(cid:97)(cid:89)(cid:196)(cid:77)(cid:83) (cid:87)(cid:89)(cid:210)(cid:86)(cid:83)(cid:97)(cid:89)(cid:196)(cid:77)(cid:83) (cid:87)(cid:89)(cid:210)(cid:86)(cid:83)(cid:97)(cid:89)(cid:196)(cid:77)(cid:83) (cid:87)(cid:89)(cid:210)(cid:86)(cid:83)(cid:97)(cid:89)(cid:196)(cid:77)(cid:83) (cid:87)(cid:89)(cid:210)(cid:86)(cid:83)(cid:97)(cid:89)(cid:196)(cid:77)(cid:83) (cid:46)(cid:83)(cid:75)(cid:81)(cid:92)(cid:75)(cid:87)(cid:99)(cid:10) (cid:46)(cid:83)(cid:75)(cid:81)(cid:92)(cid:75)(cid:87)(cid:99)(cid:10) (cid:46)(cid:83)(cid:75)(cid:81)(cid:92)(cid:75)(cid:87)(cid:99)(cid:10) (cid:90)(cid:92)(cid:100)(cid:99)(cid:90)(cid:75)(cid:78)(cid:85)(cid:156)(cid:97)(cid:10)(cid:95)(cid:210)(cid:99)(cid:77)(cid:83)(cid:75) (cid:90)(cid:92)(cid:100)(cid:99)(cid:90)(cid:75)(cid:78)(cid:85)(cid:156)(cid:97)(cid:10)(cid:95)(cid:210)(cid:99)(cid:77)(cid:83)(cid:75) (cid:90)(cid:92)(cid:100)(cid:99)(cid:90)(cid:75)(cid:78)(cid:85)(cid:156)(cid:97)(cid:10)(cid:95)(cid:210)(cid:99)(cid:77)(cid:83)(cid:75) (cid:90)(cid:92)(cid:100)(cid:99)(cid:90)(cid:75)(cid:78)(cid:85)(cid:156)(cid:97)(cid:10)(cid:95)(cid:210)(cid:99)(cid:77)(cid:83)(cid:75) Lista kluczowych możliwości Lista kluczowych możliwości Lista kluczowych możliwości Zewnętrzny czynnik Zewnętrzny czynnik Zewnętrzny czynnik Zewnętrzny czynnik Zewnętrzny czynnik Zewnętrzny czynnik Analiza Analiza Analiza Analiza Architektura Architektura Architektura Architektura (cid:58)(cid:89)(cid:78)(cid:100)(cid:83)(cid:75)(cid:184)(cid:10)(cid:90)(cid:92)(cid:89)(cid:76)(cid:86)(cid:79)(cid:87)(cid:95) (cid:58)(cid:89)(cid:78)(cid:100)(cid:83)(cid:75)(cid:184)(cid:10)(cid:90)(cid:92)(cid:89)(cid:76)(cid:86)(cid:79)(cid:87)(cid:95) (cid:58)(cid:89)(cid:78)(cid:100)(cid:83)(cid:75)(cid:184)(cid:10)(cid:90)(cid:92)(cid:89)(cid:76)(cid:86)(cid:79)(cid:87)(cid:95) (cid:58)(cid:89)(cid:78)(cid:100)(cid:83)(cid:75)(cid:184)(cid:10)(cid:90)(cid:92)(cid:89)(cid:76)(cid:86)(cid:79)(cid:87)(cid:95) (cid:58)(cid:89)(cid:78)(cid:100)(cid:83)(cid:75)(cid:184)(cid:10)(cid:90)(cid:92)(cid:89)(cid:76)(cid:86)(cid:79)(cid:87)(cid:95) (cid:58)(cid:89)(cid:78)(cid:100)(cid:83)(cid:75)(cid:184)(cid:10)(cid:90)(cid:92)(cid:89)(cid:76)(cid:86)(cid:79)(cid:87)(cid:95) (cid:58)(cid:89)(cid:78)(cid:100)(cid:83)(cid:75)(cid:184)(cid:10)(cid:90)(cid:92)(cid:89)(cid:76)(cid:86)(cid:79)(cid:87)(cid:95) (cid:58)(cid:89)(cid:78)(cid:100)(cid:83)(cid:75)(cid:184)(cid:10)(cid:90)(cid:92)(cid:89)(cid:76)(cid:86)(cid:79)(cid:87)(cid:95) (cid:58)(cid:89)(cid:78)(cid:100)(cid:83)(cid:75)(cid:184)(cid:10)(cid:90)(cid:92)(cid:89)(cid:76)(cid:86)(cid:79)(cid:87)(cid:95) (cid:58)(cid:89)(cid:78)(cid:100)(cid:83)(cid:75)(cid:184)(cid:10)(cid:90)(cid:92)(cid:89)(cid:76)(cid:86)(cid:79)(cid:87)(cid:95) (cid:58)(cid:89)(cid:78)(cid:100)(cid:83)(cid:75)(cid:184)(cid:10)(cid:90)(cid:92)(cid:89)(cid:76)(cid:86)(cid:79)(cid:87)(cid:95) (cid:65)(cid:99)(cid:87)(cid:75)(cid:81)(cid:75)(cid:88)(cid:83)(cid:75) (cid:65)(cid:99)(cid:87)(cid:75)(cid:81)(cid:75)(cid:88)(cid:83)(cid:75) (cid:65)(cid:99)(cid:87)(cid:75)(cid:81)(cid:75)(cid:88)(cid:83)(cid:75) (cid:65)(cid:99)(cid:87)(cid:75)(cid:81)(cid:75)(cid:88)(cid:83)(cid:75) (cid:65)(cid:99)(cid:87)(cid:75)(cid:81)(cid:75)(cid:88)(cid:83)(cid:75) (cid:65)(cid:99)(cid:87)(cid:75)(cid:81)(cid:75)(cid:88)(cid:83)(cid:75) (cid:65)(cid:99)(cid:87)(cid:75)(cid:81)(cid:75)(cid:88)(cid:83)(cid:75) (cid:65)(cid:99)(cid:87)(cid:75)(cid:81)(cid:75)(cid:88)(cid:83)(cid:75) (cid:65)(cid:99)(cid:87)(cid:75)(cid:81)(cid:75)(cid:88)(cid:83)(cid:75) (cid:65)(cid:99)(cid:87)(cid:75)(cid:81)(cid:75)(cid:88)(cid:83)(cid:75) (cid:65)(cid:99)(cid:87)(cid:75)(cid:81)(cid:75)(cid:88)(cid:83)(cid:75) (cid:65)(cid:99)(cid:87)(cid:75)(cid:81)(cid:75)(cid:88)(cid:83)(cid:75) (cid:65)(cid:99)(cid:87)(cid:75)(cid:81)(cid:75)(cid:88)(cid:83)(cid:75) (cid:65)(cid:99)(cid:87)(cid:75)(cid:81)(cid:75)(cid:88)(cid:83)(cid:75) (cid:65)(cid:99)(cid:87)(cid:75)(cid:81)(cid:75)(cid:88)(cid:83)(cid:75) (cid:65)(cid:99)(cid:87)(cid:75)(cid:81)(cid:75)(cid:88)(cid:83)(cid:75) (cid:65)(cid:99)(cid:87)(cid:75)(cid:81)(cid:75)(cid:88)(cid:83)(cid:75) (cid:65)(cid:99)(cid:87)(cid:75)(cid:81)(cid:75)(cid:88)(cid:83)(cid:75) (cid:58)(cid:89)(cid:78)(cid:100)(cid:83)(cid:75)(cid:184)(cid:10)(cid:90)(cid:92)(cid:89)(cid:76)(cid:86)(cid:79)(cid:87)(cid:95) (cid:65)(cid:99)(cid:87)(cid:75)(cid:81)(cid:75)(cid:88)(cid:83)(cid:75) Podobieństwa Podobieństwa Podobieństwa Podobieństwa Podobieństwa Podobieństwa Podobieństwa Hermetyzacja Hermetyzacja Ścieżka alternatywna Ścieżka alternatywna Ścieżka alternatywna Z e w n ę t r z n y c z y n n i k i n i c j u j ą c y L i s t a k l u c z o w y c h m o ż l i w o ś c i L i s t a k l u c z o w y c h m o ż l i w o ś c i L i s t a k l u c z o w y c h m o ż l i w o ś c i L i s t a k l u c z o w y c h m o ż l i w o ś c i L i s t a k l u c z o w y c h m o ż l i w o ś c i L i s t a k l u c z o w y c h m o ż l i w o ś c i L i s t a k l u c z o w y c h m o ż l i w o ś c i L i s t a k l u c z o w y c h m o ż l i w o ś c i L i s t a k l u c z o w y c h m o ż l i w o ś c i L i s t a k l u c z o w y c h m o ż l i w o ś c i L i s t a k l u c z o w y c h m o ż l i w o ś c i L i s t a k l u c z o w y c h m o ż l i w o ś c i L i s t a k l u c z o w y c h m o ż l i w o ś c i L i s t a k l u c z o w y c h m o ż l i w o ś c i L i s t a k l u c z o w y c h m o ż l i w o ś c i L i s t a k l u c z o w y c h m o ż l i w o ś c i L i s t a k l u c z o w y c h m o ż l i w o ś c i L i s t a k l u c z o w y c h m o ż l i w o ś c i L i s t a k l u c z o w y c h m o ż l i w o ś c i Wzorzec projektowy Wzorzec projektowy Wzorzec projektowy Wzorzec projektowy Wzorzec projektowy Wzorzec projektowy Wzorzec projektowy Wzorzec projektowy Wzorzec projektowy Scenariusz Scenariusz P o w t ó r z e n i e(cid:43)(cid:88)(cid:75)(cid:86)(cid:83)(cid:100)(cid:75)(cid:10)(cid:78)(cid:100)(cid:83)(cid:79)(cid:78)(cid:100)(cid:83)(cid:88)(cid:99) (cid:43)(cid:88)(cid:75)(cid:86)(cid:83)(cid:100)(cid:75)(cid:10)(cid:78)(cid:100)(cid:83)(cid:79)(cid:78)(cid:100)(cid:83)(cid:88)(cid:99) (cid:43)(cid:88)(cid:75)(cid:86)(cid:83)(cid:100)(cid:75)(cid:10)(cid:78)(cid:100)(cid:83)(cid:79)(cid:78)(cid:100)(cid:83)(cid:88)(cid:99) (cid:43)(cid:88)(cid:75)(cid:86)(cid:83)(cid:100)(cid:75)(cid:10)(cid:78)(cid:100)(cid:83)(cid:79)(cid:78)(cid:100)(cid:83)(cid:88)(cid:99) (cid:43)(cid:88)(cid:75)(cid:86)(cid:83)(cid:100)(cid:75)(cid:10)(cid:78)(cid:100)(cid:83)(cid:79)(cid:78)(cid:100)(cid:83)(cid:88)(cid:99) (cid:43)(cid:88)(cid:75)(cid:86)(cid:83)(cid:100)(cid:75)(cid:10)(cid:78)(cid:100)(cid:83)(cid:79)(cid:78)(cid:100)(cid:83)(cid:88)(cid:99) (cid:43)(cid:88)(cid:75)(cid:86)(cid:83)(cid:100)(cid:75)(cid:10)(cid:78)(cid:100)(cid:83)(cid:79)(cid:78)(cid:100)(cid:83)(cid:88)(cid:99) (cid:43)(cid:88)(cid:75)(cid:86)(cid:83)(cid:100)(cid:75)(cid:10)(cid:78)(cid:100)(cid:83)(cid:79)(cid:78)(cid:100)(cid:83)(cid:88)(cid:99) (cid:43)(cid:88)(cid:75)(cid:86)(cid:83)(cid:100)(cid:75)(cid:10)(cid:78)(cid:100)(cid:83)(cid:79)(cid:78)(cid:100)(cid:83)(cid:88)(cid:99) (cid:43)(cid:88)(cid:75)(cid:86)(cid:83)(cid:100)(cid:75)(cid:10)(cid:78)(cid:100)(cid:83)(cid:79)(cid:78)(cid:100)(cid:83)(cid:88)(cid:99) (cid:43)(cid:88)(cid:75)(cid:86)(cid:83)(cid:100)(cid:75)(cid:10)(cid:78)(cid:100)(cid:83)(cid:79)(cid:78)(cid:100)(cid:83)(cid:88)(cid:99) (cid:43)(cid:88)(cid:75)(cid:86)(cid:83)(cid:100)(cid:75)(cid:10)(cid:78)(cid:100)(cid:83)(cid:79)(cid:78)(cid:100)(cid:83)(cid:88)(cid:99) (cid:43)(cid:88)(cid:75)(cid:86)(cid:83)(cid:100)(cid:75)(cid:10)(cid:78)(cid:100)(cid:83)(cid:79)(cid:78)(cid:100)(cid:83)(cid:88)(cid:99) (cid:43)(cid:88)(cid:75)(cid:86)(cid:83)(cid:100)(cid:75)(cid:10)(cid:78)(cid:100)(cid:83)(cid:79)(cid:78)(cid:100)(cid:83)(cid:88)(cid:99) (cid:43)(cid:88)(cid:75)(cid:86)(cid:83)(cid:100)(cid:75)(cid:10)(cid:78)(cid:100)(cid:83)(cid:79)(cid:78)(cid:100)(cid:83)(cid:88)(cid:99) (cid:43)(cid:88)(cid:75)(cid:86)(cid:83)(cid:100)(cid:75)(cid:10)(cid:78)(cid:100)(cid:83)(cid:79)(cid:78)(cid:100)(cid:83)(cid:88)(cid:99) (cid:43)(cid:88)(cid:75)(cid:86)(cid:83)(cid:100)(cid:75)(cid:10)(cid:78)(cid:100)(cid:83)(cid:79)(cid:78)(cid:100)(cid:83)(cid:88)(cid:99) (cid:43)(cid:88)(cid:75)(cid:86)(cid:83)(cid:100)(cid:75)(cid:10)(cid:78)(cid:100)(cid:83)(cid:79)(cid:78)(cid:100)(cid:83)(cid:88)(cid:99) (cid:43)(cid:88)(cid:75)(cid:86)(cid:83)(cid:100)(cid:75)(cid:10)(cid:78)(cid:100)(cid:83)(cid:79)(cid:78)(cid:100)(cid:83)(cid:88)(cid:99) (cid:43)(cid:88)(cid:75)(cid:86)(cid:83)(cid:100)(cid:75)(cid:10)(cid:78)(cid:100)(cid:83)(cid:79)(cid:78)(cid:100)(cid:83)(cid:88)(cid:99) (cid:43)(cid:88)(cid:75)(cid:86)(cid:83)(cid:100)(cid:75)(cid:10)(cid:78)(cid:100)(cid:83)(cid:79)(cid:78)(cid:100)(cid:83)(cid:88)(cid:99) (cid:43)(cid:88)(cid:75)(cid:86)(cid:83)(cid:100)(cid:75)(cid:10)(cid:78)(cid:100)(cid:83)(cid:79)(cid:78)(cid:100)(cid:83)(cid:88)(cid:99) (cid:43)(cid:88)(cid:75)(cid:86)(cid:83)(cid:100)(cid:75)(cid:10)(cid:78)(cid:100)(cid:83)(cid:79)(cid:78)(cid:100)(cid:83)(cid:88)(cid:99) (cid:58)(cid:92)(cid:89)(cid:84)(cid:79)(cid:85)(cid:94)(cid:10)(cid:97)(cid:93)(cid:94)(cid:176)(cid:90)(cid:88)(cid:99) (cid:58)(cid:92)(cid:89)(cid:84)(cid:79)(cid:85)(cid:94)(cid:10)(cid:97)(cid:93)(cid:94)(cid:176)(cid:90)(cid:88)(cid:99) (cid:58)(cid:92)(cid:89)(cid:84)(cid:79)(cid:85)(cid:94)(cid:10)(cid:97)(cid:93)(cid:94)(cid:176)(cid:90)(cid:88)(cid:99) (cid:58)(cid:92)(cid:89)(cid:84)(cid:79)(cid:85)(cid:94)(cid:10)(cid:97)(cid:93)(cid:94)(cid:176)(cid:90)(cid:88)(cid:99) (cid:58)(cid:92)(cid:89)(cid:84)(cid:79)(cid:85)(cid:94)(cid:10)(cid:97)(cid:93)(cid:94)(cid:176)(cid:90)(cid:88)(cid:99) (cid:58)(cid:92)(cid:89)(cid:84)(cid:79)(cid:85)(cid:94)(cid:10)(cid:97)(cid:93)(cid:94)(cid:176)(cid:90)(cid:88)(cid:99) (cid:58)(cid:92)(cid:89)(cid:84)(cid:79)(cid:85)(cid:94)(cid:10)(cid:97)(cid:93)(cid:94)(cid:176)(cid:90)(cid:88)(cid:99) (cid:58)(cid:92)(cid:89)(cid:84)(cid:79)(cid:85)(cid:94)(cid:10)(cid:97)(cid:93)(cid:94)(cid:176)(cid:90)(cid:88)(cid:99) (cid:58)(cid:92)(cid:89)(cid:84)(cid:79)(cid:85)(cid:94)(cid:10)(cid:97)(cid:93)(cid:94)(cid:176)(cid:90)(cid:88)(cid:99) (cid:58)(cid:92)(cid:89)(cid:84)(cid:79)(cid:85)(cid:94)(cid:10)(cid:97)(cid:93)(cid:94)(cid:176)(cid:90)(cid:88)(cid:99) (cid:58)(cid:92)(cid:89)(cid:84)(cid:79)(cid:85)(cid:94)(cid:10)(cid:97)(cid:93)(cid:94)(cid:176)(cid:90)(cid:88)(cid:99) (cid:58)(cid:92)(cid:89)(cid:84)(cid:79)(cid:85)(cid:94)(cid:10)(cid:97)(cid:93)(cid:94)(cid:176)(cid:90)(cid:88)(cid:99) (cid:58)(cid:92)(cid:89)(cid:84)(cid:79)(cid:85)(cid:94)(cid:10)(cid:97)(cid:93)(cid:94)(cid:176)(cid:90)(cid:88)(cid:99) (cid:58)(cid:92)(cid:89)(cid:84)(cid:79)(cid:85)(cid:94)(cid:10)(cid:97)(cid:93)(cid:94)(cid:176)(cid:90)(cid:88)(cid:99) (cid:58)(cid:92)(cid:89)(cid:84)(cid:79)(cid:85)(cid:94)(cid:10)(cid:97)(cid:93)(cid:94)(cid:176)(cid:90)(cid:88)(cid:99) (cid:58)(cid:92)(cid:89)(cid:84)(cid:79)(cid:85)(cid:94)(cid:10)(cid:97)(cid:93)(cid:94)(cid:176)(cid:90)(cid:88)(cid:99) (cid:58)(cid:92)(cid:89)(cid:84)(cid:79)(cid:85)(cid:94)(cid:10)(cid:97)(cid:93)(cid:94)(cid:176)(cid:90)(cid:88)(cid:99) (cid:58)(cid:92)(cid:89)(cid:84)(cid:79)(cid:85)(cid:94)(cid:10)(cid:97)(cid:93)(cid:94)(cid:176)(cid:90)(cid:88)(cid:99) (cid:58)(cid:92)(cid:89)(cid:84)(cid:79)(cid:85)(cid:94)(cid:10)(cid:97)(cid:93)(cid:94)(cid:176)(cid:90)(cid:88)(cid:99) (cid:58)(cid:92)(cid:89)(cid:84)(cid:79)(cid:85)(cid:94)(cid:10)(cid:97)(cid:93)(cid:94)(cid:176)(cid:90)(cid:88)(cid:99) (cid:43)(cid:88)(cid:75)(cid:86)(cid:83)(cid:100)(cid:75)(cid:10)(cid:78)(cid:100)(cid:83)(cid:79)(cid:78)(cid:100)(cid:83)(cid:88)(cid:99) P o w t ó r z e n i e P o w t ó r z e n i e P o w t ó r z e n i e P o w t ó r z e n i e P o w t ó r z e n i e P o w t ó r z e n i e P o w t ó r z e n i e Rozmowa z klientem Rozmowa z klientem Rozmowa z klientem Rozmowa z klientem Rozmowa z klientem Rozmowa z klientem P o w t ó r z e n i e P o w t ó r z e n i e P o w t ó r z e n i e Ścieżka alternatywna Ścieżka alternatywna Ścieżka alternatywna Ścieżka alternatywna Ścieżka alternatywna Ścieżka alternatywna Ścieżka alternatywna Ścieżka alternatywna Ścieżka alternatywna Ścieżka alternatywna Ścieżka alternatywna Ścieżka alternatywna Ścieżka alternatywna Ścieżka alternatywna Ścieżka alternatywna Ścieżka alternatywna Analiza tekstowa Lista wymagańAnaliza tekstowa Lista wymagańAnaliza tekstowa Analiza tekstowa Analiza tekstowa Analiza tekstowa Analiza tekstowa Analiza tekstowa Analiza tekstowa Analiza tekstowa Analiza tekstowa Lista wymagań Lista wymagań Lista wymagań Lista wymagań Lista wymagań Lista wymagań Lista wymagań Lista wymagań Spójność Spójność Spójność Spójność Spójność Spójność Spójność Spójność P o w t ó r z e n i e P o w t ó r z e n i e P o w t ó r z e n i e P o w t ó r z e n i e P o w t ó r z e n i e P o w t ó r z e n i e Architektura Architektura Zasady projektowe Zasady projektowe Zasady projektowe Zasady projektowe Zasady projektowe Różnice Różnice Delegowanie Delegowanie Delegowanie Delegowanie Delegowanie Delegowanie Delegowanie Delegowanie Delegowanie Delegowanie Z a s a d y p r o j e k t o w a n i a o b i e k t o w e g o Z a s a d y p r o j e k t o w a n i a o b i e k t o w e g o Z a s a d y p r o j e k t o w a n i a o b i e k t o w e g o (cid:46)(cid:89)(cid:93)(cid:94)(cid:75)(cid:92)(cid:77)(cid:100)(cid:79)(cid:88)(cid:83)(cid:79) (cid:46)(cid:89)(cid:93)(cid:94)(cid:75)(cid:92)(cid:77)(cid:100)(cid:79)(cid:88)(cid:83)(cid:79) (cid:46)(cid:89)(cid:93)(cid:94)(cid:75)(cid:92)(cid:77)(cid:100)(cid:79)(cid:88)(cid:83)(cid:79) (cid:46)(cid:89)(cid:93)(cid:94)(cid:75)(cid:92)(cid:77)(cid:100)(cid:79)(cid:88)(cid:83)(cid:79) (cid:46)(cid:89)(cid:93)(cid:94)(cid:75)(cid:92)(cid:77)(cid:100)(cid:79)(cid:88)(cid:83)(cid:79) (cid:46)(cid:89)(cid:93)(cid:94)(cid:75)(cid:92)(cid:77)(cid:100)(cid:79)(cid:88)(cid:83)(cid:79) (cid:46)(cid:89)(cid:93)(cid:94)(cid:75)(cid:92)(cid:77)(cid:100)(cid:79)(cid:88)(cid:83)(cid:79) (cid:46)(cid:89)(cid:93)(cid:94)(cid:75)(cid:92)(cid:77)(cid:100)(cid:79)(cid:88)(cid:83)(cid:79) (cid:46)(cid:89)(cid:93)(cid:94)(cid:75)(cid:92)(cid:77)(cid:100)(cid:79)(cid:88)(cid:83)(cid:79) (cid:46)(cid:89)(cid:93)(cid:94)(cid:75)(cid:92)(cid:77)(cid:100)(cid:79)(cid:88)(cid:83)(cid:79) (cid:46)(cid:89)(cid:93)(cid:94)(cid:75)(cid:92)(cid:77)(cid:100)(cid:79)(cid:88)(cid:83)(cid:79) (cid:46)(cid:89)(cid:93)(cid:94)(cid:75)(cid:92)(cid:77)(cid:100)(cid:79)(cid:88)(cid:83)(cid:79) (cid:46)(cid:89)(cid:93)(cid:94)(cid:75)(cid:92)(cid:77)(cid:100)(cid:79)(cid:88)(cid:83)(cid:79) (cid:46)(cid:89)(cid:93)(cid:94)(cid:75)(cid:92)(cid:77)(cid:100)(cid:79)(cid:88)(cid:83)(cid:79) (cid:46)(cid:89)(cid:93)(cid:94)(cid:75)(cid:92)(cid:77)(cid:100)(cid:79)(cid:88)(cid:83)(cid:79) Wzorzec projektowy Wzorzec projektowy Zasady projektowe Zasady projektowe Zasady projektowe (cid:51)(cid:87)(cid:90)(cid:86)(cid:79)(cid:87)(cid:79)(cid:88)(cid:94)(cid:75)(cid:77)(cid:84)(cid:75) (cid:51)(cid:87)(cid:90)(cid:86)(cid:79)(cid:87)(cid:79)(cid:88)(cid:94)(cid:75)(cid:77)(cid:84)(cid:75) (cid:51)(cid:87)(cid:90)(cid:86)(cid:79)(cid:87)(cid:79)(cid:88)(cid:94)(cid:75)(cid:77)(cid:84)(cid:75) (cid:51)(cid:87)(cid:90)(cid:86)(cid:79)(cid:87)(cid:79)(cid:88)(cid:94)(cid:75)(cid:77)(cid:84)(cid:75) (cid:51)(cid:87)(cid:90)(cid:86)(cid:79)(cid:87)(cid:79)(cid:88)(cid:94)(cid:75)(cid:77)(cid:84)(cid:75) (cid:51)(cid:87)(cid:90)(cid:86)(cid:79)(cid:87)(cid:79)(cid:88)(cid:94)(cid:75)(cid:77)(cid:84)(cid:75) (cid:51)(cid:87)(cid:90)(cid:86)(cid:79)(cid:87)(cid:79)(cid:88)(cid:94)(cid:75)(cid:77)(cid:84)(cid:75) (cid:51)(cid:87)(cid:90)(cid:86)(cid:79)(cid:87)(cid:79)(cid:88)(cid:94)(cid:75)(cid:77)(cid:84)(cid:75) (cid:51)(cid:87)(cid:90)(cid:86)(cid:79)(cid:87)(cid:79)(cid:88)(cid:94)(cid:75)(cid:77)(cid:84)(cid:75) (cid:51)(cid:87)(cid:90)(cid:86)(cid:79)(cid:87)(cid:79)(cid:88)(cid:94)(cid:75)(cid:77)(cid:84)(cid:75) (cid:51)(cid:87)(cid:90)(cid:86)(cid:79)(cid:87)(cid:79)(cid:88)(cid:94)(cid:75)(cid:77)(cid:84)(cid:75) (cid:51)(cid:87)(cid:90)(cid:86)(cid:79)(cid:87)(cid:79)(cid:88)(cid:94)(cid:75)(cid:77)(cid:84)(cid:75) (cid:51)(cid:87)(cid:90)(cid:86)(cid:79)(cid:87)(cid:79)(cid:88)(cid:94)(cid:75)(cid:77)(cid:84)(cid:75) (cid:51)(cid:87)(cid:90)(cid:86)(cid:79)(cid:87)(cid:79)(cid:88)(cid:94)(cid:75)(cid:77)(cid:84)(cid:75) (cid:51)(cid:87)(cid:90)(cid:86)(cid:79)(cid:87)(cid:79)(cid:88)(cid:94)(cid:75)(cid:77)(cid:84)(cid:75) (cid:51)(cid:87)(cid:90)(cid:86)(cid:79)(cid:87)(cid:79)(cid:88)(cid:94)(cid:75)(cid:77)(cid:84)(cid:75) (cid:51)(cid:87)(cid:90)(cid:86)(cid:79)(cid:87)(cid:79)(cid:88)(cid:94)(cid:75)(cid:77)(cid:84)(cid:75) (cid:51)(cid:87)(cid:90)(cid:86)(cid:79)(cid:87)(cid:79)(cid:88)(cid:94)(cid:75)(cid:77)(cid:84)(cid:75) (cid:51)(cid:87)(cid:90)(cid:86)(cid:79)(cid:87)(cid:79)(cid:88)(cid:94)(cid:75)(cid:77)(cid:84)(cid:75) (cid:51)(cid:87)(cid:90)(cid:86)(cid:79)(cid:87)(cid:79)(cid:88)(cid:94)(cid:75)(cid:77)(cid:84)(cid:75) P r o g r a m o w a n i e w o p a r c i u o m o ż l i w o ś c i P r o g r a m o w a n i e w o p a r c i u o m o ż l i w o ś c i P r o g r a m o w a n i e w o p a r c i u o m o ż l i w o ś c i Hermetyzacja Hermetyzacja Hermetyzacja Programowanie w oparciu o testy Programowanie w oparciu o testy Programowanie w oparciu o testy Programowanie w oparciu o testy Programowanie w oparciu o testy Programowanie w oparciu o testy P o w t ó r z e n i e P o w t ó r z e n i e Scenariusz 1 Spis treści A Dodatek A Pozostałości Dziesięć najważniejszych tematów (których nie poruszyliśmy) Możesz nam wierzyć albo i nie, ale to jeszcze nie jest koniec. Owszem, wyobraź sobie, że nawet po przeczytaniu tych 600 stron wciąż możesz jeszcze znaleźć tematy, o których nawet nie wspomnieliśmy. Choć dziesięć zagadnień, jakie mamy zamiar przedstawić w tym dodatku, nie zasługuje na wiele więcej niż krótką wzmiankę, to jednak nie chcieliśmy, byś opuszczał Obiektów bez informacji na ich temat. Teraz będziesz miał nieco więcej tematów do rozmów podczas firmowej imprezy z okazji wygrania telewizyjnego quizu Obiektowa Katastrofa… poza tym któż, od czasu do czasu, nie kocha stymulujących rozmów o analizie i projektowaniu? Kiedy już skończymy, pozostanie jeszcze… następny dodatek… no i oczywiście indeks, i może kilka reklam… ale później dotrzesz wreszcie do końca książki. Obiecujemy. Nr 1. JEST i MA Nr 2. Sposoby zapisu przypadków użycia Nr 3. Antywzorce Nr 4. Karty CRC Nr 5. Metryki Nr 6. Diagramy sekwencji Nr 7. Diagramy stanu Nr 8. Testowania jednostkowe Nr 9. Standardy kodowania i czytelny kod Nr 10. Refaktoryzacja (cid:43)(cid:88)(cid:94)(cid:99)(cid:97)(cid:100)(cid:89)(cid:92)(cid:77)(cid:79) (cid:43)(cid:88)(cid:94)(cid:99)(cid:97)(cid:100)(cid:89)(cid:92)(cid:77)(cid:79)(cid:10)(cid:93)(cid:166)(cid:10)(cid:90)(cid:92)(cid:100)(cid:79)(cid:77)(cid:83)(cid:97)(cid:83)(cid:79)(cid:186)(cid:93)(cid:94)(cid:97)(cid:79)(cid:87)(cid:10)(cid:97)(cid:100)(cid:89)(cid:92)(cid:77)(cid:156)(cid:97)(cid:10)(cid:90)(cid:92)(cid:89)(cid:84)(cid:79)(cid:85)(cid:94)(cid:89)(cid:97)(cid:99)(cid:77)(cid:82)(cid:36)(cid:10) (cid:93)(cid:94)(cid:75)(cid:88)(cid:89)(cid:97)(cid:83)(cid:166)(cid:10)(cid:89)(cid:88)(cid:79)(cid:10)(cid:77)(cid:100)(cid:176)(cid:93)(cid:94)(cid:89)(cid:10)(cid:93)(cid:94)(cid:89)(cid:93)(cid:89)(cid:97)(cid:75)(cid:88)(cid:79)(cid:10)(cid:68)(cid:183)(cid:47)(cid:10)(cid:92)(cid:89)(cid:100)(cid:97)(cid:83)(cid:166)(cid:100)(cid:75)(cid:88)(cid:83)(cid:75)(cid:10) (cid:90)(cid:79)(cid:97)(cid:88)(cid:99)(cid:77)(cid:82)(cid:10)(cid:90)(cid:92)(cid:89)(cid:76)(cid:86)(cid:79)(cid:87)(cid:156)(cid:97)(cid:24)(cid:10)(cid:58)(cid:89)(cid:97)(cid:83)(cid:88)(cid:88)(cid:83)(cid:196)(cid:87)(cid:99)(cid:10)(cid:76)(cid:99)(cid:168)(cid:10)(cid:97)(cid:10)(cid:93)(cid:94)(cid:75)(cid:88)(cid:83)(cid:79)(cid:10) (cid:92)(cid:89)(cid:100)(cid:90)(cid:89)(cid:100)(cid:88)(cid:75)(cid:97)(cid:75)(cid:168)(cid:10)(cid:94)(cid:79)(cid:10)(cid:88)(cid:83)(cid:79)(cid:76)(cid:79)(cid:100)(cid:90)(cid:83)(cid:79)(cid:77)(cid:100)(cid:88)(cid:79)(cid:10)(cid:90)(cid:95)(cid:184)(cid:75)(cid:90)(cid:85)(cid:83)(cid:10)(cid:83)(cid:10)(cid:95)(cid:88)(cid:83)(cid:85)(cid:75)(cid:168)(cid:10)(cid:83)(cid:77)(cid:82)(cid:24) (cid:51)(cid:80)(cid:73)(cid:83)(cid:1)(cid:84)(cid:82)(cid:69)(cid:117)(cid:67)(cid:73) (cid:53)(cid:86)(cid:75)(cid:93)(cid:75)(cid:36) (cid:36)(cid:79)(cid:71)(cid:36)(cid:79)(cid:79)(cid:82) (cid:57)(cid:90)(cid:83)(cid:93)(cid:36)(cid:10) (cid:50)(cid:69)(cid:80)(cid:82)(cid:69)(cid:90)(cid:69)(cid:78)(cid:84)(cid:85)(cid:74)(cid:69)(cid:0)(cid:70)(cid:65)(cid:75)(cid:84)(cid:89)(cid:67)(cid:90)(cid:78)(cid:69)(cid:0)(cid:68)(cid:82)(cid:90)(cid:87)(cid:73)(cid:67)(cid:90)(cid:75)(cid:73)(cid:0)(cid:68)(cid:76)(cid:65)(cid:0)(cid:80)(cid:83)(cid:65)(cid:14)(cid:0)(cid:51)(cid:84)(cid:65)(cid:78)(cid:79)(cid:87)(cid:73)(cid:0)(cid:73)(cid:78)(cid:84)(cid:69)(cid:82)(cid:70)(cid:69)(cid:74)(cid:83)(cid:0) (cid:90)(cid:65)(cid:80)(cid:69)(cid:87)(cid:78)(cid:73)(cid:65)(cid:74)(cid:148)(cid:67)(cid:89)(cid:0)(cid:77)(cid:79)(cid:154)(cid:76)(cid:73)(cid:87)(cid:79)(cid:119)(cid:193)(cid:0)(cid:75)(cid:79)(cid:82)(cid:90)(cid:89)(cid:83)(cid:84)(cid:65)(cid:78)(cid:73)(cid:65)(cid:0)(cid:90)(cid:0)(cid:85)(cid:82)(cid:90)(cid:148)(cid:68)(cid:90)(cid:69)(cid:204)(cid:0)(cid:83)(cid:80)(cid:82)(cid:90)(cid:197)(cid:84)(cid:79)(cid:87)(cid:89)(cid:67)(cid:72)(cid:0) (cid:75)(cid:79)(cid:78)(cid:84)(cid:82)(cid:79)(cid:76)(cid:85)(cid:74)(cid:148)(cid:67)(cid:89)(cid:67)(cid:72)(cid:0)(cid:68)(cid:90)(cid:73)(cid:65)(cid:142)(cid:65)(cid:78)(cid:73)(cid:69)(cid:0)(cid:68)(cid:82)(cid:90)(cid:87)(cid:73)(cid:67)(cid:90)(cid:69)(cid:75)(cid:0)(cid:68)(cid:76)(cid:65)(cid:0)(cid:80)(cid:83)(cid:65)(cid:14)(cid:0) (cid:57)(cid:78)(cid:90)(cid:89)(cid:97)(cid:83)(cid:79)(cid:78)(cid:100)(cid:83)(cid:75)(cid:86)(cid:88)(cid:89)(cid:196)(cid:77)(cid:83)(cid:36) (cid:56)(cid:75)(cid:100)(cid:97)(cid:75) (cid:47)(cid:84)(cid:87)(cid:79)(cid:82)(cid:90)(cid:69)(cid:78)(cid:73)(cid:69)(cid:0)(cid:68)(cid:82)(cid:90)(cid:87)(cid:73)(cid:67)(cid:90)(cid:69)(cid:75) (cid:58)(cid:65)(cid:77)(cid:75)(cid:78)(cid:73)(cid:197)(cid:67)(cid:73)(cid:69)(cid:0)(cid:68)(cid:82)(cid:90)(cid:87)(cid:73)(cid:67)(cid:90)(cid:69)(cid:75) (cid:58)(cid:87)(cid:82)(cid:206)(cid:193)(cid:0)(cid:85)(cid:87)(cid:65)(cid:71)(cid:197)(cid:12)(cid:0)(cid:66)(cid:89)(cid:0)(cid:90)(cid:65)(cid:80)(cid:73)(cid:83)(cid:65)(cid:193)(cid:0) (cid:84)(cid:85)(cid:0)(cid:90)(cid:65)(cid:82)(cid:206)(cid:87)(cid:78)(cid:79)(cid:0)(cid:79)(cid:80)(cid:69)(cid:82)(cid:65)(cid:67)(cid:74)(cid:69)(cid:12)(cid:0) (cid:75)(cid:84)(cid:206)(cid:82)(cid:69)(cid:0)(cid:68)(cid:65)(cid:78)(cid:65)(cid:0)(cid:75)(cid:76)(cid:65)(cid:83)(cid:65)(cid:0)(cid:82)(cid:69)(cid:65)(cid:76)(cid:73)(cid:90)(cid:85)(cid:74)(cid:69)(cid:0) (cid:83)(cid:65)(cid:77)(cid:79)(cid:68)(cid:90)(cid:73)(cid:69)(cid:76)(cid:78)(cid:73)(cid:69)(cid:12)(cid:0)(cid:74)(cid:65)(cid:75)(cid:0)(cid:73)(cid:0)(cid:84)(cid:69)(cid:12)(cid:0) (cid:75)(cid:84)(cid:206)(cid:82)(cid:69)(cid:0)(cid:87)(cid:89)(cid:75)(cid:79)(cid:78)(cid:85)(cid:74)(cid:69)(cid:0)(cid:80)(cid:82)(cid:90)(cid:89)(cid:0) (cid:85)(cid:154)(cid:89)(cid:67)(cid:73)(cid:85)(cid:0)(cid:73)(cid:78)(cid:78)(cid:89)(cid:67)(cid:72)(cid:0)(cid:75)(cid:76)(cid:65)(cid:83)(cid:14) (cid:65)(cid:93)(cid:90)(cid:156)(cid:184)(cid:90)(cid:92)(cid:75)(cid:77)(cid:89)(cid:97)(cid:88)(cid:83)(cid:85) (cid:36)(cid:79)(cid:0)(cid:87)(cid:89)(cid:75)(cid:79)(cid:78)(cid:65)(cid:78)(cid:73)(cid:65)(cid:0)(cid:84)(cid:89)(cid:67)(cid:72)(cid:0)(cid:67)(cid:90)(cid:89)(cid:78)(cid:78)(cid:79)(cid:119)(cid:67)(cid:73)(cid:0) (cid:78)(cid:73)(cid:69)(cid:0)(cid:83)(cid:148)(cid:0)(cid:85)(cid:154)(cid:89)(cid:87)(cid:65)(cid:78)(cid:69)(cid:0)(cid:154)(cid:65)(cid:68)(cid:78)(cid:69)(cid:0)(cid:73)(cid:78)(cid:78)(cid:69)(cid:0) (cid:79)(cid:66)(cid:73)(cid:69)(cid:75)(cid:84)(cid:89)(cid:14) 572 574 577 578 580 581 582 584 586 588 1 (cid:51)(cid:80)(cid:73)(cid:83)(cid:1) (cid:84)(cid:82)(cid:69)(cid:117)(cid:67)(cid:73) (cid:19)(cid:17)(cid:1) Spis treści B Dodatek B Witamy w Obiektowie Stosowanie języka obiektowego Przygotuj się na zagraniczną wycieczkę. Czas odwiedzić Obiektów — miejsce, gdzie obiekty robią to, co powinny, aplikacje są dobrze hermetyzowane (już wkrótce dowiesz się, co to znaczy), a projekty oprogramowania pozwalają na ich wielokrotne stosowanie i rozbudowę. Musisz jeszcze poznać kilka dodatkowych zagadnień i poszerzyć swoje umiejętności językowe. Nie przejmuj się jednak, nie zajmie Ci to wiele czasu i zanim się obejrzysz, już będziesz rozmawiał w języku obiektowym, jakbyś mieszkał w Obiektowie od wielu lat. (cid:55)(cid:73)(cid:84)(cid:65)(cid:77)(cid:89)(cid:1)(cid:87)(cid:1)(cid:47)(cid:66)(cid:73)(cid:69)(cid:75)(cid:84)(cid:79)(cid:87)(cid:73)(cid:69) UML i diagramy klas Dziedziczenie Polimorfizm Hermetyzacja Kluczowe zagadnienia (cid:43)(cid:83)(cid:92)(cid:90)(cid:86)(cid:75)(cid:88)(cid:79) (cid:93)(cid:90)(cid:79)(cid:79)(cid:78)(cid:36)(cid:10)(cid:83)(cid:88)(cid:94) (cid:81)(cid:79)(cid:94)(cid:61)(cid:90)(cid:79)(cid:79)(cid:78)(cid:18)(cid:19)(cid:36)(cid:10)(cid:83)(cid:88)(cid:94) (cid:93)(cid:79)(cid:94)(cid:61)(cid:90)(cid:79)(cid:79)(cid:78)(cid:18)(cid:83)(cid:88)(cid:94)(cid:19) 591 593 595 596 600 (cid:52)(cid:79)(cid:0)(cid:74)(cid:69)(cid:83)(cid:84)(cid:0)(cid:78)(cid:65)(cid:90)(cid:87)(cid:65)(cid:0)(cid:75)(cid:76)(cid:65)(cid:83)(cid:89)(cid:14)(cid:0)(cid:58)(cid:65)(cid:87)(cid:83)(cid:90)(cid:69)(cid:0) (cid:74)(cid:69)(cid:83)(cid:84)(cid:0)(cid:85)(cid:77)(cid:73)(cid:69)(cid:83)(cid:90)(cid:67)(cid:90)(cid:65)(cid:78)(cid:65)(cid:0)(cid:78)(cid:65)(cid:0)(cid:83)(cid:65)(cid:77)(cid:69)(cid:74)(cid:0) (cid:71)(cid:206)(cid:82)(cid:90)(cid:69)(cid:0)(cid:68)(cid:73)(cid:65)(cid:71)(cid:82)(cid:65)(cid:77)(cid:85)(cid:0)(cid:73)(cid:0)(cid:90)(cid:65)(cid:80)(cid:73)(cid:83)(cid:89)(cid:87)(cid:65)(cid:78)(cid:65)(cid:0) (cid:80)(cid:79)(cid:71)(cid:82)(cid:85)(cid:66)(cid:73)(cid:79)(cid:78)(cid:148)(cid:0)(cid:67)(cid:90)(cid:67)(cid:73)(cid:79)(cid:78)(cid:75)(cid:148)(cid:14) (cid:52)(cid:65)(cid:0)(cid:76)(cid:73)(cid:78)(cid:73)(cid:65)(cid:0)(cid:79)(cid:68)(cid:68)(cid:90)(cid:73)(cid:69)(cid:76)(cid:65)(cid:0)(cid:90)(cid:77)(cid:73)(cid:69)(cid:78)(cid:78)(cid:69)(cid:0) (cid:83)(cid:75)(cid:142)(cid:65)(cid:68)(cid:79)(cid:87)(cid:69)(cid:0)(cid:75)(cid:76)(cid:65)(cid:83)(cid:89)(cid:0)(cid:79)(cid:68)(cid:0)(cid:74)(cid:69)(cid:74)(cid:0) (cid:77)(cid:69)(cid:84)(cid:79)(cid:68)(cid:14) (cid:36)(cid:73)(cid:65)(cid:71)(cid:82)(cid:65)(cid:77)(cid:0)(cid:75)(cid:76)(cid:65)(cid:83)(cid:89)(cid:0)(cid:80)(cid:79)(cid:90)(cid:87)(cid:65)(cid:76)(cid:65)(cid:0)(cid:87)(cid:89)(cid:79)(cid:66)(cid:82)(cid:65)(cid:90)(cid:73)(cid:193)(cid:0)(cid:83)(cid:79)(cid:66)(cid:73)(cid:69)(cid:0)(cid:79)(cid:71)(cid:206)(cid:76)(cid:78)(cid:148)(cid:0) (cid:80)(cid:79)(cid:83)(cid:84)(cid:65)(cid:193)(cid:0)(cid:75)(cid:76)(cid:65)(cid:83)(cid:89)(cid:26)(cid:0)(cid:66)(cid:69)(cid:90)(cid:0)(cid:84)(cid:82)(cid:85)(cid:68)(cid:85)(cid:12)(cid:0)(cid:78)(cid:65)(cid:0)(cid:80)(cid:73)(cid:69)(cid:82)(cid:87)(cid:83)(cid:90)(cid:89)(cid:0)(cid:82)(cid:90)(cid:85)(cid:84)(cid:0) (cid:79)(cid:75)(cid:65)(cid:12)(cid:0)(cid:77)(cid:79)(cid:154)(cid:78)(cid:65)(cid:0)(cid:80)(cid:79)(cid:87)(cid:73)(cid:69)(cid:68)(cid:90)(cid:73)(cid:69)(cid:193)(cid:12)(cid:0)(cid:67)(cid:79)(cid:0)(cid:68)(cid:65)(cid:78)(cid:65)(cid:0)(cid:75)(cid:76)(cid:65)(cid:83)(cid:65)(cid:0)(cid:82)(cid:79)(cid:66)(cid:73)(cid:14)(cid:0) (cid:55)(cid:0)(cid:82)(cid:65)(cid:90)(cid:73)(cid:69)(cid:0)(cid:80)(cid:79)(cid:84)(cid:82)(cid:90)(cid:69)(cid:66)(cid:89)(cid:0)(cid:87)(cid:0)(cid:68)(cid:73)(cid:65)(cid:71)(cid:82)(cid:65)(cid:77)(cid:73)(cid:69)(cid:0)(cid:77)(cid:79)(cid:154)(cid:78)(cid:65)(cid:0)(cid:78)(cid:65)(cid:87)(cid:69)(cid:84)(cid:0) (cid:80)(cid:79)(cid:77)(cid:73)(cid:78)(cid:148)(cid:193)(cid:0)(cid:70)(cid:82)(cid:65)(cid:71)(cid:77)(cid:69)(cid:78)(cid:84)(cid:0)(cid:90)(cid:65)(cid:87)(cid:73)(cid:69)(cid:82)(cid:65)(cid:74)(cid:148)(cid:67)(cid:89)(cid:0)(cid:90)(cid:77)(cid:73)(cid:69)(cid:78)(cid:78)(cid:69)(cid:0)(cid:83)(cid:75)(cid:142)(cid:65)(cid:68)(cid:79)(cid:87)(cid:69)(cid:0) (cid:76)(cid:85)(cid:66)(cid:0)(cid:77)(cid:69)(cid:84)(cid:79)(cid:68)(cid:89)(cid:12)(cid:0)(cid:74)(cid:69)(cid:119)(cid:76)(cid:73)(cid:0)(cid:84)(cid:79)(cid:0)(cid:80)(cid:79)(cid:77)(cid:79)(cid:154)(cid:69)(cid:0)(cid:87)(cid:0)(cid:80)(cid:82)(cid:90)(cid:69)(cid:75)(cid:65)(cid:90)(cid:65)(cid:78)(cid:73)(cid:85)(cid:0) (cid:78)(cid:73)(cid:69)(cid:90)(cid:66)(cid:197)(cid:68)(cid:78)(cid:89)(cid:67)(cid:72)(cid:0)(cid:73)(cid:78)(cid:70)(cid:79)(cid:82)(cid:77)(cid:65)(cid:67)(cid:74)(cid:73)(cid:14) (cid:47)(cid:84)(cid:79)(cid:0)(cid:74)(cid:65)(cid:75)(cid:0)(cid:80)(cid:82)(cid:90)(cid:69)(cid:68)(cid:83)(cid:84)(cid:65)(cid:87)(cid:73)(cid:65)(cid:77)(cid:89)(cid:0)(cid:75)(cid:76)(cid:65)(cid:83)(cid:89)(cid:0) (cid:78)(cid:65)(cid:0)(cid:84)(cid:65)(cid:75)(cid:0)(cid:90)(cid:87)(cid:65)(cid:78)(cid:89)(cid:77)(cid:0)(cid:68)(cid:73)(cid:65)(cid:71)(cid:82)(cid:65)(cid:77)(cid:73)(cid:69)(cid:0)(cid:75)(cid:76)(cid:65)(cid:83)(cid:14)(cid:0) (cid:52)(cid:79)(cid:0)(cid:87)(cid:142)(cid:65)(cid:119)(cid:78)(cid:73)(cid:69)(cid:0)(cid:87)(cid:0)(cid:84)(cid:65)(cid:75)(cid:73)(cid:0)(cid:83)(cid:80)(cid:79)(cid:83)(cid:206)(cid:66)(cid:0)(cid:53)(cid:45)(cid:44)(cid:0) (cid:80)(cid:79)(cid:90)(cid:87)(cid:65)(cid:76)(cid:65)(cid:0)(cid:78)(cid:65)(cid:0)(cid:80)(cid:82)(cid:90)(cid:69)(cid:68)(cid:83)(cid:84)(cid:65)(cid:87)(cid:73)(cid:65)(cid:78)(cid:73)(cid:69)(cid:0) (cid:83)(cid:90)(cid:67)(cid:90)(cid:69)(cid:71)(cid:206)(cid:142)(cid:79)(cid:87)(cid:89)(cid:67)(cid:72)(cid:0)(cid:73)(cid:78)(cid:70)(cid:79)(cid:82)(cid:77)(cid:65)(cid:67)(cid:74)(cid:73)(cid:0)(cid:0) (cid:79)(cid:0)(cid:75)(cid:76)(cid:65)(cid:83)(cid:65)(cid:67)(cid:72)(cid:0)(cid:84)(cid:87)(cid:79)(cid:82)(cid:90)(cid:148)(cid:67)(cid:89)(cid:67)(cid:72)(cid:0)(cid:65)(cid:80)(cid:76)(cid:73)(cid:75)(cid:65)(cid:67)(cid:74)(cid:197)(cid:14) (cid:52)(cid:79)(cid:0)(cid:83)(cid:148)(cid:0)(cid:90)(cid:77)(cid:73)(cid:69)(cid:78)(cid:78)(cid:69)(cid:0)(cid:83)(cid:75)(cid:142)(cid:65)(cid:68)(cid:79)(cid:87)(cid:69)(cid:0)(cid:0) (cid:75)(cid:76)(cid:65)(cid:83)(cid:89)(cid:14)(cid:0)(cid:43)(cid:65)(cid:154)(cid:68)(cid:65)(cid:0)(cid:77)(cid:65)(cid:0)(cid:80)(cid:69)(cid:87)(cid:78)(cid:148)(cid:0) (cid:78)(cid:65)(cid:90)(cid:87)(cid:197)(cid:12)(cid:0)(cid:65)(cid:0)(cid:80)(cid:79)(cid:0)(cid:68)(cid:87)(cid:85)(cid:75)(cid:82)(cid:79)(cid:80)(cid:75)(cid:85)(cid:0) (cid:79)(cid:75)(cid:82)(cid:69)(cid:119)(cid:76)(cid:79)(
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Head First Object-Oriented Analysis and Design. Edycja polska (Rusz głową!)
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ą: