Wzorce projektowe. dr Jarosław Skaruz
|
|
- Michalina Dudek
- 4 lat temu
- Przeglądów:
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 Wzorzec projektowy (ang. design pattern) w inżynierii oprogramowania, rozwiązanie często pojawiających się, powtarzalnych problemów projektowych.
Bardziej szczegółowoproblem w określonym kontekście siły istotę jego rozwiązania
Wzorzec projektowy Christopher Alexander: Wzorzec to sprawdzona koncepcja, która opisuje problem powtarzający się wielokrotnie w określonym kontekście, działające na niego siły, oraz podaje istotę jego
Bardziej szczegółowoWzorce projektowe Michał Węgorek
Wzorce projektowe Michał Węgorek Wzorce projektowe Plan prezentacji Co to jest i po co to jest? Podział Najczęściej spotykane wzorce Bibliografia Co to jest i po co to jest? Wzorzec projektowy (ang. Design
Bardziej szczegółowoWzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski
Adapter: opis Wzorce Strukturalne Tomasz Borzyszkowski Alternatywna nazwa: Wrapper (opakowanie) Rola obiektu Adapter: pełni wobec Klienta rolę otoczki, która umożliwia przetłumaczenie jego żądań na protokół
Bardziej szczegółowoSingleton. Cel: Przykład: Zastosowanie: Zapewnienie, że klasa ma tylko jedną instancję i dostarczenie globalnego dostępu do niej.
1/8 Singleton Cel: Zapewnienie, że klasa ma tylko jedną instancję i dostarczenie globalnego dostępu do niej. Przykład: Niekiedy ważne jest, aby tworzyć tylko jedną instancję jakiejś klasy. Globalne zmienne
Bardziej szczegółowoZaawansowane programowanie obiektowe - wykład 5
Zaawansowane programowanie obiektowe - wykład 5 dr Piotr Jastrzębski (czynnościowe) opisują zachowanie obiektów, komunikację pomiędzy nimi i ich odpowiedzialność. Interpreter Iterator (kursor) Łańcuch
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Laboratorium 11 - przegląd wybranych wzorców mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 24 maja 2017 1 / 38 mgr inż. Krzysztof Szwarc Programowanie obiektowe Wzorce
Bardziej szczegółowoInterfejsy. 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ółowoProblemy projektowania obiektowego. Czy podobne problemy można rozwiązywac w podobny sposób?
Problemy projektowania obiektowego Czy podobne problemy można rozwiązywac w podobny sposób? Czy te problemy można przedstawić w abstrakcyjny sposób, tak aby były pomocne w tworzeniu rozwiązań w różnych
Bardziej szczegółowoZaawansowane programowanie w C++ (PCP)
Zaawansowane programowanie w C++ (PCP) Wykład 4 - wzorce projektowe. dr inż. Robert Nowak - p. 1/18 Powtórzenie klasy autonomiczne tworzenie nowych typów: dziedziczenie i agregacja dziedziczenie: przedefiniowywanie
Bardziej szczegółowoDokumentacja 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ółowoDiagramy 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ółowoWprowadzenie niektórych zagadnień OOP oraz wzorce operacyjne
Wprowadzenie niektórych zagadnień OOP oraz wzorce operacyjne ŁUKASZ KIEŁCZYKOWSKI 1 1. Wprowadzenie Wyobraźmy sobie, że jesteśmy firmą tworzącą oprogramowanie i dostaliśmy właśnie zlecenie na stworzenie
Bardziej szczegółowoJAVA 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ółowoProgramowanie zorientowane obiektowo. Mateusz Kołecki
Programowanie zorientowane obiektowo Mateusz Kołecki Plan MVC Wstęp Separacja odpowiedzialnośći Antyprzykład Dobry przykład Wady/zalety MVC MVC to tylko początek - wzorce projektowe Dlaczego chcemy używać
Bardziej szczegółowoProjektowanie obiektowe. Roman Simiński Wzorce projektowe Wybrane wzorce strukturalne
Projektowanie obiektowe Roman Simiński roman.siminski@us.edu.pl www.siminskionline.pl Wzorce projektowe Wybrane wzorce strukturalne Fasada Facade Pattern 2 Wzorzec Fasada Facade Pattern koncepcja 3 Wzorzec
Bardziej szczegółowoWzorce projektowe cz. I. Wzorce projektowe cz. I 1/33
Wzorce projektowe cz. I Wzorce projektowe cz. I 1/33 Wzorce projektowe cz. I 2/33 Historia Wzorce projektowe: wywodzą się z wzorców projektowych w architekturze termin wzorca projektowego wprowadzony do
Bardziej szczegółowoWprowadzenie do programowania aplikacji mobilnych
Wprowadzenie do programowania aplikacji mobilnych dr Przemysław Juszczuk dr Przemysław Juszczuk Trochę historii Idea wzorców projektowych wywodzi się jeszcze z wczesnych lat osiemdziesiątych ubiegłego
Bardziej szczegółowoProgramowanie 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ółowoRysunkowy tutorial Możesz swobodnie dystrybuować ten plik jeśli pozostawisz go w nietkniętym stanie. Możesz także cytować jego fragmenty umieszczając w tekście odnośnik http://mbartyzel.blogspot.com Jak
Bardziej szczegółowoTechnologie obiektowe
WYKŁAD dr inż. Paweł Jarosz Instytut Informatyki Politechnika Krakowska mail: pjarosz@pk.edu.pl LABORATORIUM dr inż. Paweł Jarosz (3 grupy) mgr inż. Piotr Szuster (3 grupy) warunki zaliczenia Obecność
Bardziej szczegółowoProjektowanie oprogramowania: wzorce architektoniczne i projektowe
Projektowanie oprogramowania: wzorce architektoniczne i projektowe Ogólne zasady projektowania Nie staraj się zadziwić innych. Rzeczy oczywiste rób w sposób oczywisty. Nie rozmawiaj z nieznajomym. Projekt
Bardziej szczegółowoProjektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2017
Projektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2017 1 Wzorce podstawowe 1.1 Interface vs Abstract class class InterfaceAbstractClass
Bardziej szczegółowoWzorce projektowe. dr inż. Marcin Pietroo
Wzorce projektowe dr inż. Marcin Pietroo Adapter - strukturalny wzorzec projektowy, którego celem jest umożliwienie współpracy dwóm klasom o niekompatybilnych interfejsach - adapter przekształca interfejs
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe IV. Interfejsy i klasy wewnętrzne Małgorzata Prolejko OBI JA16Z03 Plan Właściwości interfejsów. Interfejsy a klasy abstrakcyjne. Klonowanie obiektów. Klasy wewnętrzne. Dostęp do
Bardziej szczegółowoDzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton
Dzisiejszy wykład Wzorce projektowe Visitor Client-Server Factory Singleton 1 Wzorzec projektowy Wzorzec nazwana generalizacja opisująca elementy i relacje rozwiązania powszechnie występującego problemu
Bardziej szczegółowoPolimorfizm, 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ółowoAplikacje 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ółowoProjektowanie obiektowe Wzorce projektowe
Projektowanie obiektowe Wzorce projektowe Gang of Four Kreacyjne wzorce projektowe (wzorce konstrukcyjne) 1 Roadmap Memento Factory Method Abstract Factory Prototype Builder 2 Wzorce konstrukcyjne wzorce
Bardziej szczegółowoPrototype (prototyp) Cel: Przykład: Określenie rodzaju tworzonych obiektów poprzez wskazanie ich prototypu. Nowe instancje tworzymy kopiując prototyp.
1/14 Prototype (prototyp) Cel: Określenie rodzaju tworzonych obiektów poprzez wskazanie ich prototypu. Nowe instancje tworzymy kopiując prototyp. Przykład: Edytor 3D klient tworzy obiekty różnych kształtów
Bardziej szczegółowoDziedziczenie. 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ółowoProjektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2015
Projektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2015 1 Wzorce podstawowe 1.1 Interface vs Abstract class class InterfaceAbstractClass
Bardziej szczegółowoPHP 5 język obiektowy
PHP 5 język obiektowy Wprowadzenie Klasa w PHP jest traktowana jak zbiór, rodzaj różnych typów danych. Stanowi przepis jak stworzyć konkretne obiekty (instancje klasy), jest definicją obiektów. Klasa reprezentuje
Bardziej szczegółowoCommand (action, transaction, polecenie)
1/10 Command (action, transaction, polecenie) Cel: Obiekt funkcyjny. Pozwala operować żądaniem jako obiektem wysyłać jako parametr, buforować, kolejkować, składować (dzienniki lub undo). Przykład: class
Bardziej szczegółowoPolimorfizm. 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ółowoProgramowanie 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ółowoTemplate method (metoda szablonowa)
1/11 Template method (metoda szablonowa) Cel: Definiuje szkielet algorytmu przy pomocy operacji podstawowych. Konkretyzacja poszczególnych kroków składowych pozostawiona klasom potomnym mogą być one zmieniane
Bardziej szczegółowoWzorce projektowe. dr inż. Marcin Pietroo
Wzorce projektowe dr inż. Marcin Pietroo Iterator czynnościowy wzorzec projektowy (obiektowy), którego celem jest zapewnienie sekwencyjnego dostępu do podobiektów zgrupowanych w większym obiekcie (np.
Bardziej szczegółowoBuilder (budowniczy) Cel: Przykład:
1/8 Builder (budowniczy) Cel: Oddzielenie konstruowania złożonego obiektu od jego reprezentacji, tak aby ten sam proces konstrukcji mógł tworzyć różne reprezentacje. Przykład: 2/8 abstract class TableBuilder
Bardziej szczegółowoJava. 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ółowoJava: 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ółowoTestowanie oprogramowania Wzorce projektowe
Testowanie oprogramowania Wzorce projektowe 1/66 Testowanie oprogramowania Wzorce projektowe dr inż. Grzegorz Michalski 17 listopada 2015 Testowanie oprogramowania Wzorce projektowe 2/66 Plan wykładu Agenda
Bardziej szczegółowoTechnologie 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ółowoDariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki
Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Object-oriented programming Najpopularniejszy obecnie styl (paradygmat) programowania Rozwinięcie koncepcji programowania strukturalnego
Bardziej szczegółowoProgramowanie 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ółowoWykł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ółowoMetody 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ółowoKurs 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ółowoWykł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ółowoEnkapsulacja, 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ółowoProgramowanie 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ółowoAnaliza i projektowanie obiektowe 2016/2017. Wykład 11: Zaawansowane wzorce projektowe (1)
Analiza i projektowanie obiektowe 2016/2017 Wykład 11: Zaawansowane wzorce projektowe (1) Jacek Marciniak Wydział Matematyki i Informatyki Uniwersytet im. Adama Mickiewicza 1 Plan wykładu 1. Wzorce projektowe
Bardziej szczegółowoWzorce projektowe ArrayList. Aplikacja i zdarzenia. Paweł Chodkiewicz
Wzorce projektowe ArrayList DataGridView Aplikacja i zdarzenia Paweł Chodkiewicz Wzorzec uniwersalne rozwiązanie często powtarzających się problemów. Wzorzec opisuje problem, który powtarza się wielokrotnie
Bardziej szczegółowoJava - 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ółowoLaboratorium 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ółowoObiekt 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ółowoProgramowanie w języku Java WYKŁAD
Programowanie w języku Java WYKŁAD dr inż. Piotr Zabawa Certyfikowany Konsultant IBM/Rational e-mail: pzabawa@pk.edu.pl www: http://www.pk.edu.pl/~pzabawa 24.02.2014 WYKŁAD 1 Wzorce projektowe Znaczenie
Bardziej szczegółowoProxy (pełnomocnik) Cel: Zastosowanie: Dostarczyć zamiennik pewnego obiektu, pozwalający kontrolować dostęp do niego.
Proxy (pełnomocnik) Cel: Dostarczyć zamiennik pewnego obiektu, pozwalający kontrolować dostęp do niego. Zastosowanie: Wszędzie tam, gdzie oczekujemy bardziej zaawansowanego odwołania do obiektu, niż zwykły
Bardziej szczegółowoAplikacje 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ółowoProgramowanie Zespołowe
Programowanie Zespołowe Dobre Praktyki dr Rafał Skinderowicz mgr inż. Michał Maliszewski Parafrazując klasyka: Jeśli piszesz w Javie pisz w Javie - Rafał Ciepiela Principal Software Developer Cadence Design
Bardziej szczegółowoTechnologia Programowania 2016/2017 Wykład 4
Technologia Programowania 2016/2017 Wykład 4 Wzorce projektowe GoF Jakub Lemiesz Wzorce GRASP a wzorce GoF Znamy 9 wzorców GRASP ogólne zasady Na GRASP opierają się klasyczne wzorce GoF Na wzorcach GoF
Bardziej szczegółowo12) 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ółowoAplikacje 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ółowoAbstract Factory (fabryka abstrakcyjna)
1/9 Abstract Factory (fabryka abstrakcyjna) Cel: Zapewnienie interfejsu do tworzenia rodzin powiązanych obiektów bez specyfikacji konkretnej klasy. Przykład: Aplikacja do ustawiania mebli: osobne rodziny
Bardziej szczegółowoWspół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ółowoLaboratorium 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ółowo1. 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ółowoPlik 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ółowoProjektowanie obiektowe Wzorce projektowe. Gang of Four Wzorce rozszerzeń
Projektowanie obiektowe Wzorce projektowe Gang of Four Wzorce rozszerzeń 1 Roadmap Decorator Iterator Visitor 2 Wzorce rozszerzeń Mają na celu uczynić proces rozszerzania kodu bardziej czytelnym, prostym
Bardziej szczegółowoProjektowanie 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ółowoWywoł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ółowoWykł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ółowoDecorator (dekorator)
1/10 Decorator (dekorator) Cel: Dołącza dynamicznie nową funkcjonalność do obiektu elastyczna alternatywa dziedziczenia. Przykład: interface iplik { void zapisz(string tekst); String odczytaj(); class
Bardziej szczegółowoWzorce projektowe i refaktoryzacja
Wzorce projektowe i refaktoryzacja Paweł Kozioł p.koziol@students.mimuw.edu.pl 18.01.2005 Moja praca magisterska Narzędzie dla środowiska Eclipse wspierające stosowanie wzorców projektowych J2EE Prowadzący:
Bardziej szczegółowoProgramowanie 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ółowoProjektowanie obiektowe Wzorce projektowe. Gang of Four Wzorce odpowiedzialności
Projektowanie obiektowe Wzorce projektowe Gang of Four Wzorce odpowiedzialności 1 Roadmap Singleton Observer Mediator Proxy Flyweight 2 Wzorce odpowiedzialności Udostępniają techniki centralizacji, delegowania
Bardziej szczegółowoKurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016
Wstęp - wykład 0 22 lutego 2016 Historia Simula 67 język zaprojektowany do zastosowan symulacyjnych; Smalltalk 80 pierwszy język w pełni obiektowy; Dodawanie obiektowości do języków imperatywnych: Pascal
Bardziej szczegółowoWstęp [2/2] Wbrew częstemu przekonaniu, nie są one gotowymi rozwiązaniami, to tylko półprodukty rozwiązania.
Adrian Skalczuk Szymon Kosarzycki Spis Treści Wstęp [1/2] Wzorce projektowe są nieodłącznym przyjacielem programisty pozwalają pisać czystszy kod, łatwiejszy do zrozumienia przez innych i zapewniają pewien
Bardziej szczegółowoWyją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ółowoWielową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ółowoJava - 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ółowoProgramowanie 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ółowoUML 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ółowoPrzykł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ółowoWzorce projektowe cz. II. Wzorce projektowe cz. II 1/35
Wzorce projektowe cz. II Wzorce projektowe cz. II 1/35 Wzorce projektowe cz. II 2/35 Iterator Przeznaczenie Wzorzec zapewnia sekwencyjny dostęp do elementów obiektu zagregowanego bez ujawniania jego reprezentacji
Bardziej szczegółowoAplikacje 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ółowoWprowadzenie 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ółowoKlasy 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ółowoProgramowanie 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ółowoZdalne 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ółowo10. 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ółowo1 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ółowoOprogramowanie 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ółowoJava. 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ółowoKurs 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ółowoAplikacje 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ółowoObiektowe 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ółowoObszar 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ółowoKLASY, 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ółowo1 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