Uniwersytet Jagielloński w Krakowie - Punkt LogowaniaNie jesteś zalogowany | zaloguj się
katalog przedmiotów - pomoc

Zaawansowane techniki programowania obiektowego w C++ (inf.)

Informacje ogólne

Kod przedmiotu: WFAIS.IF-N105 Kod Erasmus / ISCED: (brak danych) / (brak danych)
Nazwa przedmiotu: Zaawansowane techniki programowania obiektowego w C++ (inf.)
Jednostka: Wydział Fizyki, Astronomii i Informatyki Stosowanej
Grupy: Inform. Stos, II st, I rok - sem. letni przedm do wyboru specjaliz. Model. i Anim., Produk. Gier
Informatyka Stosowana, studia II stopnia, I rok - sem. letni- przedm. do wyboru, specjaliz. Ogólna
Punkty ECTS i inne: 4.00
zobacz reguły punktacji
Język prowadzenia: polski

Zajęcia w cyklu "Semestr letni 2017/2018" (jeszcze nie rozpoczęty)

Okres: 2018-02-24 - 2018-06-15
Wybrany podział planu:


powiększ
zobacz plan zajęć
Typ zajęć: Pracownia, 30 godzin więcej informacji
Koordynatorzy: Marcin Misiaszek
Prowadzący grup: Andrzej Kądzielawa, Marcin Misiaszek
Strona przedmiotu: http://wazniak.mimuw.edu.pl/index.php?title=Zaawansowane_CPP
Lista studentów: (nie masz dostępu)
Zaliczenie: Zaliczenie na ocenę
Ocena wliczana do średniej:

tak

Efekty kształcenia:

Wiedza: student posiada zaawansowaną wiedzę w zakresie języka C++, w szczególności uogólnionych algorytmów i struktur danych, funktorów, oraz metaprogramowania (K_W01, K_W04, K_W06).

Umiejętności: student biegle programuje w C++ wykorzystując szablony funkcji i klas oraz techniki metaprogramowania (K_U08).

Kompetencje społeczne: student zdaje sobie sprawę z konieczności ustawicznego poszerzania swojej wiedzy, w tym zapoznawania się z nowymi standardami języka C++; potrafi precyzyjnie formułować pytania służące pogłębieniu własnego zrozumienia tematu (K_K01, K_K02, K_K03).


Wymagania wstępne:

Podstawowa znajomość programowania w C++. Bardzo istotna jest również umiejętność projektowania programów orientowanych obiektowo. Student przed przystąpieniem do kursu powinien posiadać wiedzę dotyczącą:

1) funkcji sterujących (instrukcje warunkowe, pętle)

2) stosowanych typów (liczby całkowite, zmiennoprzecinkowe, znaki, tekst oraz definiowanie własnych typów)

3) operatorów w C++ (artmetycznych, logicznych, bitowych, operator rzutowania oraz operator sizeof)

4) definiowania funkcji

5) obsługi preprocesora

6) wykorzystywania tablic

7) zastosowania i istoty wskaźników

8) przeciążania funkcji oraz operatorów

9) definiowania i wykorzystywania klas ( w tym polimorfizm, funkcje wirtualne, dziedziczenie, wskaźniki do składników klas )

10) operacji wejścia/wyjścia.


Wszystkie powyższe zagadnienia są omówione np. w J. Grębosz "Symfonia C++" Editions 2000 oraz E. Gamma , R. Helm , R. Johnson, J. Vlissides "Wzorce projektowe" WNT 2005.

Forma i warunki zaliczenia:

Warunkiem zaliczenia modułu jest obecność na zajęciach, uzyskanie z kolokwiów średniej co najmniej 50%, oraz oddanie projektu zaliczeniowego.

Metody sprawdzania i kryteria oceny efektów kształcenia uzyskanych przez studentów:

Kolokwia, projekt zaliczeniowy, sprawdzanie obecności.

Metody dydaktyczne - słownik:

E-learning
Metody podające - pogadanka
Metody praktyczne - ćwiczenia laboratoryjne

Bilans punktów ECTS:

Udział w zajęciach na pracowni - 30 godz.

Samodzielne przerabianie materiałów z ważniaka - 60 godz.

Rozwiązywanie zadań domowych - 15 godz.

Łączny nakład pracy studenta: 105 godzin, co odpowiada 4 punktom ECTS.

Skrócony opis:

Celem przedmiotu jest zapoznanie studentów z zaawansowanymi technikami programowania obiektowego w C++. W trakcie ćwiczeń studenci zapoznają się z takimi pojęciami jak: kontenery, iteratory, polimorfizm statyczny i dynamiczny, klasy cech, funkcje typów, klasy wytycznych, metaprogramowanie, szablony wyrażeń, inteligentne wskaźniki oraz funktory. Po odbyciu kursu student powinien nabyć umiejętność swobodnego programowania w C++ z wykorzystaniem szablonów, które mają bardzo szerokie zastosowania w trakcie rozwijania uogólnionego oprogramowania.

Pełny opis:

C++ to język programowania z którym każdy student informatyki na pewno się już wcześniej spotkał. Początkujący programiści wykorzystują go jakby był to język proceduralny i niewiele różniący się od C. Szczególnie, że kompilatorem gcc można kompilować programy napisane w C oraz C++. W następnym etapie poznają sposoby wykorzystania C++ jako języka pozwalającego na programowanie obiektowo zorientowane. Trzeba jednak odróżniać istotę programowania obiektowego od używania C++. Język C++ jest jednym z wielu języków, które pozwalają na definiowanie klas. Programista musi sam zadecydować w jaki sposób zorganizuje i zaprojektuje klasy w swoim projekcie. C++ daje największą dowolność w ich definiowaniu np. pozwala na wielokrotne dziedziczenie, tworzenie szablonów klas. Istnieje możliwość używania wskaźników do składowych klas.

Podstawowymi zaletami C++ w stosunku do innych języków obiektowych jest wysoka efektywność i uniwersalność. Stosowany jest do tworzenia komercyjnego oprogramowania oraz efektywnych rozwiązań złożonych problemów.

Celem kursu jest podniesienie poziomu zaawansowania studenta w wykorzystywaniu C++ poprzez ćwiczenie implementacji różnych zagadnień z zakresu programowania obiektowo zorientowanego. Szczególny nacisk położony jest na wykorzystywanie własnych szablonów oraz tych, które są dostępne w bibliotekach STL oraz Boost. Osoby deklarujące dobrą znajomość języka C++ powinny również korzystać z możliwości parametryzowania swoich klas za pomocą klas wytycznych. Ta technika nazywana z angielskiego "Policy-based design" należy już poniekąd do standardowych i również jest ćwiczona w trakcie tego kursu.

Ćwiczenia programistyczne podzielone są na 15 kolejnych modułów:

1. Szablony I

2. Programowanie uogólnione

3. Szablony II

4. Testowanie

5. Klasy cech

6. Funkcje typów i inne sztuczki

7. Klasy wytycznych

8. Metaprogramowanie

9. Szablony wyrażeń

10. Inteligentne wskaźniki

11. Funktory

12. Używanie funktorów

13. Wyjątki

14. Zarządzanie pamięcią

15. Wyjątkowo odporny kod

Literatura:

1) D. Vandervoorde, N. Josuttis "C++ Szablony, Vademecum profesjonalisty", Helion S.A 2003.

2) A. Alexandrescu "Nowoczesne projektowanie W C++", Wydawnictwa Naukowo-Techniczne 2005.

3) N. Josuttis "C++ Biblioteka Standardowa, podręcznik programisty", Wydawnictwo HELION 2003.

4) B. Eckel, Ch. Allinson, "Thinking in C++" Edecja Polska, tom 2, Wydawnictwo HELION 2004.

Opisy przedmiotów w USOS i USOSweb są chronione prawem autorskim.
Właścicielem praw autorskich jest Uniwersytet Jagielloński w Krakowie.