Dobry start do profesjonalnego programowania w C++ dla początkujących programistów

Kod: ccpp-C++ Dobry Start
Kategoria: C i C++
Forma: 50% wykłady / 50% warsztaty
Czas trwania: 3 dni
Grupa docelowa: developerzy
Logistyka: W siedzibie klienta lub w innym dowolnym miejscu.
Data i dokładny zakres do ustalenia podczas analizy przed-szkoleniowej.

Szkolenie pozwalające zrozumieć od podszewki kontekst oraz podstawową składnię i „ukryte” mechanizmy języka C++.

W nieksiążkowy i nieszablonowy sposób, bazując na użytecznych idiomach i wzorcach kolejno odsłaniane są rozmaite niuanse języka.

Zdobyta wiedza w sposób natychmiastowy przekłada się na pełne wykorzystanie języka i jego możliwości. Wyciągnięte z rzeczywistych projektów zadania pomogą zdecydowanie podnieść jakość (w kontekście czystości i bezpieczeństwa), testowalność i elastyczność kodu.

Szkolenie przeznaczone jest dla programistów znajacych podstawowa skladnie C++ chcacych usystematyzowac i poszerzyć swoją wiedzę o tym niebanalnym języku.

Wyróżniki szkolenia

Podczas zajęć możesz oczekiwać szczególnych akcentów położonych na poniższe aspekty:

  • Szkolenie obwarowane zbiorem najlepszych praktyk
  • Praktyczne podejście do składni języka
  • Nacisk na bezpieczną implementację opartą na składni i testowaniu
  • Przykłady wyjęte z rzeczywistych projektów

Program Szkolenia

Program jest ramą w jakiej możemy się poruszać merytorycznie - program dla konkretnego szkolenia dedykowanego ustalamy z grupą na podstawie analizy przed-szkoleniowej.

  1. Systematyzacja
    1. Korzenie języka C++
      1. Język C
      2. Nisko-poziomowa natura C++
      3. Kompilacja i linkowanie
        1. Rozróżnienie obu pojęć
        2. Preprocesor
      4. Sekcje code, text i data oraz stos i sterta
    2. Typy proste - wzmianka pierwsza
      1. Zbiór podstawowych typów prostych i ich poprawne wykorzystanie z uwzględnieniem problematyki signed/unsigned
      2. Wsoko-poziomowe spojrzenie na pamięć
        1. Rozróżnienie deklaracji i definicji
        2. Pojęcie obiektu i instancji już na etapie typów prostych
        3. Kopia, wskaźnik i referencja
        4. Problem zarządzania pamięcią z uwzględnieniem aspektu “legacy code”
    3. OOP - Object Oriented Programming - programowanie obiektowe
      1. Paradygmat programowania obiektowego[a][b] w praktyce
        1. Analiza paradygmatu programowania obiektowego i jego poprawna interpretacja
        2. GRASP - General Responsibility Assignment Software Patterns (Principles).
        3. SOLID - Single Responsibility Principle (SRP), the Open/Closed Principle (OCP), the Liskov Substitution Principle (LSP), the Dependency Inversion Principle (DIP), and the Interface Segregation Principle (ISP).
      2. Typy złożone po raz pierwszy
        1. Klasa a struktura
        2. Klasa/struktura a obiekt
  2. Chemia w C++ - wszystko na temat tworzenia i związków
    1. Punkt absolutnie podstawowy - organizacja pracy
      1. Wersjonowanie kodu - absolutna konieczność
        1. Systemy kontroli wersji (SVN, Git)
        2. Struktura repozytorium: podsystemy, komponenty, moduły...
      2. Budowanie kodu
        1. Single point of fire - budowanie i uruchamianie z jednego miejsca
        2. Narzędzie wspomagające - Makefile
        3. Zależności małe i duże
        4. Problem zależności między komponentami i jak go przełamać
        5. Problem zależności “inkludów” i jak go pokonać
      3. Myślenie i kodowanie w czasie przyszłym
        1. TDD - Test Driven Development
        2. Kod reużywalny
    2. Typy proste - czy naprawdę takie proste?
      1. Problematyka jawnego i niejawnego przekształcania typów prostych - jak sobie z tym radzić
      2. Referencje i wskaźniki po raz drugi
        1. Ujecie zmiennych lokalnych i globalnych
        2. Wskaźnik i tablica – czy to się da rozróżnić?
        3. Argumenty funkcji – API wymuszające, optymalne i bezpieczne
    3. Typy złożone wzmianka druga
      1. Składowe
        1. Member - o tym co obiekt ma i jak to wygląda w pamięci
        2. Funkcje - czyli co obiekt robi i nawiązanie do sekcji kodu
      2. Konstrukcja podstawą obiektu i jego poprawności
        1. Mechanika budowy obiektu
        2. Konstruktor jednoargumentowy i niebezpieczeństwo niejawnego przekształcenia typów (wstęp do kopiowania)
        3. Poprawność obiektu po konstrukcji
        4. Metody konstrukcji obiektów w świetle wzorców i możliwości składniowych
    4. Kopiowanie - zmora wymagań wydajnościowych
      1. Mechanika kopiowania typów prostych, wskaźników i referencji
      2. Kopiowanie typów złożonych od strony składni
      3. Problemy z kopiowaniem klas i struktur
    5. Lawina destrukcji
      1. Zakres obiektów - nawiązanie do stosu i o sterty
      2. Problem delete
      3. Panowanie nad poprawną destrukcją i wzorce wspomagające
  3. Więcej o obiektach
    1. Zasięg
      1. Rodzaje i znaczenie w rozumieniu zasad OOP (wstęp do dziedziczenia)
      2. Przyjaźń – piękno a zarazem pułapki
      3. Zasięg kluczowych składowych
    2. Osobliwości inne
      1. const vs mutable – pułapki
      2. volatile – w czym (nie) pomaga
  4. Dżungla dziedziczenia i polimorfizm
    1. Po co jest dziedziczenie?
      1. Aspekt naturalny
      2. Definicja szkolna z uchwyceniem OOP oraz SOLID
      3. Koszty funkcji wirtualnych, wielodziedziczenia, wirtualnych klas podstawowych oraz identyfikacji typów podczas wykonywania
      4. Wirtualizowanie konstruktorów i niemetod
      5. Czego unikać – pułapki i często popełniane błędy
    2. Rodzaje i kombinacje dziedziczenia
      1. Czysta podstawa: public, private i protected
      2. Dziedziczenie wirtualne
    3. Polimorfizm – wzmocnienie dziedziczenia
      1. virtual – abstrakcja i przeciążanie
      2. Kiedy polimorfizm nie działa
    4. Przydatne wzorce
      1. Adapter/Proxy – uogólniania
      2. Template method
      3. Wzorce silników zdarzeń
  5. Operatory
    1. Co to tak naprawdę jest operator?
      1. Definicja
      2. Wbudowane operatory i aspekt rzutowania
    2. Definiowanie operatorów – potrzeba matka wynalazku
      1. Poprawne podejście do projektowania operatorów
      2. Operatory dla typów prostych
      3. Operatory dla typów złożonych i ich kontekst
      4. „Wzorcowe” możliwości wybranych operatorów
        1. Value object
        2. RAII
        3. Zarządzanie pamięcią
        4. Coś o szablonach
  6. Wyjątki i obsługa błędów
    1. Konieczność destrukcji
    2. Poprawna konstrukcja raz jeszcze
    3. Wyjątki w destruktorach
    4. Różnica pomiędzy wyjątkiem a przekazaniem argumentu lub wywołaniem funkcji wirtualnej
    5. Chwytanie wyjątków i rozważne stosowanie specyfikacji sytuacji wyjątkowych
    6. Koszty obsługi wyjątków
  7. Podsumowanie: problemy i rozwiązania
    1. Jak radzić sobie ze wskaźnikami wykorzystując podejście imperatywne
      1. RAII
      2. Zliczanie referencji
      3. Obiekty podobne do natywnych wskaźników (klasy pełnomocników)
    2. STL – to co już jest
      1. std::auto_ptr
      2. std::string
      3. Kontenery i algorytmy
      4. C++11
    3. Katalog bibliotek wspomagających


Pobierz program w formacie PDF

Trenerzy

Poznaj ekspertów, którzy mogą poprowadzić Twoje szkolenie.

Materiały związane ze szkoleniem

Idea renesansowej pracowni - Bottegi zakłada nieustanną pracę jej członków i dzielenie się jej wynikami.

Zapytaj o szkolenie

Imię i nazwisko:
Firma:
E-mail/Nr tel:
Temat:
Wiadomość:

Jeżeli preferujesz osobisty kontakt to zawsze możesz zadzwonić.

Iwona Sobótka

Koordynatorka szkoleń