Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VBA.doc
Скачиваний:
3
Добавлен:
17.09.2019
Размер:
696.83 Кб
Скачать

Поняття про об’єктно-орієнтоване програмування

У середині 80-х рр. була розроблена нова концепція в комп’ютерному програмуванні, відома як об’єктно-орієнто­ване програмування (ООП).

Основна ідея об’єктно-орієнтованого програмування полягає в тому, що програмний продукт повинен складатися з окремих об’єктів, кожен з яких має власні специфічні якості та поведінку. Об’єктно-орієнтований додаток організує дані та виконувані оператори програмного коду у зв’язані об’єкти, що полегшує розробку, організацію та роботу зі складними структурами даних та діями, які виконуються над цими даними або з ними. Кожен об’єкт у програмному додатку містить дані та оператори, які зв’язані разом і утворюють єдиний елемент.

При застосуванні ООП основними елементами виступають об’єкти. Усі предмети можна розглядати як об’єкти, тобто речі, які існують незалежно від того, чи можемо ми до них доторкнутися, чи знаємо ми, з чого вони зроблені, тощо.

Об’єкти використовуються в програмуванні, оскільки вони відображають предмети, про внутрішню організацію яких не обов’язково знати, проте можна ними керувати. З точки зору ООП всі складові програми — об’єкти, кожен з яких є елементом (примірником) якогось класу (сукупності). Властивостями об’єкта називають його параметри. У відповідь на запит (команду) об’єкт може виконувати дію, яка називається методом. При цьому метод, який виконується об’єктом, визначається тим класом, до якого належить даний об’єкт, і навпаки, об’єкти певного класу можуть виконувати лише певні методи у відповідь на одну і ту ж команду (запит). При цьому такий запит (команду) прийнято називати подією. Отже, можна сказати, що при появі події наступає активізація методу. Прикладами подій є, наприклад, активація курсору миші рядка меню, натискання клавіші виділення елемента документа, оновлення даних у полі, тощо.

Активізація методу може наступити не лише в наслідок виконання якихось дій користувачем, а й при появі події, спричиненої роботою системи. У цьому випадку кажуть, що метод активізовано системою.

На сьогодні об’єктно-орієнтоване програмування — домі­нуючий спосіб програмування. Він характеризується трьома поняттями: інкапсуляцією, спадковістю, поліморфізмом.

Уявлення про властивості і методи як про невід’ємну частину будь-якого об’єкта називають інкапсуляцією. При цьому об’єкт розглядається як певна оболонка, яка оточує програмний код (метод) та дані (властивості об’єкта).

Програмні об’єкти групуються в ієрархічні класи та колекції. Всі представники одного класу мають однакові (або подібні) властивості та методи. Кожен клас об’єктів може містити один або декілька підкласів. Об’єкти, які належать до одного класу, називаються членами (members) цього класу.

Розглянемо приклад: потрібно написати програму, яка розміщуватиме на екрані круги різних розмірів та кольорів.

Нехай будь-який круг належить до класу Round (круг) і володіє такими властивостями:

  • радіус круга R,

  • координати центра круга X та Y,

  • колір круга Color.

Метод класу Round такі:

  • малювати круг із заданими параметрами Draw;

  • переміщати круг на відповідну відстань у вказаному напрямку Move;

  • змінювати колір круга ChangeColor.

Для того, щоб намалювати сніговика з трьох кругів різного розміру потрібно мати три об’єкти — круги Hear (голова), Body (тіло), Foot (ноги). Усі об’єкти належать до класу Round, тому вони мають однакові властивості (R, X, Y, Color) і викликають однакові методи (Draw, Move, ChangeColor).

Встановивши для кожного з об’єктів різні значення властивостей та методів, одержимо потрібну фігуру.

Припустимо, нам потрібно доповнити наш малюнок: домалювати очі сніговику. Очі — це ті ж самі круги, проте додамо для них метод Blink (блимати). Для цього потрібно створити новий клас об’єктів Eyes (очі), який відрізнятиметься від класу Round наявністю нового методу.

Для того, щоб не виконувати подвійної роботи, використовують механізм наслідування, який реалізується шляхом створення ієрархічної структури класів. Спочатку створюємо клас Round (він розміщується в основі ієрархії), потім — клас Eyes, який містить новий метод Blink та всі методи й властивості основного класу. Іншими словами, клас Eyes успадкував всі властивості та методи класу Round. При цьому Round — предок (бать­ківський клас), а Eyes — нащадок (дочірній клас).

Отже, наслідуванням називається можливість доступу об’єктів, які належать класу-нащадку до методів та властивостей класу-предка.

Поліморфізм дослівно означає «багато форм». У програмуванні такий термін стосується змінних чи параметрів процедур (функцій), які можуть набувати значення різних типів.

Розглянемо приклад зі сніговиком.

Нехай нам необхідно намалювати інші геометричні фігури (наприклад, прямокутник), причому з ними треба виконувати ті ж дії, що й з кругами: переміщувати, малювати, змінювати колір.

Для малювання прямокутника потрібно створити новий клас — Rect, який міститиме всі можливі прямокутники. Створимо цей клас як нащадок класу Round, причому Х, Y — це координати вибраної вершини, а R — його довжина (чи ширина). Проте, в цьому випадку потрібно описувати ще одну властивість — довжину чи ширину, але це може викликати плутанину при роботі з такими класами, адже клас Round орієнтований на роботу лише з конкретною фігурою.

Для того, щоб зробити клас Round універсальним, тобто таким, який дозволить малювати більшу кількість фігур потрібно змінити його властивості таким чином: замість координат центра та радіуса використаємо координату верхньої (Top) та лівої (Left) межі, висоту фігури (Height), ширину фігури (Width). Маючи такі координати можна знайти інші координати фігури. Тепер на основі предка Round, який володіє новими властивостями, можна створити нащадка Rect.

П роте методи малювання круга та прямокутника повинні бути різними, тобто успадкований метод Draw для класу Rect повинен бети іншим. Для того, щоб цього уникнути, треба описати метод Draw для класу Rect (методи з однаковими назвами відповідають за різні дії, залежно від того, якому класу належить об’єкт). Така ситуація в ООП називається поліморфізмом. Графічне зображення суті поліморфізму показано на рисунку:

Усі програмні продукти містять багато різноманітних типів об’єктів. Наприклад, в Excel об’єктами є робочі книги, аркуші, діапазони даних, таблиці, графічні об’єкти, діалогові вікна, безпосередньо сама програма Word; у Word-документи, діапазони (фрагменти) тексту, таблиці, графічні об’єкти, діалогові вікна, сама програма Word. В Access та інших програмах об’єкти існують за тими ж правилами, що й об’єкти Word і Excel.

Об’єкти у Word та Excel мають властивості, які визначають їх вигляд та поведінку: текст у документі може відображатися або не відображатись потовщеним шрифтом або курсивом, робочий аркуш Excel може бути захованим чи відображеним, рядки на робочому аркуші чи таблиці мають висоту, стовпці — ширину і т. д. Властивість керує виглядом та поведінкою об’єкта. Наприклад, в Excel можна змінити поведінку робочого аркуша, змінюючи властивість обчислення з автоматичного на ручне або змінивши колір тексту на аркуші. У Word можна змінити поведінку документа, змінюючи властивість, яка відповідає за відображення орфографічних помилок під час набору тексту, або ж задавши нові значення для властивостей розмітки сторінки.

Деякі властивості об’єктів можна змінювати, деякі — ні. Наприклад, для будь-якої робочої книги можна змінювати властивість Author (ім’я автора книги), але не можна змінювати властивість Name (ім’я файла), оскільки така зміна приведе до цілком нової робочої книги, тобто нового об’єкта.

Окрім властивостей, із кожним об’єктом пов’язана сукупність можливостей-методів (methods). Об’єкт робочої книги Excel, наприклад, може додавати до себе новий аркуш (метод Add), документ Word має вбудовану можливість перевіряти орфографію тексту в документі (метод CheckSpelling). Методи змінюють значення властивостей об’єктів, а також виконують дії з даними (чи над даними), які зберігаються об’єктом.

Однією із причин того, що об’єктно-орієнтоване програмування стало популярною технікою проектування є те, що воно дозволяє розробника програмного забезпечення створювати ефективні програми з універсальними кодами. Замість того, щоб зберігати окрему копію коду для кожного методу кожного об’єкта, об’єкти одного й того ж типу можуть спільно використовувати коди своїх методів.

Незважаючи на те, що об’єкти одного й того ж типу спільно використовують код для своїх методів, метод вважається частиною об’єкта: коли викликають певний метод для конкретного об’єкта, метод діє лише на об’єкт, через який було здійснено звернення до нього.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]