
OOP lec1 consept OOP.ppt
- Количество слайдов: 65
Об’єктноорієнтоване програмування Лектор Доц. Ковалюк Тетяна Володимирівна ООП Ковалюк Т. В. НТУУ „КПІ„
Зміст 1 1 Парадигма Об’єктноорієнтоване програмування 2 Поняття об’єктів та класів та їх взаємозв’язки 3 Мова UML для об’єктноорієнтованого проектування 4 5 Класи потоків Конструктори та деструктори 6 7 8 9 10 Успадкування Множинне успадкування Віртуальні функції та поліморфізм Шаблони функцій і класів Обробка виключних ситуацій ООП Ковалюк Т. В. НТУУ „КПІ„
1. 1. Парадигми програмування 1. 2. Поняття об’єкта та класу 1. 3. Інтерфейс та реалізація класу 1. 4. Екземпляр класу та доступ до членів класу ООП Ковалюк Т. В. НТУУ „КПІ„
1. 1. Парадигми програмування Парадигма – це система наукових поглядів, в рамках яких здійснюються дослідження Парадигма програмування – це сукупність інструментальних засобів граматичного опису фактів, подій, процесів, явищ, об’єктів, що визначають стиль написання програм. Парадигма програмування – це спосіб мислення розробника програми ООП Ковалюк Т. В. НТУУ „КПІ„
1. 1. Парадигми програмування v Формула парадигми програмування: § Алгоритми+структури даних=програма v Організація та взаємодія даних і алгоритмів визначають: § Парадигми процедурного програмування § Інформаційні парадигми § Парадигми об'єктно-орієнтованого програмування KPI ООП Ковалюк Т. В. НТУУ „КПІ„ KTV
Парадигма процедурного програмування v Програмування від алгоритмів: § Програма – послідовність інструкцій для виконання комп’ютером § Послідовність інструкцій реалізує алгоритми § Алгоритми закодовані у вигляді функцій § Дані зберігаються окремо від функцій та передаються їм як параметри § Керуюча частина програми управляє викликами функцій ООП Ковалюк Т. В. НТУУ „КПІ„
Парадигма процедурного програмування § Процес розрахунку – це управління алгоритмами Д Д Д Д Д А А А Д А А ? А А ? ? А А ООП Ковалюк Т. В. НТУУ „КПІ„
Информаційні парадигми v Програмування від даних: § Програма – це перетворення наборів даних з одного стану в інший § Перетворення виконуються алгоритмами (процедурами) § Процедури можуть зберігатися окремо від даних і можуть приєднуватися до даних § Управління – це управління перетвореннями даних. ООП Ковалюк Т. В. НТУУ „КПІ„
Складність задач Причини виникнення складності задач: v складність реального предметного середовища, звідки виходить замовлення на розробку; v труднощі управління процесом розроюки; v необхідність заюезпечити достатню гнучкість програми; v незадовільні способи опису поведінки великих дискретних систем (багато станів, неможливо відслідкувати їх). ООП Ковалюк Т. В. НТУУ „КПІ„
Складність задач Як боротися зі складністю задач? Застосувати об’єктно-орієнтовану технологію ООП Ковалюк Т. В. НТУУ „КПІ„
Складові частини об’єктноорієнтованої технології OOA – object-oriented analysis ; OOD – object-oriented design; OOP – object-oriented programming. ООП Ковалюк Т. В. НТУУ „КПІ„
OOA – object-oriented analysis v Об’єктно-орієнтований аналіз (OOA, objectoriented analysis) – це процес створення моделей реальної дійсності на основі об’єктноорієнтованого світогляду. Визначення за Граді Бучем: Об’єктно-орієнтований аналіз – це методологія, за якою вимоги до системи сприймаються з точки зору класі та об’єктів, що визначені в предметній області. ООП Ковалюк Т. В. НТУУ „КПІ„
OOD – object-oriented design v Проектування здійснює правильне та ефективне структурування складних систем. Визначення ООД: Об’єктно-орієнтоване проектування – це методологія проектування, що об’єднує в собі процес об’єктної декомпозиції та прийоми подання об’єктних моделей системи, що проектується. ООП Ковалюк Т. В. НТУУ „КПІ„
OOP – object-oriented programming Визначення: Об’єктно-орієнтоване програмування – це методологія програмування, що заснована на поданні програми у вигляді сукупності об’єктів, кожний з яких є екземпляром певного класу, а класи утворюють ієрархію успадкування. (Г. Буч ) ООП Ковалюк Т. В. НТУУ „КПІ„
Взаємодія OOA, AAD та OOP v На результатах ООА формуються моделі, на яких базуються OOD; v OOD в свою чергу створює фундамент для кінцевої реалізації системи. v Реалізація проводиться з використанням методології OOP. ООП Ковалюк Т. В. НТУУ „КПІ„
Об’єктна модель v Об’єктно-орієнтована технологія базується на об’єктній моделі. v Основні властивості об’єктної моделі: Ш абстрагування, Ш інкапсуляції, Ш успадкування (ієрархічність), Ш поліморфізм. ООП Ковалюк Т. В. НТУУ „КПІ„
Парадигма ООП 1. 2. Концепції ООП Абстрагування це подання об’єкта в загальних рисах без деталей його реалізації. Жодна частина складної системи не повинна залежити від внутрішньої будови будь-якої іншої частини. KPI ООП Ковалюк Т. В. НТУУ „КПІ„
Абстрагування Абстракція фокусується на суттєвих з точки зору наглядача характеристиках об’єкта. ООП Ковалюк Т. В. НТУУ „КПІ„
1. 2. Інкапсуляція Концепції ООП Інкапсуляція це об’єднання властивостей та поведінки об’єкта в одному описі з метою приховування деталей його реалізації. Інкапсуляція це процес відокремлення одне від одного елементів об’єкта, що визначають його будову та поведінку. (Г. Буч) KPI ООП Ковалюк Т. В. НТУУ „КПІ„
Парадигма ООП v Інкапсуляція: § Дані об'єднуються з алгоритмами в об'єктний тип: члени-дані і члени-методи § Дані характеризують властивості об'єкту, алгоритми (методи) - його поведінку § Приховування деталей : • Властивості (дані) і методи (алгоритми) можуть бути недоступні ззовні об’єкта Абстрагування та інкапсуляція доповнюють одне одного: абстрагування спрямоване на поведінку об'єкта, інкапсуляція займається внутрішнім устроєм об’єкта. KPI ООП Ковалюк Т. В. НТУУ „КПІ„ KTV
Інкапсуляція Інкапсуляці приховує деталі реалізації об’єкта ООП Ковалюк Т. В. НТУУ „КПІ„
Ієрархія (успадкування) v Значно спрощуються складні задачі за рахунок утворення з абстракцій ієрархічної структури. v Ієрархія – це впорядкування абстракцій, розміщуючи їх по рівнях. ООП Ковалюк Т. В. НТУУ „КПІ„
Ієрархія Абстракції утворюють ієрархію ООП Ковалюк Т. В. НТУУ „КПІ„
Приклад: координатна площина Абстракції: • Точка. • Коло. • Еліпс. • Квадрат. • Прямокутник. • Тикутник. • Координатна площина. ООП Ковалюк Т. В. НТУУ „КПІ„
Успадкування v Точка: (x, y) v Коло: (x, y, R) v Еліпс: (x, y, R 1, R 2) v Квадрат: (x, y, a) v Прямокутник: (x, y, a, b). v Трикутник: (x 1, y 1, x 2, y 2, x 3, y 3) v Координатна площина (набір фігур) Успадкування ТОЧКА (x, y) КОЛО (R) або: КОЛО (R) Агрегація ФІГУРА ТОЧКА (x, y) … КВАДРАТ (a) ТРИКУТНИК = ТОЧКА + ТОЧКА ООП Ковалюк Т. В. НТУУ „КПІ„
Успадкування v Успадкування § Об'єкти можуть успадковувати властивості та методи з інших об'єктів § При успадкуванні нащадок: v Зберігає властивості і методи предка v Додає нові властивості і методи v Може міняти старі властивості і методи ООП Ковалюк Т. В. НТУУ „КПІ„
Успадкування створює ієрархію абстракцій, у якій підкласи успадковують структурну або функціональну частину від одного або декількох базових класів. Використання ієрархії спадкування класів дозволяє створювати похідні класи на основі вже існуючих. Успадкування — це могутній механізм повторного використання коду, дозволяє ієрархічно систематизувати споріднені класи на підставі загальних властивостей. KPI ООП Ковалюк Т. В. НТУУ „КПІ„
Поліморфізм v Поліморфізм (різноманіття форм) § Визначення поведінки контекстом об'єкту Поліморфізм – це спроможність об’єктів різних класів, які зв’язані успадкуванням, реагувати на одне й те саме повідомлення по-різному, що дозволяє будь-яке повідомлення передавати різними способами. Поліморфізм реалізує ідею „один інтерфейс – багато методів„ При поліморфізмі повідомлення, які передаються об’єкту, асоціюються з методами, за допомогою яких здійснюється ця передача, під час виконання програми, а не під час її компіляції. ООП Ковалюк Т. В. НТУУ „КПІ„
Поліморфізм v Поліморфізм (різноманіття форм) ООП Ковалюк Т. В. НТУУ „КПІ„
Означення ООП - це підхід, за яким програмну систему потрібно проектувати як сукупність взаємодіючих один з одним об'єктів, розглядаючи кожен об'єкт як екземпляр певного класу, причому класи можуть утворювати ієрархію, композицію, агрегуватися KPI ООП Ковалюк Т. В. НТУУ „КПІ„
1. 2. Поняття об’єкта та класу v. Об'єкт - це реальна сутність, що моделює навколишнє середовище. v. Кожний предмет, що відчувається, - це об’єкт. v. Внутрішня структура об'єкта характеризується: Ø атрибутами, або станом Ø поведінкою, або методами ØІдентичністю, або особливістю KPI ООП Ковалюк Т. В. НТУУ „КПІ„
Атрибути об’єкта Приклад 1. Об’єкт – квітка Атрибути: колір, запах, форма, розмір Атрибути описують властивості об'єкта в конкретний момент часу і визначають стан об'єкта. Атрибути об'єкта є його локальними даними. ООП Ковалюк Т. В. НТУУ „КПІ„
Атрибути об’єкта Атрибути поділяються на: v постійні атрибути (константи) v змінні атрибути. Постійні атрибути характеризують об’єкт в його класі (наприклад, номер рахунку, категорія, ім’я людини тощо). Поточні значення змінних атрибутів характеризують поточний стан об’єкта (наприклад, баланс рахунку, вік людини тощо). Змінюючи значення цих атрибутів, можна змінити стан об’єкта. KPI ООП Ковалюк Т. В. НТУУ „КПІ„
Методи об’єкта Поведінка – це діяльність об'єкта, яка йому властива і яка спостерігається та перевіряється. Поведінка об'єкта визначається методами, які виконують об’єкти, що приводять до зміни його стану. Поведінка, яка властива об’єкту, описується функціями, чи операціями Приклад 2. Квітка може вколоти шипами, в’янути, змінювати колір від нестачі світла та води тощо. KPI ООП Ковалюк Т. В. НТУУ „КПІ„
Методи об’єкта поділяються на методи зовнішнього інтерфейсу та внутрішні методи. Методи зовнішнього інтерфейсу забезпечують спосіб спілкування з об’єктом. Text Внутрішні методи задають поведінку объекта, але недоступні поза об’єктом. Метод об’єкта активізується самим об’єктом або повідомленням, яке посилає інший об’єкт. Останній механізм називається передачею повідомлень між об’єктами ООП Ковалюк Т. В. НТУУ „КПІ„
Ідентичність об’єктів означає, що властивості та поведінка схожих об'єктів визначають загальний для них клас. Клас літальних засобів KPI ООП Ковалюк Т. В. НТУУ „КПІ„
Клас Поняття класу Множину схожих між собою об’єктів можна характеризувати одним й тим самим описом. Наприклад, множину цілих чисел можна описати одною абстракцією — int. Це значить, що у цих чисел є багато загальних властивостей і способів дій: арифметичні дії, сортування тощо. Опис об’єктів, які мають подібні властивості і методи поведінки, називають класом. ООП Ковалюк Т. В. НТУУ „КПІ„
Клас Поняття класу Клас — це опис множини об’єктів, які мають ідентичну структуру и поведінку. ООП Ковалюк Т. В. НТУУ „КПІ„
Інтерфейс і реалізація класу Клас інкапсулює (об’єднує) разом опис даних і функцій, які обробляють ці дані. Оголошення класу називається його інтерфейсом, а означення його методів — реализацією класу. Як правило, в інтерфейсі класу не приводиться тіло методів, за виключенням inline-функцій. KPI ООП Ковалюк Т. В. НТУУ „КПІ„ KTV
Опис класу клас = дані + операції Термінологія: ØЕлементи даних називають полями (member fields). ØПоля описують як звичайне оголошення змінних. ØОперації називають методами (member functions). ØМетоди реалізуються звичайним оголошенням та визначенням функцій. ООП Ковалюк Т. В. НТУУ „КПІ„
Опис класу class <ім’я класу> { Ключові слова Закрита частина класу – деталі [private: ] внутрішньої <закриті поля>; реалізації < закриті методи>; недоступні Відкрита частина – public: функціональніс <відкриті поля>; надається < відкриті методи>; користувачу кл }; ; завершує оголошення класу! KPI ООП Ковалюк Т. В. НТУУ „КПІ„ KTV
Синтаксис оголошення класу в С++ class ім’я { private: <закриті дані> <закриті методи> protected: <захищені дані > <захищен методи > public: <відкриті дані> <відкриті методи> }; Оголошення інтерфейсу класу обов’язково закінчується дужкою }, після якої ставиться ; Інтерфейс класу подається у заголовному файлі *. h (С++ Header file). Методи, оголошені в інтерфейсі класу, визначаються в реалізації класу, яка міститься у вихідному файлі *. cpp (C++ Source file). KPI ООП Ковалюк Т. В. НТУУ „КПІ„ KTV
Синтаксис оголошення класу в С++ class ім’я { private: <закриті дані> <закриті методи> protected: <захищені дані > <захищен методи > public: <відкриті дані> <відкриті методи> }; ООП Ковалюк Т. В. НТУУ „КПІ„
Рівні доступу до елементів класу Класи пропонують три рівня видимості для його членів: даних і методів. Ці рівні називаються специфікаторами доступу: private свідчить про те, що тільки методи класу мають доступ до закритих членів класу protected свідчить про те, що тільки методи класу і його класівпотомків мають доступ до захищених членів public свідчить про те, що доступ до членів класу мають методи класу, екземпляри класу, методи класівпотомків і їх екземпляри KPI ООП Ковалюк Т. В. НТУУ „КПІ„ KTV
Рівні доступу до елементів класу v. Те, що оголошено в секції private, є прихованим і доступно тільки усередині методів цього класу і недоступно ззовні. v. Те, що оголошено в секції public, є інтерфейсом класу і доступно скрізь. v. Секція private може бути відсутньою. Секція public має бути присутньою завжди, інакше класом не можна буде скористатися. v. Секції можна оголошувати кілька разів, чергуючи їх довільним чином ООП Ковалюк Т. В. НТУУ „КПІ„
. Рівні доступу до елементів класу v Кожний елемент класу має специфікацію доступу, яка визначається перед оголошенням цього елемента. v По умовчанню прийнята специфікація доступу private. v Для запобігання випадкової зміни значень атрибутів їх треба оголошувати із специфікацією private, а методи public. KPI ООП Ковалюк Т. В. НТУУ „КПІ„
Рівні доступу до елементів класу Рекомендації до приховування методів : 1. Приховуйте ті методи, які мають відношення до деталей внутрішньої реалізації. 2. Приховуйте методи, які не знадобляться користувачеві класу. 3. Секція public - інтерфейс класу. Чим менше там написано, тим простіше користувачеві класу розібратися, як з ним працювати. 4. Створюйте ті методи, які потрібні. 5. Не створюйте 1000 методів тільки тому, що це красиво виглядає. Користувач класу обов'язково заплутається в них. KPI ООП Ковалюк Т. В. НТУУ „КПІ„
Приклад Опис прямокутника містить його координати, які задають верхній лівий і правий нижній кути, та функцію зображення прямокутника. Координати прямокутника і функцію його зображення зручно розмістити в межах єдиного означення класу. В А С D ООП Ковалюк Т. В. НТУУ „КПІ„
Приклад //оголошення інтерфейсу класу class CRectangle { public: int Left; //елементи даних (змінні-члени) int Top; int Right; int Bottom; void Draw (void); // функція-член (метод) }; Елементи даних, які означені усередині класу, називаються змінними-членами класу, функццї, означені усередині класу, називаються функціями-членами або методами класу. KPI ООП Ковалюк Т. В. НТУУ „КПІ„
Визначення методів класу Для визначення методів поза межами визначенням класу використовується складове ім’я функції, яке має формат: ім'я_класу: : ім'я_функції() Оператор : : називається оператором розширення області дії або видимості. Його розуміють як належність конкретної функції конкретному класу. Таким чином, формат визначення функції-елемента класу такий: тип_значення_що_повертається ім'я_класу: : ім'я_функції(параметри) { тіло функції } ООП Ковалюк Т. В. НТУУ „КПІ„
Приклад Визначити метод зображення прямокутника поза інтерфейсу класу: // визначення метода класу – реалізація класу void CRectangle: : Draw (void) { Line (Left, Top, Right, Top); Line (Right, Top, Right, Bottom); Line (Right, Bottom, Left, Bottom); Line (Left, Bottom, Left, Top); } KPI ООП Ковалюк Т. В. НТУУ „КПІ„
1. 2. 9. Екземпляри класу Усі об’єкти вирізняються один від одного. Наприклад, два яблука мають один і той самий колір, форму, вагу та смак, але це є два яблука (а не одно). Між об’єктами можна встановити відношення тотожності: об’єкти, які задовільняють цьому відношенню, однакові (тотожні). У випадку з яблуками маємо два екземпляри одного класу. Надалі, об’єкт і екземпляр - це одне й те саме. ООП Ковалюк Т. В. НТУУ „КПІ„
1. 2. 9. Екземпляри класу Будь-який конкретний об'єкт є екземпляром класу. Об'єкти, не пов'язані спільністю властивостей і поведінки, не можна об'єднати в клас. KPI ООП Ковалюк Т. В. НТУУ „КПІ„
. Екземпляр класу Кожний об’єкт є екземпляром класу. Післе того, як оголошено клас, його можна використовувати для оголошення нових TEXT екземплярів класу. Означенння класу передає компілятору протокол класу, але не резервує місце в пам’яті для змінної, яку можна використовуватися для збереження даних класу, і не створює її. Змінна класового типу має бути визначена в результаті оголошення її типа: Ім’я_класу ім’я_змінної; ООП Ковалюк Т. В. НТУУ „КПІ„
Екземпляр класу v. Визначення класу створює новий тип даних, на який можна посилатися, використовуючи тільки ім’я класу. Наприклад, оголошення об’єкта класу CRectangle Rect; викликає конструктор для його створення: v Екземпляр Rect класу CRectangle займає власний блок пам’яті та може використовуватися для збереження даних-членів класу і виконання операцій над ними. v Об’єкт існує, поки потік управління не виходить за межі області видимості його означення ООП Ковалюк Т. В. НТУУ „КПІ„
Приклад int main() { //оголошення екземпляра класу CRectangle rectangle ; rectangle. Draw(); // виклик метода класу // інші оператори } ООП Ковалюк Т. В. НТУУ „КПІ„
Екземпляр класу можна створити за допомогою оператора new: СRectangle *PRect = new СRectangle Цей оператор виділяє блок пам’яті достатнього обсягу для розміщення в ньому екземпляру класу, і повертає покажчик на даний блок. Об’єкт буде залишатися в пам’яті, поки користувач явно не звільнить його за допомогою оператора delete PRect ООП Ковалюк Т. В. НТУУ „КПІ„
1. 2. 10. Категорії функцій-елементів класу функції доступу (аксесори), конструктори, деструктори функції установки (запису), функції-утілити операторні функції ООП Ковалюк Т. В. НТУУ „КПІ„
Категорії функцій-елементів класу Інші за сценарієм функції-ітератори, предикатні функції, функції-селектори, KPI ООП Ковалюк Т. В. НТУУ „КПІ„
Категорії функцій-елементів класу Визначають такі категорії функцій-елементів класу: • функції доступу (аксесори), що отримують значення закритих даних-елементів класу; • функції установки (запису), що встановлюють значення закритих даних-елементів класу; • функції-утілити – закриті функції для визначення специфічного стану об’єкту • операторні функції перетворення стандартних операцій і операторів; • спеціальні функції конструктори, деструктори; ООП Ковалюк Т. В. НТУУ „КПІ„
Категорії функцій-елементів класу • функції-ітератори, які реалізують доступ до усіх даних-елементів класу у визначеній послідовності; • функції-селектори, які зчитують стан об’єкта, але не змінюють його: • предикатні функції, які визначають істинність чи хибність певних умов. • ………………………… KPI ООП Ковалюк Т. В. НТУУ „КПІ„
Відношення між класами Діаграма класів, яка описує предметну область із казки “Курочка Ряба” ООП Ковалюк Т. В. НТУУ „КПІ„
Відношення між класами Діаграма класів, яка описує предметну область із казки “Курочка Ряба” ООП Ковалюк Т. В. НТУУ „КПІ„
Відношення між класами На діаграмі класи пов‘язані між собою. 1. Успадкування : людина – базовий клас дід, баба – нащадки, похідні класи 2. Асоціація: клас «інструмент» асоціюється з класами «дід» , «баба» 3. Асоціація: клас «інструмент» асоціюється з класом «яйцо» 4. Композиція: клас «хвіст» є невід’ємною частиною класу «миша» 5. Агрегація – на малюнку відсутня KPI ООП Ковалюк Т. В. НТУУ „КПІ„
Перевірка знань ТЕСТ № 1 ТЕСТ № 2 ТЕСТ № 3 ТЕСТ № 4 ООП Ковалюк Т. В. НТУУ „КПІ„
OOP lec1 consept OOP.ppt