Wzorce projektowe. dr Jarosław Skaruz

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

Download "Wzorce projektowe. dr Jarosław Skaruz"

Transkrypt

1 Wzorce projektowe dr Jarosław Skaruz

2 O czym będzie? Wprowadzenie do wzorców projektowych Elementy wzorców Zalety stosowania wzorców Podział Strategia Singleton Dekorator

3 O czym będzie? Czego się spodziewałem? Jakiejś magii Wielkich nowości Co spotkałem? Znajome pomysły

4 Wzorce projektowe "Wzorzec opisuje problem, który pojawia się wielokrotnie w danym środowisku, i opisuje podstawę rozwiązania tego problemu, w taki sposób, że można użyć tego rozwiązania milion razy, bez konieczności ponownego wykonywania tych samych czynności" Christopher Alexander "A Pattern Language", 1977

5 Wzorce projektowe Czy zbudujemy most, opierając przęsło na kolejnych filarach połączonych łukiem, tak aby łuk usztywniał i naciągał przęsło stanowiąc jego podparcie na całej długości przęsła, czy też mocując płyty z obu stron za pomocą kilku lin stalowych o kolejno coraz krótszych długościach do pylonów umieszczonych pośrodku długości mostu?

6 Wzorce projektowe Czy zbudujemy most łukowy czy podwieszany?

7 Czym są wzorce? Wzorzec projektowy pozwala się uczyć na sukcesach innych zamiast nauki na własnych błędach. (Mark Johnson) Sprawdzone rozwiązania - Efektywność Najlepsze projekty - Jakość Dobre praktyki - Skalowalność

8 Czym są wzorce? W literaturze można spotkać się z różnymi definicjami: Wzorce projektowe stanowią powtarzalne rozwiązanie zagadnień projektowych, z którymi się wciąż spotykamy Wzorce projektowe stanowią zbiór reguł określających jak osiągnąć pewne cele w dziedzinie programowania Wzorzec adresowany jest do powtarzających się problemów, które pojawiają się w specyficznych momentach projektowania i stanowi dla nich rozwiązanie Wzorce projektowe w największym stopniu dotyczą problematyki proponowanego użycia powtarzających się motywów architektury programów, zaś szkielety aplikacji dotyczą szczegółów projektowych i implementacyjnych Każdy wzorzec jest złożoną z trzech elementów zasadą, wyrażającą relacje pomiędzy pewnym kontekstem, problemem i rozwiązaniem

9 Elementy wzorca Wzorzec projektowy pozwala się uczyć na sukcesach innych zamiast nauki na własnych błędach. (Mark Johnson) Nazwa wzorca - Odzwierciedla problem, rozwiązanie i konsekwencje danego wzorca Problem - Opisuje zagadnienie i kontekst wystąpienia wzorca, kiedy powinno się go stosować Rozwiązanie - Opisuje elementy tworzące projekt, ich relację, odpowiedzialności oraz ich współpracę Konsekwencje - Rezultaty zastosowania wzorca wady i zalety

10 Zalety stosowania wzorców Zapobiegają ponownemu wymyślaniu kodu zaprojektowanego już przez innych programistów Zmniejszają liczbę popełnionych błędów Zapewniają kod łatwo rozszerzalny Ułatwiają zrozumienie kodu Ułatwiają komunikacje w zespole

11 Podział wzorców Konstrukcyjne - wykorzystuje się je do pozyskania obiektów zamiast bezpośredniego tworzenia instancji klasy - programy zyskują na elastyczności, gdyż można decydować, jaki typ obiektu ma zostać utworzony w danym przypadku Strukturalne - pomagają łączyć obiekty w większe struktury Behawioralne - charakteryzują sposób, w jaki klasy lub obiekty oddziałują i dzielą odpowiedzialności - pomagają definiować przepływ danych w złożonym programie

12 Katalog wzorców Przeznaczenie Konstrukcyjne Strukturalne Behawioralne Zakres Klasa Metoda wytwórcza Adapter Interpreter Metoda szablonowa Obiekt Budowniczy Fabryka abstrakcyjna Prototyp Singleton Adapter Most Kompozyt Dekorator Fasada Pełnomocnik Pyłek Łańcuch zobowiązań Polecenie Iterator Mediator Pamiątka Obserwator Stan Strategie Odwiedzający

13 Katalog wzorców Jak NIE stosować wzorców projektowych Nie należy ich wykorzystywać byle jak Powinny być stosowane tylko wtedy, kiedy zapewniana przez niego elastyczność jest rzeczywiście potrzebna

14 Gra - Symulator Kaczki Zadanie programistyczne polega na implementacji gry, której akcja toczy się w stawie pełnym kaczek. Gra może wyświetlić wiele różnych gatunków kaczek, pływających oraz wydających odgłosy kwakania. Każdy podtyp kaczki jest odpowiedzialny za implementację swojego zachowania metody wyswietl() odpowiadającej za wygląd kaczki PROJEKT Metoda wyświetl jest metodą abstrakcyjną, ponieważ poszczególne podtypy kaczek różnią się od siebie

15 Zmiany projektowe W trakcie prac implementacyjnych dokonano ZMIANY wymagań. Obecnie kaczki muszą również posiadać możliwość latania. PROJEKT wszystko czego mi trzeba to dodać metodę lec() do klasy nadrzędnej wszystkie klasy podrzędne dziedziczą metodę leć()

16 Coś poszło nie tak, jak powinno Lokalna zmiana kodu programu spowodowała niepożądany globalny efekt uboczny (pojawienie się latających gumowych kaczek)! Jakie jest rozwiązanie? PROJEKT Poprzez umieszczenie metody lec() Jacek umożliwił latanie WSZYSTKIM kaczkom, włączając również te, które nie powinny latać. Gumowe kaczki nie kwaczą, stąd metoda kwacz() zmieniła zachowanie na piszcz.

17 A może by tak interfejs? Potrzebujemy rozwiązania, które pozwoli tylko wybranym gatunkom kaczek latać lub kwakać. ss Mógłbym usunąć metodę lec() z nadklasy i utworzyć interfejs Latajace posiadający metodę lec(). Wtedy wyłącznie kaczki latające będą implementowały ten interfejs. Co sądzisz o takim projekcie?

18 A może by tak interfejs? Weź to, co się zmienia i dokonaj odpowiedniej hermetyzacji, tak aby nie miało to żadnego wpływu na pozostałą część kodu. Rezultat? Mniej niezamierzonych ubocznych efektów będących konsekwencją wprowadzania nowych zmian w kodzie aplikacji oraz większą elastyczność całego systemu. Reguła projektowania Zidentyfikuj fragmenty aplikacji, które się zmieniają i oddziel je od tych, które pozostają stałe. Zadania: Aby wydzielić zachowania z nadklasy Kaczka, należy wyciągnąć metody lec() i kwacz() z wnętrza tej klasy Należy utworzyć zestaw nowych klas reprezentujących poszczególne zachowania Od tej chwili zachowania klasy Kaczka będą umieszczone w osobnej klasie, przechowującej implementację interfejsu reprezentującego dane zachowanie

19 Implementacja zachowań Kaczki Dzięki takiemu projektowi inne typy obiektów mogą wykorzystywać odpowiednie zachowania, ponieważ nie są one już dłużej ukryte w klasie nadrzędnej Kaczka! Można dodawać nowe zachowania bez konieczności modyfikacji jakichkolwiek istniejących klas opisujących dotychczasowe zachowania i bez modyfikacji tych klas opisujących Kaczki, które wykorzystują zachowania związane z lataniem!

20 Wzorzec Strategia hermetyzowane zachowania opisujące sposoby latania klient hermetyzowane zachowania opisujące sposoby kwakania

21 Test implementacji public abstract class Kaczka { private KwakanieInterfejs kwakanieinterfejs; private LataneiInterfejs latanieinterfejs; // więcej public void wykonajkwacz() { kwakanieinterfejs.kwacz(); public void wykonajlec() { latanieinterfejs.lec(); public void plywaj() { System.out.println( wszystkie kaczki pływają ); public abstract void wyswietl();

22 Test implementacji public interface LatanieInterfejs { public void lec(); public class LatamSzybko implements LatanieInterfejs{ public void lec() { System.out.println( szybko latam ); public interface KwakanieInterfejs { public void kwacz(); public class Kwacz implements KwakanieInterfejs { public void kwacz() { System.out.println( kwa kwa );

23 Test implementacji public class DzikaKaczka extends Kaczka { public DzikaKaczka() { kwakanieinterfejs = new Kwacz(); latanieinterfejs = new LatamSzybko(); public class SymulatorKaczki { public static void main(string[] args) { Kaczka dzika = new DzikaKaczka(); dzika.wykonajkwacz(); dzika.wykonajlec(); dzika.ustawlatanieinterfejs(new NieLatam()); dzika.wykonajlec();

24 Wzorzec Strategia Wzorzec Strategia definiuje rodzinę algorytmów, pakuje je jako osobne klasy i powoduje, że są one w pełni wymienne. Zastosowanie tego wzorca pozwala na to, aby zmiany w implementacji algorytmów przetwarzania były całkowicie niezależne od strony klienta, który z nich korzysta. Reguły projektowania obiektowego: Poddawaj hermetyzacji, to co się zmienia Przedkładaj kompozycję nad dziedziczenie Skoncentruj się na tworzeniu interfejsów, a nie implementacji

25 Klasyczna implementacja wzorca Singleton public class Singleton { Ta zmienna statyczna posłuży nam do przechowywania jedynej instancji obiektu klasy Singleton private static Singleton unikalnainstancja; private Singleton(){ Prywatny konstruktor, tylko obiekt klasy Singleton może z niego skorzystać public static Singleton pobierzinstance() { if(unikalnainstancja == null) unikalnainstancja = new Singleton(); return unikalnainstancja; Metoda pobierzinstancje() udostępnia sposób stworzenia instancji obiektu klasy Singleton i zwrócenia go jako wyniku działania tej metody

26 Wzorzec Singleton Wzorzec Singleton zapewnia, że dana klasa będzie miała tylko i wyłącznie jedna instancję obiektu i zapewnia globalny punkt dostępu do tej instancji.

27 Wzorzec Singleton Singleton jako wzorzec jest szczególnie przydatny do zastosowań wielowątkowości. UWAGA: poprzednia standardowa wersja nie będzie działała!!

28 Wzorzec Singleton a wielowątkowość public class Singleton { private static Singleton unikalnainstancja; private Singleton(){ public static synchronized Singleton pobierzinstance() { if(unikalnainstancja == null) unikalnainstancja = new singleton(); return unikalnainstancja; Na czym nadal polega problem?

29 Wzorzec Singleton a wielowątkowość public class Singleton { private static Singleton unikalnainstancja = new Singleton(); private Singleton(){ public static Singleton pobierzinstance() { return unikalnainstancja;

30 Projekt systemu dla Star Cafe Napoj to klasa abstrakcyjna, której podklasami są poszczególne rodzaje napojów oferowanych w kawiarni Metoda koszt jest abstrakcyjna; podklasy powinny posiadać jej implementację Każda podklasa posiada zaimplementowana metodę koszt(), która zwraca cenę danego napoju.

31 Projekt systemu dla Star Cafe c.d. Poszczególne metody koszt() obliczają cenę danego napoju przy uwzględnieniu odpowiedniej kawy oraz wszystkich zamówionych dodatków.

32 Refaktoryzacja projektu Na czym polega problem w bieżącym projekcie? Jakie zmiany należy dokonać w przypadku gdy: zmieni się cena mleka do kawy? firma wprowadzi nową polewę karmelową? Dziedziczeniem tu wygram! Zmienne typu boolean dla każdego produktu Te metody pobierają i zwracają wartości zmiennych logicznych Metoda koszt() w klasie nadrzędnej będzie wyliczała całkowity koszt wszystkich dodatków, a przesłaniające metody koszt() dołączają cenę napoju podstawowego Każda metoda koszt() musi policzyć cenę napoju podstawowego, a następnie dodać cenę dodatków wywołując w tym celu metodę koszt() z klasy nadrzędnej

33 Refaktoryzacja projektu c.d. Na czym polega problem w bieżącym projekcie? Jakie wymagania mogą zmieniać się tak, że będą miały wpływ na projekt? Zmiana cen poszczególnych dodatków będzie zmuszała do modyfikacji istniejącego kodu Wprowadzenie do oferty nowych dodatków będzie zmuszała do dodawania nowych metod oraz modyfikacji kodu metody koszt() Może się okazać, że w ofercie pojawią się nowe napoje. Dla niektórych napojów (np. mrożonej herbaty) pewne dodatki mogą być nieodpowiednie, aczkolwiek mimo wszystko podklasa Herbata powinna dziedziczyć takie metody jak np. zbitasmietana() A co w sytuacji kiedy klient zażyczy sobie podwójną porcję czekolady?

34 Reguła otwarte-zamknięte Reguła projektowania Klasy powinny być otwarte na rozbudowę, ale zamknięte na modyfikacje. Otwarte oznacza, że można dowolnie rozbudowywać klasy dowolnymi zachowaniami. Zamknięte oznacza, że kod musi być zamknięty na jakiekolwiek modyfikacje. Celem jest umożliwienie łatwej rozbudowy istniejącego kodu poprzez dodawanie im nowych zachowań, ale bez konieczności modyfikacji ich istniejącego kodu.

35 Zamówienie przy użyciu Dekoratorów 1. Klient zamawia kawę mocno paloną, więc tworzymy obiekt klasy MocnoPalona 2. Klient zażyczył sobie czekolady, więc tworzymy obiekt Czekolada i zawijamy go dookoła obiektu MocnoPalona 3. Klient życzy sobie również bitej śmietany, więc tworzymy dekorator BitaSmietana i zawijamy go dookoła obiektu Czekolada

36 Definicja wzorca Dekorator Wzorzec dekorator pozwala na dynamiczne przydzielanie danemu obiektowi nowych zachowań. Dekoratory dają elastyczność podobną do tej, jaką daje dziedziczenie, oferując jednak w zamian znacznie rozszerzoną funkcjonalność SkladnikPodstawowy to obiekt, któremu będziemy dodawali nowe zachowania Każdy składnik może być użyty samodzielnie lub w połączeniu z dekoratorem Każdy dekorator posiada swój składnik podstawowy referencję do obiektu dekorowanego DekoratorPodstawowy posiada referencję do obiektu dekorowanwego

37 Wzorzec Dekorator dla Star Cafe Abstrakcyjna klasa składników Cztery klasy składników podstawowych Dekoratory (dodatki), musza mieć zaimplementowana metodę pobierzopis() i koszt()

38 Kod aplikacji dla Star Cafe public abstract class Napoj { String opis = Napój nieznany ; public String pobierzopis() { return opis; public abstract double koszt(); public abstract class SkladnikDekorator extends Napoj{ public abstract String pobierzopis();

39 Kod aplikacji dla Star Cafe c.d. public class Espresso extends Napoj { public Espresso() { opis = Kawa Espresso ; public double koszt() { return 1.99; public class StarCafeSpecial extends Napoj{ public StarCafeSpecial() { opis = Kawa Star Cafe Special ; public double koszt() { return 1.99;

40 Kod aplikacji dla Star Cafe c.d. public class Czekolada extends SkladnikDekorator { Napoj napoj; public Czekolada(Napoj napoj) { this.napoj = napoj; public String pobierzopis() { return napoj.pobierzopis() +, Czekolada ; public double koszt() { return napoj.koszt() + 0,20;

41 Kod aplikacji dla Star Cafe c.d. public class StarCafe { public static void main(string[] args) { Napoj napoj = new Espresso(); System.out.println(napoj.pobierzOpis()+, + napoj.koszt()); Napoj napoj2 = new MocnoPalona(); napoj2 = new Czekolada(napoj2); napoj2 = new Czekolada(napoj2); napoj2 = new BitaSmietana(napoj2); System.out.println(napoj2.pobierzOpis()+, +napoj2.koszt()); Napoj napoj3 = new StarCafeSpecial(); napoj3 = new MleczkoSojowe(napoj3); napoj3 = new Czekolada(napoj3); napoj3 = new BitaSmietana(napoj3); System.out.println(napoj3.pobierzOpis()+, +napoj3.koszt());

42 Własny dekorator obsługi wejścia-wyjścia public class LowerCaseInputStream extends FilterInputstream { public LowerCaseInputStream (InputStream in) { super(in); public int read() throws IOException { int c = super.read(); return (c == -1? C : Character.toLowerCase((char)c)); public int read(byte[] b, int offset, int len) throws IOException { int result = super.read(b, offset, len); for(int i = offest; i < offset+result; i++) { b[i] = (byte)character.tolowercase((char)b[i]); return result;

43 Własny dekorator obsługi wejścia-wyjścia public class InputTest { public static void main(string[] args) throws IOException { int c; try { InputStream in = new LowerCaseInputStream( new BufferedInputStream( new FileInputstream( test.txt ))); while((c = in.read()) >= 0) { System.out.println((char)c); in.close(); catch(ioexception e) { e.printstacktrace();

44 Wzorzec Polecenie wymagania systemu Należy oprogramować siedem slotów tego urządzenia. Do każdego slotu można przypisać inne urządzenie i sterować jego pracą za pomocą odpowiednich przycisków Do każdego z siedmiu slotów przypisany jest osobny zestaw przycisków WŁĄCZ i WYŁĄCZ

45 Zestaw klas do obsługi urządzeń

46 Wzorzec Polecenie analiza przypadku public interface Polecenie() { public void wykonaj(); Wszystkie POLECENIA posiadają zaimplementowany ten sam interfejs, składający się tylko z jednej metody. public class PolecenieWlaczSwiatlo implements Polecenie { Swiatlo swiatlo ; public PolecenieWlaczSwiatlo(Swiatlo swiatlo) { this.swiatlo = swiatlo; public void wykonaj() { swiatlo.wlacz(); Metoda wykonaj() wywołuje metodę włącz() obiektu realizującego (czyli obiektu reprezentującego światło, którym sterujemy).

47 Zastosowanie POLECENIE public class MiniPilotTest { public static void main(string[] args) { MiniPilot pilot = new MiniPilot(); Swiatlo swiatlo = new Swiatlo(); PolecenieWlacz wlaczswiatlo = new PolecenieWlacz(swiatlo); pilot.ustawpolecenie(wlaczswiatlo); pilot.przyciskzostalnacisniety(); public class MiniPilot { Polecenie slot; public MiniPilot() { public void ustawpolecenie(polecenie polecenie) { this.slot = polecenie; public void przyciskzostalnacisniety() { slot.wykonaj();

48 Definicja Zastosowanie wzorca POLECENIE Polecenie Wzorzec Polecenie hermetyzuje żądania w postaci obiektów, co umożliwia parametryzowanie różnych obiektów zróżnicowanymi żądaniami (takimi jak np. żądania kolejkowania lub rejestracji) oraz obsługiwanie operacji, które można wycofać. Obiekt polecenie hermetyzuje żądanie poprzez wzajemne powiązanie zestawu operacji do wykonania z określonym obiektem, który będzie je realizował. Aby osiągnąć taki rezultat, zestaw operacji i obiekt realizujący są pakowane razem do obiektu, który udostępnia tylko jedną metodę, wykonaj(), która po wywołaniu powoduje, że dany zestaw operacji jest wykonywany np. rzez obiekt realizujący. Żaden inny obiekt nie wie jakie operacje będą wykonane ani kto jest obiektem realizującym takie operacje; obiekty zewnętrzne wiedzą jedynie, że jeżeli wywołają metodę wykonaj(), ich żądanie zostanie zrealizowane.

49 Definicja Zastosowanie wzorca Polecenie POLECENIE diagram klas Obiekt wywołujący przechowuje obiekt-polecenie i w określonym momencie prosi go o wykonanie żądania poprzez wywołanie jego metody wykonaj(). Odbiorca (obiekt realizujący) wie, w jaki sposób należy wykonać operacje niezbędne do realizacji określonego żądania. Rolę odbiorcy może spełniać dowolna klasa. Tworzy powiązanie pomiędzy operacjami, które powinny zostać wykonane, a odbiorcą tych operacji, czyli obiektem który będzie je realizował. Obiekt wywołujący wystawia żądanie poprzez wywołanie metody wykonaj() polecenia, a ten powoduje wykonanie żądania poprzez wywołanie odpowiednich metod obiektu realizującego.

50 Przypisywanie Zastosowanie POLECEŃ POLECENIE do slotów Zadanie Należy przypisać do każdego slotu SuperPilota odpowiednie POLECENIE. Dzięki temu SuperPilot zostanie naszym obiektem wywołującym. Po naciśnięciu przycisku pilota zostanie wywołana metoda wykonaj() obiektu przypisanego do slotu odpowiadającego temu przyciskowi, co w efekcie spowoduje wykonanie odpowiednich operacji przez obiekt realizujący.

51 Implementacja SuperPilota public void wcisnijwlacz(int slot) { poleceniewlacz[slot].wykonaj(); public void wcisnijwylacz(int slot) { poleceniewylacz[slot].wykonaj(); public class SuperPilot { Polecenie[] poleceniewlacz; Polecenie[] poleceniewylacz; public SuperPilot() { poleceniewlacz = new Polecenie[7]; poleceniewylacz = new Polecenie[7]; public void ustawpolecenie(int slot, Polecenie wlacz, Polecenie wylacz) { poleceniewlacz[slot] = wlacz; poleceniewylacz[slot] = wylacz;

52 Implementacja POLECEŃ public class PolecenieWylaczSwiatlo implements Polecenie { Swiatlo swiatlo ; public PolecenieWlaczSwiatlo(Swiatlo swiatlo) { this.swiatlo = swiatlo; public void wykonaj() { swiatlo.wylacz(); public class PolecenieWiezaStereoWlaczCD implements Polecenie{ WiezaStereo wiezastereo; public PolecenieWiezaStereoWlaczCD (WiezaStereo wiezastereo){ this.wiezastereo = wiezastereo; public void wykonaj() { wiezastereo.wlacz(); wiezastereo.ustawcd(); wiezastereo.ustawglosnosc(11);

53 Implementacja Wycofaj public class PolecenieWlaczSwiatlo implements Polecenie { Swiatlo swiatlo ; public PolecenieWlaczSwiatlo(Swiatlo swiatlo) { this.swiatlo = swiatlo; public void wykonaj() { swiatlo.wlacz(); public void wycofaj() { swiatlo.wylacz(); public class PolecenieWylaczSwiatlo implements Polecenie { Swiatlo swiatlo ; public PolecenieWylaczSwiatlo(Swiatlo swiatlo) { this.swiatlo = swiatlo; public void wykonaj() { swiatlo.wylacz(); public void wycofaj() { swiatlo.wlacz();

54 Implementacja Wycofaj c.d. public class SuperPilotZWycofywaniem { Polecenie[] poleceniewlacz; Polecenie[] poleceniewylacz; Polecenie poleceniewycofaj; public SuperPilotZWycofywaniem () { poleceniewlacz = new Polecenie[7]; poleceniewylacz = new Polecenie[7]; public void ustawpolecenie(int slot, Polecenie wlacz, Polecenie wylacz) { poleceniewlacz[slot] = wlacz; poleceniewylacz[slot] = wylacz; public void wcisnijwlacz(int slot) { poleceniewlacz[slot].wykonaj(); poleceniewycofaj = poleceniewlacz[slot]; public void wcisnijwylacz(int slot) { poleceniewylacz[slot].wykonaj(); poleceniewycofaj = poleceniewylacz[slot]; public void wcisnijwycofaj() { poleceniewycofaj.wycofaj();

55 Tak, to już KONIEC Dziękuję za uwagę!

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

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

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

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

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

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

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

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

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

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

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

Wprowadzenie niektórych zagadnień OOP oraz wzorce operacyjne

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

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

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

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

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

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków mgr inż. Maciej Lasota Version 1.0, 13-05-2017 Spis treści Wyjątki....................................................................................

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

Technologie obiektowe

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

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

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

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

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

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Polimorfizm, metody wirtualne i klasy abstrakcyjne Programowanie obiektowe Polimorfizm, metody wirtualne i klasy abstrakcyjne Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Polimorfizm,

Bardziej szczegółowo

Aplikacje w środowisku Java

Aplikacje w środowisku Java Aplikacje w środowisku Java Materiały do zajęć laboratoryjnych Klasy i obiekty - dziedziczenie mgr inż. Kamil Zieliński Katolicki Uniwersytet Lubelski Jana Pawła II 2018/2019 W ramach poprzedniego laboratorium

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

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

Dziedziczenie. dr Jarosław Skaruz

Dziedziczenie. dr Jarosław Skaruz Dziedziczenie dr Jarosław Skaruz http://jareks.ii.uph.edu.pl jaroslaw@skaruz.com Dziedziczenie specjalizacja Dziedziczenie generalizacja Generalizacja-specjalizacja jest takim związkiem pomiędzy klasami,

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

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

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

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

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

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

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

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

Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ Procesy i wątki Proces posiada samodzielne środowisko wykonawcze. Proces posiada własny zestaw podstawowych zasobów w czasie wykonywania; W szczególności, każdy proces ma własną przestrzeń pamięci. W uproszczeniu

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

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

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

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

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

Wykład 7: Pakiety i Interfejsy

Wykład 7: Pakiety i Interfejsy Wykład 7: Pakiety i Interfejsy Plik Źródłowy w Javie Składa się z: instrukcji pakietu (pojedyncza, opcjonalna) instrukcji importujących (wielokrotne, opcjonalne) deklaracji klasy publicznej (pojedyncza,

Bardziej szczegółowo

Metody Metody, parametry, zwracanie wartości

Metody Metody, parametry, zwracanie wartości Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Metody Metody, parametry, zwracanie wartości Metody - co to jest i po co? Metoda to wydzielona część klasy, mająca

Bardziej szczegółowo

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016 Wykład 2 17 marca 2016 Dziedziczenie Klasy bazowe i potomne Dziedziczenie jest łatwym sposobem rozwijania oprogramowania. Majac klasę bazowa możemy ja uszczegółowić (dodać nowe pola i metody) nie przepisujac

Bardziej szczegółowo

Wykład 6: Dziedziczenie

Wykład 6: Dziedziczenie Wykład 6: Dziedziczenie Dziedziczenie Jeden z filarów obiektowości. Budowa jednej klasy na bazie drugiej, przez dodawanie/przesłanianie jej składowych: nad-klasa klasa bazowa pod-klasa klasa pochodna od

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

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe III. Refleksja Małgorzata Prolejko OBI JA16Z03 Plan Klasa Class. Analiza funkcjonalności klasy. Podstawy obsługi wyjątków. Zastosowanie refleksji do analizy obiektów. Wywoływanie

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

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

Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński Java - wprowadzenie Programowanie Obiektowe Mateusz Cicheński O języku Czym jest Java Cechy charakterystyczne języka Przykładowe zastosowania Składnia języka Podstawowe typy Wybrane słowa kluczowe Plan

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

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu. Zrozumienie funkcji danych statycznych jest podstawą programowania obiektowego. W niniejszym artykule opiszę zasadę tworzenia klas statycznych w C#. Oprócz tego dowiesz się czym są statyczne pola i metody

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

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

Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html

Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html Dr inż. Zofia Kruczkiewicz wykład 4 Programowanie aplikacji internetowych, wykład 4 1 1. Zadania aplikacji rozproszonych obiektów

Bardziej szczegółowo

Programowanie Zespołowe

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

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

Aplikacje RMI Lab4

Aplikacje RMI   Lab4 Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html Lab4 Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych 1 1. Koncepcja budowy aplikacji RMI (aplikacja rozproszonych

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

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1 Współbieżność i równoległość w środowiskach obiektowych Krzysztof Banaś Obliczenia równoległe 1 Java Model współbieżności Javy opiera się na realizacji szeregu omawianych dotychczas elementów: zarządzanie

Bardziej szczegółowo

Laboratorium 6 DIAGRAM KLAS (Class Diagram)

Laboratorium 6 DIAGRAM KLAS (Class Diagram) Laboratorium 6 DIAGRAM KLAS (Class Diagram) Opisuje strukturę programu (a także zależności między nimi), co znajduje odzwierciedlenie w kodzie. Charakteryzuje zależności pomiędzy składnikami systemu: klasami,

Bardziej szczegółowo

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie? 1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie? a) konstruktor b) referencje c) destruktor d) typy 2. Które z poniższych wyrażeń są poprawne dla klasy o nazwie

Bardziej szczegółowo

Plik pobrano z Tytuł: Wzorce projektowe, cz. 2 Strategy Ostatnia aktualizacja:

Plik pobrano z   Tytuł: Wzorce projektowe, cz. 2 Strategy Ostatnia aktualizacja: Wzorce projektowe, cz. 2 Strategy Druga część z serii wpisów o wzorcach projektowych. Dziś omówię wzorzec Strategii (Strategy). Wstęp Strategia jest wzorcem projektowym, który definiuje rodzinę wymiennych

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

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

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

Wykład 4: Klasy i Metody

Wykład 4: Klasy i Metody Wykład 4: Klasy i Metody Klasa Podstawa języka. Każde pojęcie które chcemy opisać w języku musi być zawarte w definicji klasy. Klasa definiuje nowy typ danych, których wartościami są obiekty: klasa to

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

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

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć

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

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

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

Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut.

Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut. Wyjątki Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut. Wydaje się, że żaden użytkownik oprogramowania nie lubi, kiedy stosowany program nagle zawiesza się,

Bardziej szczegółowo

Wielowątkowość. Programowanie w środowisku rozproszonym. Wykład 1.

Wielowątkowość. Programowanie w środowisku rozproszonym. Wykład 1. Wielowątkowość Programowanie w środowisku rozproszonym. Wykład 1. Informacje organizacyjne Wymiar godzin: W-30, LAB-15 Zaliczenie wykonanie kilku programów i ich zaliczenie (w trakcie zajęć laboratoryjnych)

Bardziej szczegółowo

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Java - tablice, konstruktory, dziedziczenie i hermetyzacja Java - tablice, konstruktory, dziedziczenie i hermetyzacja Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU zmienne tablicowe konstruktory klas dziedziczenie hermetyzacja

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 5 Marcin Młotkowski 23 marca 2017 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 50 Historia Początkowe założenia Projekt OAK Sterowanie urządzeniami

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

Przykładowa implementacja

Przykładowa implementacja Wzorce projektowe, cz. 10 Facade Fasada służy do ujednolicenia dostępu do złożonego systemu poprzez udostępnienie uproszczonego i uporządkowanego interfejsu programistycznego. Fasada zwykle implementowana

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

Aplikacje w środowisku Java

Aplikacje w środowisku Java Aplikacje w środowisku Java Materiały do zajęć laboratoryjnych Klasy i obiekty - wprowadzenie mgr inż. Kamil Zieliński Katolicki Uniwersytet Lubelski Jana Pawła II 2018/2019 Klasa zbiór pól i metod Obiekt

Bardziej szczegółowo

Wprowadzenie do projektu QualitySpy

Wprowadzenie do projektu QualitySpy Wprowadzenie do projektu QualitySpy Na podstawie instrukcji implementacji prostej funkcjonalności. 1. Wstęp Celem tego poradnika jest wprowadzić programistę do projektu QualitySpy. Będziemy implementować

Bardziej szczegółowo

Klasy abstrakcyjne i interfejsy

Klasy abstrakcyjne i interfejsy Klasy abstrakcyjne i interfejsy Streszczenie Celem wykładu jest omówienie klas abstrakcyjnych i interfejsów w Javie. Czas wykładu 45 minut. Rozwiązanie w miarę standardowego zadania matematycznego (i nie

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu Programowanie obiektowe - zestaw 03 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas abstrakcyjnych i interfejsów. Wprowadzenie

Bardziej szczegółowo

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu Zdalne wywołanie metod - koncepcja Oprogramowanie systemów równoległych i rozproszonych Wykład 7 RMI (Remote Method Invocation) - obiektowe RPC, dostarcza klientowi interfejs do obiektu, implementacja

Bardziej szczegółowo

10. Programowanie obiektowe w PHP5

10. Programowanie obiektowe w PHP5 Ogólnie definicja klasy wygląda jak w C++. Oczywiście elementy składowe klasy są zmiennymi PHP, stąd nieśmiertelne $. Warto zauważyć, że mogą one mieć wartość HHH mgr inż. Grzegorz Kraszewski TECHNOLOGIE

Bardziej szczegółowo

1 Wątki 1. 2 Tworzenie wątków 1. 3 Synchronizacja 3. 4 Dodatki 3. 5 Algorytmy sortowania 4

1 Wątki 1. 2 Tworzenie wątków 1. 3 Synchronizacja 3. 4 Dodatki 3. 5 Algorytmy sortowania 4 Spis treści 1 Wątki 1 2 Tworzenie wątków 1 3 Synchronizacja 3 4 Dodatki 3 5 Algorytmy sortowania 4 6 Klasa Runnable 4 Temat: Wątki Czym są wątki. Grafika. Proste animacje. Małe podsumowanie materiału.

Bardziej szczegółowo

Oprogramowanie systemów równoległych i rozproszonych Wykład 7

Oprogramowanie systemów równoległych i rozproszonych Wykład 7 Wykład 7 p. 1/2 Oprogramowanie systemów równoległych i rozproszonych Wykład 7 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Zdalne wywołanie

Bardziej szczegółowo

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak Java język programowania obiektowego Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak 1 Język Java Język Java powstał w roku 1995 w firmie SUN Microsystems Java jest językiem: wysokiego

Bardziej szczegółowo

Kurs WWW. Paweł Rajba. pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/

Kurs WWW. Paweł Rajba. pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ Paweł Rajba pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ Spis treści Wprowadzenie Automatyczne ładowanie klas Składowe klasy, widoczność składowych Konstruktory i tworzenie obiektów Destruktory i

Bardziej szczegółowo

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java Aplikacje Internetowe Podstawy języka Java Najprostsza aplikacja class Hello { public static void main(string[] args) { System.out.println("Hello World!"); Komponenty Javy JRE Java Runtime Environment

Bardziej szczegółowo

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1 Obiektowe programowanie rozproszone Java RMI Krzysztof Banaś Systemy rozproszone 1 Java RMI Mechanizm zdalnego wywołania metod Javy (RMI Remote Method Invocation) posiada kilka charakterystycznych cech,

Bardziej szczegółowo

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static), Tworzenie obiektów Dostęp do obiektów jest realizowany przez referencje. Obiekty w języku Java są tworzone poprzez użycie słowa kluczowego new. String lan = new String( Lancuch ); Obszary pamięci w których

Bardziej szczegółowo

KLASY, INTERFEJSY, ITP

KLASY, INTERFEJSY, ITP KLASY, INTERFEJSY, ITP ZAGADNIENIA: Klasy, modyfkatory dostępu, pakiety. Zmienne i metody statyczne. Klasy abstrakcyjne, dziedziczenie. Interfejsy. Komentarze i javadoc, http://th-www.if.uj.edu.pl/zfs/ciesla/

Bardziej szczegółowo

1 Atrybuty i metody klasowe

1 Atrybuty i metody klasowe 1 Atrybuty i metody klasowe Składowe klasowe (statyczne) Każdy obiekt klasy posiada własny zestaw atrybutów. Metody używają atrybutów odpowiedniego obiektu. Czasem potrzeba atrybutów wspólnych dla wszystkich

Bardziej szczegółowo