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

Podobne dokumenty
Wzorce projektowe ArrayList. Aplikacja i zdarzenia. Paweł Chodkiewicz

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

Wprowadzenie do programowania aplikacji mobilnych

Testowanie oprogramowania Wzorce projektowe

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

Zaawansowane programowanie w C++ (PCP)

Technologia Programowania 2016/2017 Wykład 4

Technologia Programowania 2016/2017 Wykład 5

Wzorce projektowe. dr inż. Marcin Pietroo

Projektowanie obiektowe Wzorce projektowe. Wprowadzenie do wzorców projektowych

Projektowanie oprogramowania: wzorce architektoniczne i projektowe

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

Programowanie obiektowe

WZORCE PROJEKTOWE (I) (DESIGN PATTERNS)

Programowanie w języku Java WYKŁAD

Zaawansowane programowanie obiektowe - wykład 5

Projektowanie obiektowe Wzorce projektowe

Wzorce projektowe Michał Węgorek

Wzorce projektowe. dr inż. Marcin Pietroo

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

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

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

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

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

Wzorce projektowe. dr inż. Marcin Pietroo

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

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

Wzorce oprogramowania Gof (cd) zastosowane w modelu obiektowym

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

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

Projektowanie obiektowe Wzorce projektowe. Gang of Four Wzorce rozszerzeń

Diagramy klas. dr Jarosław Skaruz

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

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

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski


Template method (metoda szablonowa)

UML [ Unified Modeling Language ]

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

Projektowanie obiektowe Wzorce projektowe. Gang of Four Strukturalne wzorce projektowe (Wzorce interfejsów)

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

Programowanie obiektowe

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Wzorce projektowe [ wstęp ]

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

Programowanie obiektowe - 1.

Materiały do zajęć VII

TEMAT : KLASY DZIEDZICZENIE

Przykładowa implementacja

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

Aplikacje w środowisku Java

Dokumentacja do API Javy.

PHP 5 język obiektowy

Język programowania. Andrzej Bobyk

Programowanie obiektowe

Wypożyczalnia VIDEO. Technologie obiektowe

Pola i metody statyczne. Klasy zawierające pola i metody statyczne

Programowanie obiektowe

Enkapsulacja, dziedziczenie, polimorfizm

Program szkolenia: Wzorce projektowe w C++

Wykład 8: klasy cz. 4

Podstawy Programowania Obiektowego

Builder (budowniczy) Cel: Przykład:

Programowanie obiektowe

Dziedziczenie. Tomasz Borzyszkowski

Programowanie obiektowe

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

Technologie obiektowe

Modelowanie i Programowanie Obiektowe

C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie C++ - DZIEDZICZENIE.

Instrukcja do pracowni specjalistycznej z przedmiotu. Obiektowe programowanie aplikacji

Języki programowania imperatywnego

Modelowanie. Wykład 1: Wprowadzenie do Modelowania i języka UML. Anna Kulig

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

Programowanie obiektowe

.NET Klasy, obiekty. ciąg dalszy

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

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

Perspektywa obiektowości

Wzorce projektowe. Wstęp

Definiowanie własnych klas

Java Język programowania

Typy klasowe (klasy) 1. Programowanie obiektowe. 2. Założenia paradygmatu obiektowego:

Programowanie obiektowe

Programowanie Zespołowe

Kurs WWW. Paweł Rajba.

Zaawansowane programowanie w języku C++ Funkcje uogólnione - wzorce

Programowanie 2. Język C++. Wykład 3.

Wzorce projektowe i refaktoryzacja

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

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

Język C++ Programowanie obiektowe

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

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

Podstawy programowania III

Klasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np

JAVA W SUPER EXPRESOWEJ PIGUŁCE

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

Transkrypt:

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

Wzorzec Wzorzec opisuje problem, który powtarza się wiele razy oraz podaje istotę jego rozwiązania, w taki sposób, by mógł być wielokrotnie zastosowany

Wzorce w inżynierii oprogramowania - Wzorce architektoniczne poziom integracji komponentów - Wzorce projektowe poziom interakcji między klasami - Wzorce analityczne poziom opisu rzeczywistości - Wzorce implementacyjne poziom języka programowania

Wzorce Dobry wzorzec to nazwana, dobrze rozpoznana para PROBLEM ROZWIĄZANIE, którą można odnieść do nowych kontekstów i której towarzyszą wskazówki na temat stosowania rozwiązania w nowej sytuacji i wynikającuch z tej sytuacji konsekwencji.

Wzorce mają nazwy Nadanie wzorcowi nazwy: - Łatwiej jest zrozumieć i zapamiętać nazwany koncept - Łatwiej jest o nim rozmawiać. Kiedy wzorzec zostanie nazwany i rozpowszechniony, a wszyscy zgodzą się na używanie nadanej mu nazwy, o skomplikowanych ideach projektowych można, dzieki abstrakcji, rozmawiać za pomocą krótkich zdań (lub diagramów).

Rozmowa Cześć Jasiu, myślę że dostęp do podsystemu trwałych danych powinien się odbywać przez Fasadę. Użyjemy też Fabryki abstrakcyjnej i Odzwzorowywacza danych, a w celu leniwego tworzenia obiektów zastosujemy Pełnomocnika.

Wzorce projektowe Ideę nazwanych wzorców projektowych do informatyki wprowadził Kent Beck (twórca programowania ekstremalnego) w połowie lat 80tych. W 1994 ukazał się HIT WYDAWNICZY Wzorce projektowe. Elementy oprogramowania obiektowego wielokrotnego użytku Biblia wzorców projektowych 23 wzorce. Technologie obiektowe HELION 2010

Gang of Four (GoF) Wzorce opisane w książce, to Wzorce bandy czterech

Wzorce projektowe Wzorce kreacyjne: - Abstrakcyjne metody tworzenia obiektów - Uniezależnienie systemu od tworzenia obiektów Wzorce strukturalne - Sposób wiązania obiektów w struktury - Właściwe korzystanie z dziedziczenia i kompozycji Wzorce behawioralne - Algorytmy i przydział odpowiedzialności - Opis przepływu kontroli i interakcji

Wzorce Wzorce kreacyjne: Abstract factory, Builder, Factory Method, Prototype, Singleton Wzorce strukturalne: Adapter, Bridge, Composite, Decorator, Facade, Proxy, Flyweight Wzorce behawioralne: Chain of resposnibilty, Command, Interpreter, Mediator, Iterator, Memento, Observer, State, Strategy, Template Method, Visitor

Singleton - Najprostszy wzorzec - Zapewnienie, że klasa posiada tylko jedną instancję wewnątrz całej aplikacji - Udostępnienie tej instancji w łatwo dostepny i intuicyjny sposób - Obiektowa alternatywa dla zmiennych globalnych

Singleton - Dostęp do instancji klasy Singleton należy uzyskiwać za pośrednictwem publiczne właściwości statyczne Instance. - Jeżeli ta właściwość zostanie użyta wielokrotnie, za każdym razem zwróci referencję do tej samej instancji. - Singleton nie definiuje publicznych konstruktorów i jako taka nie stwarza możliwości tworzenia instancji bez pośdrednictwa właściwości Instance Singleton s1=singleton.instance; Singleton s2=singleton.instance; Assert.AreSame(s1,s2);

Singleton - rozwiązanie Singleton składa się z jednej klasy, która zarządza swoją własną instancją. Instancja klasy jest przechowywana w polu prywatnym, dostęp do niej jest realizowany przez getter (w C# właściwość). Jeżeli pole przechowują instancje klasy ma wartość null, wtedy tworzona jest taka instancja. W przeciwnym razie zwraca instancję. Dzięki temu, niezależnie od tego, który raz wywoływane jest metoda, zawsze zwraca ona utworzona i jedyną instancję klasy.

Singleton - implementacja public class Singleton { private static Singleton theinstance=null; private Singleton() {}; } public static Singleton Instance { get { if(theinstance==null) theinstance=new Singleton(); return theinstance; } }

Singleton - zalety 1. Możliwość stosowania dla dowolnej klasy dowolna klasa może stać się Singletonem 2. Możliwość tworzenia przez dziedziczenia klasy pochodne mogą też być singletonami 3. Leniwe konstruowanie jeśli Singleton nigdy nie jest wykorzystywany, także nigdy nie zostanie utworzony.

Singleton - wady Niezdefiniowany proces destrukcji Niedziedziczność klasa dziedzicząca po klasie singletonowej sama nie jest singletonem. Jeśli chcemy by nim była musimy dodać odpowiednią funkcję i zmienną statyczną. Efektywność każde użycie właściwości Instance, wiąże się z koniecznością wykonania wyrażenia warunkowego Nieprzejrzystość użytkownicy klasy singletonowej muszą wiedzieć z jaką konstrukcją mają do czynienia.

Wzorzec Monostate Dwie instancje tej samej klasy zachowują się zupełnie tak, jakby były jednym obiektem. Niezależnie od tego ile instacji klasy utworzymy, wszystkie one będą się zachowywały jak jeden obiekt. Monostate m1=new Monostate(); Monostate m2=new Monostate(); for(int i=0;i<10;i++) { m1.x=i; Assert.AreEqual(i,m2.X); }

Monostate - implementacja public class Monostate { private static int itsx; } public int X { get {return itsx;} set {istx=value;} }

Monostate - zalety Przejrzystość użytkownicy korzystajć z obiektów klas Monostate jak ze zwykłych obiektów mogą nie wiedzieć że mają do czynienia z taką konstrukcja Dziedziczność klasy potomne także implementują ten wzorzec Polimorfizm metody nie są statyczne `

Template method Stworzenie szkieletu algorytmu w postaci klasy Przesunięcie niektórych operacji do podklas Prosty wzorzec opisujący sposób współpracy pomiędzy nadklasą i jej podklasami. Celem wzorca jest określenie szkieletu algorytmu w nadklasie i określenie jego kroków w podklasach.

Template method Klasa abstrakcyjna posiada metodę TemplateMtehod() definiującą szkielet algorytmu. Metoda ta odwołuje się do innych metod w tej klasie definiujących podstawowe kroki algorytmu. Część z nich to metody wykorzystywane przez wszystkie podklasy, dlatego zdefiniowane są w nadklasie. Niektóre kroki algorytmu, mają różną postać w każdym algorytmie, dlatego na poziomie klasy AbstractClass są one deklarowane jako abstrakcyjne. Ich implementacja jest przesunięta do klas dziedziczących.

Template Method AbstractClass definiuje szkielet algorytmu w postaci metody szkielet odwołuje się do prostych metod abstracyjnych ConcreteClass implementuje proste metody abstrakcyjne pokrywa inne, wybrane metody odziedziczone z AbstractClas

TemplateMethod - przykład

State/Strategy Wzorce State i Strategy mają identyczną strukturę i zbliżone cele Dotyczą one funkcjonalnej zmiany zachowania obiektu w trakcie działania programu. Pozornie obiekt zmienia klasę do której należy. W przypadku wzorca State celem jest zmiana zachowania obiektu w zależoności od stanu w jakim się znajduje. Wzorzec Strategy służy do modelowania algorytmu realizacji pewnej czynności, który może zostać zmieniony w trakcie wykonywania programu.

State Centralnym obiektem jest Context. Jego metody wywoływane przez klientów delegują żądania do skojarzonego z nim relacją kompozycji obiektu typu State, reprezentującego jego stan. Metody obiektu state są polimorficzne wraz ze zmianą obiektu zmienia się funkcjonalność.

Strategia Wzorzec Strategy stosuje podobne rozwiązanie tylko, że na większą skalę. Obiekt Context realizuję pewien algorytm, którego realizacja może zmieniać się w zależności od wyboru algorytmu. Z obiektem tym skojarzony jest obiekt (także za pomoca kompozycji) obiekt algorytmu, którego metody go implementują.

State/Strategy Context - Posiada referencję do obiektu reprezentującego bieżący stan/algorytm State/Strategy - Definiuje interfejs pozwalający hermetyzować zachowanie związane z każdym stanem/strategią Concrete State - Definiuje własne metody implementujące zachowanie specyficzne dla tego stanu/strategii

Strategia - sortowanie