- •Тема 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.
8.1. Бібліотека стандартних шаблонів - stl (призначення, основні можливості, сфера застосування).
Стандартна
бібліотека шаблонів (STL).
STL
забезпечує загальцільові, стандартні
класи й функції, які реалізують найбільш
популярні й широко використовувані
алгоритми й структури даних. STL
будується на основі шаблонів класів, і
тому вхідні в неї алгоритми й структури
застосовні майже до всіх типів даних.
Склад STL.
Ядро бібліотеки
утворять три елементи: контейнери,
алгоритми й ітератори.
Контейнери
(containers) - це об' єкти, призначені для
зберігання інших елементів. Наприклад,
вектор, лінійний список, множина.
Асоціативні
контейнери (associative containers) дозволяють за
допомогою ключів отримати швидкий
доступ до значень, що зберігаються в
них.
У кожному
класі - контейнері визначений набір
функцій для роботи з ними. Наприклад,
список містить функції для вставки,
видалення й злиття елементів.
Алгоритми
(algorithms) виконують операції над умістом
контейнера. Існують алгоритми для
ініціалізації, сортування, пошуку,
заміни вмісту контейнерів. Багато
алгоритмів призначені для роботи з
послідовністю (sequence), що являє собою
лінійний список елементів усередині
контейнера.
Ітератори
(iterators) - це об' єкти, які стосовно контейнера
відіграють роль покажчиків. Сморід
дозволяють одержати доступ до вмісту
контейнера приблизно так само, як
покажчики використовуються для доступу
до елементів масиву.
З ітераторами
можна працювати так само, як з вказівниками.
До них можна застосувати операції *,
інкремента, декремента. Типом ітератора
оголошується тип iterator, що визначений у
різних контейнерах.
Існує п'ять
типів ітераторів:
1. Ітератори
введення (input_iterator) підтримують операції
рівності, разыменования й інкремента.
==i,
++i, i++, *i++
Спеціальним
випадком
ітератора
введення
є
istream_iterator.
2.
Ітератори виведення (output_iterator) підтримують
операції разыменования, припустимі
тільки з лівої сторони присвоювання, і
інкремента.
++++i,
i++, *i=t, *i++=t
Спеціальним
випадком
ітератора
виводу
є
ostream_iterator.
3.
Односпрямовані Ітератори (forward_iterator)
підтримують всі операції ітераторів
уведення/виводу й, крім того, дозволяють
без обмеження застосовувати присвоювання.
==i,
++i, i++, *i++
4.
Двонаправлені Ітератори
(biderectional_iterator) мають всі властивості
forward - ітераторів, а також мають додаткову
операцію декремента (--i, i--, *i--), що дозволяє
їм проходити контейнер в обох напрямках.
5.
Ітератори довільного доступу
(random_access_iterator) мають всі властивості
biderectional - ітераторів, а також підтримують
операції порівняння й адресної арифметики,
тобто безпосередній доступ по індексі.
i+=n,
i+n, i-=n, i - n, i1 - i2, i[n], i1<i2, i1<=i2, i1>i2,
i1>=i2
8.2. Стандартні потоки і потокові класи.
Потоки не є характеристикою С++, а були введені ще в ANSI C. У С++ мезанізм потоків оновлено і змінено. Проте загальний механізм під'єднання потоків залишився.
Потік (введенню/виводу) - є абстрактним поняттям, яку відноситься до будь-якого перенесення даних між прибудовами видавання та приймання інформації.
Читання даних з потоку називається операцією витягування даних з потоку (extracting, getting orfetching data). Реалізовується оператором ви-тягуваня з потоку operator>>*. Розміщення даних в потік називаєтться операцією вставки даних в потік (inserting, putting or storing data ). Реалізовується оператором вставки в потік operator<<*.
Потік визначається як послідовність байтів і не залежить від конкретного прибудую, з яким відбувається обмін інформацією. Пере-да-вання даних здійснюється через спеціально виділену пам'ять, яка нази-ва- ється буфером. Фактичне передавання даних відбувається при виовді після заповнення буфера, а при вводі - якщо буфер є порожнім. За напрямком обміну інформацією потоки можні розділити на вхідні (дані вводяться в пам'ять), вихідні (дані вибераютьяс з пам' яті) і двонаправленні.
Потоки пов' язані з фізичним пристроєм за допомогою низько- рівневого інтерфейсу введенню/виводу С++. Оскільки усі потоки введенню/виводу (у/в) діють однаково, то система в/в представляє собою єдиний зручний ін -терфейс, незважаючи на ті, що програмісту доводитися працювати з аб-со-лютно різними за природою об' єк -тами. Іншою перевагою потоків є контроль типів, та здатність до розширення, тобто здатність працювати з типами, оголошеними користувачем.
Основним недоліком потоків є зменшення швидкодії програми, яку в залежності від реалізації компілятора може бути значним.
За типом пристроів, з якими працюють потоки, їх умовно можна по- ділити на потоки стандартні, файлові і рядковіі. Стандартні потоки ви-користовуються для виведення інформації на еркан та зчитування її з кла- віатури. Файлові потоки забезпечують файловий ввід/вивід. Рядкові потоки використовуються для роботи з масивами символьних рядків в оперативні пам' яті.
Під година вико-нання програми (за умови підмикання основного пото-ко-вого інтерфейсного файлу iostream.h) автоматичний від -кри-ва-ються чотири по-то-ки С++, які вико-ристовуються для зв'язку з прис--троєм по замовчуванню. У таблиці.1 наведено список стан-дартних потоків. У випадку необхідності потоки можуть бути перена- правлені на інші пристрої.
Структура потокової системи введенню/виводу
Потоки С++ повністю реалізовані через класи (ієрархії класів). З метою використання потокових операцій в програмі треба під'єднати хоча б один інтерфейсний файл заголовків ФЗ. Основним серед них є iostream.h. У цьому файлі визначені набори ієрархій класів, які забезпечують ввід та вивід. З іншого боку, підмикання ФЗ fstream.h чи sstream.h* автоматичний підмикає і файл iostream.h, оскільки він для них є базовим.
Основою цих ієрархій є ієрархії класів - шаблонів. У них оголошуються лише форми класів без задання даних, з якими сморід працюють. Лише після означення класу-шаблону з' являється можливість створювати окремі екземпляри класів.
Система потоків С++ базується на двох зв'язаних, проте різних, ієрархіях шаблонів. Деручи з них є ієрархією від базового класу-шаблону base_streambuf. Данії клас (реально екземпляр цього класу streambuf) забезпечує операції в/в нижнього рівня. Верхній рівень забез-пе- чується ієрархією від класу-шаб-лону base_ios. У свою чергу клас-шаблон base_ios є базовим для класів base_istream, base_os - tre - am і base_iostream. Влас-не останні класи-шаблони викорис-товуються для створення кла- сів, які у свою чергу забез-пе-чу-ють ство-рен-ня потоків в/в**. В таблиці.2 наве-дено відповідності класів - шаблонів і породжуваних ними потокових класів.
Потокові класи утворюють дві зв' язані ієрахії класів. На рис.1- 2 наведені ієрархії потокової системи в/у в реалізації Borlаnd C++.
Список потокових класів визначених стан-дартом ISO/ІЕС 1882 наведень у таблиці.3.
У кінцевому результаті користувач отримує дві основні взаємозв'язані ієрархії, що забезпечують систему потокового в/в С++.
