Zapraszam osoby, które już zaczęły programować  C++ i chciałyby nauczyć się programować obiektowo. Obiektówka wiele osób przeraża i kojarzy się im z czymś skomplikowanym i trudnym do opanowania. Chcemy przekonać Cię, że wcale tak nie jest i myślimy, że po przejściu tego kursu uznasz to za proste i zaczniesz bez trudu programować obiektowo. W kursie przybliżamy podstawowe pojęcia związane z programowaniem obiektowym w C++, przy czym prowadzący stara się przekazać konkretne zagadnienia w sposób zwięzły, łatwy do zrozumienia i pokazać je na prostych przykładach.


Ten kurs został zaprojektowany, aby wprowadzić Cię w fascynujący świat języka C++ oraz pomóc w zrozumieniu kluczowych zagadnień i technik stosowanych przez programistów. Poprzez różnorodne tematy i praktyczne przykłady zdobędziesz umiejętności niezbędne do pisania efektywnego i profesjonalnego kodu. Zapraszamy do poznania kolejnych sekcji kursu, które zostały opisane poniżej.


Klasa – budowa, składniki, referencja, kapsułowanie

Wprowadzimy cię w podstawy programowania obiektowego, tworząc klasy z atrybutami i metodami. Zbadamy koncepcję kapsułowania, która ukrywa szczegóły implementacji, oraz poznamy sposób korzystania z referencji do obiektów klasy.


Etykiety: public, private, wartości wstępne

Zgłębimy użycie etykiet dostępu, takich jak public i private, do kontrolowania widoczności składników klasy. Zrozumiemy różnicę między publicznymi a prywatnymi składnikami oraz nauczymy się inicjalizować wartości atrybutów klasy.


Wskaźnik this

W tym fragmencie kursu opanujemy korzystanie ze wskaźnika this, umożliwiającego odwołanie się do obiektu w kontekście wywoływanej metody. Przeanalizujemy jego zastosowania, takie jak odróżnianie atrybutów klasy od lokalnych zmiennych o tej samej nazwie.


Konstruktor, destruktor, lista inicjalizacyjna

W tej części kursu nauczymy się tworzyć konstruktory i destruktory - specjalne metody inicjalizujące i porządkujące obiekty klasy. Poznamy również sposób użycia list inicjalizacyjnych do efektywnego przypisywania wartości atrybutom obiektów.


Konstruktor delegujący i kopiujący

Przejdziemy do omówienia konstruktora delegującego, który pozwala na wywołanie innego konstruktora w celu uniknięcia duplikacji kodu. Następnie nauczymy się korzystać z konstruktora kopiującego, który tworzy nowy obiekt na podstawie istniejącego.


Przeładowanie operatorów

W kolejnym module dowiemy się, jak przeładowywać operatory, co pozwala na zmianę ich zachowania dla obiektów klasy. Nauczymy się przeładowywać operatory arytmetyczne, logiczne oraz inne, aby tworzyć czytelniejszy i bardziej intuicyjny kod.


Dziedziczenie klas

W tej części omówimy dziedziczenie klas, które umożliwia tworzenie nowych klas na podstawie istniejących, dzielących się atrybutami i metodami. Przyjrzymy się różnym typom dziedziczenia oraz sposobom korzystania z konstruktorów bazowych.


Polimorfizm

Polimorfizm pozwala na traktowanie obiektów różnych klas jako obiektów wspólnej klasy bazowej. Nauczymy się wykorzystywać polimorfizm do tworzenia elastycznych i skalowalnych architektur programów.


Wirtualne funkcje

Zajmiemy się wirtualnymi funkcjami, będącymi podstawą polimorfizmu. Nauczymy się deklarować i definiować funkcje wirtualne oraz korzystać z wskaźników do obiektów bazowych, aby wywoływać odpowiednie funkcje.


Klasa abstrakcyjna

W kolejnej sekcji poznamy klasy abstrakcyjne, które służą jako szablony dla innych klas, lecz nie można ich bezpośrednio instancjonować. Opanujemy tworzenie klas abstrakcyjnych oraz ich wykorzystywanie w kontekście dziedziczenia.


Metoda czysto wirtualna

Nauczymy się stosować metody czysto wirtualne, które wymuszają ich implementację przez klasy pochodne. Zrozumiemy, jak używać tych metod w celu projektowania klarownych i elastycznych interfejsów klas.


Zawieranie przyjaźni

W tej części kursu zbadamy pojęcie przyjaźni w kontekście klas, które pozwala na udostępnienie dostępu do składników klasy wybranym funkcjom lub klasom. Nauczymy się deklarować przyjaźń oraz zrozumiemy jej zalety i zagrożenia.


Wielodziedziczenie

W kolejnym module omówimy wielodziedziczenie, pozwalające na tworzenie klas dziedziczących po wielu klasach bazowych. Przyjrzymy się zaletom i wadom tego podejścia oraz nauczymy się korzystać z wielodziedziczenia w praktyce.


Modyfikator – static

Tutaj nauczymy się stosować modyfikator static, który pozwala na utworzenie składników klasy istniejących niezależnie od obiektów. Poznamy zastosowania dla statycznych atrybutów oraz metod i zrozumiemy, jak korzystać z nich w kodzie.


Struktura – struct

W tej części kursu omówimy struktury (struct), będące prostszą alternatywą dla klas, zwykle używanymi do przechowywania grupy zmiennych. Nauczymy się definiować struktury oraz korzystać z nich w różnych sytuacjach.


Obiekt funkcyjny – funktor

W kolejnym module wprowadzimy się w obiekty funkcyjne, zwane również funktorami, które pozwalają na traktowanie obiektów klasy jako funkcji. Zrozumiemy, jak tworzyć i stosować funktory oraz jakie są ich zalety.


Algorytm count_if

Tutaj nauczymy się korzystać z algorytmu count_if, który pozwala na zliczanie elementów w kontenerze spełniających określone kryterium. Przeanalizujemy jego zastosowania oraz nauczymy się tworzyć własne predykaty.


Wyrażenie lambda

W tej sekcji kursu omówimy wyrażenia lambda, które umożliwiają tworzenie anonimowych funkcji w kodzie. Poznamy składnię wyrażeń lambda oraz nauczymy się, jak stosować je w różnych algorytmach i kontenerach.


Kontenery STL: vector, deque, array, list, set, map

W kolejnym module przyjrzymy się standardowym kontenerom STL, takim jak vector, deque, array, list, set oraz map. Nauczymy się tworzyć, modyfikować i przeszukiwać te kontenery, a także dowiemy się, kiedy używać każdego z nich.


Algorytmy STL: min_element(), max_element(), sort(), find(), reverse(), find_if(), for_each()

Na końcu kursu omówimy podstawowe algorytmy STL, takie jak min_element(), max_element(), sort(), find(), reverse(), find_if() oraz for_each(). Poznamy ich zastosowania oraz nauczymy się wykorzystywać te algorytmy w praktycznych sytuacjach. Dzięki temu zyskasz solidne podstawy do dalszego eksplorowania biblioteki STL oraz będziesz w stanie tworzyć bardziej wydajne i elastyczne rozwiązania w swoich projektach programistycznych.