Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
+ООП_Навч_посібник.doc
Скачиваний:
7
Добавлен:
01.07.2025
Размер:
6.58 Mб
Скачать

11.2. Поняття про об'єктно-орієнтований підхід

Визначальною ідеєю об'єктно-орієнтованого підходу є поєднання даних і дій, що виконуються над цими даними, в єдине ціле, яке називають об'єктом.

Рис. 11.3. Об'єктно-орієнтований підхід до визначення зв'язків між даними і методами (функціями)

Функції об'єкта, які називають у мові програмування C++ методами або функціями-членами класу, зазвичай призначені для доступу до даних об'єкта та виконання певних дій над ним. Якщо необхідно зчитувати будь-які дані об'єкта, то потрібно викликати відповідну функцію, яка виконає дію їх зчитування та поверне їхній функції необхідні їхні значення. Зазвичай прямий доступ до даних є неможливим, тому вони приховані від зовнішніх дій, що захищає їх від випадкової зміни. Вважають, що дані та методи інкапсульовані. Терміни приховання та інкапсуляція даних є ключовими в описі об'єктно-орієнтованих мов програмування.

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

Таким чином, типова програма, написана мовою C++, складається з сукупності об'єктів, що взаємодіють між собою за допомогою методів, які викликають один одного. Об'єктно-орієнтований підхід до визначення зв'язків між даними і функціями (методами) коду програми, написаної мовою C++, наведено на рис. 11.3.

11.2.1. Виробнича аналогія

Для глибшого розуміння призначення об'єктів, уявімо собі деяку компанію, яка складається з відділу кадрів, бухгалтерії, відділу реалізації продукції, відділів головного технолога чи головного механіка (рис. 11.4) і т.д. Поділ компанії на відділи є важливою частиною структурної організації її виробничої діяльності. У більшості компаній (за винятком невеликих) в обов'язки окремого співробітника не входить вирішення одночасно кадрових, виробничих і обліково-бухгалтерських питань. Обов'язки чітко розподіляються між підрозділами, і у кожного підрозділу є дані, з якими він працює: у бухгалтерії – заробітна плата, у відділі реалізації продукції – інформація, що стосуються торгівлі, у відділі кадрів – персональна інформація про співробітників, у відділі головного технолога – стан технологічного процесу виготовлення продукції, у відділі головного механіка – технічний стан обладнання та устаткування і т.д.

Рис. 11.4. Корпоративний підхід до визначення зв'язків між відділами і їх виробничими функціями

Співробітники кожного відділу виконують операції тільки з тими даними, які їм належать. Подібний поділ обов'язків дає змогу легко стежити за виробничою діяльністю компанії та контролювати її, а також підтримувати цілісність інформаційного простору компанії. Наприклад, бухгалтерія несе відповідальність за інформацію, що стосується нарахування заробітної плати, сплати податків, здійснення обліку матеріальних цінностей тощо. Якщо у менеджера з реалізації продукції виникне потреба дізнатися про загальний оклад співробітників компанії за місяць липень, то йому не потрібно йти в бухгалтерію і ритися в картотеках; йому достатньо послати запит компетентній особі, яка повинна знайти потрібну інформацію, обробити її та надати достовірну відповідь на запит. Така схема організації роботи дає змогу забезпечити правильне оброблення даних, а також здійснити їх захист від можливої дії сторонніх осіб. Подібну структуру зв'язків між відділами компанії та їх виробничими функціями зображено на рис. 11.4. Аналогічні об'єкти мають створити таку саму організацію програми, яка забезпечуватиме цілісність її даних, доступ до них і виконання над ними відповідних дій.

11.2.2. ООП – спосіб ефективної організації програми

ООП ніяк не пов'язане з процесом виконання програми, а є тільки способом її ефективної організації. Велика частина операторів мови C++ є аналогічною операторам процедурних мов програмування, зокрема мови С. Зовні функція класу у мові програмування C++ дуже схожа на звичайну функцію мови С, і тільки за контекстом програми можна визначити, чи є функція частиною структурної С-програми або об'єктно-орієнтованої програми, написаної мовою C++.