Specjalność studiów I i II stopnia
Oferta dydaktyczna IAiR

Zaawansowane techniki programowania

Cel

Nauka zaawansowanych technik programowania na przykładzie języka C++.

Opis

Przedmiot poświęcony jest zaawansowanym technikom programowania w języku C++. Zaczyna się od przedstawienia filozofii działania języka, krótkiego przypomnienia typów danych i instrukcji, ze szczególnym uwzględnieniem działań preprocesora.

Druga część przedmiotu jest poświęcona zaawansowanemu programowaniu zorientowanemu obiektowo - dziedziczeniu wielokrotnemu, klasom abstrakcyjnym, dokładnemu omówieniu zastosowań polimorfizmu.

W trzeciej części omówiono programowanie generyczne, szablony klas i funkcji, oraz bibliotekę STL.

Na koniec przedstawiono techniki programowania wykorzystywane przy tworzeniu plug-inów, obiektów ActiveX i podobnych, programowaniu zastosowań sieciowych i komunikacji z bazami danych.

Wymagania

Znajomość podstaw programowania strukturalnego i obiektowego. Znajomość składni języka C++. Znajomość podstawowych algorytmów i struktur danych, podstaw sieci komputerowych i systemów operacyjnych

Bibliografia

  1. "Zaawansowane C++" - podręcznik OKNO
  2. Bjarne Stroustrup, "Język C++"
  3. Victor Shtern "C++ Inżynieria oprogramowania"
  4. David Vandevoorde, Nicolai Josuttis, "C++ Szablony"
  5. Scott Meyers, "STL w praktyce"

Metody oceny

Końcowa ocena przedmiotu składa się z: rn- oceny projektu (60%)rn- oceny uzyskanej z testu egzaminacyjnego (40%)

Szczegółowy rozkład zajęć

Nr Temat Opis Wymiar
1 Składnia języka C++ Kompendium składni języka C++ - typy danych i ich wewnętrzna reprezentacja, wyrażenia, operatory i priorytety, instrukcje - wewnętrzne mechanizmy. Czas życia zmiennych, zasięg zmiennych. Alokacja i zwalnianie pamięci. Etapy kompilacji dla języka C++. Preprocesor i jego zadania. Makrodefinicje, łączenie wielu plików, dołączanie bibliotek zewnętrznych linkowanych statycznie i dynamicznie. Praca z projektami i debuggerem. W 2
3 Programowanie zorientowane obiektowo Dziedziczenie proste i wielokrotne, publiczne i prywatne. Skomplikowane hierarchie dziedziczenia. Reprezentacja typowego interfejsu w języku C++. Zasady wyszukiwania metod wirtualnych. Pola i metody statyczne oraz ich wykorzystanie. W 2
4 Wyjątki Reakcja na błędne sytuacje. Zgłaszanie i przechwytywanie wyjątków. Standardowe klasy wyjątków - właściwości i metody. Własne klasy wyjątków. Zgłaszanie wyjątków w konstruktorze i destruktorze W 1
5 Programowanie generyczne Co to są szablony? Przykłady szablonów funkcji i ich zastosowania. Szablony a makra, rozwijanie szabonu. Szablony funkcji a szablony klas. Polimorfizm statyczny vs. polimorfizm dynamiczny. Koncept i jego zastosowania. Typowe koncepty. W 2
6 Biblioteka STL Co to jest biblioteka STL? Koncepty wykorzystywane przez STL. Szablony kontenerów i ich zastosowania. Omówienie list, wektorów i kolejek. Opis zbiorów, kolejek, tablic asocjacyjnych wraz z przykładami zastosowań. Definicje własnych typów przechowywanych w kontenerach. Na co zwrócić uwagę, jak zrealizować pożądane ułożenie elementów w kontenerach uporządkowanych. Szablony algorytmów. Typy iteratorów dokładniej. Algorytmy podstawowe: sortowanie, przeszukiwania, podział, zamiana. Przykłady zastosowań. Tworzenie i wykorzystywanie obiektów składniowo zachowujących się jak funkcje. W 4
7 Przykłady zastosowań Opracowanie i implementacja obiektowego systemu wtyczek. Komunikacja z osadzonym i zewnętrznym silnikiem bazy danych. Aplikacje wielowątkowe - jak je pisać i jak to działa. Aplikacje sieciowe - przykład klienta i serwera. W 4
1 Projekt zespołowy Zadaniem studentów jest opracowanie niebanalnej aplikacji wyposażonej w mechanizm wtyczek, lub rozszerzanie istniejącego systemu. Projekt jest realizowany w 2-3 osobowych zespołach
P 15
Instytut Automatyki i Robotyki
Politechnika Warszawska