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

Podobne dokumenty
Zaawansowane programowanie w C++ (PCP)

Wzorce projektowe. dr inż. Marcin Pietroo

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

Wzorce projektowe. Wstęp

Wzorce projektowe ArrayList. Aplikacja i zdarzenia. Paweł Chodkiewicz

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

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

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

Przykładowa implementacja

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 Michał Węgorek

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

Programowanie w C++ Wykład 13. Katarzyna Grzelak. 4 czerwca K.Grzelak (Wykład 13) Programowanie w C++ 1 / 26

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


Wprowadzenie do programowania aplikacji mobilnych

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

Technologia Programowania 2016/2017 Wykład 4

TEMAT : KLASY DZIEDZICZENIE

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

Builder (budowniczy) Cel: Przykład:

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

ASP.NET Wprowadzenie. provided by Przemysław Bykowski

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

Zaawansowane programowanie w języku C++ Programowanie obiektowe

class Student Deklaracja klasy Osoba: Deklaracja klasy Student:

TEMAT : KLASY POLIMORFIZM

Programowanie obiektowe

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

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

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

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

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

PHP 5 język obiektowy

DYNAMICZNE PRZYDZIELANIE PAMIECI

Podstawy programowania obiektowego

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 20 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 32

Pojęcie wzorca projektowego Sposób opisu wzorców projektowych Notacja UML podstawowe diagramy zapisu wzorców projektowych

METODY PROGRAMOWANIA

Programowanie obiektowe, wykład nr 6. Klasy i obiekty

Szablony funkcji i szablony klas

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

Enkapsulacja, dziedziczenie, polimorfizm

Zaawansowane programowanie obiektowe - wykład 5

Wyjątki (exceptions)

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Aplikacje RMI

Podstawy Programowania Obiektowego

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Programowanie obiektowe

Programowanie obiektowe

Laboratorium 8 Diagramy aktywności

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

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

PARADYGMATY PROGRAMOWANIA Wykład 3

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

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

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

Klasy i obiekty cz II

Programowanie obiektowe i zdarzeniowe

Projektowanie obiektowe Wzorce projektowe. Wprowadzenie do wzorców projektowych

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

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 28 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27

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

Metody Metody, parametry, zwracanie wartości

Wprowadzenie do szablonów szablony funkcji

WZORCE PROJEKTOWE (I) (DESIGN PATTERNS)

PARADYGMATY PROGRAMOWANIA Wykład 4

Zadania z podstaw programowania obiektowego

Klasy abstrakcyjne i interfejsy

Programowanie w C++ Wykład 9. Katarzyna Grzelak. 14 maja K.Grzelak (Wykład 9) Programowanie w C++ 1 / 30

Wprowadzenie do szablonów szablony funkcji

Programowanie w C++ Wykład 11. Katarzyna Grzelak. 13 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 30

Wzorce projektowe i refaktoryzacja

C++ Przeładowanie operatorów i wzorce w klasach

Język C++ wykład VIII

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

Programowanie obiektowe

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

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

Laboratorium 1. Programowanie II - Kierunek Informatyka. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej

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

Paradygmaty programowania. Paradygmaty programowania

Programowanie obiektowe i zdarzeniowe

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 15 kwietnia K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33

Język C++ wykład VII. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VII. dr Jarosław Mederski. Spis.

Programowanie obiektowe

Konstruktor kopiujacy

Programowanie obiektowe

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Wzorce projektowe. dr inż. Marcin Pietroo

Wykład 12. Programowanie serwera MS SQL 2005 w C#

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

Techniki programowania INP001002Wl rok akademicki 2017/18 semestr letni. Wykład 4. Karol Tarnowski A-1 p.

Programowanie w języku C++

Transkrypt:

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 projektowego Cztery podstawowe elementy wzorca opisowa nazwa rozwiązywany problem rozwiązanie problemu konsekwencje zastosowania wzorca Wzorzec opisuje zbiór klas i relacji między nimi, które będą razem tworzyć rozwiązanie problemu 2

Rozpoznawanie wzorców Duża część procesu programowania, od projektu do implementacji, opiera się na zastosowaniu pewnych podstawowych, dobrze poznanych wzorców do danej sytuacji Możliwość szybkiego znalezienia tych wzorców w projekcie odróżnia nowicjusza od eksperta Studiowanie zorganizowanej biblioteki wzorców może, teoretycznie, przyspieszyć proces uzyskiwania dobrego wyniku przez nowicjusza 3

Wzorce projektowe Książka "Design Patterns" - Gamma, Helm, Johnson i Vlissides "Gang of Four" (GOF) Book Definiuje Creational Patterns (5) Structural Patterns (7) Behavioral Patterns (11) Wiele innych książek na ten temat 4

Definicja wzorca w GOF Book Nazwa - nazwa wzorca Cel Co robi wzorzec? Jakie jest jego uzasadnienie i cel? Jakim konkretny problemem lub zagadnieniem się zajmuje? Motywacja Scenariusz ilustrujący jak wzorzec rozwiązuje problem projektowy Stosowalność W jakich sytuacjach wzorzec może być zastosowany? Jakie są przykłady kiepskiego projektu, które wzorzec może poprawić? Jak rozpoznać takie sytuacje? Struktura Diagram UML dla składowych wzorca Uczestnicy Klasy/obiekty we wzorcu i ich zadania Współpraca Jak uczestnicy współpracują ze sobą Konsekwencje Jak wzorzec rozwiązuje problem? Jakie są kompromisy i rezultaty zastosowania wzorca? Jakie aspekty struktury systemu mogą być zmieniane niezależnie? Implementacja O jakich pułapkach, wskazówkach i technikach powinien wiedzieć programista? Czy występują jakieś zależności od języka programowania? Przykładowy kod Znane zastosowania Przykłady użycia Podobne wzorce Inne blisko spokrewnione wzorce 5

Wzorce w GOF Book 6

Visitor Pattern Przejście przez wszystkie elementy z warunkowym zakończeniem Go to first list element. If test is satisfied, Quit. While not at end of the list: Step to next list element. If test is satisfied, Quit. Określa podstawowy wzorzec przeszukiwania listy Nie ma znaczenia, czy lista jest tablicą, listą z dowiązaniami czy czymś innym Nie podaje szczegółów warunku zakończenia Nie podaje, co się dzieje później 7

Visitor - przykład class calculate { public: static int total; void operator()(string v) { total += v.length(); } int getsum() const { return total; } }; int calculate::total = 0; int main() { list<string> alist; calculate fobj; string value; cout << Enter strings, press ^D when done << endl; cin >> value; while (cin) { alist.push_back(value); cin >> value; } for_each(alist.begin(), alist.end(), fobj); cout << fobj.getsum() << endl; } 8

Client-Server Problem: dostarczanie usług dla wielu luźno połączonych klientów Server Client Connection 9

Elementy i zadania Klient generuje żądanie, które jest przesyłane do serwera, który z kolei generuje odpowiedź Połączenie przenosi pytania i odpowiedzi między klientem i serwerem Klient i serwer współpracują z połączeniem, nie bezpośrednio ze sobą Server Client Connection 10

Konsekwencje Klient i serwer są niezależne od implementacji, z wyjątkiem typów przekazywanych komunikatów Łatwo uzyskać model obsługi "wiele do jednego" Awaria serwera może spowodować zawieszenie lub awarię klienta Server Client Connection 11

Elastyczność Server Natura usług żądanych i dostarczanych nie ma znaczenia dla wzorca Natura połączenia (pipe, socket, bufor) nie ma znaczenia dla wzorca To są ważne zagadnienia, ale są rozwiązywane przy zastosowaniu wzorca do rozwiązania specyficznego problemu, w którym można zastosować wzorzec Client Connection 12

Factory Method Pattern Cel: zdefiniowanie interfejsu do tworzenia obiektów nieznanego typu Przykład Program z poleceniem "New" w menu File Kod standardowy dla wszystkich aplikacji Konkretny typ dokumentu zależy od aplikacji Word - nowy dokument tekstowy Excel - nowy arkusz kalkulacyjny etc. Jak wyrazić zachowanie "New", jeżeli nie wiemy, jaki nowy obiekt stworzyć? Rozwiązanie: Factory Method 13

Factory Method Uczestnicy Product (tutaj: dokument) ConcreteProduct (WordDocument lub SpreadsheetDocument) Creator (aplikacja) klasa abstrakcyjna, która ma metodę Factory virtual Product* Create()=0 ConcreteCreator (np. Word) zastępuje metodę Factory i tworzy konkretny typ dokumentu virtual Product* Create() { return new WordDocument(); } 14

Singleton Pattern Cel: Zapewnić, że istnieje tylko pojedynczy obiekt danej klasy i sposób do odwołania się do tego obiektu Realizowane przez definiowanie chronionego lub prywatnego konstruktora Przykład implementacji class Singleton { protected: Singleton() { /* do whatever might be needed here */ } private: static Singleton* theinstance; public: static Singleton* Instance() { if (theinstance == NULL) { theinstance = new Singleton(); } return theinstance; } }; Singleton* Singleton::theInstance = NULL; 15