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

Podobne dokumenty
Program szkolenia: Zaawansowane programowanie w C++

Program szkolenia: Wzorce projektowe w C++

Wykład 4. Projektowanie. MIS n Inżynieria oprogramowania Październik 2014

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje w roku akademickim 2012/2013. Przedmioty kierunkowe

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2012/2013

Projektowanie obiektowe oprogramowania Wykład 4 - SOLID GRASP Wiktor Zychla 2012

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

Programowanie obiektowe - 1.

Programowanie Zespołowe

Praca z kodem legacy : strategie, naprawa błędów, refaktoryzacja oraz

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Instrukcja do pracowni specjalistycznej z przedmiotu. Obiektowe programowanie aplikacji

Zaawansowane programowanie w języku C++ Klasy w C++

Zaawansowane programowanie w języku C++

KARTA KURSU. Programowanie obiektowe

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Podstawy Programowania Obiektowego

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

Program szkolenia: Wzorce projektowe i architektoniczne oraz efektywne techniki Object Oriented Design dla projektantów systemów

Programowanie 2. Język C++. Wykład 3.

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

Zaawansowane programowanie w C++ (PCP)

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

Elektrotechnika I stopień (I stopień / II stopień) Ogólno akademicki (ogólno akademicki / praktyczny) Kierunkowy (podstawowy / kierunkowy / inny HES)

Testowanie aplikacji mobilnych na platformie Android - architektura, wzorce, praktyki i narzędzia

Wykład 1. Program przedmiotu. Programowanie Obiektowe (język C++) Literatura. Program przedmiotu c.d.:

Wskazówki projektowe. Programowanie Obiektowe Mateusz Cicheński

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Spring Framework - wprowadzenie i zagadnienia zaawansowane

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Opisy efektów kształcenia dla modułu

Zaawansowane programowanie w C++ (PCP)

PRZEWODNIK PO PRZEDMIOCIE

Zaawansowane programowanie w C++ (PCP)

KARTA KURSU. Student zna podstawy analizy, projektowania i programowani obiektowego oraz podstawy języka C++.

Język C++ Programowanie obiektowe

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

Programowanie obiektowe. Wprowadzenie

KARTA KURSU (realizowanego w module specjalności)

Wykład 1. Program przedmiotu. Programowanie (język C++) Literatura. Program przedmiotu c.d.:

Część I Programowanie niskiego poziomu w języku C 19

10. Programowanie obiektowe w PHP5

Zaawansowane programowanie w języku C++ Funkcje uogólnione - wzorce

Programowanie obiektowe Wykład 6. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14

Program szkolenia: Wzorce projektowe i ich implementacja w C# oraz testowanie automatyczne

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.

Programowanie obiektowe Object programming. Elektrotechnika II stopień (I stopień / II stopień) Ogólno akademicki (ogólno akademicki / praktyczny)

Spis treści. Wprowadzenie 15

Programowanie obiektowe, wykład nr 6. Klasy i obiekty

Semestr letni Brak Tak

Wykład 8: klasy cz. 4

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

Programowanie obiektowe

Programowanie Obiektowe i C++

Program szkolenia: JavaScript Craftsmanship

Kurs WWW. Paweł Rajba.

Iteracyjno-rozwojowy proces tworzenia oprogramowania Wykład 3 część 1

NAJLEPSZE STRATEGIE SKUTECZNYCH PROGRAMISTÓW. TECHNIKI PRACY Z KODEM KOD: NSKOD

Scala - programowanie obiektowo-funkcyjne

Szablony klas, zastosowanie szablonów w programach

Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop Spis treści

Całościowe podejście do testowania automatycznego dla programistów. (TDD, BDD, Spec. by Example, wzorce, narzędzia)

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

Zaawansowane programowanie w języku C++ Programowanie obiektowe

Praktyczne zastosowanie bibliotek Boost oraz nowego standardu C++11

Zaawansowane programowanie w C++ (PCP)

Typy klasowe (klasy) 1. Programowanie obiektowe. 2. Założenia paradygmatu obiektowego:

Program szkolenia: Receptury testowania automatycznego - problemy, strategie, taktyki, techniki, narzędzia

Program szkolenia: Test Driven Development (TDD) using Spock or JUnit 5

Informatyka I stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny) stacjonarne (stacjonarne / niestacjonarne)

Cena szkolenia. Opis kursu

WYKŁAD. Jednostka prowadząca: Wydział Techniczny. Kierunek studiów: Elektronika i telekomunikacja. Nazwa przedmiotu: Język programowania C++

Szkolenie wycofane z oferty

Dziedziczenie jednobazowe, poliformizm

Typy zmiennych proste i złożone. Programowanie komputerów. Tablica. Złożone typy zmiennych. Klasa. Struktura

Szablony funkcji i klas (templates)

Klasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np

Szablony funkcji i szablony klas

Projektowanie obiektowe. Roman Simiński Wzorce projektowe Wybrane wzorce strukturalne

> C++ dziedziczenie. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2017/2018

PARADYGMATY PROGRAMOWANIA Wykład 4

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Przygotowanie do nowoczesnego programowania po stronie przeglądarki. (HTML5, CSS3, JS, wzorce, architektura, narzędzia)

Programowanie Obiektowe i C++ Marcin Benke

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne

Projektowanie obiektowe oprogramowania Wykład 3 - SOLID GRASP Wiktor Zychla 2016

Zwinna współpraca programistów i testerów z wykorzystaniem BDD i. by Example (JBehave/Spock/SpecFlow)

Wykład 5: Klasy cz. 3

Programowanie obiektowe W1 Wprowadzenie. Dr hab. inż. Lucyna Leniowska, prof. UR Zakład Mechatroniki, Automatyki i Optoelektroniki

Rok akademicki: 2012/2013 Kod: ZIE s Punkty ECTS: 3. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

Programowanie MorphX Ax

JavaScript - korzenie

Technologie obiektowe

Programowanie obiektowe

C# 6.0 : kompletny przewodnik dla praktyków / Mark Michaelis, Eric Lippert. Gliwice, cop Spis treści

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne

Wprowadzenie do szablonów szablony funkcji

Wprowadzenie do szablonów szablony funkcji

Zaawansowane programowanie w C++ (PCP)

Transkrypt:

Program szkolenia: Dobry start do profesjonalnego programowania w C++ dla początkujących Informacje: Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania: Forma: Dobry start do profesjonalnego programowania w C++ dla początkujących ccpp-c++ Dobry Start C i C++ developerzy 3 dni 50% wykłady / 50% warsztaty 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 znajacych podstawowa skladnie C++ chcacych usystematyzowac i poszerzyć swoją wiedzę o tym niebanalnym języku. Zalety 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 Strona: 1/6

Szczegółowy program: 1. Systematyzacja 1.1. Korzenie języka C++ 1.1.1. Język C 1.1.2. Nisko-poziomowa natura C++ 1.1.3. Kompilacja i linkowanie 1.1.3.1. Rozróżnienie obu pojęć 1.1.3.2. Preprocesor 1.1.4. Sekcje code, text i data oraz stos i sterta 1.2. Typy proste - wzmianka pierwsza 1.2.1. Zbiór podstawowych typów prostych i ich poprawne wykorzystanie z uwzględnieniem problematyki signed/unsigned 1.2.2. Wsoko-poziomowe spojrzenie na pamięć 1.2.2.1. Rozróżnienie deklaracji i definicji 1.2.2.2. Pojęcie obiektu i instancji już na etapie typów prostych 1.2.2.3. Kopia, wskaźnik i referencja 1.2.2.4. Problem zarządzania pamięcią z uwzględnieniem aspektu legacy code 1.3. OOP - Object Oriented Programming - programowanie obiektowe 1.3.1. Paradygmat programowania obiektowego[a][b] w praktyce 1.3.1.1. Analiza paradygmatu programowania obiektowego i jego poprawna interpretacja 1.3.1.2. GRASP - General Responsibility Assignment Software Patterns (Principles). 1.3.1.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). 1.3.2. Typy złożone po raz pierwszy Strona: 2/6

1.3.2.1. Klasa a struktura 1.3.2.2. Klasa/struktura a obiekt 2. Chemia w C++ - wszystko na temat tworzenia i związków 2.1. Punkt absolutnie podstawowy - organizacja pracy 2.1.1. Wersjonowanie kodu - absolutna konieczność 2.1.1.1. Systemy kontroli wersji (SVN, Git) 2.1.1.2. Struktura repozytorium: podsystemy, komponenty, moduły... 2.1.2. Budowanie kodu 2.1.2.1. Single point of fire - budowanie i uruchamianie z jednego miejsca 2.1.2.2. Narzędzie wspomagające - Makefile 2.1.2.3. Zależności małe i duże 2.1.2.4. Problem zależności między komponentami i jak go przełamać 2.1.2.5. Problem zależności inkludów i jak go pokonać 2.1.3. Myślenie i kodowanie w czasie przyszłym 2.1.3.1. TDD - Test Driven Development 2.1.3.2. Kod reużywalny 2.2. Typy proste - czy naprawdę takie proste? 2.2.1. Problematyka jawnego i niejawnego przekształcania typów prostych - jak sobie z tym radzić 2.2.2. Referencje i wskaźniki po raz drugi 2.2.2.1. Ujecie zmiennych lokalnych i globalnych 2.2.2.2. Wskaźnik i tablica czy to się da rozróżnić? 2.2.2.3. Argumenty funkcji API wymuszające, optymalne i bezpieczne 2.3. Typy złożone wzmianka druga 2.3.1. Składowe 2.3.1.1. Member - o tym co obiekt ma i jak to wygląda w pamięci Strona: 3/6

2.3.1.2. Funkcje - czyli co obiekt robi i nawiązanie do sekcji kodu 2.3.2. Konstrukcja podstawą obiektu i jego poprawności 2.3.2.1. Mechanika budowy obiektu 2.3.2.2. Konstruktor jednoargumentowy i niebezpieczeństwo niejawnego przekształcenia typów (wstęp do kopiowania) 2.3.2.3. Poprawność obiektu po konstrukcji 2.3.2.4. Metody konstrukcji obiektów w świetle wzorców i możliwości składniowych 2.4. Kopiowanie - zmora wymagań wydajnościowych 2.4.1. Mechanika kopiowania typów prostych, wskaźników i referencji 2.4.2. Kopiowanie typów złożonych od strony składni 2.4.3. Problemy z kopiowaniem klas i struktur 2.5. Lawina destrukcji 2.5.1. Zakres obiektów - nawiązanie do stosu i o sterty 2.5.2. Problem delete 2.5.3. Panowanie nad poprawną destrukcją i wzorce wspomagające 3. Więcej o obiektach 3.1. Zasięg 3.1.1. Rodzaje i znaczenie w rozumieniu zasad OOP (wstęp do dziedziczenia) 3.1.2. Przyjaźń piękno a zarazem pułapki 3.1.3. Zasięg kluczowych składowych 3.2. Osobliwości inne 3.2.1. const vs mutable pułapki 3.2.2. volatile w czym (nie) pomaga 4. Dżungla dziedziczenia i polimorfizm 4.1. Po co jest dziedziczenie? Strona: 4/6

4.1.1. Aspekt naturalny 4.1.2. Definicja szkolna z uchwyceniem OOP oraz SOLID 4.1.3. Koszty funkcji wirtualnych, wielodziedziczenia, wirtualnych klas podstawowych oraz identyfikacji typów podczas wykonywania 4.1.4. Wirtualizowanie konstruktorów i niemetod 4.1.5. Czego unikać pułapki i często popełniane błędy 4.2. Rodzaje i kombinacje dziedziczenia 4.2.1. Czysta podstawa: public, private i protected 4.2.2. Dziedziczenie wirtualne 4.3. Polimorfizm wzmocnienie dziedziczenia 4.3.1. virtual abstrakcja i przeciążanie 4.3.2. Kiedy polimorfizm nie działa 4.4. Przydatne wzorce 4.4.1. Adapter/Proxy uogólniania 4.4.2. Template method 4.4.3. Wzorce silników zdarzeń 5. Operatory 5.1. Co to tak naprawdę jest operator? 5.1.1. Definicja 5.1.2. Wbudowane operatory i aspekt rzutowania 5.2. Definiowanie operatorów potrzeba matka wynalazku 5.2.1. Poprawne podejście do projektowania operatorów 5.2.2. Operatory dla typów prostych 5.2.3. Operatory dla typów złożonych i ich kontekst 5.2.4. Wzorcowe możliwości wybranych operatorów Strona: 5/6

5.2.4.1. Value object 5.2.4.2. RAII 5.2.4.3. Zarządzanie pamięcią 5.2.4.4. Coś o szablonach 6. Wyjątki i obsługa błędów 6.1. Konieczność destrukcji 6.2. Poprawna konstrukcja raz jeszcze 6.3. Wyjątki w destruktorach 6.4. Różnica pomiędzy wyjątkiem a przekazaniem argumentu lub wywołaniem funkcji wirtualnej 6.5. Chwytanie wyjątków i rozważne stosowanie specyfikacji sytuacji wyjątkowych 6.6. Koszty obsługi wyjątków 7. Podsumowanie: problemy i rozwiązania 7.1. Jak radzić sobie ze wskaźnikami wykorzystując podejście imperatywne 7.1.1. RAII 7.1.2. Zliczanie referencji 7.1.3. Obiekty podobne do natywnych wskaźników (klasy pełnomocników) 7.2. STL to co już jest 7.2.1. std::auto_ptr 7.2.2. std::string 7.2.3. Kontenery i algorytmy 7.2.4. C++11 7.3. Katalog bibliotek wspomagających Strona: 6/6