You are on page 1of 3

Czas trwania: 3 dni

Agenda szkolenia
1. Systematyzacja
1.1. Niskopoziomowy C++
1.1.1.Natura języka C++
1.1.2.Główne problemy
1.1.3.Zarządzanie pamięcią - co mówi nam standard?
1.1.3.1. Programowanie systemowe i kod przenośny (pliki, współbieżność, IO, ...)
1.1.3.2. Kod legacy
1.2. OOP – Object Oriented Programming – przypomnienie podstawowych zasad programowania
obiektowego w świetle rzeczywistych problemów.
1.2.1.Paradygmat programowania obiektowego
1.2.2.Analiza paradygmatu programowania obiektowego i jego poprawna interpretacja
1.2.3.GRASP – General Responsibility Assignment Software Patterns (Principles).
1.2.4.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).
1.3. DID – Defense In Depth – programowanie defensywne
1.4. POSA – Pattern Oriented Software Architecture – architektura oparta na wzorcach
1.4.1.Wzorzec – czym jest?
1.4.2.Pattern language – architektura rozwiązania (rozwiązań) oparta na wzorcach
1.4.3.Framework – zbiór reużywalnych, zaimplementowanych wzorców i funkcjonalności
2. Zaawansowane elementy składni
2.1. Rozwinięcie dziedziczenia
2.1.1.„Las” dziedziczenia
2.1.1.1. Konstrukcja obiektu
2.1.1.2. Funkcje wirtualne od podszewki
2.1.1.3. „Wodospad” destrukcji
2.1.2.„Dżungla” wielokrotnego dziedziczenia
2.1.2.1. Problematyka
2.1.2.2. Zastosowanie
2.1.3.„Szczyty” wirtualnego dziedziczenia, czyli wyższa szkoła jazdy
2.1.3.1. Motywacja dziedziczenia wirtualnego
2.1.3.2. Mechanika funkcjonowania wirtualnego dziedziczenia

Bottega – IT Minds 1
http://bottega.com.pl
2.1.3.3. Praktyczne zastosowanie
2.1.3.4. Aspekt rzutowania i niejawnego przekształcania typów
2.2. Programowanie generyczne, czyli „labirynt szablonów”
2.2.1.Motywacja dla programowania generycznego – aspekt programowania funkcyjnego
2.2.2.Podstawowa składnia
2.2.2.1. Funkcje szablonowe
2.2.2.2. Klasy szablonowe
2.2.2.3. Szablony zmienne (C++11)
2.2.2.4. Szablony specjalizowane
2.2.2.5. Użycie typów „własnych”
2.2.2.6. Argumenty szablonów, które nie są typami
2.2.2.7. Statyczne asercje
2.2.3.Mechanika szablonów
2.2.3.1. Aspekt kompilacji
2.2.3.2. Moment składania docelowej implementacji
2.2.3.3. Budowa obiektu z szablonu
2.2.3.4. Najczęściej spotykane problemy i najczęściej popełniane błędy
2.3. Przenoszenie – w trosce o wydajność
2.3.1.Semantyka przenoszenia (C++11)
2.3.2.Referencje prawostronne (C++11)
2.3.3.Referencje uniwersalne (C++11)
2.3.4.Operacje przenoszenia (C++11)
2.4. Dedukcja typów – usuwamy z kodu zbędne informacje
2.4.1.Argumenty szablonów
2.4.2.auto (C++11)
2.4.3.decltype (C++11)
2.4.4.decltype (auto) (C++14)
2.4.5.auto dla wartości zwracanych (C++14)
2.5. Wyrażenia lambda – programowanie funkcyjne w C++
2.5.1.Funktory
2.5.2.Podstawy (C++11)
2.5.3.Domknięcia (C+11)
2.5.4.Ogólne wyrażenia lambda (C++14)
3. Implementacja funkcjonalnych wzorców
3.1. Specjalizacja ogólnych algorytmów: strategy vs template method
3.2. Operacje do&redo: command vs memento
3.3. Ciągi operacji i scenariusze składane z klocków: chain of responsibility

Bottega – IT Minds 2
http://bottega.com.pl
3.4. Obiektowa maszyna stanów: while-switch-case vs state pattern
3.5. Upiększenia z wykorzystaniem polimorfizmu: decorator.

Wstępne wymagania merytoryczne dla uczestników


 Płynne posługiwanie się językiem C++
o W zakresie składni
o Podstawowe rozumienie problematyki związanej z budowaniem kodu C/C++:
preprocesor, kompilator, linker
 Płynne posługiwanie się ulubionym środowiskiem/edytorem programistycznym

Wymagania sprzętowo-programowe oraz facility


 Dostęp do jednej z wybranych platform do pracy zdalnej
o Zoom
o MS Teams
o Google Meet
 1 regularne stanowisko pracy inżyniera/programisty zgodne ze standardami firmy klienta
 System Windows zainstalowany na w/w stacji roboczej natywnie lub na maszynie wirtualnej
o Możliwie z prawami administratora lub przynajmniej z możliwością kompilacji i
uruchamianiem zbudowanego kodu oraz możliwością instalacji dodatkowych paczek
o Z dostępem do internetu ze stacji roboczej
o Kompilator języków C/C++ z rodziny MS
o Edytor kodu źródłowego
o Terminal/konsola użytkownika.

Bottega – IT Minds 3
http://bottega.com.pl

You might also like