CITB202 Обектно ориентирано проектиране със С++
Анотация:
Курсът предлага основите на обектно-ориентираното програмиране, като набляга на разработката на ефективни системи за многократна употреба. Темите включват капсулация, полиморфизъм, предефиниране, управление на паметта, обработка на изключения, дизайн на шаблони и библиотеки.
Преподавател(и):
доц. Георги Петров д-р
гл. ас. Валентина Иванова д-р
Описание на курса:
Компетенции:
Успешно завършилите курса студенти:
1) Знаят:
• Указатели, заделяне на памет и освобождаване на памет.
• Наследяване, базов клас, клас-наследник, полиморфизъм.
• Наследствена йерархия на класовете потоци, потоци и символни низове, случаен достъп във файл.
• Основни алгоритми за сортировка и анализ на тяхната изчислителна сложност.
• Предефиниране на оператори, автоматично управление на паметта, шаблони, вложени класове и пространство от имена, обработка на изключенията.
2) Могат:
• Да използват указатели.
• Да пишат класове.
• Да четат и съхраняват данни в текстови файлове.
• Да пишат и анализират сортиращи алгоритми.
• Да реализират свързани списъци, стекове и опашки.
Предварителни изисквания:
Студентите да имат знания и умения:
• Увод в езиците C и C++
• Програмиране на C и C++
Форми на провеждане:
Редовен
Учебни форми:
Лекция
Език, на който се води курса:
Български
Теми, които се разглеждат в курса:
ОСНОВНИ ТЕМИ
1. Указатели: деклариране и използване на указатели, указатели и масиви, динамично заделяне на памет, масиви и вектори от указатели, структури и указатели.
2. Потоци: четене и съхранение на данни в текстови файлове, йерархия на класовете потоци, потоци и символни низове, аргументи в командния ред, случаен достъп и двоични файлове.
3. Класове: обектно-ориентирано програмиране, публичен интерфейс на клас, членове данни, член функции, конструктори, указатели към обекти.
4. Наследяване: базов клас и клас-наследник, обръщение към конструктора на базовия клас, полиморфизъм.
5. Рекурсия: триъгълни числа, пермутации, рекурсивно мислене, рекурсивни помощни функции, взаимна рекурсия, ефективност на рекурсията.
6. Въведение в структурите от данни: свързани списъци, стекове и опашки, други стандартни контейнери, стандартни алгоритми.
7. Теми за напреднали: предефиниране на оператори, автоматично управление на паметта, управление на паметта за свързани списъци. Шаблони, вложени класове, пространства от имена, обработка на изключения.
Литература по темите:
Cay Horstmann, C++ For Everyone, 2nd Edition, Wiley, 2011.
C. Horstmann, T. Budd, Big C++, 2nd ed., Wiley, 2008.
Средства за оценяване:
Три практически теста по време на семестъра, които представляват разработка на програми на C++ по зададена задача. Три домашни задания.