- •Тема 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.
2.5. Інкапсуляція. Наслідування.
Інкапсуляція.
Інкапсуляція є найважливішою властивістю об' єктів, на якій будується об' єктно - орієнтоване програмування. Інкапсуляція - це об' єднання в одному класі даних і дій над ними. При цьому включені в об' єкт підпрограми (методи) безпосередньо працюють з даними цього об' єкту, звертаються до інших методів цього об' єкту або методів об' єктів - предків.
Інкапсуляція дозволяє багато в чому ізолювати клас від решти частин програми, зробити його "самодостатнім" для вирішення конкретного завдання. У результаті клас завжди неце в собі деяку функціональність. Наприклад, клас Tform в Delphi містить (інкапсулює в собі) усе необхідне для створення Windows - вікна, клас Ttimer забезпечує роботові таймера і так далі.
Одиницею інкапсуляції в OOD є об' єкт.
Спадкоємство дозволяє створювати ієрархію класів, починаючи з деякого первинного базового класу (предка) і продовжуючи складнішими, такими, що включають (що успадковують) елементи попередніх класів (нащадків або похідних класів).
Будь-який клас може бути породжений від іншого класу. Для цього при його оголошенні вказується ім 'я класу-батька:
Tchildclass = class(мова Object Pascal)
Створений клас автоматичний успадковує поля, методи і властивості свого батюшка і може доповнювати їх новими. Таким чином, принцип спадкоємства забезпечує поетапне створення складних класів і розробку власних бібліотек класів. Клас, поведінка якого успадковується, називається суперкласом, а клас, який успадковує поведінку, називається підкласом.
Принцип спадкоємства призводить до створення дерева з гілками класів, що постійно розростається. Кожен нащадок доповнює можливості свого батюшка новими і передає їх своїм нащадкам.
Об' єднання даних і дій над ними в єдине ціле. Визначальною ідеєю об' єктно - орієнтованого підходу до розроблення сучасних програмних продуктів є поєднання даних і дій, що виконуються над ними, в єдине ціле, яку називають об' єктом.
Функції об' єкта, які у мові програмування C++ називають методами або функціями -членами класу, зазвичай призначені для доступу до даних об' єкта та виконання певних дій над ними. Наприклад, якщо необхідно зчитувати будь- які значення даних об' єкта, то потрібно викликати відповідну функцію, яка їх зчитає та поверне об' єкту. Зазвичай прямий доступ до даних є неможливим, тому сморід приховані від зовнішніх дій, що захищає їх від випадкових змін. Вважають, що дані та методи класу між собою інкапсульовані. Терміни приховання та інкапсуляція даних є ключовими в описі об' єктно - орієнтованих мов програмування.
Під інкапсуляцією розуміють об'єднання атрибутів (даних) і методів їх опрацювання в об'єкті.
Методи об'єкта дозволяють визначати так звані властивості цього об'єкта.
Властивостями називають ті дані про об'єкт, які можна отримати в результаті застосування методів.
Поняття властивості об'єкта, таким чином, не співпадає з поняттям атрибута. Так, наприклад, площа геометричної фігури може не входити до списку атрибутів об'єкта Фігура, але її можна обчислити, застосувавши відповідний метод. З іншого боку, деякі атрибути об'єкта можна приховати, якщо не визначити метод їх одержання.
Повний список доступних методів і властивостей об'єкта називають його протоколом.
П
ринцип
приховання інформації, розвинений у
рамках структурного
підходу,
полягає в тому, щоб розділити програмний
модуль на
інтерфейсну
і реалізаційну частину, надати в
розпорядження
користувача
цього модуля інтерфейсний протокол і
приховати від нього
реалізацію.
Цей принцип набув в об’єктно-орієнтованому
програмуванні
подальшого
розвитку. Атрибути об'єкта і деякі
методи, оголошені як
приватні,
невідомі поза об'єктом. Користувач
обєкту може взаємодіяти
з ним тільки
за допомогою загальнодоступних методів,
одержуючи від
обєкта
властивості і змінюючи їх, якщо це
дозволено (тобто, якщо
існують
методи зміни цих властивостей).
Рис 2.2. Принцип інкапсуляції даних і операцій об'єкта.
М
ал.
1.3. Об' єктно - орієнтований підхід до
встановлення зв' язків між даними і
методами (функціями)
Якщо необхідно змінити значення даних об' єкта, то, очевидно, ця дія також має бути покладена на відповідну функцію об' єкта. Ніякі інші функції не можуть змінювати значення даних об' єкта, тобто дані класу. Такий підхід полегшує написання, відлагодження та використання програми. Таким чином, типова програма, написана мовою C++, складається з сукупності об' єктів, що взаємодіють між собою за допомогою методів, які викликають один одного.
Об' єктно - орієнтований підхід до встановлення зв' язків між даними і функціями (методами) класу, написаної мовою C++, наведено на мал. 1.3.
