Kod przedmiotu 07 67 3010 17
Liczba punktów ECTS 6
Nazwa przedmiotu w języku prowadzenia
Object Oriented Programming
Nazwa przedmiotu w języku polskim Object Oriented Programming (Programowanie obiektowe)
Nazwa przedmiotu w języku angielskim
Object Oriented Programming
Język prowadzenia zajęć angielski
Poziom studiów studia I stopnia
Kierownik przedmiotu dr inż. Arkadiusz Tomczyk
Realizatorzy przedmiotu dr inż. Przemysław Nowak, mgr inż. Wiktor Wandachowicz
Formy zajęć i liczba godzin w semestrze
Wykład Ćwiczenia Laboratorium Projekt Seminarium Inne Suma godzin w semestrze
Godziny kontaktowe 30 30 0 60
Czy e-learning Nie Nie Nie Nie Nie Nie
Kryteria oceny (waga) 0,50 0,50 0,00
Cel przedmiotu
  1. Zapoznanie studentów z obiektowym paradygmatem programowania.
  2. Nabycie przez studentów umiejętności praktycznego stosowania obiektowego paradygmatu programowania na przykładzie języka C++.
  3. Nabycie przez studentów podstawowych umiejętności analizy i projektowania programów obiektowych
Efekty kształcenia
  1. Wyjaśnić ideę i podstawowe pojęcia obiektowego paradygmatu programowania.
  2. Objaśnić podstawową notację diagramów klas języka UML.
  3. Tworzyć na podstawie wymagań użytkownika, niezależne od języka programowania, projekty obiektowe zadanych aplikacji z wykorzystaniem diagramów klas języka UML.
  4. Wymienić mechanizmy języków programowania wspierające obiektowy paradygmat programowania oraz omówić je na przykładzie języka C++.
  5. Tworzyć programy obiektowe w języku C++ w oparciu o wcześniej stworzone projekty obiektowe.
  6. Korzystać z obiektowych elementów standardowej biblioteki języka C++, a także korzystać z istniejących oraz tworzyć własne biblioteki w tym języku.
  7. Dyskutować możliwe warianty projektu obiektowego oraz możliwe sposoby jego implementacji w języku C++ i uzasadniać przyjęte rozwiązania.
Metody weryfikacji efektów kształcenia
1. egzamin
2. egzamin
3. projekt
4. egzamin
5. projekt, kolokwium laboratoryjne
6. projekt, kolokwium laboratoryjne
7. projekt

 
Wymagania wstępne
Podstawy progamowania (student zna podstawy strukturalnego paradygmatu programowania, student potrafi wyrazić podstawowe algorytmy w języku C)
Treści kształcenia z podziałem na formy
WYKŁAD

Paradygmaty programowania. Programowanie strukturalne, proceduralne, obiektowe. Przykłady.

Podstawowe pojęcia programowania obiektowego: klasa, obiekt, atrybut, usługa, hermetyzacja, dziedziczenie, polimorfizm, interfejs. Zależności i komunikacja między obiektami.

Wybrane elementy inżynieria oprogramowania (projektowanie, implementacja, testowanie). Diagram klas UML. Wzorce projektowe. Tworzenie i wykorzystanie bibliotek.

Programowanie obiektowe a języki programowania. Język C++ jako przykład języka wspierającego programowanie obiektowe: klasy, obiekty, pola, metody, konstruktory, destruktory, kwalifikatory dostępu, dziedziczenie, lista inicjalizacyjna, konstruktory kopiujące, przeciążanie operatorów, metody wirtualne, klasy abstrakcyjne, metody czysto wirtualne. 

Programowanie generyczne. Wzorce klas, funkcji i metod języka C++ jako przykład tworzenia oprogramowania generycznego.

Obsługa błędów z wykorzystaniem mechanizmu wyjątków. Standardowa biblioteka języka C++ ze szczególnym uwzględnieniem biblioteki STL. Korzystanie ze standardowej biblioteki ze szczególnym uwzględnieniem obsługi strumieni, wzorców klas kontenerowych oraz algorytmów uogólnionych.

Wybrane elementy nowego standardu języka C++: wyrażenia lambda, sprytne wskaźniki, metody inicjalizacji zmiennych i struktur, itp.

ĆWICZENIA LABORATORYJNE

Celem ćwiczeń laboratoryjnych jest nabycie praktycznych umiejętności w zakresie projektowania i implementacji z wykorzystaniem metodologii obiektowej i własności języka C++.

Zajęcia będą podzielone na dwie części. Przez pierwszą część zajęć grupy realizować będą projekt pod nadzorem prowadzącego bazując na wiedzy nabytej w trakcie wykładów. Ta część nie będzie oceniana. W drugiej części zajęć studenci będą przygotowywać własny projekt (dokumentacja i implementacja) oraz pisać kolokwium laboratoryjne. Ocena końcowa będzie średnią ważoną z oceny za projekt i oceny z kolokwium.
Literatura podstawowa
  1. Stroustrup B.: Programming: Principles and Practice Using C++, Addison-Wesley, 2014 (http://www.stroustrup.com)
  2. Eckel B.: Thinking in C++, Vol. 1: Introduction to Standard C++, 2nd Edition, Prentice Hall, 2000 (https://archive.org/details/TICPP2ndEdVolOne)
  3. Eckel B., Allison Ch.: Thinking in C++, Volume 2: Practical Programming, Pearson 2003 (https://archive.org/details/TICPP2ndEdVolTwo)
  4. UML specification, https://www.omg.org/spec/UML/2.0/
Literatura uzupełniająca
  1. Subversion documentation, https://subversion.apache.org/
  2. Git documentation, https://git-scm.com/
  3. Make documentation, https://www.gnu.org/software/make/
  4. CMake documentation, https://cmake.org/
  5. Boost library documentation, https://www.boost.org/
Przeciętne obciążenie godzinowe studenta pracą własną
98
Uwagi
Metody i narzędzia dydaktyczne:

1. prezentacja, studium przypadku
2. prezentacja, zajęcia warsztatowe
3. studium przypadku, zajęcia warsztatowe, samodzielne przygotowanie projektu
4. studium przypadku, zajęcia warsztatowe
5. studium przypadku, zajęcia warsztatowe, samodzielna implementacja projektu
6. studium przypadku, zajęcia warsztatowe, samodzielna implementacja projektu
7. zajęcia warsztatowe, dyskusja 
Aktualizacja 2018-09-12 22:01:39