Politechnika Warszawska - Centralny System UwierzytelnianiaNie jesteś zalogowany | zaloguj się
katalog przedmiotów - pomoc

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
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 2019/2020 - sem. letni" (w trakcie)

Okres: 2020-02-22 - 2020-09-30
Wybrany podział planu:


powiększ
zobacz plan zajęć
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.