Programowanie obiektowe 1
0800-PROBIEKT1
Program zajęć:
1. Projektowanie obiektowe - kapsułkowanie, ochrona danych
2. Klasy i obiekty, ochrona danych przez modyfikatory dostępu
3. Tworzenie i destrukcja obiektów i tablic obiektów
4. Polimorfizm – przeciążanie operatorów
5. Dziedziczenie,
a. Klasy bazowe i pochodne, hierarchie klas
b. Dziedziczenie wielokrotne, dziedziczenie wirtualne
6. Abstrakcyjne typy danych
a. Metody wirtualne, klasy abstrakcyjne, wirtualne destruktory
b. Interfejsy a klasy abstrakcyjne
7. Wzorce (ang. templates) funkcji i klas
8. Obsługa wyjątków
9. Specyfika C++
a. l-wartości i r-wartości, efektywne przekazywanie argumentów itp.
b. Przestrzenie nazw
c. RTTI - runtime type identification
d. Standard Template Library (STL)
10. Rozszerzenia języka C++ w standardach C++11, C++14, C++17 i C++20
Całkowity nakład pracy studenta
Godziny realizowane z udziałem nauczycieli (60 godz.):
- udział w wykładach – 30 godz.
- udział w laboratorium – 30 godz.
Czas poświęcony na pracę indywidualną studenta (80 godz.):
- przygotowanie do laboratorium – 30 godz.
- pisanie prac, projektów oraz przygotowanie do kolokwium – 50 godz.
Łącznie: 140 godz. (5 punktów ECTS)
Efekty uczenia się - wiedza
W01: posiada wiedzę w zakresie tworzenia i analizy algorytmów, analizy ich złożoności obliczeniowej, zapisu algorytmów w języku C++.
W02: posiada wiedzę na temat projektowania i programowania obiektowego z użyciem narzędzi dostępnych w języku C++.
W03: ma podstawową wiedzę o cyklach życia systemów projektowanych i implementowanych obiektowo; posiada wiedzę w zakresie obiektowych konstrukcji systemów, posiada wiedzę o przydatnych narzędziach, bibliotekach programowania obiektowego i sposobach ich wykorzystania do budowania systemów.
W04: zna metody i techniki rozwiązywania zadań inżynierskich poprzez odpowiednie projektowanie obiektowych modeli.
W05: zna możliwości narzędzi programistycznych w zakresie tworzenia obiektowo-zorientowanych rozwiązań.
Efekty przedmiotowe W01-W05 realizują efekty kierunkowe:
- dla informatyki stosowanej: K_W04, K_W10, K_W11,
- dla fizyki technicznej: K_W05, K_W07
Efekty uczenia się - umiejętności
U01: ma umiejętność formułowania algorytmów i ich programowania z użyciem wybranych narzędzi programistycznych oraz potrafi ocenić złożoność obliczeniową algorytmów i problemów informatycznych
U02: potrafi stworzyć model obiektowy prostego systemu informatycznego; potrafi zastosować metody analizy problemu, wyodrębniania niezależnych modułów, uogólniania zagadnień dla tworzenia rozwiązań problemów w postaci obiektowo zorientowanych modeli
U03: potrafi dokonać identyfikacji i sformułować specyfikację prostych zadań informatyczno-inżynierskich; potrafi wykorzystywać właściwe narzędzia programistyczne w celu obsługi obiektowo zorientowanych projektów
U04: potrafi - zgodnie z zadaną specyfikacją - zaprojektować oraz zrealizować prosty system informatyczny, używając właściwych metod, technik i narzędzi,
U05: potrafi wykonać prostą analizę sposobu funkcjonowania oprogramowania, systemu informatycznego, czy infrastruktury informatycznej
U06: potrafi ocenić, na podstawowym poziomie, przydatność rutynowych metod i narzędzi informatycznych oraz wybrać i zastosować właściwą metodę i narzędzia do typowych zadań informatycznych
U07: umie planować i przeprowadzać zaawansowane eksperymenty lub obserwacje zbudowanych modeli informatycznych dla różnego rodzaju zadań,
U08: potrafi zaadaptować wiedzę i metody fizyki do projektowania właściwych modeli komputerowych.
Efekty przedmiotowe U01-U08 realizują efekty kierunkowe:
- dla informatyki stosowanej: K_U08, K_U10, K_U12, K_U13, K_U21, K_U22,
- dla fizyki technicznej: K_U02, K_U05
Metody dydaktyczne
Wykład ilustrowany jest licznymi przykładami. Materiały są udostępniane w formie elektronicznej.
Problemy projektowe i implementacyjne są dyskutowane i rozwiązywane w trakcie wykładu i w ramach laboratorium.
Metody dydaktyczne podające:
- wykład informacyjny (konwencjonalny)
Metody dydaktyczne poszukujące:
- klasyczna metoda problemowa
- laboratoryjna
- projektu
Metody dydaktyczne eksponujące
- pokaz
Metody dydaktyczne podające
- wykład informacyjny (konwencjonalny)
Metody dydaktyczne poszukujące
- klasyczna metoda problemowa
- projektu
- laboratoryjna
Wymagania wstępne
Kurs programowania strukturalnego w języku C, kurs języków programowania, języka C.
Koordynatorzy przedmiotu
Kryteria oceniania
Metody oceniania:
kolokwia sprawdzają efekty W01-W05
projekty i praca bieżąca w ramach laboratorium sprawdzają efekty U01-U08
Kryteria oceniania:
Wykład: egzamin na ocenę:
ndst < 50%
dst >= 50%
dst plus >= 57,5%
db >= 65%
db plus >= 72,5%
bdb >= 80%
Laboratorium – zaliczenie na ocenę na podstawie oceny przygotowanych projektów i pracy bieżącej oraz ewentualnie wyników kolokwium (wówczas z wagami 60% i 40% odpowiednio dla projektów i kolokwium):
ndst < 50%
dst >= 50%
dst plus >= 57,5%
db >= 65%
db plus >= 72,5%
bdb >= 80%
Literatura
1. Krzysztof Grąbczewski, Slajdy do wykładu, http://www.is.umk.pl/~kg/zajecia/PO.pdf.
2. Bjarne Stroustrup "Język C++", WNT 2002.
3. Stanley B. Lippman, Josee Lajoie "Podstawy języka C++", WNT 2001.
4. Specyfikacja standardu języka C++ - "draft" – 2.12.1996.
5. http://www.stroustrup.com/C++11FAQ.html
6. https://en.cppreference.com/w/cpp/language
7. https://lhcb.github.io/developkit-lessons/first-development-steps/05-cpp.html
Więcej informacji
Dodatkowe informacje (np. o kalendarzu rejestracji, prowadzących zajęcia, lokalizacji i
terminach zajęć) mogą być dostępne w serwisie USOSweb: