- •Тема 1. Обєктно - орієнтовне програмування 4
- •Тема 2. Основні концепції парадигми програмування 14
- •Тема 7. Універсальна мова моделювання (Unified Modelling Language або uml) 88
- •Тема 8. Бібліотека стандартних шаблонів stl (Standard Template Library) 91
- •Тема 9. Шаблони проектування stl (Standard Template Library) 104
- •Лекція № 1 Тема 1. Обєктно - орієнтовне програмування План лекції
- •Зміст лекції Вступ.
- •1.1. Поняття те визначення ооп.
- •1.2. Об' єктно - орієнтована методологія (оом).
- •1.3. Об' єктно - орієнтовані мови програмування.
- •1.4. Системи і середовища програмування топ.
- •Лекція № 2 Тема 2. Основні концепції парадигми програмування План лекції
- •Зміст лекції
- •2.1. Парадигми програмування: об' єктно - орієнтована парадигма.
- •2.2. Основні концепції топ.
- •2.3. Моделювання. Об' єктна декомпозиція.
- •2.4. Ідеї топ. Топ принцип - поліморфізм.
- •2.5. Інкапсуляція. Наслідування.
- •2.6. Об' єктний рефакторинг.
- •2.7. Системи і середовища програм.
- •Лекція № 3
- •План лекції
- •Зміст лекції
- •3.1. Абстракції даних
- •3.4. Типи, що перераховують
- •3.5. Вирази
- •3.6. Інструкції
- •Лекція № 4
- •План лекції
- •Зміст лекції
- •4.2. Структура програми, функція main без параметрів.
- •4.3. Основні типи даних.
- •4.4. Константи, змінні, вирази та пріоритет операцій.
- •4.5. Базові конструкції структурного програмування - галуження, цикл, передача управління.
- •4.6. Загальні та бітові логічні операції.
- •4.7. Тернарний опертор.
- •4.8. Вказівники і посилання; масиви.
- •Лекція № 5
- •План лекції
- •Зміст лекції
- •5.1. Користувацькі типи - typedef, enum, struct, union. Функції.
- •5.2. Передача параметрів та повернення значень з функцій.
- •5.3. Рекурсія, перевантаження функцій, функція main з параметрами.
- •5.4. Глобальні і локальні визначення, простори імен та їх використання.
- •5.5. Директиви препроцесора.
- •5.6. Стандартний ввід/вивід - бібліотека stdio.H.
- •5.7. Основи потокового введенню/виводу - бібліотека iostream.H.
- •Лекція № 6
- •План лекції
- •Зміст лекції
- •6.2. Екземпляри класів або об' єкти.
- •6.3. Поля (атрибути) та методи.
- •6.4. Специфікатори доступу (private, protected, public).
- •6.5. Вказівник this.
- •6.6. Перевантаження методів.
- •6.7. Конструктори і деструктори класів.
- •6.8. Перевантаження конструкторів.
- •6.9. Конструктори копіювання та перетворення.
- •6.10. Закон Деметри
- •Лекція № 7 Тема 7. Універсальна мова моделювання (Unified Modelling Language або uml) План лекції
- •2.Основні поняття та принципи.
- •3.Зв'язки між класами (асоціація, агрегація, композиція, узагальнення).
- •4.Uml: діаграми класів. Uml: діаграми взаємодії. Uml: діаграми послідовності. Зміст лекції
- •7.1. Сфера застосування.
- •7.2. Основні поняття та принципи.
- •7.3. Зв'язки між класами (асоціація, агрегація, композиція, узагальнення).
- •7.4. Uml: діаграми класів. Uml: діаграми взаємодії. Uml: діаграми послідовності.
- •Лекція № 8 Тема 8. Бібліотека стандартних шаблонів stl (Standard Template Library)
- •План лекції
- •Зміст лекції
- •8.1. Бібліотека стандартних шаблонів - stl (призначення, основні можливості, сфера застосування).
- •8.2. Стандартні потоки і потокові класи.
- •8.3. Стрічки (основні операції та функції; переваги порівняно із c - стрічками).
- •8.4. Поняття про контейнери, ітератори, функціональні об' єкти та алгоритми stl.
- •Лекція № 9 Тема 9. Шаблони проектування stl (Standard Template Library) План лекції
- •1.Шаблони проектування (designpatterns).
- •Зміст лекції
- •9.1. Шаблони проектування (designpatterns).
- •9.2. Класифікація шаблонів проектування stl (creational, structural, behavior, concurrencypatterns).
- •9.3. Можливості застосування шаблонів проектування stl.
Лекція № 7 Тема 7. Універсальна мова моделювання (Unified Modelling Language або uml) План лекції
1.Сфера застосування UML.
2.Основні поняття та принципи.
3.Зв'язки між класами (асоціація, агрегація, композиція, узагальнення).
4.Uml: діаграми класів. Uml: діаграми взаємодії. Uml: діаграми послідовності. Зміст лекції
Стандартна бібліотека шаблонів (Standard Template Library - STL) мови С++ об' єднує в собі контейнерні типи даних, алгоритми для їх обробки даних, ітератори для звернення до елементів або послідовностей в контейнера. STL також містить набір шаблонів для забезпечення стандартного введення-виводу.
Слово "стандартна" означає, що ця бібліотека є частиною стандарту мови С++ і повинна розглядатися, як деручи альтернатива при виборі методів і засобів роботи з даними і потоками введення-виводу.
Слово "шаблонів" означає, що уся бібліотека побудована на шаблонах класів і функцій, що забезпечує можливість уніфікованої роботи з різними типами даних. Використання шаблонів у бібліотеці дозволяє не лише однаково обробляти вбудовані типи С++, але і працювати з призначеними для користувача типами даних, які не булі відомі у момент розробки бібліотеки.
STL має ряд переваг :
Код бібліотеки написаний професійними програмістами, перевірений і відлагоджений. Вам не доведеться шукати помилки в реалізації контейнерів або алгоритмів STL. Швидше, помилки будуть пов' язані з невірним розумінням концепцій STL, але це питання досвіду використання.
Код бібліотеки написаний дуже ефективно з точки зору використання оперативної пам' яті і швидкодії для типових варіантів застосування.
Бібліотека пропонує уніфікований інтерфейс, одноманітний для усіх контейнерів і алгоритмів, що після отримання навички використання бібліотеки дозволяє значно підвищити читаність програми.
Використання бібліотеки дозволяє приступити відразу до рішення проектних завдань, не замислюючись про реалізацію низькорівневих контейнерів і алгоритмів. У разі роботи проектної групи це дозволяє уникнути дублювання коду у різних розробників.
Бібліотека добре документована і описана в книгах. У разі розробки власних контейнерів і алгоритмів документація буде, швидше за усе, значно бідніше, що підвищить вартість підготовки нового фахівця.
Код, написань з використанням STL легко переноситися на інші компілятори, операційні системи і платформи.
До недоліків STL можна віднести:
· Непристосованість до роботи із структурними типами даних.
· Низька ефективність (швидкодія, пам'ять) при рішенні приватних завдань, де можливі цільові оптимізації коду.
· Неадекватний інтерфейс шаблону для роботи з рядками
· Складність управління пулом пам' яті при роботі з контейнерами STL.
Вказані недоліки в основному торкаються рівня професійних програмістів, які здатні самостійно проаналізувати ефективність використання тієї або іншої бібліотеки. Для початкуючого програміста ця бібліотека є засобом, що дозволяє значно підвищити продуктивність праці і швидко перейти від рішення низькорівневих завдань до проблем предметної області. Тому бібліотека STL в обов'язковому порядку має бути вивчена розробником і повинна всюди використовуватися до того годині, поки він не зможе самостійно переконливо аргументувати вибір іншої бібліотеки або розробку власних контейнерів і алгоритмів.
Контейнери
Бібліотека STL представляє ряд контейнерів для зберігання даних, які умовно можна розділити на контейнери з довільним доступом, послідовні контейнери і асоціативні контейнери.
Контейнерами з довільним доступом є vector і deque. Обидва контейнери забезпечують довільний доступ до елементів (як до елементів звичайних масивів C++). Основна відмінність vector і deque полягає в тому, що vector забезпечує додавання нових елементів у кінці, а deque - у кінці і на початку контейнера.
Контейнери з довільним доступом дозволяють звертатися до елементу за допомогою оператора []. Додавання елементів в vector робиться за допомогою методу push_back, що додає новий елемент у вектор. Використання елементу до його додавання (чи резервування) неприпустимо.
Контейнером з послідовним доступом є list (пов'язаний список).
Також є контейнери, що визначають пріоритетну чергу (priority_queue) і стек (stack).
Асоціативні контейнери представлені словником (map, multimap) і набором (set, multiset), а також їх аналогами, реалізованим з використанням хеш-таблиц.
Асоціативні контейнери дозволяють зберігати дані у впорядкованому виді і забезпечують швидкий пошук потрібних значень по ключу. Приміром, set дозволяє зберігати набори унікальних (за значенням) об' єктів. А multiset дозволяє зберігати об' єкти, що повторюються. Контейнер map дозволяє зберігати словник пар ключ-значення і здійснювати швидкий пошук потрібного елементу по ключу.
