Facebook - konwersja
Pobierz fragment

C++. Projektowanie oprogramowania. Zasady i wzorce projektowe - ebook

Wydawnictwo:
Tłumacz:
Data wydania:
25 lipca 2023
Format ebooka:
PDF
Format PDF
czytaj
na laptopie
czytaj
na tablecie
Format e-booków, który możesz odczytywać na tablecie oraz laptopie. Pliki PDF są odczytywane również przez czytniki i smartfony, jednakze względu na komfort czytania i brak możliwości skalowania czcionki, czytanie plików PDF na tych urządzeniach może być męczące dla oczu. Więcej informacji znajdziesz w dziale Pomoc.
czytaj
na laptopie
Pliki PDF zabezpieczone watermarkiem możesz odczytać na dowolnym laptopie po zainstalowaniu czytnika dokumentów PDF. Najpowszechniejszym programem, który umożliwi odczytanie pliku PDF na laptopie, jest Adobe Reader. W zależności od potrzeb, możesz zainstalować również inny program - e-booki PDF pod względem sposobu odczytywania nie różnią niczym od powszechnie stosowanych dokumentów PDF, które odczytujemy każdego dnia.
Informacje na temat zabezpieczenia e-booka znajdziesz na karcie produktu w "Szczegółach na temat e-booka". Więcej informacji znajdziesz w dziale Pomoc.
czytaj
na tablecie
Aby odczytywać e-booki na swoim tablecie musisz zainstalować specjalną aplikację. W zależności od formatu e-booka oraz systemu operacyjnego, który jest zainstalowany na Twoim urządzeniu może to być np. Bluefire dla EPUBa lub aplikacja Kindle dla formatu MOBI.
Informacje na temat zabezpieczenia e-booka znajdziesz na karcie produktu w "Szczegółach na temat e-booka". Więcej informacji znajdziesz w dziale Pomoc.
Pobierz fragment
89,00

C++. Projektowanie oprogramowania. Zasady i wzorce projektowe - ebook

Większość dobrych książek o C++ koncentruje się na cechach tego języka, niuansach działania czy też szczegółach i specyfice implementacji. Tymczasem o jakości oprogramowania decyduje jego projekt. To właśnie dzięki projektowi można tworzyć oprogramowanie, które będzie łatwe do utrzymania, modyfikowania, rozszerzania i testowania. Problem polega na tym, że projektowanie oprogramowania jest trudnym i wymagającym zadaniem.

Ta książka jest doskonałym uzupełnieniem podręcznej biblioteczki każdego programisty C++. Opisano w niej znaczenie dobrego projektu oprogramowania oraz zasady tworzenia takich projektów. Omówiono szereg przydatnych wzorców projektowych, dzięki którym łatwiej można zrozumieć, jak zarządzać zależnościami i abstrakcjami, zwiększać możliwości modyfikowania i rozszerzania tworzonego kodu oraz stosować nowoczesne wzorce projektowe. Zaprezentowano wzorce wykorzystujące wiele różnych paradygmatów, w tym programowanie: obiektowe, uogólnione oraz funkcyjne. Pokazano też największą zaletę nowoczesnego języka C++: możliwość łączenia różnych paradygmatów oraz tworzenia oprogramowania, które przetrwa dziesięciolecia.

W tej książce między innymi:

  • ocena kodu pod kątem projektowania oprogramowania
  • sposoby realizacji takich celów projektowych jak np. łatwość modyfikowania i rozszerzania kodu
  • zalety i wady różnych koncepcji projektowania
  • przydatność wzorców projektowych w rozwiązywaniu problemów
  • zasady wyboru form wzorców projektowych

Z tej książki nauczyłem się znacznie więcej, niż mógłbym oczekiwać.

Mark Summerfield, właściciel Qtrac Ltd.

Bez dobrego projektu nie będzie dobrej aplikacji!

Spis treści

Wstęp

1. Sztuka projektowania oprogramowania

  • Wytyczna 1.: Znaczenie projektu oprogramowania
    • Cechy to nie projekt oprogramowania
    • Projektowanie oprogramowania: Sztuka zarządzania zależnościami i abstrakcjami
    • Trzy poziomy projektowania oprogramowania
    • Zwracanie uwagi na możliwości
    • Zwracanie uwagi na projekt oprogramowania oraz zasady projektowe
  • Wytyczna 2.: Projektuj pod kątem zmian
    • Separacja zagadnień
    • Przykład sztucznych powiązań
    • Powiązania logiczne oraz fizyczne
    • Nie powtarzaj się
    • Unikaj zbyt wczesnego separowania zagadnień
  • Wytyczna 3.: Separuj interfejsy w celu unikania sztucznych powiązań
    • Segregacja interfejsów w celu separacji zagadnień
    • Minimalizacja wymagań określanych przez argumenty szablonów
  • Wytyczna 4.: Projektuj pod kątem łatwości testowania
    • Jak testować prywatną funkcję składową?
    • Prawdziwe rozwiązanie: Separacja zagadnień
  • Wytyczna 5.: Projektuj pod kątem rozszerzania
    • Zasada otwarte-zamknięte
    • Rozszerzalność podczas kompilacji
    • Unikanie przedwczesnego projektowania pod kątem rozszerzania

2. Sztuka tworzenia abstrakcji

  • Wytyczna 6.: Trzymaj się oczekiwanych zachowań abstrakcji
    • Przykład naruszania oczekiwań
    • Zasada podstawienia Liskov
    • Krytyka zasady podstawienia Liskov
    • Potrzeba dobrych i sensownych abstrakcji
  • Wytyczna 7.: Zrozum podobieństwa pomiędzy klasami bazowymi a konceptami
  • Wytyczna 8.: Zrozum semantyczne wymagania zbiorów przeciążeń
    • Potęga funkcji zewnętrznych: mechanizm abstrakcji czasu kompilacji
    • Problem funkcji zewnętrznych: Oczekiwane zachowanie
  • Wytyczna 9.: Zwracaj uwagę na własność abstrakcji
    • Zasada odwrócenia zależności
    • Odwrócenie zależności w architekturze opartej na wtyczkach
    • Odwrócenie zależności z wykorzystaniem szablonów
    • Odwrócenie zależności z wykorzystaniem zbioru przeciążeń
    • Zasada odwrócenia zależności kontra zasada jednej odpowiedzialności
  • Wytyczna 10.: Rozważ stworzenie dokumentacji architektury

3. Przeznaczenie wzorców projektowych

  • Wytyczna 11.: Zrozum przeznaczenie wzorców projektowych
    • Wzorzec projektowy ma nazwę
    • Wzorce projektowe mają swoje przeznaczenie
    • Wzorce projektowe wprowadzają abstrakcję
    • Przydatność wzorca potwierdzono w praktyce
  • Wytyczna 12.: Strzeż się błędnych przekonań dotyczących wzorców projektowych
    • Wzorce projektowe nie są celem
    • We wzorcach projektowych nie chodzi o szczegóły implementacyjne
    • Wzorce projektowe nie ograniczają się do języków programowania zorientowanych obiektowo ani do polimorfizmu dynamicznego
  • Wytyczna 13.: Wzorce projektowe są wszędzie
  • Wytyczna 14.: Używaj nazwy wzorca, by wyrazić jego przeznaczenie

4. Wzorzec projektowy Odwiedzający

  • Wytyczna 15.: Projektuj pod kątem dodawania typów i operacji
    • Rozwiązanie proceduralne
    • Rozwiązanie obiektowe
    • Uważaj na decyzję projektową związaną z polimorfizmem dynamicznym
  • Wytyczna 16.: Stosowanie wzorca Odwiedzający do rozszerzania operacji
    • Analiza problemów z projektem
    • Prezentacja wzorca projektowego Odwiedzający
    • Analiza wad wzorca projektowego Odwiedzający
  • Wytyczna 17.: Rozważ użycie std::variant do implementacji wzorca Odwiedzający
    • Wprowadzenie do std::variant
    • Refaktoryzacja rysowania figur z użyciem nieintruzyjnego rozwiązania opartego na wartościach
    • Pomiary wydajności działania
    • Analiza wad rozwiązania korzystającego z std::variant
  • Wytyczna 18.: Uważaj na wydajność acyklicznego odwiedzającego

5. Wzorce projektowe Strategia i Polecenie

  • Wytyczna 19.: Stosuj wzorzec Strategia do określania sposobu wykonywania operacji
    • Analiza wad projektu
    • Przedstawienie wzorca projektowego Strategia
    • Analiza mankamentów naiwnej implementacji Strategii
    • Porównanie wzorców Odwiedzający i Strategia
    • Analiza mankamentów wzorca projektowego Strategia
    • Projekt oparty na strategii
  • Wytyczna 20.: Przedkładaj kompozycję nad dziedziczenie
  • Wytyczna 21.: Stosuj wzorzec Polecenie, by izolować operacje do wykonania
    • Prezentacja wzorca projektowego Polecenie
    • Porównanie wzorców projektowych Polecenie i Strategia
    • Analiza mankamentów wzorca projektowego Polecenie
  • Wytyczna 22.: Przedkładaj semantykę wartości nad semantykę referencji
    • Wady stylu z książki Bandy Czworga: semantyka referencji
    • Semantyka referencji: drugi przykład
    • Filozofia nowoczesnego C++: semantyka wartości
    • Semantyka wartości: drugi przykład
    • W implementacjach wzorców projektowych preferuj stosowanie semantyki wartości
  • Wytyczna 23.: Preferuj implementację wzorca Strategia korzystającą z wartości
    • Przedstawienie std::function
    • Refaktoryzacja rysowania figur
    • Pomiary wydajności działania
    • Analiza mankamentów rozwiązania korzystającego z std::function

6. Wzorce projektowe: Adapter, Obserwator i CRTP

  • Wytyczna 24.: Stosuj adaptery, by standaryzować interfejsy
    • Prezentacja wzorca projektowego Adapter
    • Adaptery obiektowe a adaptery klasowe
    • Przykłady z Biblioteki standardowej
    • Porównanie wzorców Adapter i Strategia
    • Adaptery funkcyjne
    • Analiza mankamentów wzorca projektowego Adapter
  • Wytyczna 25.: Stosuj wzorzec Obserwator jako abstrakcyjny mechanizm powiadamiania
    • Prezentacja wzorca projektowego Obserwator
    • Klasyczna implementacja wzorca projektowego Obserwator
    • Implementacja obserwatora oparta na semantyce wartości
    • Analiza mankamentów wzorca projektowego Obserwator
  • Wytyczna 26.: Stosuj wzorzec CRTP, by wprowadzać statyczne kategorie typów
    • Przeznaczenie wzorca CRTP
    • Prezentacja wzorca projektowego CRTP
    • Analiza mankamentów wzorca projektowego CRTP
    • Przyszłość wzorca projektowego CRTP: Porównanie wzorca CRTP i konceptów C++20
  • Wytyczna 27.: Stosuj wzorzec CRTP do tworzenia statycznych klas domieszek
    • Chęć posiadania silnego typu
    • Stosowanie CRTP jako wzorca implementacyjnego

7. Wzorce projektowe Most, Prototyp oraz Polimorfizm zewnętrzny

  • Wytyczna 28.: Tworzenie mostów w celu wyeliminowania fizycznych zależności
    • Przykład motywujący
    • Opis wzorca projektowego Most
    • Idiom Pimpl
    • Porównanie wzorców projektowych Most i Strategia
    • Analiza mankamentów wzorca projektowego Most
  • Wytyczna 29.: Bądź świadom zysków i strat wydajności we wzorcu projektowym Most
    • Wpływ użycia wzorca projektowego Most na wydajność działania
    • Poprawianie wydajności przez zastosowanie wzorca projektowego Most
  • Wytyczna 30.: Stosuj wzorzec Prototyp, by wyodrębnić operacje kopiowania
    • Przykład zootechniczny: Kopiowanie zwierząt
    • Prezentacja wzorca projektowego Prototyp
    • Porównanie wzorca projektowego Prototyp i szablonu klasy std::variant
    • Analiza mankamentów wzorca projektowego Prototyp
  • Wytyczna 31.: Stosuj wzorzec Polimorfizm zewnętrzny, by tworzyć nieintruzyjny polimorfizm czasu wykonywania
    • Prezentacja wzorca projektowego Polimorfizm zewnętrzny
    • Rysowanie figur raz jeszcze
    • Porównanie wzorców projektowych Polimorfizm zewnętrzny i Adapter
    • Analiza mankamentów wzorca projektowego Polimorfizm zewnętrzny

8. Wzorzec projektowy Ukrywanie typu

  • Wytyczna 32.: Rozważ zastąpienie hierarchii dziedziczenia wzorcem projektowym Ukrywanie typu
    • Historia ukrywania typu
    • Przedstawienie wzorca projektowego Ukrywanie typu
    • Implementacja wzorca projektowego Ukrywanie typu mająca prawa własności
    • Analiza mankamentów wzorca projektowego Ukrywanie typu
    • Porównanie dwóch rodzajów opakowań stosowanych we wzorcu Ukrywanie typu
    • Segregacja interfejsów w opakowaniach wzorca projektowego Ukrywanie typu
    • Wyniki pomiarów wydajności
    • Kilka słów o terminologii
  • Wytyczna 33.: Miej świadomość optymalizacyjnego potencjału wzorca projektowego Ukrywanie typu
    • Optymalizacja małego bufora
    • Ręczna implementacja przydzielania funkcji
  • Wytyczna 34.: Pamiętaj o kosztach konfiguracji związanych z rodzajem opakowań używanych we wzorcu Ukrywanie typu
    • Koszty konfiguracji związane z rodzajem opakowań stosowanych we wzorcu Ukrywanie typu
    • Prosta implementacja wzorca projektowego Ukrywanie typu niemająca praw własności
    • Pozbawiona praw własności implementacja Ukrywania typu o większych możliwościach

9. Wzorzec projektowy Dekorator

  • Wytyczna 35.: Stosuj dekoratory, aby dodawać dostosowania hierarchicznie
    • Problem projektowy kolegów z firmy
    • Prezentacja wzorca projektowego Dekorator
    • Klasyczna implementacja wzorca projektowego Dekorator
    • Drugi przykład dekoratora
    • Porównanie wzorców projektowych Dekorator, Adapter i Strategia
    • Analiza mankamentów wzorca projektowego Dekorator
  • Wytyczna 36.: Zrozum kompromis pomiędzy abstrakcją czasu wykonywania a abstrakcją czasu kompilacji
    • Dekorator czasu kompilacji oparty na wartościach
    • Wartościowy dekorator czasu wykonania

10. Wzorzec projektowy Singleton

  • Wytyczna 37.: Traktuj Singleton jako wzorzec implementacyjny, a nie wzorzec projektowy
    • Przedstawienie wzorca Singleton
    • Singleton nie zarządza zależnościami ani ich nie redukuje
  • Wytyczna 38.: Projektuj singletony pod kątem zmian i możliwości testowania
    • Singletony reprezentują globalny stan
    • Singletony utrudniają wprowadzanie zmian i możliwości testowania
    • Odwrócenie zależności od singletonu
    • Stosowanie wzorca projektowego Strategia
    • Podążając w kierunku wstrzykiwania zależności

11. Ostatnia wytyczna

  • Wytyczna 39.: Kontynuuj poznawanie wzorców projektowych
Kategoria: Programowanie
Zabezpieczenie: Watermark
Watermark
Watermarkowanie polega na znakowaniu plików wewnątrz treści, dzięki czemu możliwe jest rozpoznanie unikatowej licencji transakcyjnej Użytkownika. E-książki zabezpieczone watermarkiem można odczytywać na wszystkich urządzeniach odtwarzających wybrany format (czytniki, tablety, smartfony). Nie ma również ograniczeń liczby licencji oraz istnieje możliwość swobodnego przenoszenia plików między urządzeniami. Pliki z watermarkiem są kompatybilne z popularnymi programami do odczytywania ebooków, jak np. Calibre oraz aplikacjami na urządzenia mobilne na takie platformy jak iOS oraz Android.
ISBN: 978-83-8322-721-4
Rozmiar pliku: 4,8 MB

BESTSELLERY

Kategorie: