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
Grupa docelowa: developerzy

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

Pobierz program w formacie PDF
  1. Systematyzacja
    1. Korzenie języka C++
      1. Język C
      2. Nisko-poziomowa natura C++
      3. Kompilacja i linkowanie
          Rozróżnienie obu pojęć 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ęć
          Rozróżnienie deklaracji i definicji Pojęcie obiektu i instancji już na etapie typów prostych Kopia, wskaźnik i referencja 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
          Analiza paradygmatu programowania obiektowego i jego poprawna interpretacja GRASP - General Responsibility Assignment Software Patterns (Principles). 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
          Klasa a struktura 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ść
          Systemy kontroli wersji (SVN, Git) Struktura repozytorium: podsystemy, komponenty, moduły...
      2. Budowanie kodu
          Single point of fire - budowanie i uruchamianie z jednego miejsca Narzędzie wspomagające - Makefile Zależności małe i duże Problem zależności między komponentami i jak go przełamać Problem zależności “inkludów” i jak go pokonać
      3. Myślenie i kodowanie w czasie przyszłym
          TDD - Test Driven Development 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
          Ujecie zmiennych lokalnych i globalnych Wskaźnik i tablica – czy to się da rozróżnić? Argumenty funkcji – API wymuszające, optymalne i bezpieczne
    3. Typy złożone wzmianka druga
      1. Składowe
          Member - o tym co obiekt ma i jak to wygląda w pamięci Funkcje - czyli co obiekt robi i nawiązanie do sekcji kodu
      2. Konstrukcja podstawą obiektu i jego poprawności
          Mechanika budowy obiektu Konstruktor jednoargumentowy i niebezpieczeństwo niejawnego przekształcenia typów (wstęp do kopiowania) Poprawność obiektu po konstrukcji 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
          Value object RAII Zarządzanie pamięcią 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

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ń