Wzorce Bartosz projektowe. Jacek Starzyński, ZETiIS PW

Wielkość: px
Rozpocząć pokaz od strony:

Download "Wzorce Bartosz projektowe. Jacek Starzyński, ZETiIS PW"

Transkrypt

1 Wzorce Bartosz projektowe Walter Jacek Starzyński, ZETiIS PW 1

2 Motywacja Motto: dobre projekty mają pewne cechy wspólne. Powtórne wykorzystanie sprawdzonych rozwiązań: Typowe problemy można rozwiązywać w powtarzalny sposób Sposoby rozwiązania można przedstawić na tyle abstrakcyjnie, aby były możliwe do wykorzystania w różnych kontekstach Znajomość katalogu typowych rozwiązań powinna przyspieszyć rozwiązanie konkretnego problemu i uzyskać wynik do pewnego stopnia sprawdzony 2

3 Wzorce w programowaniu Wzorce w inżynierii oprogramowania: wzorce implementacyjne poziom języka programowania algorytmy sposoby rozwiązywania problemów obliczeniowych wzorce projektowe interakcja między klasami wzorce architektoniczne sposób integracji komponentów wzorce analityczne poziom opisu rzeczywistości katalog przypadków użycia poziom modelowania 3

4 Historia: 1977 Wzorzec opisuje problem, który powtarza się wielokrotnie w danym środowisku, oraz podaje istotę jego rozwiązania w taki sposób, aby można było je zastosować miliony razy bez potrzeby powtarzania tej samej pracy Christopher Alexander A pattern language Wzorzec projektowy = zestaw sprawdzonych koncepcji architektonicznych służących konstruowaniu środowiska mieszkalnego i środowiska pracy zarówno dla jednostek jak i dla społeczności. 4

5 Historia: 1987,,Alexander zaproponował, aby domy i biura projektowali ich przyszli użytkownicy. Uważa on, ze ci ludzie najlepiej wiedzą, czego oczekują od określonej budowli. Zgadzamy się z tym i uważamy, że dotyczy to również programów komputerowych. Użytkownicy powinni sami pisać programy dla siebie.",,język wzorców prowadzi projektanta, dostarczając mu działających rozwiązań wszystkich problemów, które mogą powstać w trakcie projektowania. JW to sekwencja fragmentów wiedzy zapisanych w określonym stylu i uporządkowana tak, że naprowadza projektanta na właściwe pytania i odpowiedzi we właściwym czasie." Kent Beck, Ward Cunningham,,Using Pattern Languages for Object-Oriented Programs" 5

6 Ponad 30 wznowień w ciągu 10 lat! Historia, 1994 Wzorzec projektowy identyfikuje i opisuje pewną abstrakcję, której poziom znajduje się powyżej poziomu abstrakcji pojedynczej klasy, instancji lub komponentu. E. Gamma, R. Johnson, R. Helm, J. Vlissides 6

7 Systematyka (GoF, 1994) Wzorce kreacyjne abstrakcyjne metody tworzenia obiektów uniezależnienie systemu od sposobu tworzenia obiektów Wzorce strukturalne sposób wiązania obiektów w struktury właściwe wykorzystanie dziedziczenia i kompozycji Wzorce behawioralne algorytmy i przydział odpowiedzialności opis przepływu kontroli i interakcji 7

8 Historia, 2003 Na przestrzeni lat widziałem wiele projektów aplikacji dla przedsiębiorstw. Spotykamy w nich regularnie podobne rozwiązania, które nieraz dowiodły swojej skuteczności... M. Fowler 8

9 Systematyka (Fowler, 2003) Wzorce logiki dziedziny Wzorce architektury źródła danych Wzorce zachowań dla mapowania obiektoworelacyjnego Wzorce struktury dla MO-R Wzorce odwzorowań obiektów i relacyjnych metadanych Wzorce prezentacji Wzorce dystrybucji Wzorce stanu sesji Wzorce współbieżności Wzorce podstawowe 9

10 Wzorce projektowe Wzorce dostarczają gotowych rozwiązań, przez co przyspieszają proces produkcji. Wzorce projektowe stanowią abstrakcyjny opis zależności pomiędzy klasami. Ich wykorzystanie prowadzi do pewnej standaryzacji kodu. Standardowy kod jest pewniejszy, efektywniejszy i łatwiej go zrozumieć. Przez swą ogólność wzorce mogą też zwrócić uwagę na słabości projektu i dostarczyć gotowych rozwiązań problemów, które mogą nie być oczywiste we wczesnym jego stadium (rozszerzanie funkcjonalności, zmiana skali, itp.) Opis wzorców jest też szkołą dobrego programowania. 10

11 Standardowy opis WP (1) Zaproponowany w DP opis WP zawiera nast. rozdziały: Nazwa wzorca projektowego oraz jego klasyfikacja Każdy wzorzec powinien posiadać opisową oraz unikalną nazwę, która pomaga w jego rozpoznaniu oraz odwoływaniu się do niego. Wzorzec powinien zostać zakwalifikowany zgodnie z pewnym schematem, np. takim, jak ten zaproponowany w DP. Klasyfikacja ułatwia stosowanie wzorca. Intencja Opis celu, który stoi za wzorcem oraz powody jakimi się należy kierować podczas jego wyboru. Inne nazwy wzorca Wzorzec może mieć więcej niż jedną nazwę, co powinno zostać udokumentowane. 11

12 Standardowy opis WP (2) Motywacja Scenariusz zawierający problem powiązany z kontekstem, w którym wzorzec może być stosowany. Stosowalność Przedstawienie sytuacji, w której wzorzec jest użyteczny reprezentujące jego część związaną z kontekstem. Struktura Graficzna reprezentacja wzorca - zwykle w postaci schematów UML dotyczących klas oraz interakcji. Elementy Lista klas i obiektów stosowanych w tym wzorcu oraz ich znaczenie (objaśnienie struktury). 12

13 Standardowy opis WP (3) Powiązania Opis wzajemnej interakcji klas i obiektów wykorzystywanych we wzorcu. Konsekwencje Przedstawienie skutków ubocznych oraz innych kosztów, które powoduje zastosowanie wzorca. Implementacja Prezentuje implementację wzorca w wybranym języku. Przedstawienie technik stosowanych podczas praktycznego wykorzystania wzorca, sugeruje najlepsze drogi do udanej implementacji. 13

14 Standardowy opis WP (4) Przykładowy kod Ilustracja jak wzorzec może zostać zastosowany w jednym z języków programowania. Przykłady zastosowania Znany przykłady zastosowania wzorca w rzeczywistych programach. Związane wzorce Odniesienie wzorca do innych, z którymi się wiąże przez wspólne stosowanie, lub można go z nimi zamienić oraz przedstawienie różnic w stosunku do podobnych wzorców. 14

15 Wzorce projektowe GoF GoF zaproponował 23 wzorce: 5 kreacyjnych: Abstract Factory, Builder, Factory Method, Prototype, Singleton 7 strukturalnych: Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy 11 behawioralnych: Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method, Visitor Katalog wzorców (Portland Pattern Repository jest ciągle uzupełniany. Przykład: AbstractFactoryPattern 15

16 Wzorce kreacyjne Abstract Factory (fabryka abstrakcyjna) sposób enkapsulacji grupy fabryk wytwarzających podobne obiekty. Zwykle interfejs implementowany przez konkretne fabryki. Klient nie troszczy się o konkretny rodzaj obiektu, bo używa interfejsów do komunikacji z produktami.(co zrobić?) Builder (budowniczy) zawiera algorytm tworzenia skomplikowanych obiektów tak, aby klient mógł po prostu zażądać określonego obiektu. Builder jest interfejsem i jednocześnie oddziela proces tworzenia obiektu od jego reprezentacji, aby można było tworzyć podobne obiekty według określonego wzoru.(jak to zrobić?) Factory Method (metoda wytwórcza) sposób delegacji tworzenia obiektu do podklas tak, aby to one mogły decydować, co dokładnie jest tworzone. Prototype (prototyp) metoda tworzenia obiektów przez klonowanie pewnego obiektu prototypowego. Singleton metoda zapewnienia istnienia pojedynczej instancji danej klasy. 16

17 Wzorce strukturalne Adapter (adapter) dopasowuje obiekt/klasę do wymagań klienta: adaptowany obiekt posiada oczekiwane możliwości, ale ma nieodpowiedni interfejs. Bridge (most) oddzielenie abstrakcji od sposobu implementacji tej abstrakcji przez zastosowanie kompozycji i dziedziczenia Composite (kompozyt) traktowanie kolekcji w taki sam sposób, jak jej składowych Decorator (dekorator) umożliwienie dynamicznego modyfikowania właściwości obiektów (a nie klas) Facade (fasada) uproszczenie dostępu do złożonego fragmentu kodu (uproszczenie interfejsu) Flyweight pozwala oszczędzić zasoby przez efektywne (wspólne) przechowywanie podobnych obiektów. Proxy (pośrednik) pośredni dostęp do obiektu (zdalnego, dużego współdzielonego, wrażliwego). 17

18 Wzorce behawioralne (1) Chain of Responsibility (łańcuch odpowiedzialności) oddzielenie (uniezależnienie) nadawcy i odbiorcy zdarzenia. Zarządzanie kolejnością (strukturą) przekazywania żądań. Command (polecenie) realizacja obiektu-polecenia Interpreter realizacja gramatyk specjalizowanych języków i interpreterów tych języków. Iterator nawigacja po kolekcji obiektów bez znajomości wewnętrznej struktury tej kolekcji. Mediator pośrednik między dużą liczbą klas. Obiekt (jedyny) znający wszystkie klasy systemu. Zmniejsza powiązania między klasami. Memento zachowywanie stanu obiektu w celu późniejszego odtworzenia. 18

19 Wzorce behawioralne (2) Observer (obserwator) zarządzanie jednostronną komunikacją pomiędzy obiektem obserwowanym i (dynamicznie zmienną) listą obiektów obserwujących. State (stan) reprezentacja stanu/zachowania obiektu przez wewnętrzny składnik, który może się dynamicznie zmieniać. Strategy (strategia) delegacja definicji algorytmu do klas rozszerzających interfejs. Template Method (szablon metody) definiowanie szablonu metody w klasie pierwotnej; detale są definiowane w klasach pochodnych Visitor (odwiedzający) odseparowanie algorytmów od struktur danych przez abstrakcję zarówno tych struktur (z punktu widzenia algorytmów), jak i algorytmów (z p. widzenia struktur). 19

20 Singleton: przykład wzorca kreacyjnego Nazwa: Singleton Cel: zapewnienie, że wewnątrz danej aplikacji istnieje dokładnie jedna instancja tej klasy. Utworzenie tej instancji i umożliwienie dostępu do niej. Motywacja i stosowalność: czasem potrzebna jest wyłącznie jedna instancja obiektu, którą wywołuje wiele różnych części aplikacji. W takich przypadkach tworzenie obiektu, a następnie niszczenie go (lub pozostawianie do zniszczenia przez gc) jest marnotrawstwem zasobów. 20

21 Singleton: struktura, uczestnicy, powiązania Singleton jest odpowiedzialny za tworzenie instancji własnej klasy ogranicza dostęp do konstruktora do własnej klasy i podklas (prywatny lub chroniony konstruktor) definiuje statyczną metodę getinstance() udostępniającą instancję klasy 21

22 Singleton: konsekwencje Singleton przejmuje odpowiedzialność za tworzenie instancji własnej klasy Klient nie zarządza instancją klasy; otrzymuje ją na żądanie Singleton może zarządzać także swoimi podklasami Singleton można łatwo rozszerzyć do puli obiektów Singleton zachowuje się podobnie do zmiennej globalnej (antywzorzec!) -- może powodować zwiększenie liczby powiązań w systemie 22

23 Singleton: implementacje public final class Singleton { private final static Singleton singleinstance = new Singleton(); public static Singleton getinstance() { return singleinstance; private Singleton() { public final class Singleton { public final static Singleton singleinstance = new Singleton(); private Singleton() { 23

24 Singleton: implementacje public class Singleton { private static class Instance { static final Singleton instance = new Singleton(); private Singleton() { public static Singleton getinstance() { return Instance.instance; 24

25 Flyweight: cel Współdzielenie obiektów w celu zmniejszenia zapotrzebowania na pamięć Tworzenie instancji na żądanie Wydzielenie z obiektu stanu wewnętrznego (współdzielonego) i zewnętrznego (specyficznego) 25

26 Flyweight: struktura, powiązania FlyweightFactory getflyweight(key : String) +flyweights Flyweight operation(extrinsicstate) if (flyweights[key] exists) { return existing flyweight; else { create new one; add to pool; return the new one; ConcreteFlyweight operation(extrinsicstate) UnsharedConcreteFlyweight operation(extrinsicstate) Client 26

27 Flyweight: uczestnicy Flyweight definiuje interfejs do przyjmowania i odtwarzania stanu zewnętrznego obiektu Concrete Flyweight przechowuje stan wewnętrzny (współdzielony) jest niezależny od kontekstu (z wyjątkiem stanu zewnętrznego) Flyweight Factory tworzy i przechowuje obiekty Flyweight Client otrzymuje obiekty Flyweight za pośrednictwem Flyweight Factory 27

28 Flyweight: przykład (1) interface GraphicObject { // The Flyweight public void printatposition( int x, int y ); class GraphicChar implements GraphicObject { // ConcreteFlyweight1 char c; String fontface; public GraphicChar(char c, String fontface) { this.c = c; this.fontface = fontface; public void printatposition(int x, int y) { System.out.printf("Printing '%c' in '%s' at position %d:%d.\n", c, fontface, x, y); 28

29 Flyweight: przykład (2) class Picture implements GraphicObject { // ConcreteFlyweight2 String filename; int width,height; public Picture( String filename, int width, int height ) { this.filename= filename; this.width = width; this.height = height; public void printatposition(int x, int y) { System.out.printf( "Printing '%s' scaled to %dx%d at position %d:%d.\n", filename, width, height, x, y ); 29

30 Flyweight: przykład (3) class GraphicObjectFactory { HashMap<String, GraphicObject> pool = new HashMap<String, GraphicObject>(); public int getnum() { return pool.size(); public String tostring() {// for testing... public GraphicObject get(character c, String fontface) { GraphicObject go; String key = "C: " + c.tostring() + "@" + fontface; if ((go = pool.get(key)) == null) { go = new GraphicChar(c, fontface); pool.put(key, go ); return go;... 30

31 Flyweight: przykład (4)... public GraphicObject get(string filename, int width, int height) { GraphicObject go; String key = "P: " + filename + "@" + width + "x" + height; if ((go = pool.get(key)) == null) { go = new Picture(fileName,width,height); pool.put(key, go ); return go; 31

32 Flyweight: przykład (5) class FlyWeightExample { public static void main(string[] args) { GraphicObjectFactory gof = new GraphicObjectFactory(); ArrayList<GraphicObject> document = new ArrayList<GraphicObject>(); document.add( gof.get("smile.jpg", 100, 100) ); document.add( gof.get(' ', "Times") );... int x=0, y=0; for (GraphicObject c : document) { c.printatposition( x++, y); 32

33 Flyweight: konsekwencje Zmniejszenie wymagań pamięciowych programu zmniejszenie ogólnej liczby obiektów zmniejszenie rozmiaru stanu obiektów stan zewnętrzny może być przechowywany lub wyliczany Wzrost złożoności obliczeniowej dodatkowy nakład na zarządzanie stanem zewnętrznym 33

34 Command: cel Rozprzęgnięcie obiektów wykonujących operacje i operacji Hermetyzacja operacji w postaci obiektów (polecenie i argumenty) Umożliwienie parametryzacji klientów obiektami poleceń Wsparcie dla poleceń odwracalnych 34

35 Command: struktura Client Invoker Command execute() Receiver action() ConcreteCommand state execute() receiver->action() 35

36 Command: interakcje client : Client invoker : Invoker command : Command new Command() receiver : Receiver storecommand(command) configure(receiver) execute( ) action( ) 36

37 Command: uczestnicy Command definicja interfejsu obiektu reprezentującego polecenie Concrete Command jest powiązany z właściwym obiektem Receiver implementuje akcję w postaci metody execute() Client tworzy Concrete Command Invoker ustala odbiorcę akcji każdego obiektu Command wywołuje metodę execute() obiektu Command Receiver jest przedmiotem akcji wykonanej przez Command 37

38 Command: przykład (1) class ExitAction extends AbstractAction { private Component target; public ExitAction(String name, Icon icon, Component t){ putvalue(action.name, name); putvalue(action.small_icon, icon); putvalue(action.short_description, name + " the program"); target = t; public void actionperformed(actionevent evt) { int answer = JoptionPane.showConfirmDialog( target, "Are you sure you want to exit? ", "Confirmation", JoptionPane.YES_NO_OPTION ); if( answer == JoptionPane.YES_NO_OPTION) System.exit(0); 38

39 Command: przykład (2) class SubmitAction extends AbstractAction { private Component target; public SubmitAction(String name, Icon icon, Component t){ putvalue(action.name, name); putvalue(action.small_icon, icon); putvalue(action.short_description, name + " the program"); target = t; public void actionperformed(actionevent evt) { JOptionPane.showMessageDialog(target, "submit action clicked "); 39

40 Command: przykład (3)... Action ea = new ExitAction("Exit", null, this); Action sa = new SubmitAction("Submit", null, this);... JPopupMenu pop = new JPopupMenu("PopMenu"); pop.add(sa); pop.add(ea);... JButton subbtn = new JButton(sa); JButton exitbtn = new Jbutton(ea);... 40

41 Command: konsekwencje Usunięcie powiązania między nadawcą i przedmiotem polecenia Łatwe dodawanie kolejnych obiektów Command Możliwość manipulacji obiektami Command polecenia złożone: wzorzec Composite Polecenia mogą być odwracalne zapamiętanie stanu przez ConcreteCommand wykorzystanie wzorca Memento 41

42 ChainOfResponsibility: cel Usunięcie powiązania pomiędzy nadawcą i odbiorcą żądania Umożliwienie wielu obiektom obsługi żądania 42

43 ChainOfResponsibility: struktura Client Handler handlerequest() +successor ConcreteHandler1 handlerequest() ConcreteHandler2 handlerequest() Obiekty Handler tworzą listę jednokierunkową (łańcuch), wzdłuż której są przekazywane żądania. 43

44 ChainOfResponsibility: uczestnicy Handler definiuje interfejs do obsługi żądań Concrete Handler obsługuje jeden rodzaj żądania, pozostałe przekazuje do następnika w łańcuchu posiada referencję typu Handler do następnika Client inicjuje przetwarzanie, przekazując żądanie do pierwszego obiektu Handler w łańcuchu 44

45 ChainOfResponsibility: konsekwencje Ograniczone powiązania Klient i każdy obiekt Handler nie wiedzą, który z pozostałych obiektów Handler obsługuje dany typ żądania nadawca i odbiorca żądania nie mają o sobie żadnej wiedzy Możliwość elastycznego przydziału odpowiedzialności do obiektów Handler Ułatwione testowanie Brak gwarancji obsłużenia żądania 45

46 Chain of Responsibility: przykład 1 Filter dofilter() Inbox +filterchain Filter1 +next Filter2 +next Filter3 filter(msg : Message) dofilter() dofilter() dofilter() filterchain.dofilter() if (! iseligible()) next.dofilter() Obiekt Inbox wywołuje pierwszy obiekt Filter w łańcuchu. Kolejne filtry przekazują sobie sterowanie 46

47 Chain of Responsibility: przykład 2 Inbox filters : Set filter(msg : Message) for (f : filters) { if (f.dofilter()) { break; Filter dofilter() Filter1 Filter2 Filter3 dofilter() dofilter() dofilter() Obiekt Inbox wywołuje kolejno obiekty Filter. 47

48 State: cel Cele wykorzystanie dziedziczenia do elastycznej definicji zachowania obiektu pozorna zmiana klasy obiektu 48

49 State: struktura Client Context +currentstate State request() 1 handle() currentstate->handle() ConcreteStateA handle() ConcreteStateB handle() Stan jest obiektem. Zmiana stanu oznacza zmianę obiektu go reprezentującego. Delegowane do niego metody są wywoływane polimorficznie. 49

50 State: uczestnicy Context posiada referencję do obiektu reprezentującego bieżący stan State definiuje interfejs pozwalający hermetyzować zachowanie związane z każdym stanem Concrete State definiuje własne metody implementujące zachowanie specyficzne dla tego stanu 50

51 State: konsekwencje Podział zachowania obiektu wg stanów kod związany ze jednym stanem jest zapisany w jednym obiekcie zmiana stanu jest realizowana przez zmianę obiektu stanu na inny ochrona przed stanem niespójnym możliwość współdzielenia obiektów State obiekty State zwykle definiują tylko zachowanie obiekty State zwykle są bezstanowe 51

52 State: przykład public class Account { private int balance = 0; private String owner = null; private boolean isopen = false; public Account(String owner, int balance) { this.owner = owner; this.balance = balance; this.isopen = true; public void credit(int amount) { if (isopen) { balance += amount; else { alert("konto nieaktywne!"); 52

53 State: przykład cd. public interface AccountState { public void credit(account acc, int amount); public class AccountOpen implements AccountState { public void credit(account acc, int amount) { acc.balance += amount; public class AccountClosed implements AccountState { public void credit(account acc, int amount) { alert("the account is closed!"); 53

54 State: przykład cd. public class Account { private int balance = 0; private String owner = null; private AccountState state = null; public Account(String owner, int balance) { this.owner = owner; this.balance = balance; this.state = new AccountOpen(); public void credit(int amount) { this.state.credit(this, amount); // delegacja public void close() { this.state = new AccountClosed(); 54

55 Decorator: cel Umożliwienie dynamicznego dodawania funkcjonalności do obiektu Stworzenie elastycznej alternatywy dla tworzenia podklas E. Gamma et al. (1995) 55

56 Decorator: struktura Component +component operation() ConcreteComponent operation() Decorator operation() component->operation() ConcreteDecoratorA addedstate operation() ConcreteDecoratorB operation() addedbehaviour() decorator->operation() addedbehavior() Klient wysyła komunikat do obiektu Decorator, który przekazuje go obiektowi ConcreteComponent oraz wykonuje dodatkowe operacje ( dekoracje ) 56

57 Decorator: uczestnicy Component definiuje wspólny interfejs obiektów, które można dekorować Concrete Component realizuje podstawową funkcjonalność obiektu Decorator posiada referencję typu Component i do tego obiektu deleguje komunikaty rozszerza funkcjonalność obiektu ConcreteComponent 57

58 Decorator: konsekwencje Większa elastyczność w przydziale odpowiedzialności niż w przypadku dziedziczenia Możliwość dodawania funkcjonalności w trakcie wykonywania programu, gdy jest ona potrzebna Tożsamość obiektu z którym komunikuje się klient może się zmieniać wskutek dekoracji Łatwiejsze testowanie poszczególnych dekoratorów 58

59 Visitor: cel Reprezentacja operacji do wykonania na elementach heterogenicznej struktury Realizacja operacji w sposób specyficzny dla typu odwiedzanego elementu Umożliwienie tworzenia nowych operacji bez konieczności modyfikacji klas wewnątrz struktury 59

60 Visitor: struktura Client Visitor visit(concreteelementa) visit(concreteelementb) ConcreteVisitor1 visit(concreteelementa) visit(concreteelementb) ConcreteVisitor2 visit(concreteelementa) visit(concreteelementb) ObjectStructure foreach() Element accept(visitor) ConcreteElementA accept(visitor) operationa() ConcreteElementB accept(visitor) operationb() visitor->visit(this) visitor->visit(this) 60

61 Visitor: interakcje : ObjectStructure : ConcreteElementA : ConcreteElementB : ConcreteVisitor1 accept() visit() operationa( ) accept() visit() operationb( ) 61

62 Visitor: uczestnicy Visitor definiuje przeciążone metody dla każdego obiektu ConcreteElement do odwiedzenia Element definiuje metodę accept() przyjmującą obiekt Visitor jako parametr Object Structure posiada iterator pozwalający na dostęp do każdego elementu struktury 62

63 Visitor: konsekwencje Możliwość odwiedzenia obiektów niespokrewnionych ze sobą Łatwe dodawanie nowych obiektów Visitor Utrudnione dodawanie nowych typów Element konieczność modyfikacji klasy Visitor i jej podklas Możliwość zbierania informacji z elementów struktury w sposób dla nich specyficzny Naruszenie hermetyzacji obiektów Visitor i Element obiekty muszą odwoływać się do swoich publicznych metod 63

64 Visitor: przykład public class Bank { List<BankingProduct> products = new ArrayList<BankingProduct>(); public List<BankingProduct> doreport(report report) { List<BankingProduct> result = new ArrayList<BankingProduct>(); for (BankingProduct product : products) { result.add(product.accept(report)); return result; 64

65 Visitor: przykład cd. public abstract class BankingProduct { public interface Element { public BankingProduct accept(report report); public class Account extends BankingProduct implements Element { public BankingProduct accept(report report) { if (ispriviliged(report)) { return report.visit(this); return null; public class Credit extends BankingProduct implements Element { public BankingProduct accept(report report) { return report.visit(this); 65

66 Visitor: przykład cd. public class Over1000Report implements Visitor { public BankingProduct visit(account acc) { if (acc.balance > 1000) return acc; return null; public BankingProduct visit(credit credit) { if (credit.draft > 1000 && credit.isactive()) return credit; return null; public class PassAllReport implements Visitor { public BankingProduct visit(account acc) { return this; public BankingProduct visit(credit credit) { return this; 66

67 Podsumowanie Wzorce projektowe są gotowymi szablonami rozwiązań typowych problemów projektowych Wzorzec posiada określony zestaw atrybutów Katalog wzorców obiektowych stanowi elementarz projektanta oprogramowania 67

Testowanie oprogramowania Wzorce projektowe

Testowanie 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ółowo

Problemy 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? 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ółowo

Wzorce projektowe ArrayList. Aplikacja i zdarzenia. Paweł Chodkiewicz

Wzorce 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ółowo

problem w określonym kontekście siły istotę jego rozwiązania

problem 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ółowo

Analiza 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) 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ółowo

Zaawansowane programowanie w C++ (PCP)

Zaawansowane 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ółowo

Projektowanie oprogramowania: wzorce architektoniczne i projektowe

Projektowanie 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ółowo

Programowanie obiektowe

Programowanie 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ółowo

Wzorce projektowe cz. III

Wzorce projektowe cz. III Wzorce projektowe cz. III Prowadzący: Bartosz Walter Wzorce projektowe cz. III 1 Decorator: cel UmoŜliwienie dynamicznego dodawania funkcjonalności do obiektu Stworzenie elastycznej alternatywy dla tworzenia

Bardziej szczegółowo

Wprowadzenie do programowania aplikacji mobilnych

Wprowadzenie 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ółowo

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

Wzorce 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ółowo

WZORCE PROJEKTOWE (I) (DESIGN PATTERNS)

WZORCE 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ółowo

Technologia Programowania 2016/2017 Wykład 4

Technologia 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ółowo

Wzorce projektowe. dr inż. Marcin Pietroo

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ółowo

(wybrane) Wzorce projektowe. Programowanie Obiektowe Mateusz Cicheński

(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 (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

Projektowanie obiektowe Wzorce projektowe. Wprowadzenie do wzorców projektowych

Projektowanie 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ółowo

Wzorce oprogramowania Gof (cd) zastosowane w modelu obiektowym

Wzorce 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ółowo

Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton

Dzisiejszy 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ółowo

Projektowanie obiektowe Wzorce projektowe

Projektowanie 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ółowo

Metodyka projektowania obiektowego

Metodyka projektowania obiektowego Metodyka projektowania obiektowego Zajęcia 4 Wzorce projektowe PW Treść Wprowadzenie: historia, motywacja Katalog wzorców na podstawie klasycznej pozycji Design Patterns, Elements of Reusable OO Software

Bardziej szczegółowo

Wzorce projektowe cz. I. Wzorce projektowe cz. I 1/33

Wzorce 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ółowo

Wzorce projektowe Michał Węgorek

Wzorce 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ółowo

Projektowanie 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 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ółowo

Singleton. Cel: Przykład: Zastosowanie: Zapewnienie, że klasa ma tylko jedną instancję i dostarczenie globalnego dostępu do niej.

Singleton. 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ółowo

Wzorce projektowe cz. II

Wzorce projektowe cz. II Wzorce projektowe cz. II Prowadzący: Bartosz Walter Wzorce projektowe cz. II 1 Factory Method: cel Zdefiniowanie interfejsu do tworzenia obiektów UmoŜliwienie przekazania odpowiedzialności za tworzenie

Bardziej szczegółowo

Projektowanie 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 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ółowo

Projektowanie obiektowe Wzorce projektowe. Gang of Four Wzorce odpowiedzialności

Projektowanie 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ółowo

Wzorce projektowe. dr inż. Marcin Pietroo

Wzorce 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ółowo

Technologia Programowania 2016/2017 Wykład 5

Technologia 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ółowo

Zaawansowane programowanie obiektowe - wykład 5

Zaawansowane 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

Programowanie w języku Java WYKŁAD

Programowanie 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ółowo

Wzorce projektowe. dr inż. Marcin Pietroo

Wzorce 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ółowo

Podstawy Programowania Obiektowego

Podstawy 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ółowo

Wypożyczalnia VIDEO. Technologie obiektowe

Wypoż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ółowo

Wstęp [2/2] Wbrew częstemu przekonaniu, nie są one gotowymi rozwiązaniami, to tylko półprodukty rozwiązania.

Wstę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ółowo

Projektowanie obiektowe oprogramowania Wykład 5 wzorce strukturalne Wiktor Zychla 2016

Projektowanie 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ółowo

JAVA W SUPER EXPRESOWEJ PIGUŁCE

JAVA W SUPER EXPRESOWEJ PIGUŁCE JAVA W SUPER EXPRESOWEJ PIGUŁCE Obiekt Obiekty programowe to zbiór własności i zachowań (zmiennych i metod). Podobnie jak w świecie rzeczywistym obiekty posiadają swój stan i zachowanie. Komunikat Wszystkie

Bardziej szczegółowo

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Dariusz 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ółowo

Command (action, transaction, polecenie)

Command (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ółowo

Prototype (prototyp) Cel: Przykład: Określenie rodzaju tworzonych obiektów poprzez wskazanie ich prototypu. Nowe instancje tworzymy kopiując prototyp.

Prototype (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ółowo

Programowanie obiektowe - 1.

Programowanie 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ółowo

Programowanie zorientowane obiektowo. Mateusz Kołecki

Programowanie 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ółowo

Program szkolenia: Wzorce projektowe i ich implementacja w C# oraz testowanie automatyczne

Program 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ółowo

Wzorce projektowe i refaktoryzacja

Wzorce 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ółowo

Decorator (dekorator)

Decorator (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ółowo

Projektowanie obiektowe Wzorce projektowe. Gang of Four Wzorce rozszerzeń

Projektowanie 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ółowo

Modelowanie i Programowanie Obiektowe

Modelowanie 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ółowo

Projektowanie 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) 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ółowo

Projektowanie obiektowe. Roman Simiński Wzorce projektowe Wybrane wzorce strukturalne

Projektowanie 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ółowo

1) Wzorzec projektowy Adapter. Zastosowanie:

1) 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ółowo

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji. JAVA Java jest wszechstronnym językiem programowania, zorientowanym obiektowo, dostarczającym możliwość uruchamiania apletów oraz samodzielnych aplikacji. Java nie jest typowym kompilatorem. Źródłowy kod

Bardziej szczegółowo

Wzorce logiki dziedziny

Wzorce logiki dziedziny Wzorce logiki dziedziny 1. Wzorce logiki dziedziny skrypt transakcji (Transaction Script), brama tabeli (Table Data Gateway), model dziedziny (Domain model), strategia (Strategy), moduł tabeli (Table Module),

Bardziej szczegółowo

Wzorce projektowe cz. II. Wzorce projektowe cz. II 1/35

Wzorce 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ółowo

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

Programowanie 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ółowo

Builder (budowniczy) Cel: Przykład:

Builder (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ółowo

Programowanie obiektowe

Programowanie obiektowe Wykład 12 Marcin Młotkowski 16 maja 2018 Plan wykładu 1 Analiza obiektowa Dziedziczenie Dziedziczenie a składanie 2 Marcin Młotkowski 482 / 537 Dziedziczenie Dziedziczenie a składanie Plan wykładu 1 Analiza

Bardziej szczegółowo

Komputerowe Systemy Przemysłowe: Modelowanie - UML. Arkadiusz Banasik arkadiusz.banasik@polsl.pl

Komputerowe 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ółowo

Proxy (pełnomocnik) Cel: Zastosowanie: Dostarczyć zamiennik pewnego obiektu, pozwalający kontrolować dostęp do niego.

Proxy (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ółowo

Diagramy klas. dr Jarosław Skaruz http://ii3.uph.edu.pl/~jareks jaroslaw@skaruz.com

Diagramy klas. dr Jarosław Skaruz http://ii3.uph.edu.pl/~jareks jaroslaw@skaruz.com Diagramy klas dr Jarosław Skaruz http://ii3.uph.edu.pl/~jareks jaroslaw@skaruz.com O czym będzie? Notacja Ujęcie w różnych perspektywach Prezentacja atrybutów Operacje i metody Zależności Klasy aktywne,

Bardziej szczegółowo

Rysunkowy 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ółowo

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej Programowanie obiektowe Interfejsy Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Interfejsy Autor: Paweł Rogaliński Instytut Informatyki,

Bardziej szczegółowo

Wzorce projektowe [ wstęp ]

Wzorce 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ółowo

Modelowanie obiektowe

Modelowanie obiektowe Modelowanie obiektowe ZPO 2018/2019 Dr inż. W. Cichalewski Materiały wykonane przez W. Tylman Diagramy klas Diagramy klas Zawiera informacje o statycznych związkach między elementami (klasami) Są ściśle

Bardziej szczegółowo

Technologie i usługi internetowe cz. 2

Technologie i usługi internetowe cz. 2 Technologie i usługi internetowe cz. 2 Katedra Analizy Nieliniowej, WMiI UŁ Łódź, 15 luty 2014 r. 1 Programowanie obiektowe Programowanie obiektowe (z ang. object-oriented programming), to paradygmat programowania,

Bardziej szczegółowo

Wzorce projektowe Wykład 7 część 1

Wzorce 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ółowo

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7 Instrukcja 7 Laboratoria 9, 10 Opracowanie diagramów sekwencji dla wybranych przypadków użycia reprezentujących usługi oprogramowania wynikających również z wykonanych diagramów czynności; definicja operacji

Bardziej szczegółowo

Diagramy maszyn stanowych, wzorce projektowe Wykład 5 część 2

Diagramy 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ółowo

Wzorce oprogramowania Gof. zastosowane w modelu obiektowym

Wzorce 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ółowo

Dokumentacja do API Javy.

Dokumentacja do API Javy. Dokumentacja do API Javy http://java.sun.com/j2se/1.5.0/docs/api/ Klasy i obiekty Klasa jest to struktura zawierająca dane (pola), oraz funkcje operujące na tych danych (metody). Klasa jest rodzajem szablonu

Bardziej szczegółowo

Omówienie wzorców wykorzystywanych w Prism 5.0. Dominika Różycka

Omó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ółowo

PHP 5 język obiektowy

PHP 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ółowo

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 6

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 6 Instrukcja 6 Laboratorium 8 Opracowanie diagramów sekwencji dla wybranych przypadków użycia reprezentujących usługi oprogramowania wynikających również z wykonanych diagramów czynności; definicja operacji

Bardziej szczegółowo

UML [ Unified Modeling Language ]

UML [ Unified Modeling Language ] UML [ Unified Modeling Language ] UML język formalny służący do opisu świata obiektów w analizie obiektowej oraz programowaniu obiektowym. W najnowszej wersji (2.4.x) języka UML wyróżnia się 13 diagramów

Bardziej szczegółowo

Program szkolenia: Wzorce projektowe w C++

Program 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ółowo

Wywoływanie metod zdalnych

Wywoływanie metod zdalnych Wywoływanie metod zdalnych model systemu Wywoływanie metod zdalnych aplikacja kliencka interfejs obiekt serwer Podejście obiektowe do budowy systemów rozproszonych proxy szkielet sieć Istota podejścia

Bardziej szczegółowo

Wzorce projektowe. Wstęp

Wzorce 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ółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 7 Marcin Młotkowski 8 kwietnia 2015 Plan wykładu Z życia programisty, część 1 1 Z życia programisty, część 1 2 3 Z życia programisty, część 2 Model View Controller MVC w

Bardziej szczegółowo

Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r.

Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r. Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r. Programowanie obiektowe Programowanie obiektowe (z ang. object-oriented programming), to

Bardziej szczegółowo

Programowanie obiektowe

Programowanie 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ółowo

Java: interfejsy i klasy wewnętrzne

Java: interfejsy i klasy wewnętrzne Java: interfejsy i klasy wewnętrzne Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak 1 INTERFEJSY Interfejs to opis co klasa implementująca dany interfejs powinna robić, ale bez określania

Bardziej szczegółowo

METODY PROGRAMOWANIA

METODY PROGRAMOWANIA METODY PROGRAMOWANIA Wzorzec Repository 21 października 2017 Krzysztof Pawłowski kpawlowski@pjwstk.edu.pl Każdy wzorzec opisuje problem, który ciągle pojawia się w naszej dziedzinie, a następnie określa

Bardziej szczegółowo

Definiowanie własnych klas

Definiowanie własnych klas Programowanie obiektowe Definiowanie własnych klas Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski @ pwr.wroc.pl Definiowanie własnych klas Autor:

Bardziej szczegółowo

Technologia Programowania 2016/2017 Wykład 6

Technologia Programowania 2016/2017 Wykład 6 Technologia Programowania 2016/2017 Wykład 6 Mockito, wzorce GoF, MVC Jakub Lemiesz Lista zadań na laboratorium 2 / 48 Testowanie Tradycyjnie: testy jednostkowe, integracyjne, systemowe, testy akceptacyjne

Bardziej szczegółowo

Współbieżność w środowisku Java

Współbieżność w środowisku Java Współbieżność w środowisku Java Wątki i ich synchronizacja Zagadnienia Tworzenie wątków Stany wątków i ich zmiana Demony Synchronizacja wątków wzajemne wykluczanie oczekiwanie na zmiennych warunkowych

Bardziej szczegółowo

Wywoływanie metod zdalnych

Wywoływanie metod zdalnych Wywoływanie metod zdalnych Podejście obiektowe do budowy systemów rozproszonych Wywoływanie metod zdalnych model systemu obiekt aplikacja kliencka interfejs serwer proxy szkielet sieć Istota podejścia

Bardziej szczegółowo

Polimorfizm. dr Jarosław Skaruz

Polimorfizm. dr Jarosław Skaruz Polimorfizm dr Jarosław Skaruz http://jareks.ii.uph.edu.pl jaroslaw@skaruz.com O czym będzie? finalne składowe klasy abstrakcyjne interfejsy polimorfizm Finalne składowe Domyślnie wszystkie pola i metody

Bardziej szczegółowo

Wzorce projektowe. dr Jarosław Skaruz

Wzorce projektowe. dr Jarosław Skaruz Wzorce projektowe dr Jarosław Skaruz http://ii3.uph.edu.pl/~jareks jaroslaw@skaruz.com O czym będzie? Wprowadzenie do wzorców projektowych Elementy wzorców Zalety stosowania wzorców Podział Strategia Singleton

Bardziej szczegółowo

WZORCE PROJEKTOWE. Software engineering has accepted as its charter How to program if you cannot. E. Djikstra

WZORCE PROJEKTOWE. Software engineering has accepted as its charter How to program if you cannot. E. Djikstra WZORCE PROJEKTOWE Software engineering has accepted as its charter How to program if you cannot. E. Djikstra 1 * Wykład 1 Wzorzec projektowy opis komunikujących się obiektów i klas dostosowanych do rozwiązania

Bardziej szczegółowo

Enkapsulacja, dziedziczenie, polimorfizm

Enkapsulacja, dziedziczenie, polimorfizm 17 grudnia 2008 Spis treści I Enkapsulacja 1 Enkapsulacja 2 Spis treści II Enkapsulacja 3 Czym jest interfejs Jak definuje się interfejs? Rozszerzanie interfejsu Implementacja interfejsu Częściowa implementacja

Bardziej szczegółowo

Architektura 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 Systemu Architektura systemu umożliwia kontrolowanie iteracyjnego i przyrostowego procesu tworzenia systemu. Architektura jest zbiorem decyzji dotyczących: organizacji systemu komputerowego,

Bardziej szczegółowo

12) Wadą modelu kaskadowego jest: Zagadnienia obowiązujące na egzaminie z inżynierii oprogramowania: 13) Wadą modelu opartego na prototypowaniu jest:

12) Wadą modelu kaskadowego jest: Zagadnienia obowiązujące na egzaminie z inżynierii oprogramowania: 13) Wadą modelu opartego na prototypowaniu jest: Zagadnienia obowiązujące na egzaminie z inżynierii oprogramowania: 1) Oprogramowanie to: 2) Produkty oprogramowania w inżynierii oprogramowania można podzielić na: 3) W procesie wytwarzania oprogramowania

Bardziej szczegółowo

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami. UML a kod w C++ i Javie Projektowanie oprogramowania Dokumentowanie oprogramowania Diagramy przypadków użycia Przewoznik Zarzadzanie pojazdami Optymalizacja Uzytkownik Wydawanie opinii Zarzadzanie uzytkownikami

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Podstawowe cechy i możliwości języka Scala mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 2017 1 / 32 mgr inż. Krzysztof Szwarc Programowanie obiektowe Informacje

Bardziej szczegółowo

Template method (metoda szablonowa)

Template 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ółowo

Diagram klas UML jest statycznym diagramem, przedstawiającym strukturę aplikacji bądź systemu w paradygmacie programowania obiektowego.

Diagram klas UML jest statycznym diagramem, przedstawiającym strukturę aplikacji bądź systemu w paradygmacie programowania obiektowego. Umiejętność czytania oraz tworzenia diagramów klas UML jest podstawą w przypadku zawodu programisty. Z takimi diagramami będziesz spotykał się w przeciągu całej swojej kariery. Diagramy klas UML są zawsze

Bardziej szczegółowo

Abstract Factory (fabryka abstrakcyjna)

Abstract 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ółowo

Modelowanie diagramów klas w języku UML. Łukasz Gorzel 244631@stud.umk.pl 7 marca 2014

Modelowanie diagramów klas w języku UML. Łukasz Gorzel 244631@stud.umk.pl 7 marca 2014 Modelowanie diagramów klas w języku UML Łukasz Gorzel 244631@stud.umk.pl 7 marca 2014 Czym jest UML - Unified Modeling Language - Rodzina języków modelowania graficznego - Powstanie na przełomie lat 80

Bardziej szczegółowo