Приклад рішення задачі
Див. проект «Task11».
Контрольні питання
Що позначають терміни «Клас» і «Об’єкт»?
У чому полягає об’єктно-орієнтована декомпозиція?
Що таке оголошення класу?
Що таке реалізація класу?
Дайте рекомендація з файлової структури проекту.
Сформулюйте правила доступу до елемента класу рівня «private».
Сформулюйте правила доступу до елемента класу рівня «protected».
Сформулюйте правила доступу до елемента класу рівня «public».
Що таке Doxygen?
Сформулюйте правила розміщення коментарів у коді програми.
12 Розробка ієрархії класів. Спадкоємство. Статичні та динамічні об’єкти
Лабораторна робота №12
Мета: придбати і закріпити практичні навички розробки програм на мові С++ з використанням статичних і динамічних об’єктів.
Індивідуальні завдання
При розробці проекту використовувати раніше обрану прикладну область та реалізовану функціональність.
Створити клас, що забезпечує представлення Об’єкта 1. Обґрунтувати типи даних, що обранi для полiв класу.
Створити класи-спадкоємці, що забезпечують представлення Об’єктів 2 і 3.
Створити необхідні конструктори класів і методи доступу до полів класу.
Створити для цих класів методи введення і виведення.
Розробити програму для демонстрації працездатності створених методів, використовуючи динамічні і статичні об’єкти.
Забезпечити діалоговий режим роботи з користувачем, передбачивши можливість його розширення (збільшення набору команд).
Термінологія
Центральний елемент ООП – абстракція. Дані за допомогою абстракції перетворяться в об’єкти. Кожен з об’єктів реалізує власну унікальну поведінку. До об’єктів можна звертатися як до окремих сутностей, які реагують на повідомлення – виконують якісь дії.
Об’єктно-орієнтоване програмування відповідає наступними принципами:
усе являється об’єктом;
обчислення здійснюються шляхом взаємодії між об’єктами – обміну даними, при якому один об’єкт вимагає, щоб інший об’єкт виконав деяку дію; об’єкти взаємодіють, посилаючи і отримуючи повідомлення; повідомлення – це запит на виконання дії, доповнений набором аргументів, які можуть знадобитися при виконанні дії;
кожен об’єкт має незалежну пам’ять яка складається з інших об’єктів;
кожен об’єкт є представником класу, який виражає загальні властивості об’єктів даного типу;
у класі задається функціональність (поведінка об’єкту); тим самим усі об’єкти, які являються екземплярами одного класу, можуть виконувати одні і ті ж дії;
класи організовані в єдину деревовидну структуру із загальним коренем, звану ієрархією спадкоємства; пам’ять і поведінка, пов’язана з екземплярами певного класу, автоматично доступні будь-якому класу, розташованому нижче в ієрархічному дереві.
Спадкоємство (inheritance) – властивість об’єктів, за допомогою якої екземпляри класу отримують доступ до даних і методів класів-предків без їх повторного визначення. Спадкоємство дозволяє різним типам даних спільно використовувати один і той же код, призводячи до зменшення його розміру і підвищення функціональності.
Клас визначає абстрактні характеристики деякої сутності, включаючи характеристики самої сутності (її атрибути або властивості) та дії, які вона здатна виконувати (її поведінки, методи або можливості).
Оскільки методи класу можуть бути як чисто внутрішніми, що забезпечують логіку функціонування об’єкта, так і зовнішніми, за допомогою яких взаємодіють об’єкти, необхідно забезпечити прихованість перших при доступності ззовні другий. Для цього в мови вводяться спеціальні синтаксичні конструкції, що задають область видимості кожного елемента класу. Це модифікатори public, protected і private, що позначають, відповідно, відкриті елементи класу, елементи класу, доступні тільки з класів-нащадків, і приховані, доступні тільки усередині класу.
Поля класу в загальному випадку не повинні бути доступні ззовні, оскільки такий доступ дозволив би довільним чином змінювати внутрішній стан об’єктів. Тому поля зазвичай оголошуються прихованими, а для доступу використовують спеціальні методи. Такі методи або повертають значення того чи іншого поля, або роблять запис в це поле нового значення. При записи метод доступу може проконтролювати допустимість записуваного значення і, при необхідності, провести інші маніпуляції з даними об’єкта, щоб вони залишилися коректними. Методи доступу називають ще аксессорами (access – доступ), а окремо – гетерами (get – отримання) і сетерами (set – встановлення).
Гетер (getter) – одержувач – спеціальний метод, що дозволяє отримати дані, доступ до яких безпосередньо обмежений. Це один з методів об’єктно-орієнтованого програмування, допомогає реалізувати гнучкий механізм інкапсуляції.
Сетер (setter, mutator) – спеціальний метод, який використовується в об’єктно-орієнтованому програмуванні для того, щоб привласнити яке-небудь значення інкапсулюваному полю, наприклад, обробивши при цьому неприпустимі присвоювання.
Do'stlaringiz bilan baham: |