CITB205 Обектно ориентирано програмиране (С++)
Анотация:
Обектно-ориентираните езици за програмиране са основно средство за изграждане на големи и сложни софтуерни проекти. Понятието за клас се въвежда чрез идеята за дефиниран от програмиста тип, капсулиращ данни и функции. Наследяването се разглежда като средство за разширяване на съществуващи класове. Полиморфизмът се изяснява чрез примери за обработка на колекции от разнотипни обекти. Представени са и основните елементи на езика С++: предефинипаре на операции, класове-шаблони, обработка на изключения, стандартна библиотеки с шаблони.
http://nikolay.kirov.be/2020/CITB205/index.html
Преподавател(и):
доц. Николай Киров д-р
Кирил Вучков
доц. Стоян Мишев д-р
Описание на курса:
Компетенции:
1) знаят:
Основни понятия от езика С++: класове, спецификатори за достъп, конструктори и декструктори, предефиниране на функции и операции, наследяване, полиморфизъм, обработка на изключения, шаблони.
2) могат:
• Да пишат програми на C++.
• Да използват стандартна библиотека с шаблони.
• Да изразяват и реализират наследяване, шаблони, предефиниране на операции, обработка на изключения в езика С++.
Предварителни изисквания:
Курс по програмиране.
Форми на провеждане:
Редовен
Учебни форми:
Лекция
Език, на който се води курса:
Български
Теми, които се разглеждат в курса:
- Наследяване и полиморфизъм Базови и производни класове. Извикване на конструктор на базов клас и на член-функции на базов клас. Полиморфизъм.
- Потоци I Четене и писане на текстови файлове. Йерархия на потоковите класове. Абстрактни класове. Низови потоци. Аргументи от командния ред. Пряк достъп.
- Рекурсия Триъгълни числа. Пермутации. Ефективност на рекурсията. Непряка (взаимна) рекурсия.
- Тест 1 / Практическо занятие
- Сортиране и търсене Сортиране чрез селекция и а нализ на алгоритъма. Сортиране чрез сливане и анализ на алгоритъма. Линейно и двоично търсене.
- Въведение в структури от данни Свързани списъци. Свързан списък, стек и опашка в Стандартната библиотека шаблони (STL). Други STL контейнери. Алгоритми.
- Реализация на свързани списъци Реализация на свързани списъци - класове, итератори, операции
- Предефиниране на операции Предефиниране на операции като обикновени функции и като член-функции на клас. Възможности на езика С++ за предефиниране на операции. Свързан списък с предефинирани операции.
- Тест 2 / Контролна работа
- Управление на паметта Необходимост от управление на паметта. Деструктор. Операция присвояване Конструктор за копиране
- Шаблони и вложени класове Шаблони. Шаблони и наследяване Вложени класове
- Обработка на изключения Обработка на грешки. Изхвърляне на изключения. Прихващане на изключения. Развиване на стека. Спецификации на изключенията.
- Йерархии на наследственост Получаване на информация по време на изпълнение. Многократна наследственост.
- Тест 3 / Контролна работа
Литература по темите:
Учебник:
Cay Horstmann,Computing Concepts with C++ Essentials, Third Edition, John Wiley & Sons, 2003.
Полезни книги:
Cay S. Horstmann, Timothy A. Budd, Big C++, 2nd Edition, Wiley, January 2009.
Lasko Laskov, Progrmming in C++, Examples and Solutions, Part One: From Procedural Towards Object-Oriented Paradigm”, New Bulgarian University, 2016.
Cay S. Horstmann, C++ for Everyone, 2nd Edition, Willy, 2011.
Николай Киров, Сборник от учебни материали по ВЪВЕДЕНИЕ В ПРОГРАМИРАНЕТО, Деметра, София, 2003 [online]
Магдалина Тодорова, Увод в програмирането [online]
Магдалина Тодорова, Петър Армянов, Дафина Петкова, Калин Георгиев, Сборник от задачи по програмиране на C++ - първа част: Увод в програмирането, ТехноЛогика, 2008.
Магдалина Тодорова, Програмиране на С++. Част първа, Сиела, 2010.
Веселина Жечева, Димитър Минчев, Ръководство по програмиране на базата на езика C++, 2 изд., Божич, 2016.
Иво Дамянов, Увод в програмирането С++, ЮЗУ "Неофит Рилски", 2012.
Cay S. Horstmann, Brief C++: Late Objects, 3rd Edition
Cay S. Horstmann, Big C++: Late Objects, Enhanced eText, 3rd Edition, Oct 2017
http://nikolay.kirov.be/2019/CITB107/ref.html
Средства за оценяване:
http://nikolay.kirov.be/2020/CITB205/index.html