Programowanie w języku C++

Zakres szkolenia

Szkolenie przeznaczone dla osób chcących nauczyć się profesjonalnego programowania w języku C++. W trakcie szkolenia omawiane są podstawowe techniki programowania w języku C++ - tworzenie klas, dziedziczenie i polimorfizm, bezpieczne zarządzanie pamięcią dla obiektów (smart pointers), obsługa wyjątków. Szkolenie to polecane jest także dla programistów języka C, którzy chcą nauczyć się poprawnego programowania obiektowego w C++. Koncentrujemy się na nauce nowego standardu C++11/14.


Plan szkolenia

Podstawy programowania w języku C++

  • Struktura programu w języku C++
  • Kompilacja oraz łączenie programów
  • Preprocesor
  • Typy danych, operatory i instrukcje sterujące
  • Deklaracje zmiennych oraz stałych, zasięg zmiennych
  • Automatyczna dedukcja typów – słowo kluczowe auto
  • Konwersje typów
  • Wskaźniki i referencje

Organizacja kodu - funkcje i moduły

  • Definiowanie funkcji
  • Przekazywanie parametrów do funkcji
  • Pliki nagłówkowe i pliki źródłowe
  • Organizacja kodu - bariery #include
  • Przestrzenie nazw

Tablice, kontenery STL i iteratory

  • Tablice w języku C++ - tablice natywne i std::array<T>
  • Iteracja po zakresach – wskaźniki, iteratory, range-based-for
  • Łańcuchy znaków - c-łańcuchy i typ std::string
  • Podstawowe kontenery STL - std::vector<T>, std::list<T>, std::map<K, T>, std::unordered_map<K, T>
  • Programowanie obiektowe

Programowanie obiektowe

  • Typu użytkownika - struktury, klasy
  • Funkcje składowe – metody
  • Konstruktory
  • Zarządzanie zasobami - RAII
    • Destruktory
    • Specjalne funkcje kopiujące
    • specjalne funkcje przenoszące – wstęp do semantyki przenoszenia
  • Przeciążanie operatorów dla klas
  • Zarządzanie pamięcią dla obiektów – smart pointery
    • std::unique_ptr
    • std::shared_ptr

Funktory i lambdy

  • Obiekty wywoływalne w C++11
  • Funktory
  • Lambdy
  • std::function – callbacki w C++11
  • Wykorzystanie lambd w algorytmach standardowych STL

Dziedziczenie i polimorfizm

  • Klasy pochodne
  • Konstruktory i destruktory a dziedziczenie
  • Dostęp do składowych klasy bazowej
  • Przeciążenie i przesłanianie funkcji składowych
  • Dziedziczenie publiczne, chronione i prywatne - widoczność składowych w klasach pochodnych
  • Statyczne i dynamiczne wiązanie funkcji
  • Funkcje czysto wirtualne
  • Destruktory wirtualne
  • Klasy abstrakcyjne
  • Polimorfizm w języku C++
  • Przykład zastosowania polimorfizmu

Dziedziczenie wielobazowe

  • Przykład dziedziczenia wielokrotnego
  • Problemy związane z dziedziczeniem wielobazowym
  • Wirtualne klasy bazowe

Obsługa wyjątków

  • Koncepcja obsługi sytuacji wyjątkowych
  • Bloki try... catch
  • Standardowe klasy wyjątków
  • Klasy wyjątków użytkownika

Strumienie

  • Koncepcja strumieni w C++ - opis biblioteki iostream
  • Strumienie std::cin, std::cout oraz std::err
  • Strumienie plikowe

Od uczestników szkolenia wymagana jest znajomość podstaw programowania (np. C, Pascal, Java, Python, itp.).

5 dni po 8 godzin lekcyjnych