Programowanie obiektowe

Podobne dokumenty
Wprowadzenie do programowania aplikacji mobilnych

Wzorce projektowe. dr inż. Marcin Pietroo

Programowanie obiektowe

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

Zaawansowane programowanie w C++ (PCP)

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

Technologia Programowania 2016/2017 Wykład 4

Analiza i projektowanie obiektowe 2016/2017. Wykład 11: Zaawansowane wzorce projektowe (1)

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

Problemy projektowania obiektowego. Czy podobne problemy można rozwiązywac w podobny sposób?

Programowanie zorientowane obiektowo. Mateusz Kołecki

Projektowanie oprogramowania: wzorce architektoniczne i projektowe

Wzorce projektowe ArrayList. Aplikacja i zdarzenia. Paweł Chodkiewicz

Technologia Programowania 2016/2017 Wykład 5

Testowanie oprogramowania Wzorce projektowe

Wzorce projektowe. dr inż. Marcin Pietroo

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

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

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

Wzorce architektoniczne

Projektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2015


Programowanie obiektowe

Programowanie Zespołowe

Wzorce prezentacji internetowych

Projektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2017

Programowanie obiektowe

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

Wzorce projektowe Michał Węgorek

Builder (budowniczy) Cel: Przykład:

Wzorce projektowe. dr inż. Marcin Pietroo

Wskazówki projektowe. Programowanie Obiektowe Mateusz Cicheński

Projektowanie obiektowe Wzorce projektowe. Wprowadzenie do wzorców projektowych

Zaawansowane programowanie obiektowe - wykład 5

Projektowanie obiektowe Wzorce projektowe

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

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

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

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

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych

Programowanie obiektowe

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

Przykładowa implementacja

WZORCE PROJEKTOWE (I) (DESIGN PATTERNS)

Iteracyjno-rozwojowy proces tworzenia oprogramowania Wykład 3 część 1

Wzorce projektowe kreacyjne

GUI - projektowanie interfejsów

Projektowanie obiektowe Wzorce projektowe. Gang of Four Wzorce rozszerzeń

Programowanie w języku Java WYKŁAD

Programowanie obiektowe

Wzorce projektowe. Wstęp

Podstawy i języki programowania

Warstwa integracji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe.

Programowanie obiektowe

Analiza i projektowanie obiektowe 2016/2017. Wykład 10: Tworzenie projektowego diagramu klas

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

Wykład 1 Inżynieria Oprogramowania

Programowanie obiektowe

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 2

PRZEWODNIK PO PRZEDMIOCIE

Programowanie obiektowe

Model oceny jakości implementacji wzorców projektowych

Programowanie obiektowe

PHP 5 język obiektowy

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

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7

Programowanie obiektowe

MVC w praktyce tworzymy system artykułów. cz. 1

Abstract Factory (fabryka abstrakcyjna)

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

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 6

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

MVVM Light Toolkit. Julita Borkowska

Wypożyczalnia VIDEO. Technologie obiektowe

Multi-wyszukiwarki. Mediacyjne Systemy Zapytań wprowadzenie. Architektury i technologie integracji danych Systemy Mediacyjne


Wzorce logiki dziedziny

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Program szkolenia: Wzorce projektowe w C++

Architektura Systemu. Architektura systemu umożliwia kontrolowanie iteracyjnego i przyrostowego procesu tworzenia systemu.

Projektowanie i architektura frameworka w języku PHP. Tomasz P.F. Kowalczyk

Spis treści 1. Wstęp 2. Projektowanie systemów informatycznych

Adaptywny kod : zwinne programowanie, wzorce projektowe i SOLID-ne zasady / Gary McLean Hall. Gliwice, cop Spis treści

Projektowanie Graficznych Interfejsów Użytkownika Robert Szmurło

Projektowanie obiektowe oprogramowania Wykład 7 wzorce czynnościowe (2) Wiktor Zychla 2018

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

Budowanie aplikacji biznesowych przy użyciu. Presentation Foundation i wzorca MVVM

METODY PROGRAMOWANIA

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

Programowanie i projektowanie obiektowe

Szczególne problemy projektowania aplikacji internetowych. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Dokumentacja do API Javy.

Technologie obiektowe

Projektowanie Aplikacji Internetowych. Wzorce projektowe warstwy usług

Analiza i projektowanie aplikacji Java

Wzorce projektowe. dr Jarosław Skaruz

Transkrypt:

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 projektowe Opis Wzorce projektowe (ang. Design Patterns) są uniwersalnymi rozwiązaniami dla często pojawiających się problemów. Wyróżniamy ich trzy rodzaje: Kreacyjne (opisują proces tworzenia nowych obiektów; np. singleton). Strukturalne (opisują struktury powiązanych ze sobą obiektów; np. fasada). Czynnościowe (opisują zachowanie i odpowiedzialność współpracujących obiektów; np. strategia). 2 / 38 mgr inż. Krzysztof Szwarc Programowanie obiektowe

Wzorce kreacyjne 3 / 38 mgr inż. Krzysztof Szwarc Programowanie obiektowe

Singleton - (anty)wzorzec Opis Singleton zapewnia występowanie maksymalnie jednej instancji danej klasy (tworzenie obiektu następuje przy pierwszej próbie użycia) oraz umożliwia globalny dostęp do stworzonego obiektu. Zazwyczaj wykorzystywany jest do przechowywania konfiguracji aplikacji oraz utrzymywania połączenia z bazą danych. Przy implementacji należy pamiętać o środowisku wielowątkowym i trudnościach z testowaniem. 4 / 38 mgr inż. Krzysztof Szwarc Programowanie obiektowe

Singleton - schemat działania https://pl.wikipedia.org/wiki/singleton https://developer.apple.com/ 5 / 38 mgr inż. Krzysztof Szwarc Programowanie obiektowe

Singleton w Javie public class Conf { private static final Conf INS = new Conf (); private Conf () { } } public static Conf getinstance () { return INS ; } 6 / 38 mgr inż. Krzysztof Szwarc Programowanie obiektowe

Singleton w Javie z lazy loading public class Conf { private static Conf ins = null ; private Conf () { } } public static Conf getinstance () { if(ins == null ) { ins = new Conf (); } return ins ; } 7 / 38 mgr inż. Krzysztof Szwarc Programowanie obiektowe

Singleton w Javie z lazy loading 2 public class Conf { private static Conf ins = null ; private Conf () { } } public static Conf getinstance () { if(ins == null ) { synchronized ( Conf. class ) { ins = new Conf (); } } return ins ; } 8 / 38 mgr inż. Krzysztof Szwarc Programowanie obiektowe

Singleton w Javie z lazy loading 3 public enum Conf { INSTANCE ; } 9 / 38 mgr inż. Krzysztof Szwarc Programowanie obiektowe

Budowniczy Opis Budowniczy (ang. builder) zakłada rozdzielenie sposobu tworzenia obiektów od ich reprezentacji - proces tworzenia jest dekomponowany na kilka pomniejszych etapów, które są implementowane na różne rodzaje (algorytm konstrukcji obiektu musi być niezależny od składowych obiektu i sposobu ich łączenia). Reasumując możliwe jest np. stworzenie różnych produktów bez zmiany kodu metody tworzącej i struktury produktu. 10 / 38 mgr inż. Krzysztof Szwarc Programowanie obiektowe

Budowniczy - UML http://devlake.com 11 / 38 mgr inż. Krzysztof Szwarc Programowanie obiektowe

Budowniczy - przykład http://go4expert.com 12 / 38 mgr inż. Krzysztof Szwarc Programowanie obiektowe

Metoda wytwórcza Opis Metoda wytwórcza (ang. factory method) umożliwia tworzenie nowych obiektów, które są nieokreślone, ale związane wspólnym interfejsem. Zapewnia hermetyzację procesu tworzenia obiektów (jedynie metoda wytwórcza zna szczegóły implementacyjne niezbędne do stworzenia obiektu) pozwalając na rozszerzenie funkcjonalności w przyszłości. W przeciwieństwie do budowniczego nie zmieniamy zawartości złożonego produktu, a jedynie wybieramy między różnymi klasami produktu. 13 / 38 mgr inż. Krzysztof Szwarc Programowanie obiektowe

Metoda wytwórcza - UML http://upload.wikimedia.org 14 / 38 mgr inż. Krzysztof Szwarc Programowanie obiektowe

Metoda wytwórcza - przykład http://go4expert.com 15 / 38 mgr inż. Krzysztof Szwarc Programowanie obiektowe

Fabryka abstrakcyjna Opis Fabryka abstrakcyjna (ang. abstract factory) udostępnia interfejs do tworzenia różnych obiektów danego typu, bez specyfikowania ich klas. W przeciwieństwie do metody wytwórczej (tworzącej jeden produkt), fabryka abstrakcyjna tworzy rodzinę powiązanych produktów. 16 / 38 mgr inż. Krzysztof Szwarc Programowanie obiektowe

Fabryka abstrakcyjna - UML https://upload.wikimedia.org 17 / 38 mgr inż. Krzysztof Szwarc Programowanie obiektowe

Metoda wytwórcza, a fabryka abstrakcyjna http://stackoverflow.com 18 / 38 mgr inż. Krzysztof Szwarc Programowanie obiektowe

Zadanie 1 Zaimplementuj wybrany wzorzec kreacyjny. 19 / 38 mgr inż. Krzysztof Szwarc Programowanie obiektowe

Wzorce strukturalne 20 / 38 mgr inż. Krzysztof Szwarc Programowanie obiektowe

Fasada Opis Fasada (ang. facade) wykorzystywany jest w celu ujednolicenia i uproszczenia dostępu do złożonego systemu tworząc interfejs wyższego poziomu. 21 / 38 mgr inż. Krzysztof Szwarc Programowanie obiektowe

Fasada - UML i przykład https://en.wikipedia.org/wiki/facade pattern 22 / 38 mgr inż. Krzysztof Szwarc Programowanie obiektowe

Adapter Opis Adapter (ang. wrapper) umożliwia współpracę dwóm klasom, które mają niekompatybilne interfejsy, poprzez przekształcenie interfejsu jednej z klas na interfejs drugiej. 23 / 38 mgr inż. Krzysztof Szwarc Programowanie obiektowe

Adapter - przykład http://i-msdn.sec.s-msft.com 24 / 38 mgr inż. Krzysztof Szwarc Programowanie obiektowe

Zadanie 1 Zaimplementuj wybrany wzorzec strukturalny. 25 / 38 mgr inż. Krzysztof Szwarc Programowanie obiektowe

Wzorce czynnościowe 26 / 38 mgr inż. Krzysztof Szwarc Programowanie obiektowe

Strategia Opis Strategia (ang. strategy) umożliwia wymienne stosowanie algorytmów w trakcie działania programu. Algorytmy zostają opakowane w oddzielne klasy. 27 / 38 mgr inż. Krzysztof Szwarc Programowanie obiektowe

Strategia - UML http://anirudhbhatnagar.files.wordpress.com 28 / 38 mgr inż. Krzysztof Szwarc Programowanie obiektowe

Strategia - przykład http://1.bp.blogspot.com 29 / 38 mgr inż. Krzysztof Szwarc Programowanie obiektowe

Obserwator Opis Obserwator (ang. observer) opiera się na powiadamianiu zainteresowanych obiektów (obserwatorów) o zmianie statusu obserwowanego obiektu. 30 / 38 mgr inż. Krzysztof Szwarc Programowanie obiektowe

Obserwator - UML http://pl.wikipedia.org 31 / 38 mgr inż. Krzysztof Szwarc Programowanie obiektowe

Zadanie 1 Zaimplementuj wybrany wzorzec czynnościowy. 32 / 38 mgr inż. Krzysztof Szwarc Programowanie obiektowe

Wzorce architektoniczne Opis Wzorce architektoniczne (ang. Architectural Patterns) określają ogólną strukturę systemu informatycznego oraz jego elementy, wraz z zakresem funkcji przez nie realizowanych i zasad komunikacji między nimi. W ramach przedmiotu zajmiemy się wzorcami MVC, MVP oraz MVVM, które są traktowane - w niektórych źródłach - jako wzorce architektoniczne lub wzorce projektowe warstwy prezentacji. 33 / 38 mgr inż. Krzysztof Szwarc Programowanie obiektowe

MVC Opis Model-Widok-Kontroler (ang. Model-View-Controller) zakłada podział aplikacji na trzy warstwy: Model - zawiera logikę aplikacji. Widok - wyświetla interfejs użytkownika aplikacji. Posiada referencje do modeli, z których pobiera dane w momencie otrzymania od kontrolera żądania odświeżenia. Kontroler - obsługuje zdarzenia. Może zmienić stan modelu, odświeżyc widok i przełączyć sterowanie na inny kontroler. 34 / 38 mgr inż. Krzysztof Szwarc Programowanie obiektowe

MVP Opis Model-Widok-Prezenter (ang. Model-View-Presenter) jest rozwinięciem MVC i zakłada podział aplikacji na trzy warstwy: Model - zawiera logikę aplikacji. Widok - wyświetla interfejs użytkownika aplikacji. Prezenter - wysyła zapytanie do modelu i przetwarza otrzymane dane, po czym przekazuje je do widoku. 35 / 38 mgr inż. Krzysztof Szwarc Programowanie obiektowe

MVVM Opis Model-Widok-Widok Modelu (ang. Model-View-ViewModel) jest rozwinięciem MVC i zakłada podział aplikacji na trzy warstwy: Model - zawiera logikę aplikacji. Widok - wyświetla interfejs użytkownika aplikacji. Widok Modelu - reaguje na reakcje użytkownika i odpowiada za pobieranie oraz modyfikowanie informacji w modelu, a także za aktualizowanie widoku. 36 / 38 mgr inż. Krzysztof Szwarc Programowanie obiektowe

Porównanie wzorców MV* http://beyondjava.net 37 / 38 mgr inż. Krzysztof Szwarc Programowanie obiektowe

Dziękuję za uwagę 38 / 38 mgr inż. Krzysztof Szwarc Programowanie obiektowe