W książce opisano sposoby poprawnego rozwiązywania typowych problemów, pojawiających się przy tworzeniu oprogramowania. Sposoby te, nazywane wzorcami projektowymi, rozszerzają zestaw akcesoriów dostarczanych przez język programowania, którymi możemy się posługiwać.
Znajomość wzorców nie oznacza umiejętności programowania, ale dobry programista powinien mieć świadomość ich istnienia, aby unikać ponownego odkrywania znanych rozwiązań. Wiedza o przedstawionych technikach pozwala na lepszą komunikację w zespole, ponieważ można porozumiewać się na wyższym poziomie abstrakcji.
Książka jest przeznaczona dla osób, które miały wcześniej styczność z programowaniem i językiem C++. Zawiera ona opis mechanizmów dostarczanych przez ten język, ale bazują one na znajomości podstawowych pojęć. Rozdział pierwszy można traktować jako przypomnienie i uzupełnienie wiadomości o C++.
Rozdziały:
1. Mechanizmy języka C++ 19
1.1. Struktura programu – jednostki translacji 21
1.2. System typów 28
1.3. Deklarowanie i definiowanie funkcji 37
1.4. Zarządzanie nazwami 47
1.5. Zarządzanie obiektami 54
1.6. Zarządzanie operacjami 62
1.7. Klasy autonomiczne 68
1.8. Dziedziczenie i polimorfizm 98
1.9. Szablony 113
1.10.Obsługa sytuacji wyjątkowych 132
1.11.Podsumowanie 144
2. Techniki stosowane w programowaniu generycznym 145
2.1. Klasy cech (trejty) 145
2.2. Klasy wytycznych 154
2.3. Metaprogramowanie 160
2.4. Statyczne asercje i klasy wymagań 167
2.5. Podsumowanie 171
2.6. Ćwiczenia 172
3. Uchwyty do obiektów 175
3.1. Sprytne wskaźniki 176
3.2. Opóźnione (leniwe) tworzenie i kopiowanie obiektów 191
3.3. Iteratory 200
3.4. Funktory 203
3.5. Adaptery 209
3.6. Podsumowanie 212
3.7. Ćwiczenia 212
4. Tworzenie obiektów 217
4.1. Fabryka obiektów 218
4.2. Prototyp 222
4.3. Singleton 223
4.4. Fabryka abstrakcyjna 225
4.5. Zarządzanie stertą 228
4.6. Mechanizmy refleksji 231
4.7. Podsumowanie 233
4.8. Ćwiczenia 233
5. Współpraca pomiędzy obiektami 235
5.1. Polimorfizm 235
5.1.1. Interfejs bez funkcji wirtualnych 236
5.2. Odwiedzający (wizytator) 239
5.3. Wielometody 245
5.4. Komenda 252
5.5. Obserwator 256
5.6. Stałość fizyczna i logiczna 262
5.7. Podsumowanie 266
5.8. Ćwiczenia 266
6. Złożone struktury obiektów 269
6.1. Kompozyt 269
6.2. Dekorator 271
6.3. Rekordy 274
6.4. Kolekcje jednowymiarowe 278
6.5. Tablice wielowymiarowe 295
6.6. Grafy, boost::graph 296
6.7. Podsumowanie 304
6.8. Ćwiczenia 304
7. Dostęp do mechanizmów systemu operacyjnego 309
7.1. Obsługa czasu i daty 309
7.2. Wątki 311
7.3. Strumienie 329
7.4. Asynchroniczna obsługa wejścia i wyjścia 341
7.5. Podsumowanie 348
7.6. Ćwiczenia 348
8. Przetwarzanie tekstu 353
8.1. Reprezentacja znaków i napisów, lokalizm 353
8.2. Algorytmy dla napisów 358
8.3. Wyrażenia regularne i gramatyki bezkontekstowe 359
8.4. Podsumowanie 370
9. Łączenie C++ z innymi językami programowania 371
9.1. Łączenie C i C++ 372
9.2. Biblioteki ładowane dynamicznie 374
9.3. C++ i Python 378
9.4. C++ i Java 381
9.5. Podsumowanie 382
Odpowiedzi do ćwiczeń 383
Język C++ Mechanizmy wzorce biblioteki
|