Module also offered within study programmes:
General information:
Name:
Języki programowania obiektowego
Course of study:
2019/2020
Code:
IETP-1-506-n
Faculty of:
Computer Science, Electronics and Telecommunications
Study level:
First-cycle studies
Specialty:
-
Field of study:
Electronics and Telecommunications
Semester:
5
Profile of education:
Academic (A)
Lecture language:
Polish
Form and type of study:
Part-time studies
Course homepage:
 
Responsible teacher:
dr inż. Frankowski Marek (mfrankow@agh.edu.pl)
Module summary

Programowanie obiektowe. Projektowanie współczesnych aplikacji obiektowych. UML i wzorce projektowe oprogramowania.

Description of learning outcomes for module
MLO code Student after module completion has the knowledge/ knows how to/is able to Connections with FLO Method of learning outcomes verification (form of completion)
Social competence: is able to
M_K001 Student ma świadomość ciągłego podnoszenia swoich kwalifikacji. ETP1A_K01 Case study
M_K002 Student ma świadomość odpowiedzialności za pracę własną oraz gotowość podporządkowania się zasadom pracy w zespole i ponoszenia odpowiedzialności za wspólnie realizowane zadania. ETP1A_K04 Involvement in teamwork
M_K003 Student potrafi wykorzystać opanowane technologie w przedsiębiorstwach oraz projektach komercyjnych. ETP1A_K04 Participation in a discussion
Skills: he can
M_U001 Student potrafi opracować i zaimplementować określony algorytm posługując się podstawowymi mechanizmami programowania obiektowego, potrafi korzystać z zasobów biblioteki STL oraz funkcji i klas szablonowych do tworzenia oprogramowania. ETP1A_U15 Test
M_U002 Student potrafi konstruować oprogramowanie zgodnie z określonymi standardami programistycznymi, tworzyć proste graficzne interfejsy użytkownika oraz tworzyć odpowiednią dokumentację projektu. ETP1A_U15 Test
Knowledge: he knows and understands
M_W001 Student posiada wiedzę w zakresie sposobów reprezentacji danych w programie, stosowania podstawowych instrukcji, operatorów, wyrażeń i funkcji w językach C/C++. ETP1A_W06, ETP1A_W14 Test
M_W002 Student posiada wiedzę dotyczącą języków programowania obiektowego, dostępnych bibliotek oraz ich zastosowań. ETP1A_W06, ETP1A_W14 Test
M_W003 Student posiada wiedzę dotyczącą klas i obiektów, mechanizmów dziedziczenia, polimorfizmu, przeciążania operatorów, tworzenia funkcji wirtualnych oraz rzutowania typów, tworzenia funkcji i klas szablonowych, dysponuje wiedzą z zakresu elementów biblioteki STL, jak również zasad tworzenia i testowania oprogramowania. ETP1A_W06, ETP1A_W14 Test
M_W004 Student zna podstawy języka UML oraz umie go zastosować do opisu wzorców projektowych oprogramowania ETP1A_U15, ETP1A_W14 Activity during classes
Number of hours for each form of classes:
Sum (hours)
Lecture
Audit. classes
Lab. classes
Project classes
Conv. seminar
Seminar classes
Pract. classes
Zaj. terenowe
Zaj. warsztatowe
Prace kontr. przejść.
Lektorat
30 16 0 14 0 0 0 0 0 0 0 0
FLO matrix in relation to forms of classes
MLO code Student after module completion has the knowledge/ knows how to/is able to Form of classes
Lecture
Audit. classes
Lab. classes
Project classes
Conv. seminar
Seminar classes
Pract. classes
Zaj. terenowe
Zaj. warsztatowe
Prace kontr. przejść.
Lektorat
Social competence
M_K001 Student ma świadomość ciągłego podnoszenia swoich kwalifikacji. + - + - - - - - - - -
M_K002 Student ma świadomość odpowiedzialności za pracę własną oraz gotowość podporządkowania się zasadom pracy w zespole i ponoszenia odpowiedzialności za wspólnie realizowane zadania. + - + - - - - - - - -
M_K003 Student potrafi wykorzystać opanowane technologie w przedsiębiorstwach oraz projektach komercyjnych. + - + - - - - - - - -
Skills
M_U001 Student potrafi opracować i zaimplementować określony algorytm posługując się podstawowymi mechanizmami programowania obiektowego, potrafi korzystać z zasobów biblioteki STL oraz funkcji i klas szablonowych do tworzenia oprogramowania. + - + - - - - - - - -
M_U002 Student potrafi konstruować oprogramowanie zgodnie z określonymi standardami programistycznymi, tworzyć proste graficzne interfejsy użytkownika oraz tworzyć odpowiednią dokumentację projektu. + - + - - - - - - - -
Knowledge
M_W001 Student posiada wiedzę w zakresie sposobów reprezentacji danych w programie, stosowania podstawowych instrukcji, operatorów, wyrażeń i funkcji w językach C/C++. + - + - - - - - - - -
M_W002 Student posiada wiedzę dotyczącą języków programowania obiektowego, dostępnych bibliotek oraz ich zastosowań. + - + - - - - - - - -
M_W003 Student posiada wiedzę dotyczącą klas i obiektów, mechanizmów dziedziczenia, polimorfizmu, przeciążania operatorów, tworzenia funkcji wirtualnych oraz rzutowania typów, tworzenia funkcji i klas szablonowych, dysponuje wiedzą z zakresu elementów biblioteki STL, jak również zasad tworzenia i testowania oprogramowania. + - + - - - - - - - -
M_W004 Student zna podstawy języka UML oraz umie go zastosować do opisu wzorców projektowych oprogramowania - - - - - - - - - - -
Student workload (ECTS credits balance)
Student activity form Student workload
Summary student workload 86 h
Module ECTS credits 3 ECTS
Udział w zajęciach dydaktycznych/praktyka 30 h
Preparation for classes 24 h
przygotowanie projektu, prezentacji, pracy pisemnej, sprawozdania 8 h
Realization of independently performed tasks 24 h
Module content
Lectures (16h):

Zajęcia w ramach modułu prowadzone są w postaci wykładu (18 godzin) oraz ćwiczeń laboratoryjnych (16 godzin).

Wykłady

1. Podstawy – Wprowadzenie do programowania obiektowego w C++

Wstęp do programowania; Przegląd języków programowania; Etapy budowy oprogramowania; Elementy Unified Modeling Language (UML): diagramy przypadków użycia, aktywności; Podstawy reprezentacji danych: stałe i zmienne, podstawowe typy danych i zasady ich używania (int, char, long, double); Podstawy C++: instrukcje if oraz for, podstawowe operatory arytmetyczne oraz logiczne, elementarne funkcje, przydatne obiekty (cout, cin, vector<>, string) wraz z przykładami; Przykład użycia podstawowych konstrukcji języka do implementacji prostego przykładu.

2. Podstawowe instrukcje, operatory, wyrażenia i funkcje

Podstawowe instrukcje C/C++: warunkowa (if, switch-case), pętle (while, for, do-while), throw-try-catch; Przegląd wszystkich grup operatorów, prawa hierarchii oraz łączności: arytmetyczne, logiczne, bitowe, warunkowe, inne; Wskaźniki: rola, składania, semantyka; Tablice; Struktury; Referencje; Budowa wyrażeń; Funkcje: rola, struktura, przekazywanie parametrów do funkcji, zwracanie wartości z funkcji; Organizacja projektu C/C++: preprocesing, kompilacja, konsolidacja, debuggowanie; Przykłady w rzeczywistych aplikacjach;

3. Programowanie obiektowe

Koncepcja obiektu i klasy: zasadnicze paradygmaty programowania obiektowego (encapsulation, polymorphism, code reusability, code safety), relacje has-a, is-a, knows; Anatomia klasy: składowe klasy, wskaźnik this, ochrona składowych, grupa metod konstrukcyjnych, grupa metod dostępu do danych, operacje input/output, static members, member pointers; Typ enumerowany; Zasady projektowania klas na przykładach; Przeciążąnie operatorów: podstawowe konstrukcje, przykłady; Dziedziczenie i polimorfizm: podstawowe pojęcia, funkcje wirtualne, projektowanie hierarchii klas, wirtualne klasy bazowe; Rzutowanie typów; Klasy specjalne: funktory, friends; Obsługa wyjątków; Przestrzenie nazw; Analiza istniejących rozwiązań;

4. Szablony C++

Idea meta-programowania, wstęp od szablonów; Funkcje szablonowe: deklaracja parametrów; Szablony klas: deklaracja parametrów szablonowych, sposoby łączenia, template-template parameters, szablony typowe, szablony nietypowe, funkcje wirtualne, szablonowe składowe klasy (template members), parametry domniemane (default), szablonowe hierarchie klas. Instancjacja klas szablonowych; Proces dedukcji argumentów szablonowych; Specjalne klasy szablonowe: traits oraz policy, funkcje określania typu, smart pointers, funktory oraz funcje typu callback; Metodyka projektowania konstrukcji szablonowych; Przykłady w rzeczywistych aplikacjach;

5. Biblioteka standardowa STL

Wprowadzenie do STL: przykład użycia podstawowych konstrukcji (vector, string), podział biblioteki (kontenery, iteratory, algorytmy); Podstawowe kontenery, ich właściwości oraz użycie: vector, list, set oraz multiset, maps oraz multimaps; Iteratory: kategorie iteratorów (input, output, forward, bidirectional, random access), adaptery iteratorów; Obiekty funkcyjne STL: budowa oraz używanie predykatów; Algortymy STL: niemodyfikujące (liczenie elementów, minimum/maksimum, przeszukiwanie kontenerów, porównywanie zakresów), modyfikujące (kopiowanie, transformacje, zamiana, przypisywanie wartości elementów), usuwające składowe kontenerów, mutujące (odwracanie kolejności, rotacje, permutacje), sortowanie, algorytmy numeryczne; Kontenery specjalne: kolejka, stos; Operacje input/output: podstawowe klasy I/O, przeciążenia operatorów stream, manipulatory, formatowanie, dostęp do plików, strumienie ciągów znakowych;

6. Elementy projektowania oprogramowania. Konstrukcje zaawansowane

Rozszerzenie wiadomości o UML; Projektowanie oprogramowania: etapy konstrukcyjne, dokumentacja; Standardy programistyczne; Konstrukcja bibliotek; Testowanie oprogramowania: rodzaje błędów, konstruowanie testów, programowanie przez kontrakt, sztuka debuggowania;

7. Inne języki obiektowe

Wstęp do języka Python: specyfika języków skryptowych, podstawowe konstrukcje, tryby używania języka, różnice w stosunku do C++, programowanie obiektowe, wstęp do bibliotek Pythona; Przykłady w rzeczywistych aplikacjach;

Laboratory classes (14h):

Ćwiczenia laboratoryjne

1. Opracowanie oraz implementacja problemu reprezentacji oraz obliczania pierwiastków trójmianu kwadratowego – Praca w środowisku Linux, dokumentacja wykonywanego zadania, realizacja programowa, metody kompilacji, konsolidacji oraz debuggowania, metody radzenia sobie z błędami.
2. Opracowanie oraz implementacja kalkulatora walut – Praca w środowisku Visual C++, utworzenie aplikacji do poszukiwania kursów walut w danych z banku, realizacja połączenia internetowego, projekt interfejsu użytkownika (GUI), wykonanie w MFC i/lub FLTK.
3. Opracowanie oraz implementacja dziennika zajęć – Implementacja prostej bazy danych z funkcjami dodawania/usuwania/sortowania rekordów; Umiejętność obsługi operacji wejścia/wyjścia, praca z plikami.
4. Opracowanie oraz implementacja klasy liczb zespolonych – Implementacja klasy liczb zespolonych, przeciążanie operatorów, operacje przesyłania danych do i z plików, operatory konwersji typów. Implementacja metod programowania “przez kontrakt”.
5. Opracowanie oraz implementacja klasy do reprezentacji macierzy, wzorzec handle-body, wzorzec proxy – Implementacja określonych wzorców projektowych na przykładzie macierzy. Przykłady wykorzystania w aplikacjach obliczeniowych.
6. Opracowanie oraz implementacja aplikacji wykorzystującej grafikę komputerową z OpenGL – zapoznanie z biblioteką graficzną OpenGL, projekt prostej aplikacji w oparciu o zasoby biblioteki graficznej, praca z hierarchiami klas oraz z funkcjami wirtualnymi. Przykłady wykorzystania w aplikacjach graficznych.
7. Opracowanie oraz implementacja prostej gry komputerowej – Stworzenie aplikacji zgodnie z prawidłowymi wzorcami projektowymi, modelowanie problemu za pomocą języka UML, dokumentacja projektu.
8. Projekt własny – Projekt i implementacja własnej aplikacji napisanej w języku Python; Wykorzystanie bibliotek Python, zarządzanie projektem oraz grupą projektową.

Additional information
Teaching methods and techniques:
  • Lectures: Treści prezentowane na wykładzie są przekazywane w formie prezentacji multimedialnej w połączeniu z klasycznym wykładem tablicowym wzbogaconymi o pokazy odnoszące się do prezentowanych zagadnień.
  • Laboratory classes: W trakcie zajęć laboratoryjnych studenci samodzielnie rozwiązują zadany problem praktyczny, dobierając odpowiednie narzędzia. Prowadzący stymuluje grupę do refleksji nad problemem, tak by otrzymane wyniki miały wysoką wartość merytoryczną.
Warunki i sposób zaliczenia poszczególnych form zajęć, w tym zasady zaliczeń poprawkowych, a także warunki dopuszczenia do egzaminu:

Ocenie podlega rozwiązywanie problemów zadanych na zajęciach, wykonywanie programistycznych zadań domowych oraz pisanie, krótkich kartkówek na zajęciach. Aby uzyskać zaliczenie należy zebrać przynajmniej 50% z każdej z tych trzech części. Następnie ocena jest wyznaczana zgodnie z regulaminem studiów.

Participation rules in classes:
  • Lectures:
    – Attendance is mandatory: No
    – Participation rules in classes: Studenci uczestniczą w zajęciach poznając kolejne treści nauczania zgodnie z syllabusem przedmiotu. Studenci winni na bieżąco zadawać pytania i wyjaśniać wątpliwości. Rejestracja audiowizualna wykładu wymaga zgody prowadzącego.
  • Laboratory classes:
    – Attendance is mandatory: Yes
    – Participation rules in classes: Studenci wykonują ćwiczenia laboratoryjne zgodnie z materiałami udostępnionymi przez prowadzącego. Student jest zobowiązany do przygotowania się w przedmiocie wykonywanego ćwiczenia, co może zostać zweryfikowane kolokwium w formie ustnej lub pisemnej. Zaliczenie zajęć odbywa się na podstawie zaprezentowania rozwiązania postawionego problemu. Zaliczenie modułu jest możliwe po zaliczeniu wszystkich zajęć laboratoryjnych.
Method of calculating the final grade:

Ocena końcowa jest oceną z laboratorium.

Sposób i tryb wyrównywania zaległości powstałych wskutek nieobecności studenta na zajęciach:

W przypadku nieobecności nie przekraczających liczby dopuszczalnej przez regulamin studiów, sposób nadrobienia materiału określa prowadzący laboratorium (zadanie domowe lub kolokiwum poprawkowe).

Prerequisites and additional requirements:

Podstawy metodyki i technik programowania

Recommended literature and teaching resources:

Stroustrup B. The C++ Programming Language, 2000 (tł. polskie: Język C++, WNT).
Vandervoorde D., Josuttis N.M. C++ Templates. Addison Wesley, 2003 (tł. polskie: C++. Szablony. Vademecum profesjonalisty, Helion).
J. Grębosz: Symfonia C++ standard. Wydawnictwo Edition 2000, Kraków 2005.
E. Gamma, J. Vlissides, R. Johnson, R. Helm, Wzorce projetkowe. Elementy oprogramowania wielokrotnego użytku, Wydawnictwo Helion, 2012.

Darmowe materiały online:
https://www.omg.org/spec/UML/
https://books.goalkicker.com/CPlusPlusBook/

Scientific publications of module course instructors related to the topic of the module:

- Spatial Spectrum Analyzer (SSA): A tool for calculations of spatial distribution of fast Fourier transform spectrum from Object Oriented Micromagnetic Framework output data, Marek Frankowski, Jakub Chęciński, Maciej Czapkiewicz, Computer Physics Communications 189, 207-212, 2015
- MAGE (M-file/Mif Automatic GEnerator): A graphical interface tool for automatic generation of Object Oriented Micromagnetic Framework configuration files and Matlab scripts for results analysis, Jakub Chęciński, Marek Frankowski, Computer Physics Communications 207, 487–498, 2016
- Electric-field tunable spin waves in PMN-PT/NiFe heterostructure: Experiment and micromagnetic simulations, Sławomir Ziętek, Jakub Chęciński, Marek Frankowski, Witold Skowroński, Tomasz Stobiecki, Journal of Magnetism and Magnetic Materials 428, 64–69, 2017

Additional information:

None