WZORCE PROJEKTOWE. Software engineering has accepted as its charter How to program if you cannot. E. Djikstra
|
|
- Teresa Mazur
- 7 lat temu
- Przeglądów:
Transkrypt
1 WZORCE PROJEKTOWE Software engineering has accepted as its charter How to program if you cannot. E. Djikstra 1
2 * Wykład 1 Wzorzec projektowy opis komunikujących się obiektów i klas dostosowanych do rozwiązania ogólnego problemu projektowego w szczególnym kontektście. Nazwa skrót opisujący problem projektowy, rozwiązanie oraz konsekwencje tego rozwiązania Problem opis kontekstu (kiedy zastosować wzorzec) Rozwiązanie opis elementów składowych, przeznaczenie, relacje i współpraca między nimi Konsekwencje koszty i zyski wynikające z zastosowania wzorca WP!= struct-prog OOP Kompozycja zamiast dziedziczenia Hermetyzacja Od ogółu do szczegółu Wzorce architektoniczne Uniwersalne, sprawdzone w praktyce rozwiązanie często pojawiających się problemów projektowych. Określają ogólną strukturę systemu informatycznego elementy składowe, zasady komunikacji między nimi Dotyczą problemów z komunikacją, tworzeniem lub organizacją systemów inf. Elastyczne oprogramowanie łatwo modyfikowalne pod kątem najbardziej prawdopodobnych kierunków rozwoju; minimalizacja: niezbędnych zmian w kodzie ilości testów łatwa pielęgnacja kodu 2
3 Kiedy wzorce? duża rotacja pracowników oprogramowanie duże duży stopień skomplikowania: algorytmów, specjalistyczny zmienność wymagań przewidywanie zmian w oprogramowaniu (sprzedaż innym klientom) minimalizacja czasu serwisowania oprogramowania Kiedy nie wzorce? małe grupy używanie na siłe? duża komplikacja kodu NIEPOTRZEBNA! koszty szkoleń nieefektywność zastosowań == mała elastyczność Klasyfikacja wzorców Konstrukcyjne (creational) proces tworzenia obiektów Strukturalne (structural) składanie klas lub obiektów Czynnościowe (behavioral) sposób współdziałania oraz podział zadań klas, obiektów Zasięg wzorców Klasowy statyczne relacje między klasami i ich podklasami dziedziczenie Obiektowy dynamiczne relacje między obiektami, które mogą się zmieniać w czasie wykonania programu Tabela Konstrukcyjne Strukturalne Czynnościowe Klasowe FactoryMethod Adapter(klasowy) Interpreter Template Method Obiektowe Abstract Factory Adapter (obiektowy) Chain of Responsibility Builder Bridge Command Prototype Composite Iterator Singleton Decorator Mediator Facade Memento Flyweight Proxy Observer State Strategy Visitor 3
4 Wykład 2 (Fasada, Adapter, Iterator) Fasada (Facade) : wzorzec obiektowy, strukturalny jednolity interfejs dla zbioru interfejsów z podsystemu. określa wyższy poziom dostępu ułatwiający korzystanie z podsystemu Uzasadnienie Problem Potrzeba wykorzystania części możliwości systemu Rozwiązanie Fasada udostępnia wymaganą część podsystemu Warunki stosowania chcemy prosty interfejs do czegoś złożonego oddzielamy złożony podsystem od klientów i innych podsystemów chcemy podzielić system na warstwy urywamy podsystem przed użytkownikami systemu stworzenie fasady jest tańsze niż zaznajomienie programistów z pełnym podsystemem Struktura Elementy Fasada zna klasy odpowiedzialne za obsługę żądań deleguje żądania do odpowiednich obiektów 4
5 Klasy podsystemu nie wiedzą o istnieniu fasady obsługują wszystko jak leci Współdziałanie klienci korzystają z Fasady klienci nie muszą mieć dostępu do obiektów podsystemu Konsekwencje oddzielenie klientów od komponentów podsystemu możliwość modyfikowania komponentów podsystemu bez wpływu na klientów Zachowuje możliwość odwołania się do klas podsystemu, jeśli jest to potrzebne Powiązane wzorce Fabryka abstrakcyjna : można stosować z fasadą dla tworzenia obiektów podsystemu niezależnie od podsystemów. Singleton : Fasada jest zwykle Singletonem Adapter : wzorzec klasowy/obiektowy, strukturalny przekształca interfejs klasy na oczekiwany przez klienta wspołpraca klas, które nie mogą działać ze względu na złe interfejsy Uzasadnienie Problem wszystko działa jak należy (dane, zachowanie) w obiekcie, ale ma nieodpowiedni interfejs chcemy dołączyć obiekt do hierarchii dziedziczenia innej klasy abstrakcyjnej, którą włąsnie definiujemy Rozwiązanie Adapter : obudowuje obiekt odpowiednim interfejsem Warunki stosowania istniejąca klasa bez dobrego interfejsu (dla nas) chcemy klasę wielokrotnego użytku, która współpracuje z niepowiązanymi klasami lub nieznanymi klasami 5
6 (adapter obiektowy) chcemy użyć istniejących podklas, ale dostosowanie interfejsów przez podklasy dla każdej z nich jest niewygodne. Adapter obiektowy może dostosować interfejs swojej klasy nadrzędnej Struktura (klasowy) Struktura (obiektowy) Elementy Cel (Target): specyficzny interfejs klienta Klient (Client): współpracuje z interfejsem klasy Target Adaptowany (Adaptee): definiuje istniejący interfejs Adapter (Adapter): adaptuje interfejs Adaptee do interfejsu Target Współdziałanie Klienci komunikują się z Adapterem, który wywołuje żądania interfejsu Adaptee 6
7 Konsekwencje (klasowy) klasa Adaptee dostosowana do klasy Target możliwość przesłonięcia w Adapter wybranych zachowań Adaptee nie wymaga wskaźnika w celu dostępu do klasy adaptowanej Konsekwencje (obiektowy) współdzielenie jednej klasy Adapter z wieloma obiektami Adaptee (jej podklasami) == dodawanie funkcji w Adapter do wszystkich klas Adaptee jednocześnie utrudnia zastąpienie zachowań w Adaptee == trzeba utworzyć klasę pochodną dla Adaptee, żeby to osiągnąć Powiązane wzorce Most : struktura podobna do Adaptera obiektowego, ale ma inną funkcję, tj. rozdziela abstrakcję od implementacji, a adapter zmienia interfejs Dekorator : wzbogaca zachowanie innych obiektów bez zmiany interfejsów, umożliwia składanie rekurencyjne nieosiągalne dla adapterów Proxy : podobna struktura, ale definiuje substutu innego obiektu bez modyfikacji interfejsu FASADA VS ADAPTER Tabela Fasada Adapter Istnieją wcześniej zdefiniowane klasy? Tak Tak Istnieje interfejs, który trzeba zastosować? Nie Tak Obiekty powinny być polimorficzne? Nie Prawdopodobnie Docelowy interfejs ma być prostszy? Tak Nie Iterator : wzorzec obiektowy, czynnościowy sekwencyjny dostęp do elementów kolekcji bez ujawniania wewnętrznej implementacji Uzasadnienie przeniesienie odpowiedzialności za dostęp do elementów i przechodzenie po nich z obiektu kolekcji do obiektu iteratora 7
8 Warunki stosowania dostęp do składników obiektu zagregowanego bez ujawniani wewnętrznej reprezentacji realizacja wielu sposobów przechodzenia przez kolekcję jednolity interfejs dla przeglądania różnych kolekcji (iteracja polimorficzna) Struktura Elementy Iterator : definiuje interfejs umożliwiający dostęp do elementów i ich przeglądanie ConcreteIterator : implementuje interfejs, przechowuje aktualną pozycję przy przechodzniu przez kolekcję Aggregate (kolekcja) : definiuje interfejs do tworzenia iteratorów ConcreteAgregate : implementuje interfejs tworzenia iteratorów Współdziałanie ConcreteIterator zna aktualny obiekt z kolekcji i może wyznaczyć następnik Konsekwencje pozwala na zmianę sposobu przechodzenia po kolekcji upraszcza interfejs kolekcji (nie musi mieć metod do przeglądania) umożliwa wiele jednoczesnych procesów przeglądania kolekcji 8
9 Implementacja sterowanie iteracją Iterator zewnętrzny : sterowany przez klienta (bardziej elastyczny) Iterator wewnętrzny : klient przekazuje operacje do wykonania, iterator steruje przeglądaniem kolekcji uruchamiając tę operację na elementach kolekcji wybór obiektu z algorytem przeglądania Iterator : łatwo stosować/zmieniać algorytmy przeglądania Kolekcja : iterator przechowuje stan iteracji KURSOR, klient wywołuje operację next na kolekcji z kursorem jako argument Użyteczne gdy potrzeba dostępu do zmiennych prywatnych Powiązane wzorce Composite : iteratory często stosuje się do struktur rekurencyjnych FactoryMethod : iteratory polimorficzne korzystają z metod wytwórczych do generowania obiektów klas pochodnych Iterator Memento (pamiątka) : często stosowny z iteratorem. Iterator może przechowywać Memento i korzystać z niego do zapisu stanu iteracji Wykład 3 (Strategy, TemplateMethod) Strategia (Strategy) : wzorzec obiekowy, czynnościowy zdefiniowanie rodziny algorytmów zastosowanie hermetyzacji i wykorzystywanie ich zamiennie niezależnie od wykorzystujących je obiektów Uzasadnienie Problem wybór algorytmu zależy od wykorzystującego go obiektu lub danych, którymi operuje Gdy algorytm się nie zmienia Strategia jest NIEPOTRZEBNA Rozwiązanie oddzielamy wybór wersji algorytmu od jego implementacji. umożliwia wybór algorytmu na podstawie kontekstu Warunki stosowania wiele związanych klas różni się tylko zachowaniem 9
10 potrzeba różnych wersji algorytmu np z różnymi złożonościami czasowymi lub pamięciowymi ukrycie przed klientem danych, z których korzysta gdy klasa definiuje wiele zachowań występujących jako złożone instrukcje warunkowe (kolejne gałęzie należy przenieść do klas pochodnych) Struktura Elementy Strategy : deklaruje wspólny interfejs dla wszystkich używanych algorytmów, Kontekst używa interfejsu do wywołania odpowiedniej Strategii ConcreteStrategy : implementuje interfejs Strategy Context Współdziałanie Strategy i Context współpracują w celu realizacji algorytmu Context może przekazywać dane wymagane przez algorytm lub referencję do siebie Context przekazuje żądania od klientów do Strategy. Konsekwencje powoduje powstanie rodziny powiązanych algorytmów alternatywa dla tworzenia podklas (hermetyzacja > dziedziczenie) eliminacja wyrażeń warunkowych umożliwia wybór implementacji - np. różniące się złożonością (WADA) klienci muszą znać konkretne strategie, aby wybrać odpowiednią koszty komunikacji Context <-> Strategy (przekazywanie niewykorzystywanych parametrów) zwiększona liczna obiektów (dodatkowe obiekty Strategy) 10
11 Powiązane wzorce Pyłek (Flyweight) : obiekty Strategy warto tworzyć jako pyłki Metoda Szablonowa (TemplateMethod) : wzorzec klasowy, czynnościowy zdefiniowanie ogólnego szkieletu algorytmu pozostawienie implementacji niektórych króków dla klas pochodnych można zmienić niektóre kroki algorytmu nie zmieniając jego struktury Uzasadnienie Problem istnieje stały schemat, którego kroki różnią się jedynie w szczegółach Rozwiązanie pozwala na dodefiniowanie zmiennych operacji przy zachowaniu ogólnego schematu Przykład łączenie się z dowolną bazą danych wygląda podobnie, konkretne kroki są kwestią tego czy jest to MySQL, PostgreSQL, czy MongoDB. Warunki stosowania jednarozowa implementacja niezmiennych części algorytmu zostawiając podklasom implementację zmieniającego się zachowania refaktoryzacja uogólniająca : wyodrębnienie i umieszczenie w jednej klasie zachowania wspólnego dla podklas kontrola rozszerzeń w klasach pochodnych (punkty zaczepienia) Struktura 11
12 Elementy AbstractClass określa proste operacje definiowane przez podklasy implementuje metodę szablonową, która wywołuje proste operacje ConcreteClass implementuje proste operacje realizujące specyficzne dla podklasy szczegóły algorytmu Współdziałanie ConcreteClass polega na AbstractClass w zakresie implementacji stałych kroków algorytmu Konsekwencje podstawowa technika wielokrotnego wykorzystania kodu odwrotna struktura sterowania (zasada Hollywood) nie dzwoń do nas, my zadzwonimy do Ciebie klasa nadrzędna wywołuje operacje pochodnej nie na odwrót Implementacja minimalizacja operacji prostych (dla ułatwienia implementacji klas pochodnych) konwencje nazewnicze (np. dodawanie przedrostka jak do doread, docreatedocument ) 12
13 Powiązane wzorce FactoryMethod : można traktować jako specyficzny rodzaj metody szablonowej Strategy : w TemplateMethod do modyfikacji fragmentów algorytmu wykorzystuje się dziedziczenie, w Strategy do modyfikacji całego algorytmu korzysta się z delegacji Wykład 4 (Most) Most (Bridge) : wzorzec obiektowy, strukturalny oddzielamy abstrakcję od implementacji w taki sposób żeby można było wymienić implementację w sposób niezależny od innych komponentów. Uzasadnienie Problem klasy pochodne muszą używać wielu różnych implementacji, nie powodując nadmiernego wzrostu ilości klas pochodnych Rozwiązanie zdefiniowane wspólnego interfejsu dla wszystkich implementacji i wykorzystanie go przez klasy pochodne klasy abstrakcyjnej Przykład Warunki stosowania chcemy uniknąć stałego powiązania abstrakcji i implementaji (np implementacja zmieniana w trakcie wykonania programu) 13
14 abstrakcja i implementacja ma być rozszerzana niezależnie od siebie przez tworzenie podklas zmiany w implementacji nie powinny wymagać rekompilacji kodu klientów chcemy aby wiele obiektów miało wspólną implementację w sposób niewidoczny dla klienta Struktura Elementy Abstraction definiuje interfejs (np rysujfigure) zawiera referencję do obiektu Implementator RefinedAbstraction rozszerza interfejs abstrakcji Implementator definiuje interfejs klas implementacji, który może się znacząco różnić od interfejsu abstrakcji ConcreteImplementator implementuje interfejs Implementatora Współdziałanie Abstrakcja przekazuje żądania klienta do Implementatora Konsekwencje sparacja abstarkcji/interfejsu od implementacji: można zmieniać implementacji w trakcie wykonania eliminacja zależności abstracji od implementacji na etapie kompilacji sprzyja stosowaniu warstw - lepsza struktura systemu zwiększona rozszerzalność (abstrakcji i implementacji, niezależnie od siebie) ukrycie szczegółów implementacyjnych przed klientami 14
15 Powiązane wzorce AbstractFactory : może być użyta do utworzenia i skonfigurowania mostu Adapter : może być użyty we wzorcu do zaadaptowania istniejących implementacji o różnych interfejsach. Adapter dla gotowych systemów po ich implementacji, Most dla systemów na etapie projektowania. Wykład 5 (Decorator, Composite) Dekorator (Decorator) : wzorzec obiektowy, strukturalny dodanie dodatkowych odpowiedzialności w sposób dynamiczny alternatywa dla dziedziczenia w celu rozszerzania funkcjonalności Uzasadnienie Problem istniejący obiekt posiada funkcjonalność, ale potrzeba ją rozszerzyć o operację wykonywane przed oraz/lub po wykonywanych przez obiekt działaniach Rozwiązanie roszczerzenie funkcjonalności bez wykorzystania dziedziczenia Warunki stosowania do dynamicznego i przezroczystego (nie wpływającego na inne obiekty) dodawania odpowiedzialności do obiektów potrzeba mechanizmu obsługi zadań, które można cofnąć gdy rozszerzenie przez podklasę jest niepraktyczne lub brak dostępu do interfejsu klasy bazowej Struktura 15
16 Elementy Component : definiuje interfejs dla zmienianego obiektu ConcreteComponent : implementuje interfejs Component Decorator : przechowuje referencję do obiektu Component i definiuje interfejs zgodny z interfejsem Component ConcreteDecorator : dodaje odpowiedzialność / zadania do komponenetu Współdziałanie obiekt Decorator przekazuje żądania do obiektu Component może wykonywać operacje przed oraz/lub po przekazaniu żądania Konsekwencje większa elastyczność niż przy dziedziczeniu dekorator i komponenet nie są identyczne, dekorowany komponent jest jednak różny od standardowej wersji (WADA) projekty z Dekoratorem często prowadzą do systemów z dużą ilością podobnych obiektów, różniących się sposobem połączenia, ale nie klasą lub wartościami zmiennych, co może utrudniać analizę kodu Powiązane wzorce Adapter : zmiania interfejs, dekorator zmienia zachowanie Composite : Dekorator ~ uproszczony obiekt złożony obejmujący jeden komponent, ale nie służy do łączenia obiektów tylko do dodawania zachowań Strategy : dekorator zmienia skórkę obiektu, strategia zmienia mechanizmy wewnętrzne 16
17 Kompozyt (Composite) : wzorzec tworzenie struktur drzewiastych między obiektami odzwierciedlających hierarchię typu całość - część pozwala na traktowanie złożeń w ten sam sposób co indywidualne obiekty Uzasadnienie Warunki stosowania chcemy reprezentować hierarchię obiektów chcemy umożliwić klientom zignorowanie różnicy między indywidualnymi obiektami i ich złożeniami Struktura 17
18 Elementy Component definiuje interfejs dla złożonych obiektów implementuje domyślne zachowanie na potrzeby interfejsu wspólnego dla wszystkich klas definiuje interfejs dostępu do komponentów podrzędnych (dzieci) Leaf reprezentuje obiekty-liście == nie mające potomków definiuje zachowanie obiektów prostych w złożeniu Composite definiuje zachowanie komponentów mających potomków przechowuje komponenty podrzędne implementuje operacje z interfejsu Component Client manipuluje złożonymi obiektami poprzez interfejs klasy Component 18
19 Współdziałanie klient korzysta z interfejsu klasy Composite do interakcji z klasami w jego strukturze Konsekwencje definiuje hierarchie klas składających się z obiektów prostych i złożonych proste składają się na obiekty złożone upraszcza kod klienta, bo nie trzeba sprawdzać czy korzysta się z obiektu prostego czy też złożonego ułatwia dodawanie nowych rodzajów komponentów (nowe podklasy Composite lub Leaf od razu działają z istniejącymi strukturami) może powodować, że projekt stanie się zbyt ogólny Powiązane wzorce Chain of Responsibility : powiązanie między komponentami a elementami nadrzędnymi często wykorzystywane w tym wzorcu Decorator : często używany razem z Composite (wtedy wspólna klasa nadrzędna, Dekorator obsługuje interfejs klasy Component) Flyweight : umożliwia współużytkowanie komponentów nieprzechowujących referencji do elementów nadrzędnych Iterator : może być wykorzystywany do przeglądania zawartości kompozytów Visitor : zapewnia jedną lokalizację dla operacji i zachowań, które w innych podejściach są rozproszone po klasach compozytów i liści Wykład 6 (AbstractFactory, FactoryMethod, Singleton, Observer) Fabryka Abstrakcyjna (AbstractFactory) : wzorzec obiektowy, konstrukcyjny Jeden interfejs do tworzenia rodzin powiązanych lub zależnych obiektów bez potrzeby specyfikacji ich konkretnych klas. Uzasadnienie Problem Utworzenie odpowiednich rodzin obiektów. Rozwiązanie Stworzenie osobnego obiektu, który będzie je tworzyć zgodnie z regułami wydzielonymi z obiektów użytkownika. 19
20 Warunki stosowania system ma być niezależny od sposobu tworzenia, składania i reprezentacji jego produktów. system ma być skonfigurowany za pomocą jednej z wielu rodzin produktów rodzina powiązanych obiektów-produktów jest zaprojektowana jedynie do działania ze sobą i trzeba wymusić jednoczesne korzystanie z tych obiektów. chcemy udostępnić klasy biblioteczne jedynie przez ich interfejsy Struktura Elementy AbstractFactory : deklaruje interfejs tworzący obiekty abstrakcyjne ConcreteFactory : implementuje interfejs abstrakcyjnej fabryki AbstractProduct : deklaruje interfejs dla produktów ConcreteProduct : implementuje interfejs produktów Client : korzysta jedynie z interfejsu AbstractFactory i AbstractProduct 20
21 Współdziałanie powstaje jedna instancja klasy ConcreteFactory AbstractFactory wykorzystuje swoje podklasy do tworzenia odpowiednich obiektów Konsekwencje AF izoluje klasy konkretne AF ułatwia wymianę rodzin produktów AF ułatwia zachowanie spójności między produktami AF utrudnia dodawanie obsługi produktów nowego rodzaju Powiązane wzorce FactoryMethod, Prototype : AF często implementowane za pomocą tych wzorców Singleton : fabryki konkretne często realizowane jako singletony wzorzec klasowy, konstruk- Metoda Fabryczna (FactoryMethod) : cyjny Zdefiniowanie interfejsu do tworzenia obiektu z pozostawieniem decyzji o wyborze klasy tworzonego obiektu klasom pochodnym. Uzasadnienie Problem Klasa musi stworzyć obiekt jednej z klas pochodnych innej klasy, ale nie wie dokładnie, o którą z nich chodzi. Rozwiązanie Metoda wytwórcza pozwala podjąć decyzję jej klasie pochodnej. Warunki stosowania nie można ustalić klasy obiektów, które trzeba stworzyć chcemy, żeby klasy pochodne danej klasy określały tworzone przez nią obiekty klasy delegują zadania do jednej z kilku podklas pomocniczych i chcemy zapisać w określonym miejscu informację, która z tych podklas jest delegatem 21
22 Struktura Elementy Produkt: interfejs obiektów tworzonych przez MF ConcreteProduct: implementuje Produkt Creator: deklaryje metodę wytwórczą może wywoływać MF by utworzyć obiekt Produkt ConcreteCreator: zastępuje MF zwracając instancję klasy ConcreteProduct Współdziałanie Klasa Creator działa na podstawie założenia, że jej klasy pochodne definują metodę wytwórcą zwracającą obiekt odpowiedniej klasy ConcreteProduct Konsekwencje MF eliminuje potrzebę umieszczania w kodzie klas specyficznych dla aplikacji. Korzysta się jedynie z interfejsu klasy Product (WADA) Klienci mogą być zmuszeni do tworzenia klas pochodnych Creator a aby wygenerować konkretny ConcreteProduct Powiązane wzorce MF można traktować jako szczególny rodzaj metody szablonowej AbstractFactory - często implementowany za pomocą MF Prototype - nie trzeba tworzyć podklas klasy Creator, często konieczne jest umieszczenie operacji init w klasie Product. MF nie wymaga takich metod. Singleton : wzorzec obiektowy, konstrukcyjny 22
23 Zapewnia, że klasa będzie miała jedną instancję i będzie do niej globalny dostęp Uzasadnienie Problem W wielu miejscach w kodzie trzeba korzystać z jednego obiektu, który powinien być zainicjalizowany tylko raz w programie Rozwiązanie Zagwarantowanie wystąpienia tylko jednej instancji danej klasy Warunki stosowania potrzebujemy dokładnie jednej instancji klasy dostępnej klientom w ściśle określony sposób potrzbujemy możliwości rozszerzenia jednej instancji przez tworzenie podklas, a klienci powinni użyć wzbogaconej instancji bez konieczności modyfikacji kodu Struktura Elementy Singleton operacja Instance() dająca klientom dostęp do unikatowych instancji klasy. Metoda statyczna! może być sam odpowiedzialny za tworzenie unikatowej instancji Współdziałanie Klienci mają dostęp do instancji klasy wyłącznie poprzez operację Instance() 23
24 Konsekwencje Kontrola dostępu do jedynej instancji klasy Zmniejszenie przestrzeni nazw w porównaniu ze zmiennymi globalnymi przechowującymi jedyne egzemplarze Możliwość rozrzerzania operacji i reprezentacji Możliwość zwiększenia ilości instancji do ustalonego limitu (zliczanie instancji w Singletonie) Większa elastyczność w porównaniu z operacjami klasowymi (WADA) Problemy ze stosowanie w środowisku współbierznym, blokowanie dwufazowe Powiązane wzorce Z pomocą singletona można budować inne wzorce AbstractFactory Builder Prototype Obserwator (Observer) : wzorzec obiektowy, czynnościowy określenie powiązania jeden-do-wielu jeden obiekt zmienia stan wiele obiektów zależnych jest automatycznie o tym powiadamianych Uzasadnienie Problem Należy powiadomić zmieniającą się listę obiektów o pewnym zdarzeniu Rozwiązanie Obiekty klasy Observer przekazują odpowiedzialność za monitorowanie do centralnej klasy Subject Warunki stosowania abstrakcja ma dwa aspekty zależne od siebie. Hermetyzacja aspektów pozwala na wykorzystanie obiektów niezależnie od siebie zmiana jednego obiektu wymaga zmiany innych lecz nie wiadomo ile jest takich obiektów obiekt powinien mieć możliwość zawiadomienia innych obiektów bez określania ich rodzaju (bez założeń o typie) 24
25 Struktura Elementy Subject : zna powiązanych obserwatorów (jest ich dowolna ilość) definiuje interfejs do dołączania i odpinania obiektów Observer Observer : definiuje interfejs do aktualizacji dla obiektów, które należy powiadomić o zmianach w Subject ConcreteSubject: posiada stan istotny dla ConcreteObserver wysyła powiadomienie do powiązanych Obserwatorów ConcreteObserver: referencja do obiektu ConcreteSubject zawiera stan, który ma być zgodny z CS implementuje interfejs Observer Współdziałanie ConcreteSubject : powiadamia obserwatorów o zmianie stanu ConcreteObserver : po otrzymaniu informacji o zmianie stanu może wysłać zapytanie o szczegółowe informacje, które wpłyną na zmianę jego stanu Konsekwencje pozwala na dodawanie obserwatorów bez modyfikacji podmiotu lub/i innych obserwatorów abstrakcyjne sprzężenie pomiędzy Subject i Observer. Subject nie wie nic na temat obiektów klasy Observer. wsparcie dla grupowego wysyłania komunikatów 25
26 (WADA) nieoczekiwane lawinowe uaktualnienia - bez specjalnego protokołu drobna operacja na Subject może powodować gigantyczną ilość zmian w Observatorach Wykład 7 (Builder, Proxy) Budowniczy (Builder) : wzorzec obiektowy, konsturkcyjny oddzielamy konstrukcję obiektu od jego reprezentacji tak, że ten sam proces konstrukcyjny może dać różne reprezentacje Uzasadnienie Warunki stosowania algorytm tworzenia obiektu powinien być niezależny od części składowych tego obiektu i sposobu ich zestawienia proces konstrukcji ma umożliwiać tworzenie różnych reprezentacji tego obiektu Struktura 26
27 Elementy Builder: definiuje abstrakcyjny interfejs do tworzenia Productu ConcreteBuilder: Konstruuje i łączy części Productu Implementuje interfejs Builder Dostarcza interfejs do pobierania produktów definiuje i kontroluje tworzone reprezentacje Director: konstruuje Product za pomocą interfejsu Buildera Product: reprezentuje złożony Product zawiera klasy definujące części składowe obiektu, w tym interfejsy do składania części Współdziałanie Klient tworzy obiekt Director i konfiguruje go za pomocą odpowiedniego obiektu Buildera kiedy potrzeba części produktu Director wysyła powiadomienia do Buildera Builder obsługuje żądania od Directora i dodaje odpowiednie komponenty do produktu Klient odbiera od Buildera Produkt Konsekwencje 27
28 możliwość modyfikacji reprezentacji wewnętrznej produktu odseparowanie kodu do służącego do tworzenia produktu od reprezentacji większa kontrola nad procesem tworzenia Powiązane wzorce AbstractFactory : przypomina Buildera, ale nacisk położony na rodziny obiektów oraz produkt jest udostępniony od razu, Builder natomiast jest tworzony krok po kroku i jest zwracany w ostatnim kroku Composite: często tworzony przy pomocy Buildera Pełnomocnik (Proxy): wzorzec obiektowy, strukturalny dostarczenie pośrednika w dostępie do określonego obiektu Warunki stosowania proxy tam gdzie trzeba wyrafinowaej referencji a nie wzkaźnik Częste zastosowania: Remote proxy : lokalna reprezentacja zdalnego obiektu z innej przestrzeni adresowej Virtual proxy : pośrednik tworzący kosztowne obiekty na żądanie Protected proxy : pośrednik, który sprawdza czy dostęp jest zaautoryzowany, dla obiektów z różnymi prawami dostępu Cache proxy : przechowuje rezultaty odwołań do zdalnych komponentów do wykorzystania przez lokalnych klientów. Syc proxy : w środowisku współbierznym dostęp do obiektu Firewall proxy : chroni lokalnych klientów przed zewnętrznym światem Smart proxy : zastępuje zwykłe odniesienie i wykonuje dodatkowe operacje, np: zliczanie referencji w celu ułatwienie sprzątania pamięci (smart pointer) ładowanie obiektu do pamięci w momencie pierwszego odwołania (ghost) sprawdzanie przed dostępem do obiektu czy jest zablokowany, by inny obiekt go nie zmienił Struktura 28
29 Elementy Proxy posiada referencję do rzeczywistego obiektu identyczny interfejs z obiektem, który pośredniczy kontroluje dostęp Subject definuje interfejs klas RealSubject i Proxy RealSubject rzeczywisty obiekt, do którego się dobieramy przez Proxy Współdziałanie Proxy przekazuje żądania do RealSubject Konsekwencje dodanie poziomu pośredniego przy dostępie Powiązane wzorce Adapter: tworzy nowy interfejs do obiektu, Proxy ma dokładnie ten sam Dekorator: można podobnie implementować, ale Dekorator dodaje funkcje, Proxy kontroluje dostęp do nich Wykład 8 (Chain of Responsibility, State) Łańcuch Odpowiedzialności (Chain of Responsibility): wzorzec obiektowy, czynnościowy Umożliwienie obsługi żądania większej liczbie obiektów. 29
30 Obiekty odbiorcze łączone są w łańcuch, wzdłuż, którego przekazywane jest żądanie do momentu obsłużenia go Uzasadnienie Warunki stosowania więcej niż jeden obiekt może obsłużyć żądanie odbiorca nie jest z góry znany i powinien być ustalony automatycznie chcemy wysłać żądanie do jednego z kilku obiektów zbiór obiektów realizujących żądanie może być stworzony dynamicznie Struktura Elementy Handler: obsługuje żądania (opcjonalnie) ma odwołanie do następnika w łąńcuchu ConcreteHandler: obsługuje żądania ma dostęp do następnika jeśli może obsłużyć to obsługuje wpp przekazuje dalej Client: inicjuje żądanie przez przekazanie do ConcreteHandler Współdziałanie Klient przekazuje żądanie do łańcucha żądanie jest przekazywane aż do obsłużenia 30
31 Konsekwencje zredukowane powiązanie pomiędzy wysyłającym żądanie a obsługującym zwiększenie elastyczności w zakresie przypisywania zadań obiektom (WADA)brak gwarancji obsłużenia żądania Powiązane wzorce Composite: często stosowane razem z Łańcuchem (obiekt nadrzędny może pełnić funkcję następnika) Stan (State) : wzorzec obiektowy, czynnościowy umożliwia zmianę zachowania w zależności od stanu wewnętrznego wygląda jakby obiekt zmienił klasę Uzasadnienie Warunki stosowania obiekt istotnie zmienia zachowanie w zależności od stanu chcemy uniknąć zagnieżdżonych instrukcji warunkowych State umożliwia wrzucenie gałęzi do osobnych klas Struktura Elementy Context interfejs dla klientów przechowuje bieżący ConcreteState State: definiuje interfejs reprezentujący zachowanie związane ze stanami ConcreteState Podklasy ConcreteState każda implementuje zachowanie związane z jednym stanem obiektu Context 31
32 Współdziałanie Context deleguje żądanie do ConcreteState Context jest interfejsem dla klientów Klasa Context decyduje o kolejności i warunkach zmiany stanu Konsekwencje zachowanie specyficzne dla określonego stanu zebrane w jednym miejscu dodawanie nowych stanów ułatwione przez podklasy ConcreteState jawność przejść międzystanowych możliwość współdzielenia obiektów stanu (wtedy to Flyweight) Powiązane wzorce Flyweight: określa, kiedy i jak współużywać obiekt State Singleton: obiekty State to często singletony Wykład 9 (Prototype, Mediator, Command, Visitor) Prototyp (Prototype) : wzorzec obiektowy, konstrukcyjny określa rodzaje tworzonych obiektów na podstawie egzemplarza-prototypu nowe obiekty przez kopiowanie prototypu Warunki stosowania system ma być niezależny od sposobu tworzenia, składania i reprezentacji produktów klasy tworzonych obiektów są określane w czasie wykonywania programu chcemy uniknąć tworzenia hierarchii fabryk instancje klasy mogą mieć jeden z niewielu stanów (wygodniej utworzyć kilka prototypów w odpowiednich stanach, a potem je klonować) Struktura Elementy Prototype: ConcretePrototype Client 32
33 Współdziałanie Client żąda kopii prototypu od niego ( sklonuj się ) Konsekwencje dodawanie i usuwanie produktów w czasie wykonania nowe zachowania nie przez tworzenie klas ale przez składanie obiektów tworzenie obiektów złożonych, nowe obiekty przez zmianę struktury zredukowanie liczby podklas - nie trzeba nam nowych klas jak w przypadku metody fabrycznej (WADA) : w każdej klasie Prototype trzeba zaimplementować metodę Clone(), utrudnione użycie przy gotowych klasach, które jej nie obsługują Powiązane wzorce AbstractFactory : może przechowywać zestaw prototypów stosowanych do tworzenia produktów-klonów Composite, Decorator : prototyp często wykorzystywany w projektach z tymi wzorcami Mediator (Mediator) : wzorzec obiektowy, czynnościowy hermetyzacja informacji o interakcji pomiędzy obiektami ze zbioru pozwala zachować luźne powiązanie między obiektami brak bezpośrednich odwołań obiektów między sobą Warunki stosowania zbiór obiektów komunikuje się w złożony ale dobrze określony sposób zależności są z tego powodu nieustrukturyzowane i trudne do zrozumienia ponowne użycie obiektu jest trudne, bo odwołuje się do wielu innych obiektów dostosowanie zachowania rozproszonego po kilku klasach ma nie wymagać tworzenia podklas Struktura 33
34 Elementy Mediator : interfejs komunikacji klas współpracujących ConcreteMediator: implementuje Mediator, zarząda współpracującymi obiektami rodzina klas Colleague: każdy obiekt współpracujący zna powiązany obiekt Mediator każdy obiekt współpracujący komunikuje się z obiektem Mediator a nie klasamy współpracującymi Współdziałanie obiekty współpracujące wysyłają i otrzymują żądania jedynie przez Mediatora Mediator zapewnia współdziałanie przez przekazywanie żądań pomiędzy odpowiednimi współpracownikami Konsekwencje uproszczeni komunikacji obiektowej. s/ wiele-do-wielu / jeden-do-wielu rozdzielenie obiektów współpracujących abstrakcja współpracy obiektów (POTENCJALNA WADA )centralizacja sterowania może powodować dużą złożoność Mediatora Powiązane wzorce Facade: różna od Mediatora, bo protokół komunikacji jest jednokierunkowy skupia się na udostępnieniu wygodnego interfejsu Mediator - wspólne realizowanie zachowań Observer: 34
35 obiekty mogą się komunikować z Mediatorem za pomocą wzorca Observer Komenda (Command) : wzorzec obiektowy, czynnościowy hermetyzacja żądania w obiekcie. umożliwia kolejkowanie i rejestracje żądań, jak również realizację operację cofania Warunki stosowania parametryzować obiekty przy pomocy wykonywanych działań określać, kolejkować i wywoływać żądania w różnych miejscach programu by zapewnić możliwość operacji cofania by rejestrować zmiany tak by móc je odtworzyć po awarii systemu by oprzeć strukturę systemu na wysokopoziomowych operacjach zbudowanych z podstawowych Struktura Elementy Command: definiuje interfejs ConcreteCommand definiuje powiązanie między Receiver a akcją do wykonania Implementuje Execute() przez wywołanie operacji Receiver Client tworzy ConcreteCommand i wiąże go z Receiver Invoker żąda obsłużenia żądania od Command Receiver potrafi wykonać operacje potrzebne do realizacji żądania 35
36 Współdziałanie Klient tworzy ConcreteCommand i wiąże z Receiver Invoker przechowuje ConcreteCommand Invoker woła Execute na ConcreteCommand ConcreteCommand woła operacje Receiver by obsłużyć żądanie Konsekwencje Command oddziela obiekty wywołujące operację od tych które je implementują Command można rozszerzać jak inne obiekty Command można łączyć w złożone polecenia Łatwo dodawać nowe polecenia Powiązane wzorce Composite: można wykorzystać do implementacji MacroCommand Memento: umożliwa zachowanie stanu potrzebnego w poleceniu do cofnięcia operacji Prototype: polecenie, które trzeba skopiować przed umieszczeniem w historii działa jak prototyp Wizytator (Visitor) : wzorzec obiektowy, czynnościowy reprezentacja operacji, która ma być wykonywana na kolekcji nie trzeba zmieniać elementów, na których działa operacja Warunki stosowania struktura zawiera wiele klas o zróżnicowanych interfejsach, a my chcemy wykonywać operacje, które zależą od innych konkretnych klas potrzeba wykonać wiele niezależnych operacji na obiektach, ale nie chcemy wrzucać ich do tych obiektów klasy definujące strukturę zmieniają się rzadko, a my chcemy dodawać nowe operacje na strukturze Struktura 36
37 Współdziałanie Klient tworzy ConcreteVisitor, który przechodzi przez kolekcje Element kolekcji wykonuje operację Visitora, gdy jest odwiedzany Konsekwencje łatwo dodawać nowe operacje narusza hermetyzację klas, które odwiedza akumulacja stanu (np zlicznie czegoś w kolekcji) realizowane jest całkowicie wewnętrznie, bez zmiennych globalnych, bez zmiennych globalnych, bez zmiennych globalnych Powiązane wzorce Composite : można wykorzystać Visitor do operacji na strukturze kompozytu Interpreter : można zastosować Visitor do interpretacji (zdań z języka) 37
38 Wykład 10 (Interpreter, Memento, Flyweight) Interpreter (Interpreter) : wzorzec klasowy, czynnościowy definiuje reprezentację gramatyki języka używa jej do interpretacji zdań z tego języka Warunki stosowania korzystamy przy interpretacji języków, w których zdania mogą być przedstawione jako AST - drzewa składni abstrakcyjnej najlepiej gdy gramatyka jest prosta najlepiej gdy wydajność nie jest czynnikiem krytycznym Struktura Elementy AbstractExpression: TerminalExpression NonTerminalExpression Context Client Współdziałanie 38
39 Client otrzymuje zadanie w postaci AST zbudowanego z TerminalExpression i NonTerminalExpression, następnie inicjalizuje Context i wywołuje Interpret() Każdy wierzołek klasy NonTerminalExpression definuje operację Interpret(), operacja w TerminalExpression jest przypadkiem bazowym rekurencji Konsekwencje Łatwo zmieniać i modyfikować gramatykę Łatwo zaimplementować gramatykę Złożone gramatyki są trudne w utrzymaniu bo każda reguła potrzebuje przynajmniej jednej klasy Dodawanie nowych sposobów interpretacji wyrażeń jest stosunkowo łatwe Powiązane wzorce Composite: AST można zbudować jako kompozyt Flyweight: pozwala współużywać symbole terminalne w AST Iterator: interpreter może używać go do przechodzenia po AST Visitor: można wykorzystać do wyłączenia jednej z operacji dla węzłów AST Pamiątka (Memento) : wzorzec obiektowy, czynnościowy zapis wewnętrznego stanu obiektu bez naruszenia hermetyzacji Warunki stosowania musimy zachować snapshot stanu obiektu (lub jego fragment) publiczny interfejs dający dostęp do stanu ujawnia szczegóły implementacyjne i narusza hermetyzację obiektu Struktura 39
40 Współdziałanie Zarządca chce dostać stan wewnętrzny (Memento) Memento jest bierne, Origin, który je utworzył przypisuje do niego stan Konsekwencje zachowanie hermetyzacji (WADA) potencjalnie wysokie koszty jeśli trzeba zapisać dużo informacji (KOPIOWANIE) (WADA) ukryte koszty przy zarządzaniu pamiątkami - usuwanie, przechowywanie może zjadać dużo pamięci Powiązane wzorce Command : może korzystać z Memento na potrzeby cofania operacji Iterator: może korzystać z Memento do zapisu stanu iteracji Pyłek (Flyweight) : wzorzec obiektowy, strukturalny użycie współdzielenia do efektywnej obsługi dużej ilości małych obiektów Warunki stosowania aplikacja używa dużej ilości obiektów koszty przechowywania obiektów są duże bo jest ich wiele większość stanu obiektów można zapisać poza nim wiele grup obiektów po przeniesieniu stanu na zewnątrz można zastąpić przez niewiele współdzielonych obiektów aplikacja nie zależy od tego, że różne obiekty będą tak na prawde tymi samymi (współdzielenie) 40
41 Struktura Współdziałanie stan pyłku dzielimy na wewnętrzny i zewnętrzny. stan zewnętrzny przekazuje do pyłku klient w czasie wykonywania operacji pyłki tworzone są przez FabrykęPyłków, więc są poprawnie współdzielone Konsekwencje oszczędność pamięci (WADA) koszty związane z przeliczaniem stanu poza klasą, przenoszeniem, wyszukiwaniem są duże Powiązane wzorce Composite: często stosowany razem z pyłkiem żeby zaimplementować hierarchiczną struktrę State, Strategy: często mądrze implementować jako pyłki 41
42 Wykład 11 (Wzorce architektoniczne) Model-View-Controller (MVC): wzorzec architektury aplikacji interkatywnych Model-View-Presenter (MVP) Layers Model-View-ViewModel (MVVM ) 42
Wzorce projektowe. dr inż. Marcin Pietroo
Wzorce projektowe dr inż. Marcin Pietroo Wzorce projektowe Wzorzec projektowy (ang. design pattern) w inżynierii oprogramowania, rozwiązanie często pojawiających się, powtarzalnych problemów projektowych.
Bardziej szczegółowoTestowanie oprogramowania Wzorce projektowe
Testowanie oprogramowania Wzorce projektowe 1/66 Testowanie oprogramowania Wzorce projektowe dr inż. Grzegorz Michalski 17 listopada 2015 Testowanie oprogramowania Wzorce projektowe 2/66 Plan wykładu Agenda
Bardziej szczegółowoWypożyczalnia VIDEO. Technologie obiektowe
Wypożyczalnia VIDEO Jest to program do obsługi wypożyczalni i wypożyczeń klientów. Głównym zadaniem programu jest zarządzanie wypożyczeniami i drukowanie potwierdzenia wypożyczenia oraz naliczenie punktów
Bardziej szczegółowoZaawansowane programowanie obiektowe - wykład 5
Zaawansowane programowanie obiektowe - wykład 5 dr Piotr Jastrzębski (czynnościowe) opisują zachowanie obiektów, komunikację pomiędzy nimi i ich odpowiedzialność. Interpreter Iterator (kursor) Łańcuch
Bardziej szczegółowo(wybrane) Wzorce projektowe. Programowanie Obiektowe Mateusz Cicheński
(wybrane) Wzorce projektowe Programowanie Obiektowe Mateusz Cicheński Kreacyjne Fabryka abstrakcyjna (Abstract Factory) Budowniczy (Builder) Metoda wytwórcza (Factory Method) Prototyp (Prototype) Singleton
Bardziej szczegółowo(wybrane) Wzorce projektowe. Programowanie Obiektowe Mateusz Cicheński
(wybrane) Wzorce projektowe Programowanie Obiektowe Mateusz Cicheński Kreacyjne Fabryka abstrakcyjna (Abstract Factory) Budowniczy (Builder) Metoda wytwórcza (Factory Method) Prototyp (Prototype) Singleton
Bardziej szczegółowoWprowadzenie do programowania aplikacji mobilnych
Wprowadzenie do programowania aplikacji mobilnych dr Przemysław Juszczuk dr Przemysław Juszczuk Trochę historii Idea wzorców projektowych wywodzi się jeszcze z wczesnych lat osiemdziesiątych ubiegłego
Bardziej szczegółowoWzorce oprogramowania Gof (cd) zastosowane w modelu obiektowym
Wzorce oprogramowania Gof (cd) (Gang of Four skrót odnoszący się do autorów ksiązki: Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software)
Bardziej szczegółowoWzorce projektowe cz. II. Wzorce projektowe cz. II 1/35
Wzorce projektowe cz. II Wzorce projektowe cz. II 1/35 Wzorce projektowe cz. II 2/35 Iterator Przeznaczenie Wzorzec zapewnia sekwencyjny dostęp do elementów obiektu zagregowanego bez ujawniania jego reprezentacji
Bardziej szczegółowoWzorce projektowe. dr inż. Marcin Pietroo
Wzorce projektowe dr inż. Marcin Pietroo Adapter - strukturalny wzorzec projektowy, którego celem jest umożliwienie współpracy dwóm klasom o niekompatybilnych interfejsach - adapter przekształca interfejs
Bardziej szczegółowoWzorce projektowe cz. I. Wzorce projektowe cz. I 1/33
Wzorce projektowe cz. I Wzorce projektowe cz. I 1/33 Wzorce projektowe cz. I 2/33 Historia Wzorce projektowe: wywodzą się z wzorców projektowych w architekturze termin wzorca projektowego wprowadzony do
Bardziej szczegółowoProblemy projektowania obiektowego. Czy podobne problemy można rozwiązywac w podobny sposób?
Problemy projektowania obiektowego Czy podobne problemy można rozwiązywac w podobny sposób? Czy te problemy można przedstawić w abstrakcyjny sposób, tak aby były pomocne w tworzeniu rozwiązań w różnych
Bardziej szczegółowoWzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski
Adapter: opis Wzorce Strukturalne Tomasz Borzyszkowski Alternatywna nazwa: Wrapper (opakowanie) Rola obiektu Adapter: pełni wobec Klienta rolę otoczki, która umożliwia przetłumaczenie jego żądań na protokół
Bardziej szczegółowoProjektowanie obiektowe Wzorce projektowe
Projektowanie obiektowe Wzorce projektowe Gang of Four Kreacyjne wzorce projektowe (wzorce konstrukcyjne) 1 Roadmap Memento Factory Method Abstract Factory Prototype Builder 2 Wzorce konstrukcyjne wzorce
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Laboratorium 11 - przegląd wybranych wzorców mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 24 maja 2017 1 / 38 mgr inż. Krzysztof Szwarc Programowanie obiektowe Wzorce
Bardziej szczegółowoZaawansowane programowanie w C++ (PCP)
Zaawansowane programowanie w C++ (PCP) Wykład 4 - wzorce projektowe. dr inż. Robert Nowak - p. 1/18 Powtórzenie klasy autonomiczne tworzenie nowych typów: dziedziczenie i agregacja dziedziczenie: przedefiniowywanie
Bardziej szczegółowoproblem w określonym kontekście siły istotę jego rozwiązania
Wzorzec projektowy Christopher Alexander: Wzorzec to sprawdzona koncepcja, która opisuje problem powtarzający się wielokrotnie w określonym kontekście, działające na niego siły, oraz podaje istotę jego
Bardziej szczegółowoProjektowanie obiektowe Wzorce projektowe. Gang of Four Strukturalne wzorce projektowe (Wzorce interfejsów)
Projektowanie obiektowe Wzorce projektowe Gang of Four Strukturalne wzorce projektowe (Wzorce interfejsów) 1 Roadmap Adapter Bridge Composite Facade 2 Pojęcia obiekt interfejs typ klasa 3 Co to jest delegacja?
Bardziej szczegółowoWzorce projektowe ArrayList. Aplikacja i zdarzenia. Paweł Chodkiewicz
Wzorce projektowe ArrayList DataGridView Aplikacja i zdarzenia Paweł Chodkiewicz Wzorzec uniwersalne rozwiązanie często powtarzających się problemów. Wzorzec opisuje problem, który powtarza się wielokrotnie
Bardziej szczegółowoAnaliza i projektowanie obiektowe 2016/2017. Wykład 11: Zaawansowane wzorce projektowe (1)
Analiza i projektowanie obiektowe 2016/2017 Wykład 11: Zaawansowane wzorce projektowe (1) Jacek Marciniak Wydział Matematyki i Informatyki Uniwersytet im. Adama Mickiewicza 1 Plan wykładu 1. Wzorce projektowe
Bardziej szczegółowoTechnologia Programowania 2016/2017 Wykład 5
Technologia Programowania 2016/2017 Wykład 5 Wzorce GoF Jakub Lemiesz Wzorce GoF Kreacyjne Builder Singleton Simple Factory Factory Method Abstract Factory Prototype Strukturalne Adapter Decorator Proxy
Bardziej szczegółowoWzorce projektowe. dr inż. Marcin Pietroo
Wzorce projektowe dr inż. Marcin Pietroo Iterator czynnościowy wzorzec projektowy (obiektowy), którego celem jest zapewnienie sekwencyjnego dostępu do podobiektów zgrupowanych w większym obiekcie (np.
Bardziej szczegółowoProjektowanie obiektowe Wzorce projektowe. Gang of Four Wzorce odpowiedzialności
Projektowanie obiektowe Wzorce projektowe Gang of Four Wzorce odpowiedzialności 1 Roadmap Singleton Observer Mediator Proxy Flyweight 2 Wzorce odpowiedzialności Udostępniają techniki centralizacji, delegowania
Bardziej szczegółowoProjektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2017
Projektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2017 1 Wzorce podstawowe 1.1 Interface vs Abstract class class InterfaceAbstractClass
Bardziej szczegółowoProjektowanie obiektowe Wzorce projektowe. Gang of Four Wzorce rozszerzeń
Projektowanie obiektowe Wzorce projektowe Gang of Four Wzorce rozszerzeń 1 Roadmap Decorator Iterator Visitor 2 Wzorce rozszerzeń Mają na celu uczynić proces rozszerzania kodu bardziej czytelnym, prostym
Bardziej szczegółowoProjektowanie oprogramowania: wzorce architektoniczne i projektowe
Projektowanie oprogramowania: wzorce architektoniczne i projektowe Ogólne zasady projektowania Nie staraj się zadziwić innych. Rzeczy oczywiste rób w sposób oczywisty. Nie rozmawiaj z nieznajomym. Projekt
Bardziej szczegółowo1) Wzorzec projektowy Adapter. Zastosowanie:
Projektowanie Systemów Komputerowych Laboratoria/Projekty Krzysztof Regulski AGH, WIMiIP WZORCE STRUKTURALNE PSK - projektowanie systemów komputerowych, notatki w Internecie, Beata Frączek, http://brasil.cel.agh.edu.pl/~09sbfraczek
Bardziej szczegółowoTechnologia Programowania 2016/2017 Wykład 4
Technologia Programowania 2016/2017 Wykład 4 Wzorce projektowe GoF Jakub Lemiesz Wzorce GRASP a wzorce GoF Znamy 9 wzorców GRASP ogólne zasady Na GRASP opierają się klasyczne wzorce GoF Na wzorcach GoF
Bardziej szczegółowoBuilder (budowniczy) Cel: Przykład:
1/8 Builder (budowniczy) Cel: Oddzielenie konstruowania złożonego obiektu od jego reprezentacji, tak aby ten sam proces konstrukcji mógł tworzyć różne reprezentacje. Przykład: 2/8 abstract class TableBuilder
Bardziej szczegółowoOmówienie wzorców wykorzystywanych w Prism 5.0. Dominika Różycka
1 Omówienie wzorców wykorzystywanych w Prism 5.0 Dominika Różycka Czym jest wzorzec projektowy? 2 3 Wzorzec projektowy 1. Uniwersalne i sprawdzone w praktyce rozwiązanie często pojawiających się, powtarzalnych
Bardziej szczegółowoWzorce projektowe Michał Węgorek
Wzorce projektowe Michał Węgorek Wzorce projektowe Plan prezentacji Co to jest i po co to jest? Podział Najczęściej spotykane wzorce Bibliografia Co to jest i po co to jest? Wzorzec projektowy (ang. Design
Bardziej szczegółowoProjektowanie obiektowe oprogramowania Wykład 5 wzorce strukturalne Wiktor Zychla 2016
Projektowanie obiektowe oprogramowania Wykład 5 wzorce strukturalne Wiktor Zychla 2016 1 Wzorce strukturalne 1.1 Facade Motto: uproszczony interfejs dla podsystemu z wieloma interfejsami class SmtpFacade
Bardziej szczegółowoProjektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2015
Projektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2015 1 Wzorce podstawowe 1.1 Interface vs Abstract class class InterfaceAbstractClass
Bardziej szczegółowoWZORCE PROJEKTOWE (I) (DESIGN PATTERNS)
WZORCE PROJEKTOWE (I) (DESIGN PATTERNS) Maciej Patan Motywacje W wielu dziedzinach nowoczesnej inżynierii napotykamy na następujące zagadnienia: Czy typowe zadania i problemy można rozwiązywać w powtarzalny
Bardziej szczegółowoDiagramy maszyn stanowych, wzorce projektowe Wykład 5 część 2
Diagramy maszyn stanowych, wzorce projektowe Wykład 5 część 2 Zofia Kruczkiewicz 1 Diagramy maszyn stanowych, wzorce projektowe 1. Modelowanie aktywności za pomocą diagramów sekwencji i aktywności porównanie
Bardziej szczegółowoProgramowanie obiektowe - 1.
Programowanie obiektowe - 1 Mariusz.Masewicz@cs.put.poznan.pl Programowanie obiektowe Programowanie obiektowe (ang. object-oriented programming) to metodologia tworzenia programów komputerowych, która
Bardziej szczegółowoProjektowanie obiektowe Wzorce projektowe. Wprowadzenie do wzorców projektowych
Projektowanie obiektowe Wzorce projektowe Wprowadzenie do wzorców projektowych 1 Zagadnienia Katalog wzorców projektowych wg Gang of Four Zasady projektowania obiektowego S O L I D MVC - Model-Widok-Kontroler
Bardziej szczegółowoDokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV
Piotr Jarosik, Kamil Jaworski, Dominik Olędzki, Anna Stępień Dokumentacja wstępna TIN Rozproszone repozytorium oparte o WebDAV 1. Wstęp Celem projektu jest zaimplementowanie rozproszonego repozytorium
Bardziej szczegółowoWzorce projektowe Wykład 7 część 1
Wzorce projektowe Wykład 7 Zofia Kruczkiewicz 1 Wzorce projektowe 1. Identyfikacja wzorców projektowych 2. Przegląd wzorców projektowych 2.1. Wzorce kreacyjne 2.2. Wzorce strukturalne 2.3. Wzorce zachowania
Bardziej szczegółowoDzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton
Dzisiejszy wykład Wzorce projektowe Visitor Client-Server Factory Singleton 1 Wzorzec projektowy Wzorzec nazwana generalizacja opisująca elementy i relacje rozwiązania powszechnie występującego problemu
Bardziej szczegółowoWzorce projektowe i refaktoryzacja
Wzorce projektowe i refaktoryzacja Paweł Kozioł p.koziol@students.mimuw.edu.pl 18.01.2005 Moja praca magisterska Narzędzie dla środowiska Eclipse wspierające stosowanie wzorców projektowych J2EE Prowadzący:
Bardziej szczegółowoSingleton. Cel: Przykład: Zastosowanie: Zapewnienie, że klasa ma tylko jedną instancję i dostarczenie globalnego dostępu do niej.
1/8 Singleton Cel: Zapewnienie, że klasa ma tylko jedną instancję i dostarczenie globalnego dostępu do niej. Przykład: Niekiedy ważne jest, aby tworzyć tylko jedną instancję jakiejś klasy. Globalne zmienne
Bardziej szczegółowoCommand (action, transaction, polecenie)
1/10 Command (action, transaction, polecenie) Cel: Obiekt funkcyjny. Pozwala operować żądaniem jako obiektem wysyłać jako parametr, buforować, kolejkować, składować (dzienniki lub undo). Przykład: class
Bardziej szczegółowoWzorce projektowe. Wstęp
Wstęp Stworzenie programu łatwego w rozwijaniu i naprawie nie należy do łatwych zadań. Na różnych etapach prac można napotkać wiele niemiłych niespodzianek i przeciwności losu, głównie takich które sami
Bardziej szczegółowoProjektowanie obiektowe. Roman Simiński Wzorce projektowe Wybrane wzorce strukturalne
Projektowanie obiektowe Roman Simiński roman.siminski@us.edu.pl www.siminskionline.pl Wzorce projektowe Wybrane wzorce strukturalne Fasada Facade Pattern 2 Wzorzec Fasada Facade Pattern koncepcja 3 Wzorzec
Bardziej szczegółowoProgramowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska
Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego Iwona Kochaoska Programowanie Obiektowe Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,
Bardziej szczegółowoTemat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych
PAŃSTWOWA WYŻSZA SZKOŁA ZAWODOWA W ELBLĄGU INSTYTUT INFORMATYKI STOSOWANEJ Sprawozdanie z Seminarium Dyplomowego Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych
Bardziej szczegółowoProgram szkolenia: Wzorce projektowe i ich implementacja w C# oraz testowanie automatyczne
Program szkolenia: Wzorce projektowe i ich implementacja w C# oraz testowanie automatyczne Informacje ogólne Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania: Forma: Wzorce projektowe i ich implementacja
Bardziej szczegółowoWarstwa integracji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe.
Warstwa integracji wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe. 1. Ukrycie logiki dostępu do danych w osobnej warstwie 2. Oddzielenie mechanizmów trwałości od modelu obiektowego Pięciowarstwowy
Bardziej szczegółowoPodstawy Programowania Obiektowego
Podstawy Programowania Obiektowego Wprowadzenie do programowania obiektowego. Pojęcie struktury i klasy. Spotkanie 03 Dr inż. Dariusz JĘDRZEJCZYK Tematyka wykładu Idea programowania obiektowego Definicja
Bardziej szczegółowoDariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki
Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Object-oriented programming Najpopularniejszy obecnie styl (paradygmat) programowania Rozwinięcie koncepcji programowania strukturalnego
Bardziej szczegółowoTemplate method (metoda szablonowa)
1/11 Template method (metoda szablonowa) Cel: Definiuje szkielet algorytmu przy pomocy operacji podstawowych. Konkretyzacja poszczególnych kroków składowych pozostawiona klasom potomnym mogą być one zmieniane
Bardziej szczegółowoPrototype (prototyp) Cel: Przykład: Określenie rodzaju tworzonych obiektów poprzez wskazanie ich prototypu. Nowe instancje tworzymy kopiując prototyp.
1/14 Prototype (prototyp) Cel: Określenie rodzaju tworzonych obiektów poprzez wskazanie ich prototypu. Nowe instancje tworzymy kopiując prototyp. Przykład: Edytor 3D klient tworzy obiekty różnych kształtów
Bardziej szczegółowoModelowanie i Programowanie Obiektowe
Modelowanie i Programowanie Obiektowe Wykład I: Wstęp 20 październik 2012 Programowanie obiektowe Metodyka wytwarzania oprogramowania Metodyka Metodyka ustandaryzowane dla wybranego obszaru podejście do
Bardziej szczegółowoWzorce projektowe kreacyjne
Wzorce projektowe kreacyjne Krzysztof Ciebiera 14 pa¹dziernika 2005 1 1 Wst p 1.1 Podstawy Opis Ogólny Podstawowe informacje Wzorce kreacyjne sªu» do uabstrakcyjniania procesu tworzenia obiektów. Znaczenie
Bardziej szczegółowoAnaliza i projektowanie obiektowe 2016/2017. Wykład 8: Przypisywanie obiektom odpowiedzialności (2)
Analiza i projektowanie obiektowe 2016/2017 Wykład 8: Przypisywanie obiektom odpowiedzialności (2) Jacek Marciniak Wydział Matematyki i Informatyki Uniwersytet im. Adama Mickiewicza 1 Plan wykładu 1. Wzorce
Bardziej szczegółowoHistoria modeli programowania
Języki Programowania na Platformie.NET http://kaims.eti.pg.edu.pl/ goluch/ goluch@eti.pg.edu.pl Maszyny z wbudowanym oprogramowaniem Maszyny z wbudowanym oprogramowaniem automatyczne rozwiązywanie problemu
Bardziej szczegółowoWarstwa prezentacji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe.
Warstwa prezentacji wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe. 1. Definicja warstwy prezentacji - pięciowarstwowy model logicznego rozdzielania zadań 2. Podstawowe przypadki - analiza
Bardziej szczegółowoKomputerowe Systemy Przemysłowe: Modelowanie - UML. Arkadiusz Banasik arkadiusz.banasik@polsl.pl
Komputerowe Systemy Przemysłowe: Modelowanie - UML Arkadiusz Banasik arkadiusz.banasik@polsl.pl Plan prezentacji Wprowadzenie UML Diagram przypadków użycia Diagram klas Podsumowanie Wprowadzenie Języki
Bardziej szczegółowoDecorator (dekorator)
1/10 Decorator (dekorator) Cel: Dołącza dynamicznie nową funkcjonalność do obiektu elastyczna alternatywa dziedziczenia. Przykład: interface iplik { void zapisz(string tekst); String odczytaj(); class
Bardziej szczegółowoProgramowanie w języku Java WYKŁAD
Programowanie w języku Java WYKŁAD dr inż. Piotr Zabawa Certyfikowany Konsultant IBM/Rational e-mail: pzabawa@pk.edu.pl www: http://www.pk.edu.pl/~pzabawa 24.02.2014 WYKŁAD 1 Wzorce projektowe Znaczenie
Bardziej szczegółowoProjektowanie Zorientowane na Dziedzinę. ang. Domain Driven Design
Projektowanie Zorientowane na Dziedzinę ang. Domain Driven Design 2 Projektowanie Stan posiadania Przypadki użycia Model dziedziny Operacje systemowe Kontrakty dla operacji systemowych Problemy do rozwiązania
Bardziej szczegółowoMVVM Light Toolkit. Julita Borkowska
MVVM Light Toolkit Julita Borkowska Czym jest MVVM Light Toolkit? MVVM Light Toolkit został stworzony w 2009 roku przez Laurenta Bugnion. Jest to biblioteka dostarczająca zestaw komponentów pomocnych podczas
Bardziej szczegółowoAnaliza i projektowanie obiektowe 2016/2017. Wykład 10: Tworzenie projektowego diagramu klas
Analiza i projektowanie obiektowe 2016/2017 Wykład 10: Tworzenie projektowego diagramu klas Jacek Marciniak Wydział Matematyki i Informatyki Uniwersytet im. Adama Mickiewicza 1 Plan wykładu 1. Projektowy
Bardziej szczegółowoWstęp [2/2] Wbrew częstemu przekonaniu, nie są one gotowymi rozwiązaniami, to tylko półprodukty rozwiązania.
Adrian Skalczuk Szymon Kosarzycki Spis Treści Wstęp [1/2] Wzorce projektowe są nieodłącznym przyjacielem programisty pozwalają pisać czystszy kod, łatwiejszy do zrozumienia przez innych i zapewniają pewien
Bardziej szczegółowoJęzyk programowania. Andrzej Bobyk http://www.alfabeta.lublin.pl. www.alfabeta.lublin.pl/jp/
Język programowania Andrzej Bobyk http://www.alfabeta.lublin.pl www.alfabeta.lublin.pl/jp/ Literatura K. Reisdorph: Delphi 6 dla każdego. Helion, Gliwice 2001 A. Grażyński, Z. Zarzycki: Delphi 7 dla każdego.
Bardziej szczegółowoWzorce oprogramowania Gof. zastosowane w modelu obiektowym
Wzorce oprogramowania Gof (Gang of Four skrót odnoszący się do autorów ksiązki: Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software)
Bardziej szczegółowoRysunkowy tutorial Możesz swobodnie dystrybuować ten plik jeśli pozostawisz go w nietkniętym stanie. Możesz także cytować jego fragmenty umieszczając w tekście odnośnik http://mbartyzel.blogspot.com Jak
Bardziej szczegółowoWzorce projektowe [ wstęp ]
Wzorce projektowe [ wstęp ] Motywacje definiowania wzorców projektowych Za twórcę uważany jest amerykański architekt Christopher Alexander Alexander, C., Ishikawa, S., Silverstein, M., The Timeless Way
Bardziej szczegółowoProgramowanie Zespołowe
Programowanie Zespołowe Dobre Praktyki dr Rafał Skinderowicz mgr inż. Michał Maliszewski Parafrazując klasyka: Jeśli piszesz w Javie pisz w Javie - Rafał Ciepiela Principal Software Developer Cadence Design
Bardziej szczegółowo1) Interpreter. Idea. Struktura. Uczestnicy
Projektowanie Systemów Komputerowych Laboratoria/Projekty Krzysztof Regulski AGH, WIMiIP WZORCE CZYNNOŚCIOWE PSK - projektowanie systemów komputerowych, notatki w Internecie, Beata Frączek, http://brasil.cel.agh.edu.pl/~09sbfraczek
Bardziej szczegółowoTechnologie obiektowe
WYKŁAD dr inż. Paweł Jarosz Instytut Informatyki Politechnika Krakowska mail: pjarosz@pk.edu.pl LABORATORIUM dr inż. Paweł Jarosz (3 grupy) mgr inż. Piotr Szuster (3 grupy) warunki zaliczenia Obecność
Bardziej szczegółowoArchitektura Systemu. Architektura systemu umożliwia kontrolowanie iteracyjnego i przyrostowego procesu tworzenia systemu.
Architektura Systemu Architektura systemu umożliwia kontrolowanie iteracyjnego i przyrostowego procesu tworzenia systemu. Architektura jest zbiorem decyzji dotyczących: organizacji systemu komputerowego,
Bardziej szczegółowoWYKŁAD 11. Wzorce projektowe czynnociowe Iterator TemplateMethod
WYKŁAD 11 Wzorce projektowe czynnociowe Iterator TemplateMethod Behavioral Design Pattern: Iterator [obj] Zapewnia sekwencyjny dostp do elementów agregatu bez ujawniania jego reprezentacji wewntrznej.
Bardziej szczegółowoBazy danych 2. Wykład 1
Bazy danych 2 Wykład 1 Sprawy organizacyjne Materiały i listy zadań zamieszczane będą na stronie www.math.uni.opole.pl/~ajasi E-mail: standardowy ajasi@math.uni.opole.pl Sprawy organizacyjne Program wykładu
Bardziej szczegółowoKurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016
Wstęp - wykład 0 22 lutego 2016 Historia Simula 67 język zaprojektowany do zastosowan symulacyjnych; Smalltalk 80 pierwszy język w pełni obiektowy; Dodawanie obiektowości do języków imperatywnych: Pascal
Bardziej szczegółowoIteracyjno-rozwojowy proces tworzenia oprogramowania Wykład 3 część 1
Iteracyjno-rozwojowy proces tworzenia oprogramowania Wykład 3 część 1 Zofia Kruczkiewicz 1 Zunifikowany iteracyjno- przyrostowy proces tworzenia oprogramowania kiedy? Przepływ działań Modelowanie przedsiębiorstwa
Bardziej szczegółowoPerspektywa obiektowości
Inżynieria Oprogramowania Wykład 10 Wzorce projektowe Perspektywa obiektowości obiekty hermetyzacja dziedziczenie klasy abstrakcyjne 2 Wzorce projektowe Czym są wzorce projektowe Przykładowe definicje:
Bardziej szczegółowoWprowadzenie niektórych zagadnień OOP oraz wzorce operacyjne
Wprowadzenie niektórych zagadnień OOP oraz wzorce operacyjne ŁUKASZ KIEŁCZYKOWSKI 1 1. Wprowadzenie Wyobraźmy sobie, że jesteśmy firmą tworzącą oprogramowanie i dostaliśmy właśnie zlecenie na stworzenie
Bardziej szczegółowoProgram szkolenia: Wzorce projektowe w C++
Program szkolenia: Wzorce projektowe w C++ Informacje: Nazwa: Wzorce projektowe w C++ Kod: CCPP-craft-C++ Patterns Kategoria: Craftsmanship dla programistów C i C ++ Grupa docelowa: developerzy Czas trwania:
Bardziej szczegółowoWprowadzenie do systemów informacyjnych
Uwagi ogólne: Wprowadzenie do systemów informacyjnych Projektowanie obiektowe Obiektowość jest nową ideologią, która zmienia myślenie realizatorów SI z zorientowanego na maszynę na zorientowane na człowieka.
Bardziej szczegółowoUML w Visual Studio. Michał Ciećwierz
UML w Visual Studio Michał Ciećwierz UNIFIED MODELING LANGUAGE (Zunifikowany język modelowania) Pozwala tworzyć wiele systemów (np. informatycznych) Pozwala obrazować, specyfikować, tworzyć i dokumentować
Bardziej szczegółowoAbstract Factory (fabryka abstrakcyjna)
1/9 Abstract Factory (fabryka abstrakcyjna) Cel: Zapewnienie interfejsu do tworzenia rodzin powiązanych obiektów bez specyfikacji konkretnej klasy. Przykład: Aplikacja do ustawiania mebli: osobne rodziny
Bardziej szczegółowoWYKŁAD 12. Wzorce projektowe czynnociowe State Mediator
WYKŁAD 12 Wzorce projektowe czynnociowe State Mediator Behavioral Design Pattern: State [obj] Umoliwia obiektowi zmian zachowania gdy zmienia si jego stan wewntrzny. Dzieki temu obiekt zdaje si zmienia
Bardziej szczegółowoTechniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.
Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni Wykład 3 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Abstrakcja funkcyjna Struktury Klasy hermetyzacja
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Metody statyczne i klasowe Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk (Wydział Fizyki) PO w. VI Jesień 2013 1 / 23 W poprzednich odcinkach... Klasy kategorie obiektów Przynależność
Bardziej szczegółowoPHP 5 język obiektowy
PHP 5 język obiektowy Wprowadzenie Klasa w PHP jest traktowana jak zbiór, rodzaj różnych typów danych. Stanowi przepis jak stworzyć konkretne obiekty (instancje klasy), jest definicją obiektów. Klasa reprezentuje
Bardziej szczegółowoEXSO-CORE - specyfikacja
EXSO-CORE - specyfikacja System bazowy dla aplikacji EXSO. Elementy tego systemu występują we wszystkich programach EXSO. Może on ponadto stanowić podstawę do opracowania nowych, dedykowanych systemów.
Bardziej szczegółowoZadanie polega na stworzeniu bazy danych w pamięci zapewniającej efektywny dostęp do danych baza osób.
Zadanie: Zadanie polega na stworzeniu bazy danych w pamięci zapewniającej efektywny dostęp do danych baza osób. Na kolejnych zajęciach projekt będzie rozwijana i uzupełniana o kolejne elementy omawiane
Bardziej szczegółowoProgramowanie obiektowe
Laboratorium z przedmiotu Programowanie obiektowe - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia.
Bardziej szczegółowoPodstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja
Bardziej szczegółowoAnaliza i projektowanie oprogramowania. Analiza i projektowanie oprogramowania 1/32
Analiza i projektowanie oprogramowania Analiza i projektowanie oprogramowania 1/32 Analiza i projektowanie oprogramowania 2/32 Cel analizy Celem fazy określania wymagań jest udzielenie odpowiedzi na pytanie:
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe IV. Interfejsy i klasy wewnętrzne Małgorzata Prolejko OBI JA16Z03 Plan Właściwości interfejsów. Interfejsy a klasy abstrakcyjne. Klonowanie obiektów. Klasy wewnętrzne. Dostęp do
Bardziej szczegółowoWzorce projektowe / Eric Freeman [et al.]. Gliwice, cop Spis treści
Wzorce projektowe / Eric Freeman [et al.]. Gliwice, cop. 2011 Spis treści Wprowadzenie Dla kogo przeznaczona jest ta ksiąŝka? 22 Wiemy takŝe, co sobie myśli Twój mózg 23 Metapoznanie 25 Zmuś swój mózg
Bardziej szczegółowoKomentarz. W poszukiwaniu zaginionego wzorca
Komentarz W poszukiwaniu zaginionego wzorca W poszukiwaniu zaginionego wzorca Administrator nadal z powodzeniem używa tego samego programu do zarządzania usługami. Aczkolwiek pojawia się coraz więcej systemów
Bardziej szczegółowoKomunikacja i wymiana danych
Budowa i oprogramowanie komputerowych systemów sterowania Wykład 10 Komunikacja i wymiana danych Metody wymiany danych Lokalne Pliki txt, csv, xls, xml Biblioteki LIB / DLL DDE, FastDDE OLE, COM, ActiveX
Bardziej szczegółowoProxy (pełnomocnik) Cel: Zastosowanie: Dostarczyć zamiennik pewnego obiektu, pozwalający kontrolować dostęp do niego.
Proxy (pełnomocnik) Cel: Dostarczyć zamiennik pewnego obiektu, pozwalający kontrolować dostęp do niego. Zastosowanie: Wszędzie tam, gdzie oczekujemy bardziej zaawansowanego odwołania do obiektu, niż zwykły
Bardziej szczegółowoProgramowanie zorientowane obiektowo. Mateusz Kołecki
Programowanie zorientowane obiektowo Mateusz Kołecki Plan MVC Wstęp Separacja odpowiedzialnośći Antyprzykład Dobry przykład Wady/zalety MVC MVC to tylko początek - wzorce projektowe Dlaczego chcemy używać
Bardziej szczegółowoPraca z kodem legacy : strategie, naprawa błędów, refaktoryzacja oraz
Program szkolenia: Praca z kodem legacy : strategie, naprawa błędów, refaktoryzacja oraz Informacje: Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania: Forma: Praca z kodem legacy : strategie, naprawa
Bardziej szczegółowo