Politechnika Warszawska - Centralny System Uwierzytelniania
Strona główna

Programowanie obiektowe

Informacje ogólne

Kod przedmiotu: 103B-INxxx-ISP-PROI
Kod Erasmus / ISCED: (brak danych) / (brak danych)
Nazwa przedmiotu: Programowanie obiektowe
Jednostka: Wydział Elektroniki i Technik Informacyjnych
Grupy: ( Informatyka )-Automatyka i robotyka-inż.-EITI
( Metody wytwarzania oprogramowania )-Informatyka-inż.-EITI
( Przedmioty podstawowe )-Informatyka w multimediach-mgr.-EITI
( Przedmioty podstawowe )-Inteligentne systemy-mgr.-EITI
( Przedmioty podstawowe )-Sztuczna inteligencja-mgr.-EITI
( Przedmioty techniczne )---EITI
Punkty ECTS i inne: 4.00 Podstawowe informacje o zasadach przyporządkowania punktów ECTS:
  • roczny wymiar godzinowy nakładu pracy studenta konieczny do osiągnięcia zakładanych efektów uczenia się dla danego etapu studiów wynosi 1500-1800 h, co odpowiada 60 ECTS;
  • tygodniowy wymiar godzinowy nakładu pracy studenta wynosi 45 h;
  • 1 punkt ECTS odpowiada 25-30 godzinom pracy studenta potrzebnej do osiągnięcia zakładanych efektów uczenia się;
  • tygodniowy nakład pracy studenta konieczny do osiągnięcia zakładanych efektów uczenia się pozwala uzyskać 1,5 ECTS;
  • nakład pracy potrzebny do zaliczenia przedmiotu, któremu przypisano 3 ECTS, stanowi 10% semestralnego obciążenia studenta.
Język prowadzenia: polski
Jednostka decyzyjna:

103000 - Wydział Elektroniki i Technik Informacyjnych

Kod wydziałowy:

PROI

Numer wersji:

2

Skrócony opis:

Celem przedmiotu jest zapoznanie studenta z metodyką programowania i modelowania obiektowego oraz rodzajowego z wykorzystaniem mechanizmów języka C++.

Studenci nauczą się tworzyć abstrakcje bytów rzeczywistych w taki sposób aby ukrywać szczegóły techniczne, a jednocześnie pozwalać na łatwą rozbudowę oprogramowania. Podczas wkładu omawiane są konkretne mechanizmy języka, które używane są w trakcie realizacji zadań laboratoryjnych. Projekt, realizowany w zespołach kilkuosobowych, pozwala zdobyć umiejętności projektowania obiektowego aplikacji oraz rozwija umiejętność pracy grupowej.

Pełny opis:

Celem przedmiotu jest zapoznanie studenta z metodyką programowania i modelowania obiektowego oraz rodzajowego z wykorzystaniem mechanizmów języka C++.

Studenci nauczą się tworzyć abstrakcje bytów rzeczywistych w taki sposób aby ukrywać szczegóły techniczne, a jednocześnie pozwalać na łatwą rozbudowę oprogramowania. Podczas wkładu omawiane są konkretne mechanizmy języka, które używane są w trakcie realizacji zadań laboratoryjnych. Projekt, realizowany w zespołach kilkuosobowych, pozwala zdobyć umiejętności projektowania obiektowego aplikacji oraz rozwija umiejętność pracy grupowej.



Treść wykładu

  1. Ewolucja metod programowania: programowanie proceduralne, sterowane danymi, modularne. Zasada ukrywania szczegółów, abstrakcyjne typy danych. Pojęcia podstawowe programowania obiektowego: obiekty, klasy, dziedziczenie, polimorfizm; struktury dziedziczenia. Informacje wprowadzające o programowaniu rodzajowym. Przykład migracji rozwiązania problemu od wersji proceduralnej do obiektowej. (3 godz.)
  2. Projektowanie obiektowe: modelowanie obiektowe, podstawy modelowania, diagramy klas UML, omówienie relacji dziedziczenia, agregacji i kompozycji. Narzędzia kontroli wersji i pracy grupowej, określenie zadań, punktów kontrolnych. Podstawy testowania – testy jednostkowe, TDD. Przenośność kodu, refaktoryzacja kodu. Budowa aplikacji C++, kompilacja, konsolidacja, biblioteki, środowiska IDE. (3 godz.)
  3. Mechanizmy pomocnicze języka C++: podstawy składni języka (instrukcje warunkowe, pętle, kontenery iteratory - przykłady użycia), przegląd systemu typów, typ referencyjny; podstawy współpracy z WE/WY strumieniowym. Elementy programowania niskopoziomowego – język C. Przeciążenia funkcji i operatorów (polimorfizm statyczny), prototypy funkcji, listy parametrów formalnych, parametry predefiniowane; funkcje rozwijane. Tworzenie obiektów dynamicznych, operatory new, new [], delete, delete []. (4 godz.)
  4. Klasy autonomiczne: definiowanie klas samodzielnych, składowe klasy, kontrola dostępu; zaprzyjaźnienia. Konstruktory i destruktory. Różnice pomiędzy klasami z wyróżnikiem class, struct i union. Projektowanie klas autonomicznych, klasa Fraction. Składowe statyczne. Klasy ze zmienną strukturą wewnętrzną, postać kanoniczna. Klasy zagnieżdżone, zastosowanie. (3 godz.)
  5. Szablony i podstawy programowania rodzajowego. Definiowanie szablonów klas i funkcji, parametryzacja szablonów. Specjalizacje szablonów. Funkcje składowe szablonowe. Zasady programowania rodzajowego. (3 godz.)
  6. Dziedziczenie i polimorfizm: dziedziczenie bezpośrednie, pośrednie, pojedyncze, wielobazowe. Klasy bazowe wirtualne. Dziedziczenie a zawieranie. Polimorfizm dynamiczny, funkcje wirtualne, mechanizm aktywacji funkcji wirtualnych; obiekty polimorficzne. Funkcje wirtualne czyste, klasy abstrakcyjne i interfejsy. Szablony w dziedziczeniu. Model obiektu w C++. Tworzenie i destrukcja obiektów polimorficznych. (4 godz.)
  7. Obsługa sytuacji wyjątkowych: mechanizm reagowania na sytuacje wyjątkowe, składnia i semantyka bloku try i bloków obsługi catch, aktywowanie wyjątku przez throw. Funkcje standardowe terminate(), unexpected (), set_terminate (), set_unexpected (). Zasady projektowania programów bezpiecznych, metodologia RAII, klasa szablonowa auto_ptr/unique_ptr. Wyjątki standardowe. (3 godz.)
  8. Polimorfizm i RTTI: Mechanizmy C++ do identyfikacji typów w czasie wykonania programu. Kontrolowane konwersje polimorficzne, zastosowania operatorów dynamic_cast i typeid; wyjątek bad_cast. (4 godz.)
  9. Biblioteka standardowa C++: Podstawowe akcesoria biblioteki - kontenery, iteratory i algorytmy. Klasyfikacja usług biblioteki standardowej; przegląd kontenerów sekwencyjnych i asocjacyjnych. Wsparcie dla współpracy ze strumieniami i przetwarzania tekstów. Elementy wielowątkowości, rozszerzenia C++14, C++17, proste wzorce projektowe. (3 godz.)



Zakres laboratorium

Studenci opracowują programy uwzględniające istotne aspekty programowania obiektowego. Problemy do rozwiązania obejmują: projektowanie klas autonomicznych, przeciążenie funkcji i operatorów, projektowanie klas ze zmienną strukturą obiektów, wykorzystanie reprezentacji grupowej obiektów, definiowanie szablonów klas i funkcji, wykorzystanie dziedziczenia i funkcji wirtualnych, obsługę sytuacji wyjątkowych, współpracę ze strumieniami, projektowanie klas kontenerowych i iteratorów a także wykorzystanie akcesoriów biblioteki standardowej.



Zakres projektu

W ramach projektu 2-3 osobowy zespół ma za zadanie przygotować kompletną aplikację. Wymagana jest odpowiednia dekompozycja projektu, podział zadań, projekt podziału na klasy, opracowanie mechanizmu komunikacji między klasami. Niezbędne jest korzystanie z narzędzi do wersjonowania kodu i pracy grupowej, oraz przygotowanie testów jednostkowych.

Literatura:

  1. B. Stroustrup: Język C++, WNT, 2002, 2008.
  2. B. Stroustrup: Język C++. Kompendium wiedzy, WNT, 2014.
  3. S.B. Lippman: Podstawy języka C++, WNT 2001, 2003.
  4. Jerzy Grębosz: Opus magnum C++11. Programowanie w języku C++, Helion 2017.
  5. Bruce Eckel: Thinking in C++. Edycja polska, tom1, tom2 Helion 2002, 2004.
Metody i kryteria oceniania:

Sprawdzanie założonych efektów kształcenia realizowane jest przez:

  • ocenę wiedzy i umiejętności związanych z realizacją zadań laboratoryjnych – ocenę sprawozdań z realizacji zadań;
  • ocenę wiedzy i umiejętności związanych z realizacją zadań projektowych – ocenę prezentacji, dokumentacji i raportów z systemu;
  • ocenę wiedzy i umiejętności wykazanych na kolokwiach oraz – w przypadkach szczególnych – na kolokwium ustnym.

Zajęcia w cyklu "rok akademicki 2023/2024 - sem. letni" (w trakcie)

Okres: 2024-02-19 - 2024-09-30
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Laboratorium, 15 godzin, 180 miejsc więcej informacji
Projekt, 15 godzin, 180 miejsc więcej informacji
Wykład, 30 godzin, 180 miejsc więcej informacji
Koordynatorzy: Krzysztof Gracki
Prowadzący grup: Maciej Adamski, Krzysztof Chabko, Waldemar Grabski, Krzysztof Gracki, Rajmund Kożuszek, Agnieszka Malanowska, Mateusz Modrzejewski, Łukasz Neumann, Kinga Pilch, Janusz Rzeszut, Zbigniew Szymański, Eryk Warchulski
Lista studentów: (nie masz dostępu)
Zaliczenie: Ocena łączna
Jednostka realizująca:

103200 - Instytut Informatyki

Zajęcia w cyklu "rok akademicki 2023/2024 - sem. zimowy" (zakończony)

Okres: 2023-10-01 - 2024-02-18
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Laboratorium, 15 godzin, 120 miejsc więcej informacji
Projekt, 15 godzin, 120 miejsc więcej informacji
Wykład, 30 godzin, 120 miejsc więcej informacji
Koordynatorzy: Tomasz Śliwiński
Prowadzący grup: Krzysztof Gracki, Agnieszka Malanowska, Tomasz Śliwiński
Lista studentów: (nie masz dostępu)
Zaliczenie: Ocena łączna
Jednostka realizująca:

103100 - Instytut Automatyki i Informatyki Stosowanej

Zajęcia w cyklu "rok akademicki 2022/2023 - sem. letni" (zakończony)

Okres: 2023-02-20 - 2023-09-30
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Laboratorium, 15 godzin, 180 miejsc więcej informacji
Projekt, 15 godzin, 180 miejsc więcej informacji
Wykład, 30 godzin, 180 miejsc więcej informacji
Koordynatorzy: Krzysztof Gracki
Prowadzący grup: Krzysztof Chabko, Waldemar Grabski, Krzysztof Gracki, Rajmund Kożuszek, Agnieszka Malanowska, Mateusz Modrzejewski, Łukasz Neumann, Kinga Pilch, Janusz Rzeszut, Filip Sala, Piotr Salata, Eryk Warchulski
Lista studentów: (nie masz dostępu)
Zaliczenie: Ocena łączna
Jednostka realizująca:

103200 - Instytut Informatyki

Zajęcia w cyklu "rok akademicki 2022/2023 - sem. zimowy" (zakończony)

Okres: 2022-10-01 - 2023-02-19
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Laboratorium, 15 godzin, 120 miejsc więcej informacji
Projekt, 15 godzin, 120 miejsc więcej informacji
Wykład, 30 godzin, 120 miejsc więcej informacji
Koordynatorzy: Tomasz Śliwiński, Izabela Żółtowska
Prowadzący grup: Piotr Garbat, Krzysztof Gracki, Agnieszka Malanowska, Tomasz Śliwiński, Izabela Żółtowska
Lista studentów: (nie masz dostępu)
Zaliczenie: Ocena łączna
Jednostka realizująca:

103100 - Instytut Automatyki i Informatyki Stosowanej

Zajęcia w cyklu "rok akademicki 2021/2022 - sem. letni" (zakończony)

Okres: 2022-02-23 - 2022-09-30
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Laboratorium, 15 godzin, 180 miejsc więcej informacji
Projekt, 15 godzin, 180 miejsc więcej informacji
Wykład, 30 godzin, 180 miejsc więcej informacji
Koordynatorzy: Krzysztof Gracki
Prowadzący grup: Krzysztof Chabko, Waldemar Grabski, Krzysztof Gracki, Rajmund Kożuszek, Piotr Maciąg, Agnieszka Malanowska, Mateusz Modrzejewski, Łukasz Neumann, Justyna Stypułkowska
Lista studentów: (nie masz dostępu)
Zaliczenie: Ocena łączna
Jednostka realizująca:

103200 - Instytut Informatyki

Zajęcia w cyklu "rok akademicki 2021/2022 - sem. zimowy" (zakończony)

Okres: 2021-10-01 - 2022-02-22
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Laboratorium, 15 godzin, 120 miejsc więcej informacji
Projekt, 15 godzin, 120 miejsc więcej informacji
Wykład, 30 godzin, 120 miejsc więcej informacji
Koordynatorzy: Tomasz Śliwiński, Izabela Żółtowska
Prowadzący grup: Piotr Garbat, Agnieszka Malanowska, Tomasz Śliwiński, Izabela Żółtowska
Lista studentów: (nie masz dostępu)
Zaliczenie: Ocena łączna
Jednostka realizująca:

103100 - Instytut Automatyki i Informatyki Stosowanej

Zajęcia w cyklu "rok akademicki 2020/2021 - sem. letni" (zakończony)

Okres: 2021-02-20 - 2021-09-30
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Laboratorium, 15 godzin, 180 miejsc więcej informacji
Projekt, 15 godzin, 180 miejsc więcej informacji
Wykład, 30 godzin, 180 miejsc więcej informacji
Koordynatorzy: Krzysztof Gracki
Prowadzący grup: Krzysztof Chabko, Bartosz Dec, Adam Grabski, Waldemar Grabski, Krzysztof Gracki, Mateusz Krysicki, Agnieszka Malanowska, Mikołaj Markiewicz, Justyna Stypułkowska
Lista studentów: (nie masz dostępu)
Zaliczenie: Ocena łączna
Jednostka realizująca:

103200 - Instytut Informatyki

Zajęcia w cyklu "rok akademicki 2020/2021 - sem. zimowy" (zakończony)

Okres: 2020-10-01 - 2021-02-19
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Laboratorium, 15 godzin, 60 miejsc więcej informacji
Projekt, 15 godzin, 60 miejsc więcej informacji
Wykład, 30 godzin, 60 miejsc więcej informacji
Koordynatorzy: Tomasz Śliwiński
Prowadzący grup: Piotr Garbat, Agnieszka Malanowska, Tomasz Śliwiński, Izabela Żółtowska
Lista studentów: (nie masz dostępu)
Zaliczenie: Ocena łączna
Jednostka realizująca:

103100 - Instytut Automatyki i Informatyki Stosowanej

Zajęcia w cyklu "rok akademicki 2019/2020 - sem. letni" (zakończony)

Okres: 2020-02-22 - 2020-09-30
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Laboratorium, 15 godzin, 170 miejsc więcej informacji
Projekt, 15 godzin, 170 miejsc więcej informacji
Wykład, 30 godzin, 170 miejsc więcej informacji
Koordynatorzy: Krzysztof Gracki
Prowadzący grup: Krzysztof Chabko, Bartosz Dec, Piotr Garbat, Krzysztof Gracki, Agnieszka Malanowska, Mikołaj Markiewicz, Krzysztof Siwiec
Lista studentów: (nie masz dostępu)
Zaliczenie: Ocena łączna
Jednostka realizująca:

103200 - Instytut Informatyki

Opisy przedmiotów w USOS i USOSweb są chronione prawem autorskim.
Właścicielem praw autorskich jest Politechnika Warszawska.
pl. Politechniki 1, 00-661 Warszawa tel: (22) 234 7211 https://pw.edu.pl kontakt deklaracja dostępności USOSweb 7.0.0.0-7 (2024-03-18)