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

Tytuł: 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
Odbiorcy: developerzy
Zapisy: Indywidualne zamówienie i dopasowanie dla grupy.
Logistyka: W siedzibie klienta lub w innym dowolnym miejscu.

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

  • 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.

Zamów 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ń


Twoje dane osobowe przetwarzamy, aby udzielić odpowiedzi na Twoje pytanie. Administratorem Twoich danych osobowych jest Bottega It Minds Sławomir Sobótka. Przysługuje Ci prawo wniesienia sprzeciwu wobec przetwarzania, prawo dostępu do danych, prawo żądania ich sprostowania, usunięcia lub ograniczenia ich przetwarzania. Szczegółowe informacje dotyczące przetwarzania Twoich danych osobowych znajdują się TUTAJ.