Programowanie obiektowe (C++)
Bibliografia
Publications
2008
- Eric Brasseur, C++ tutorial for C users, 2008
- Peter Müller, Introduction to Object-Oriented Programming Using C++, 2008
2004
- Bjarne Stroustrup, Język C++, 2004
2001
- David Vandevoorde, Język C++, ćwiczenia i rozwiązania, 2001
2000
- Bruce Eckel, Thinking in C++ 2nd Edition, 2000
Plan wykładów
- Programowanie obiektowe
- Podejścia do programowania
- Obiekty - stan i zachowanie
- Własności języków obiektowych
- Klasa, Obiekt, Klasa abstrakcyjna
- Zależności pomiędzy klasami
- Zawieranie, Używanie, Dziedziczenie
- Kompilacja i łączenie kodu
- Proste I/O
- Kompilacja
- Arytmetyka komputera
- Komentarze
- Przepływ sterowania
- Konstrukcja if
- Pętle
- Switch - case
- Typy liczbowe
- Makra i Funkcje
- Dyrektywy preprocesora
- Makra
- Konwersja typów
- Asercja
- Tablice jedno i dwuwymiarowe
- Operator sizeof()
- Funkcje
- parametry, prototyp funkcji, dyrektywa inline
- Namespace
- Operator przecinka
- Wskaźniki, Referencje, Napisy
- wskaźnik, wskaźnik NULL
- parametr funkcji typu const
- referncja
- dynamiczna alokacja pamięci
- tablice wskaźników
- operacje na napisach (C-Style)
- konwersja typów
- wycieki pamięci
- Struktura, Klasa, Lista, Drzewo BST
- Konwersja (xxxxx_cast)
- Wycieki pamięci
- Zasięg zmiennych
- Łączenie zewnętrzne
- Struktura
- Lista wiązana, drzewo binarne w C++
- Unia
- Klasa i Obiekt
- Konstruktor i Destruktor
- Operator this, Przeciążanie operatorów, dziedziczenie
- Operator this
- Łączenie wywołań
- Przeciążanie funkcji
- Przeciążanie operatorów
- Definiowanie funkcji operatorowych
- Operatory rzutujące
- Dziedziczenie - podstawy
- Dziedziczenie, polimorfizm, funkcje wirtualne
- Konstrukcja i destrukcja obiektów
- Dziedziczenie, wielokrotne dziedziczenie
- Dziedziczenie wirtualne
- Funkcje wirtualne
- Destruktor wirtualny
- Polimorfizm i typy: wskaźnikowy i referencyjny
- Funkcje i klasy czysto wirtualne
- Interfejs, dynamic_cast
- Dziedziczenie vs. Kompozycja
- Obsługa wyjątków
- Co to jest wyjątek
- Zgłaszanie i obsługa wyjątków
- Wyjątki nieobsłużone
- Obsługa zakończenia
- Wskaźnik do funkcji
- Procedury obsługi, przekazywanie wyjątku
- Wyjątek a konstruktor i destruktor
- Specyfikacja wyjątków, hierarchia wyjątków
- Struktury w C++
- Struktury danych a wydajność algorytmów
- Notacje i złożoności
- Tablice, lista pojedynczo i podwójnie wiązana
- implementacja, wydajność
- Kolejka i Stos
- Inteligentny wskaźnik
- implementacja i użycie
- typedef, register, volatile, go to, string (STL)
- Szablony (ang. Templates)
- Po co pisać szablony?
- Szablony funkcji, użycie szablonów
- Parametry szablonu
- Jawna specyfikacja parametrów szablonu
- Specjalizacje szablonów
- Przeciążenie szablonu funkcji
- Funkcja jako parametr szablonu
- Szablony i kompilacja
- Szablony klas
- Inteligentny wskaźnik jako szablon
- std::string też jest szablonem
- Klasy i Szablony
- Strumienie napisowe
- Wskaźniki do pól i metod
- Klasy zagnieżdżone
- Dziedziczenie szablonów
- Zagnieżdżone klasy szablonów
- „„dziedziczenie”” parametrów szablonu przez klasę zagnieżdżoną po klasie okalającej
- „„Szablon w szablonie””
- Wykorzystanie szablonów i klas zagnieżdżonych
- Biblioteka standardowa STL - kontenery
- Biblioteka STL
- Rodzaje kontenerów
- Kolekcje, wymagania, koncepty
- Rozmiar kontenera
- Iteratory, iteracja po kolekcji
- Wspólna definicja typów
- std::vector
- specjalizacja vector<bool>
- std::enque
- std::list
- Biblioteka standardowa STL - iteratory, kontenery, obiekty funkcyjne
- Iterator
- Rodzaje iteratorów
- wejściowe, wyjściowe, “do przodu”, dwukierunkowe, swobodnego dostępu
- Dodatkowa funkcjonalność iteratorów
- Kontenery asocjacyjne
- set, multiset, map, multimap, tablica asocjacyjna
- Kryteria sortowania
- Inne kontenery, stos, kolejka, kolejka priorytetowa, bitset
- Obiekty funkcyjne
- Wykład podsumowywujący cz. 1
- Wykład podsumowywujący cz. 2
- C++ - trędy i perspektywy