Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00378 005746 11249517 na godz. na dobę w sumie
Wzorce projektowe. Leksykon kieszonkowy - ebook/pdf
Wzorce projektowe. Leksykon kieszonkowy - ebook/pdf
Autor: Liczba stron: 128
Wydawca: Helion Język publikacji: polski
ISBN: 978-83-283-3999-6 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> programowanie >> c++ - programowanie
Porównaj ceny (książka, ebook (-20%), audiobook).

Odkryj wzorce projektowe i sposoby ich stosowania!

Gdy stajesz przed nowym problemem programistycznym, nierzadko łamiesz sobie głowę nad właściwym rozwiązaniem. Całymi godzinami starasz się wybrać najlepszą drogę. Zupełnie niepotrzebnie, bo ktoś niemal na pewno zrobił to już wcześniej, przetestował swoje rozwiązanie i wyeliminował ewentualne błędy, a odkryty przez niego sposób stał się obowiązującym wzorcem projektowym, wykorzystywanym z powodzeniem przez rzesze programistów.

Jeśli chcesz korzystać ze sprawdzonych wzorców, sięgnij po ten leksykon kieszonkowy. W telegraficznym skrócie prezentuje on najlepsze i najczęściej używane wzorce projektowe, sposoby ich implementacji i przykłady stosowania, a jeśli to Ci nie wystarczy, możesz też zaznajomić się z praktyczną realizacją tych wzorców w językach C++ i C#. Niezależnie od tego, czy temat jest dla Ciebie nowy, czy chcesz tylko uporządkować swoją wiedzę, trafiłeś na odpowiednią książkę!

Nie wyważaj otwartych drzwi — sięgnij po odpowiedni wzorzec!

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji. Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli. Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce. Redaktor prowadzący: Małgorzata Kulik Projekt okładki: Studio Gravite / Olsztyn Obarek, Pokoński, Pazdrijowski, Zaprucki Grafika na okładce została wykorzystana za zgodą Shutterstock.com Wydawnictwo HELION ul. Kościuszki 1c, 44-100 GLIWICE tel. 32 231 22 19, 32 230 98 63 e-mail: helion@helion.pl WWW: http://helion.pl (księgarnia internetowa, katalog książek) Drogi Czytelniku! Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/wzoplk Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję. ISBN: 978-83-283-3880-7 Copyright © Helion 2017 Printed in Poland. • Kup książkę • Poleć książkę • Oceń książkę • Księgarnia internetowa • Lubię to! » Nasza społeczność Wstęp Wprowadzenie Relacje pomiędzy wzorcami Wzorce konstrukcyjne (kreacyjne) Budowniczy Fabryka abstrakcyjna Metoda wytwórcza (metoda fabrykująca) Prototyp Singleton Wzorce strukturalne Adapter (wrapper) Dekorator Fasada Kompozyt Most Pełnomocnik (proxy, substytut) Pyłek Wzorce operacyjne (czynnościowe) Interpreter Iterator (kursor) Łańcuch zobowiązań Mediator Metoda szablonowa Obserwator Odwiedzający (wizytator) Pamiątka (znacznik) Polecenie Stan Strategia (polityka) Spis treści 7 9 10 11 13 20 30 35 40 43 45 48 52 55 59 63 66 73 75 82 87 92 98 101 106 112 117 121 125 5 Poleć książkęKup książkę 6  Spis treści Poleć książkęKup książkę Wzorce operacyjne (czynnościowe) INTERPRETER ITERATOR (KURSOR) ŁAŃCUCH ZOBOWIĄZAŃ MEDIATOR METODA SZABLONOWA OBSERWATOR ODWIEDZAJĄCY (WIZYTATOR) PAMIĄTKA (ZNACZNIK) POLECENIE STAN STRATEGIA (POLITYKA) Wzorce operacyjne (czynnościowe) opisują zachowanie obiektów, ko- munikację pomiędzy nimi i ich odpowiedzialność. Poleć książkęKup książkę Poleć książkęKup książkę Interpreter Przeznaczenie Jego zadaniem jest określenie opisu gramatyki języka oraz stworzenie interpretera, który będzie wykorzystywał ten opis do interpretowania zdań z tego języka. Rysunek 14. Diagram UML — interpreter Implementacja 1. Jeden z obiektów odpowiedzialny jest za przetrzymywanie danych do interpretacji. 2. Tworzymy abstrakcję, która interpretuje polecenia. 3. Dla poszczególnych przypadków tworzymy konkretne obiekty interpretujące dane i zgodne z naszą abstrakcją. 4. Abstrakcja wraz z obiektami konkretnych implementacji tworzy wzorzec metody szablonowej. Przykłady zastosowania  interpretacja języka. Przykładowy kod w C++ using namespace std; class Tysiace; class Setki; class Dziesiatki; class Jednosci; class InterpreterLiczbRzymskich { Interpreter  75 Poleć książkęKup książkę public: InterpreterLiczbRzymskich(); explicit InterpreterLiczbRzymskich(int) {} int interpretuj(string); virtual void interpretuj(string wejscie, int wynik) { int index; index = 0; string doPorownania = wejscie.substr(0, 2); if (doPorownania == dziewiec()) { wynik += 9 * mnoznik(); index += 2; } else if (doPorownania == cztery()) { wynik += 4 * mnoznik(); index += 2; } else { if (wejscie[0] == piec()) { wynik += 5 * mnoznik(); index = 1; } else { index = 0; } for (int end = index + 3; index end; index++) { if (wejscie[index] == jeden()) { wynik += 1 * mnoznik(); } else { break; } } } int length = wejscie.length() - index; wejscie = wejscie.substr(index, length); } virtual ~InterpreterLiczbRzymskich(){} protected: virtual char jeden() { return 0; } virtual string cztery() { return nullptr; } 76  Wzorce projektowe. Leksykon kieszonkowy Poleć książkęKup książkę virtual char piec() { return 0; } virtual string dziewiec() { return nullptr; } virtual int mnoznik() { return 0; } private: InterpreterLiczbRzymskich *tysiace; InterpreterLiczbRzymskich *setki; InterpreterLiczbRzymskich *dziesiatki; InterpreterLiczbRzymskich *jednosci; }; class Tysiace : public InterpreterLiczbRzymskich { public: explicit Tysiace(int) : InterpreterLiczbRzymskich(1) {} protected: char jeden() override { return M ; } string cztery() override { return ; } char piec() override { return \0 ; } string dziewiec() override { return ; } int mnoznik() override { return 1000; } }; class Setki : public InterpreterLiczbRzymskich { public: explicit Setki(int) : InterpreterLiczbRzymskich(1) {} protected: char jeden() override Interpreter  77 Poleć książkęKup książkę { return C ; } string cztery() override { return CD ; } char piec() override { return D ; } string dziewiec() override { return CM ; } int mnoznik() override { return 100; } }; class Dziesiatki : public InterpreterLiczbRzymskich { public: explicit Dziesiatki(int) : InterpreterLiczbRzymskich(1) {} protected: char jeden() override { return X ; } string cztery() override { return XL ; } char piec() override { return L ; } string dziewiec() override { return XC ; } int mnoznik() override { return 10; } }; class Jednosci : public InterpreterLiczbRzymskich { public: Jednosci(int) : InterpreterLiczbRzymskich(1) {} protected: char jeden() override { return I ; 78  Wzorce projektowe. Leksykon kieszonkowy Poleć książkęKup książkę } string cztery() override { return IV ; } char piec() override { return V ; } string dziewiec() override { return IX ; } int mnoznik() override { return 1; } }; InterpreterLiczbRzymskich::InterpreterLiczbRzymskich() { tysiace = new Tysiace(1); setki = new Setki(1); dziesiatki = new Dziesiatki(1); jednosci = new Jednosci(1); } int InterpreterLiczbRzymskich::interpretuj(string liczba) { if (liczba.empty()) { return 0; } int total; total = 0; tysiace- interpretuj(liczba, total); setki- interpretuj(liczba, total); dziesiatki- interpretuj(liczba, total); jednosci- interpretuj(liczba, total); return total; } int main() { InterpreterLiczbRzymskich interpreter; string liczba = MMCXLVI ; // przykładowa liczba rzymska cout Odpowiednik dziesiętny liczba to: interpreter.interpretuj(liczba); system( pause ); } Interpreter  79 Poleć książkęKup książkę Przykładowy kod w C# // Aplikacja rozpoznająca liczby rzymskie. class Kontekst { public Kontekst(string input) { Wejscie = input; } public string Wejscie { get; set; } public int Wyjscie { get; set; } } abstract class Wyrazenie { public void Interpretuj(Kontekst kontekst) { if (kontekst.Wejscie.Length == 0) return; if (kontekst.Wejscie.StartsWith(Dziewiec())) { kontekst.Wyjscie += (9 * Mnoznik()); kontekst.Wejscie = kontekst.Wejscie.Substring(2); } else if (kontekst.Wejscie.StartsWith(Cztery())) { kontekst.Wyjscie += (4 * Mnoznik()); kontekst.Wejscie = kontekst.Wejscie.Substring(2); } else if (kontekst.Wejscie.StartsWith(Piec())) { kontekst.Wyjscie += (5 * Mnoznik()); kontekst.Wejscie = kontekst.Wejscie.Substring(1); } while (kontekst.Wejscie.StartsWith(Jeden())) { kontekst.Wyjscie += (1 * Mnoznik()); kontekst.Wejscie = kontekst.Wejscie.Substring(1); } } protected abstract string Jeden(); protected abstract string Cztery(); protected abstract string Piec(); protected abstract string Dziewiec(); protected abstract int Mnoznik(); } // Wyrażenia terminalne: class Tysiace : Wyrazenie { 80  Wzorce projektowe. Leksykon kieszonkowy Poleć książkęKup książkę protected override string Jeden() { return M ; } protected override string Cztery() { return ; } protected override string Piec() { return ; } protected override string Dziewiec() { return ; } protected override int Mnoznik() { return 1000; } } class Setki : Wyrazenie { protected override string Jeden() { return C ; } protected override string Cztery() { return CD ; } protected override string Piec() { return D ; } protected override string Dziewiec() { return CM ; } protected override int Mnoznik() { return 100; } } class Dziesiatki : Wyrazenie { protected override string Jeden() { return X ; } protected override string Cztery() { return XL ; } protected override string Piec() { return L ; } protected override string Dziewiec() { return XC ; } protected override int Mnoznik() { return 10; } } class Jednosci : Wyrazenie { protected override string Jeden() { return I ; } protected override string Cztery() { return IV ; } protected override string Piec() { return V ; } protected override string Dziewiec() { return IX ; } protected override int Mnoznik() { return 1; } } static class Program { static void Main() { const string rzymskie = MMCXLVI ; var kontekst = new Kontekst(rzymskie); // Budujemy drzewo, które będzie parsowane: var drzewo = new List Wyrazenie { new Tysiace(), new Setki(), new Dziesiatki(), new Jednosci() }; // Interpretuj foreach (var wyrazenie in drzewo) { wyrazenie.Interpretuj(kontekst); } Console.WriteLine($ {rzymskie} = {kontekst.Wyjscie} ); Console.ReadKey(); } } Interpreter  81 Poleć książkęKup książkę Poleć książkęKup książkę
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Wzorce projektowe. Leksykon kieszonkowy
Autor:

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: