Zaawansowane CPP: Różnice pomiędzy wersjami
Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Matiunreal (dyskusja | edycje) |
|||
Linia 71: | Linia 71: | ||
# [[Zaawansowane CPP/Wykład 2: Programowanie uogólnione|Programowanie uogólnione]] ([[Zaawansowane CPP/Ćwiczenia 2: Programowanie uogólnione|ćwiczenia]]) | # [[Zaawansowane CPP/Wykład 2: Programowanie uogólnione|Programowanie uogólnione]] ([[Zaawansowane CPP/Ćwiczenia 2: Programowanie uogólnione|ćwiczenia]]) | ||
# [[Zaawansowane CPP/Wykład 3: Szablony II|Szablony II]] ([[Zaawansowane CPP/Ćwiczenia 3: Szablony II|ćwiczenia]]) | # [[Zaawansowane CPP/Wykład 3: Szablony II|Szablony II]] ([[Zaawansowane CPP/Ćwiczenia 3: Szablony II|ćwiczenia]]) | ||
# [[Zaawansowane CPP/Wykład 4: | # [[Zaawansowane CPP/Wykład 4: Szablony wyrażeń|Szablony wyrażeń]] ([[Zaawansowane CPP/Ćwiczenia 4: Szablony wyrażeń|ćwiczenia]]) | ||
# [[Zaawansowane CPP/Wykład 5: | # [[Zaawansowane CPP/Wykład 5: Testowanie|Testowanie]] ([[Zaawansowane CPP/Ćwiczenia 5: Testowanie|ćwiczenia]]) | ||
# [[Zaawansowane CPP/Wykład 6: | # [[Zaawansowane CPP/Wykład 6: Klasy cech|Klasy cech]] ([[Zaawansowane CPP/Ćwiczenia 6: Klasy cech|ćwiczenia]]) | ||
# [[Zaawansowane CPP/Wykład 7: | # [[Zaawansowane CPP/Wykład 7: Funkcje typów i inne sztuczki|Funkcje typów i inne sztuczki]] ([[Zaawansowane CPP/Ćwiczenia 7: Funkcje typów i inne sztuczki|ćwiczenia]]) | ||
# [[Zaawansowane CPP/Wykład 8: | # [[Zaawansowane CPP/Wykład 8: Klasy wytycznych|Klasy wytycznych]] ([[Zaawansowane CPP/Ćwiczenia 8: Klasy wytycznych|ćwiczenia]]) | ||
# [[Zaawansowane CPP/Wykład 9: | # [[Zaawansowane CPP/Wykład 9: Metaprogramowanie|Metaprogramowanie]] ([[Zaawansowane CPP/Ćwiczenia 9: Metaprogramowanie|ćwiczenia]]) | ||
# [[Zaawansowane CPP/Wykład 10: | # [[Zaawansowane CPP/Wykład 10: Funktory|Funktory]] ([[Zaawansowane CPP/Ćwiczenia 10: Funktory|ćwiczenia]]) | ||
# [[Zaawansowane CPP/Wykład 11: | # [[Zaawansowane CPP/Wykład 11: Inteligentne wskaźniki|Inteligentne wskaźniki]] ([[Zaawansowane CPP/Ćwiczenia 11: Inteligentne wskaźniki|ćwiczenia]]) | ||
# [[Zaawansowane CPP/Wykład 12: | # [[Zaawansowane CPP/Wykład 12: Używanie funktorów|Używanie funktorów]] ([[Zaawansowane CPP/Ćwiczenia 12: Używanie funktorów|ćwiczenia]]) | ||
# [[Zaawansowane CPP/Wykład 13: Wyjątki|Wyjątki]] ([[Zaawansowane CPP/Ćwiczenia | # [[Zaawansowane CPP/Wykład 13: Wyjątki|Wyjątki]] ([[Zaawansowane CPP/Ćwiczenia 13: Wyjątki|ćwiczenia]]) | ||
# [[Zaawansowane CPP/Wykład 14: | # [[Zaawansowane CPP/Wykład 14: Zarządzanie pamięcią|Zarządzanie pamięcią]] ([[Zaawansowane CPP/Ćwiczenia 14: Zarządzanie pamięcią|ćwiczenia]]) | ||
# [[Zaawansowane CPP/Wykład 15: Wyjątkowo odporny kod|Wyjątkowo odporny kod]] ([[Zaawansowane CPP/Ćwiczenia 15: Wyjątkowo odporny kod|ćwiczenia]]) | # [[Zaawansowane CPP/Wykład 15: Wyjątkowo odporny kod|Wyjątkowo odporny kod]] ([[Zaawansowane CPP/Ćwiczenia 15: Wyjątkowo odporny kod|ćwiczenia]]) |
Wersja z 15:20, 9 wrz 2006
Forma zajęć
Wykład (30 godzin) + laboratorium (30 godzin)
Opis
Celem przedmiotu jest zapoznanie studentów z zaawansowanymi technikami programowania obiektowego w C++.
Sylabus
Autor
- Piotr Białas
Wymagania wstępne
- Programowanie Obiektowe
- Znajomość C++
Zawartość
- Szablony (templates)
- programowanie generyczne
- koncepty (STL)
- kontenery i algorytmy generyczne
- klasy cech i wytycznych
- metaprogramowanie, szablony wyrażeń
- zastosowanie szablonów do implementacji podstawowych wzorców obiektowych
- programowanie generyczne
- Wyjątki.
- bezpieczna obsługa wyjątków
- wyjątki a kontenery (STL)
- Alokacja pamięci
- operator new, własne alokatory pamięci
- obsługa błędów przydziału pamięci
- alokatory w STL
- Narzędzia programistyczne
- kontrola wersji (Subversion)
- testowanie (CPPUnit)
Literatura
- Alexandrescu "Modern C++ Design, Generic Programming and Design Patterns Applied", 2001 Addison-Wesley.
- B. Meyer, "Object Oriented Software Construction"
- D. Vandervoorde, N. Josuttis "C++ Szablony, Vademecum profesjonalisty", Helion S.A 2003.
- Alexandrescu "Nowoczesne projektowanie".
- Stroustroup "Jezyk C++".
- N. Josuttis "STL".
- B. Eckel, Ch. Allinson, "Thinking in C++" Tom 2 2004 Helion.
- S. Meyers,"C++, 50 efektywnych sposobów na udoskonalenie Twoich programów", 2003 Helion.
- S. Meyers, "More effective C++"
- S. Meyers, "STL w praktyce. 50 sposobów efektywnego wykorzystania", 2004 Helion.
- Strona SGI http://www.sgi.com/tech/stl/
- BOOST
- CRTP
- "patterns"
(tymczasowe) Uwagi dotyczące latex2mediawiki
Poniższe makra powodują, że kod C++ jest poprawnie tłumaczony:
\newcommand{\beginlstlisting}{ <nowiki>\disablenowiki } \newcommand{\beginlstlisting}[1]{ <nowiki>\disablenowiki } \newcommand{\endlstlisting}{</nowiki>\enablenowiki \EATWS } \newcommand{\cd}[1]{<code><nowiki>\disablenowiki #1</nowiki>\enablenowiki</code>} \renewcommand{\beginverbatim}{\beginlstlisting } \renewcommand{\endverbatim}{\endlstlisting } \renewcommand{\verb}{\renewcommand*{\PIPEREAD} {<code><nowiki>\disablenowiki\renewcommand*{\PIPEREAD} {\enablenowiki</nowiki></code>\renewcommand*{\PIPEREAD} {\begin{nowiki}\PIPE \end{nowiki} }}}}
Moduły
- Szablony I (ćwiczenia)
- Programowanie uogólnione (ćwiczenia)
- Szablony II (ćwiczenia)
- Szablony wyrażeń (ćwiczenia)
- Testowanie (ćwiczenia)
- Klasy cech (ćwiczenia)
- Funkcje typów i inne sztuczki (ćwiczenia)
- Klasy wytycznych (ćwiczenia)
- Metaprogramowanie (ćwiczenia)
- Funktory (ćwiczenia)
- Inteligentne wskaźniki (ćwiczenia)
- Używanie funktorów (ćwiczenia)
- Wyjątki (ćwiczenia)
- Zarządzanie pamięcią (ćwiczenia)
- Wyjątkowo odporny kod (ćwiczenia)