покращуючи попередні підходи. До винаходу об'єктно-орієнтованого програмування багато проектів досягали кордонів, за якими структурний підхід вже не працював. Саме для подолання цих перешкод була створена об'єктно-орієнтована парадигма.
Об'єктно-орієнтоване програмування або ООП - методологія програмування, заснована на представленні програми у вигляді сукупності об'єктів. Об'єктно-орієнтоване програмування успадкувало кращі ідеї структурного програмування і об'єднало їх з новими поняттями. У результаті виник новий спосіб організації програм. В основу об'єктно-орієнтованого підходу, на відміну від структурного підходу, покладені дані, а не код, а базовий принцип формулюються так: «дані контролюють доступ до коду». В об'єктно-орієнтованих мовах визначаються дані і процедури, що здійснюють до них доступ.
Об'єктно-орієнтоване програмування є, ймовірно, найпоширенішою в сучасній проектній практиці парадигмою програмування, яка підтримується більшістю сучасних мов програмування. При цьому реалізації концепцій і механізмів, складових підставу ООП, можуть відрізнятися в різних мовах. Тому вивчення ООП передбачає не стільки вивчення якого-небудь конкретного мови програмування, скільки лежать в його основі концепцій і механізмів. До найважливішим речам, які повинен знати професійний програмний інженер, належить набір фундаментальних концепцій, які з разу в раз використовуються у його роботі. З одного боку, такий підхід до вивчення програмування дозволяє краще розібратися в проблемах, що виникають перед розробниками програмного забезпечення, з іншого боку, дозволяє краще зрозуміти причини появи і успішного розвитку різних мов і технологій програмування.
. 3 Опис принципів ООП
Центральним елементом ООП є абстракція. Дані за допомогою абстракції перетворяться в об'єкти, а послідовність обробки цих даних перетворюється на набір повідомлень, переданих між цими об'єктами. Кожен з об'єктів має своє власне унікальне поведінку. З об'єктами можна звертатися як з конкретними сутностями, які реагують на повідомлення, що наказують їм виконати якісь дії. Абстрагування - метод розв'язання задачі, при якому об'єкти різного роду об'єднуються загальним поняттям, а потім згруповані суті розглядаються як елементи єдиної категорії. Абстрагування дозволяє відокремити логічний зміст фрагмента програми від проблеми його реалізації, розділивши зовнішній опис (інтерфейс) об'єкта та його внутрішню організацію (реалізацію).
Для підтримки об'єктно-орієнтованого програмування мова повинна володіти трьома фундаментальними властивостями: инкапсуляцией, поліморфізмом і спадкуванням.
Інкапсуляція.
Інкапсуляція - механізм, що зв'язує воєдино код і дані, якими він маніпулює, а також забезпечує їх захист від зовнішнього втручання та неправильного використання. В об'єктно-орієнтованій мові код і дані можна занурювати в якийсь «чорний ящик», який називається об'єктом. Інакше кажучи, об'єкт - це засіб інкапсуляції.
Усередині об'єкту код і дані можуть бути закритими або відкритими. Закритий код або дані об'єкта доступні тільки з іншої частини цього ж об'єкта. Інакше кажучи, до закритої частини коду або даних неможливо звернутися ззовні. Якщо код або дані є відкритими, вони доступні з будь-якої частини програми. Як правило, відкрита частина коду забезпечує керована взаємодія (інтерфейс) із закритими елементами об'єкта.
Поліморфізм.
Поліморфізм - властивість, що дозволяє одноманітно посилатися на об'єкти різних класів. Поліморфізм дозволяє спростити програму, створюючи один інтерфейс для виконання різних дій. Відповідальність за вибір конкретного методу у виниклій ситуації перекладається на компілятор. Програмісту не обов'язково втручатися в цей процес. Потрібно лише пам'ятати правила і правильно застосовувати загальний інтерфейс. Поліморфізм робить класи ще зручніше і полегшує розширення і підтримку програм, заснованих на них.
Успадкування.
Спадкування - це властивість системи, що дозволяє описати новий клас на основі вже існуючого з частково або повністю позичає функціональністю. Клас, від якого здійснюється спадкування, називається базовим, батьківським або суперкласом. Новий клас - нащадком, спадкоємцем або похідним класом. Іншими словами, це механізм, що дозволяє створювати ієрархії об'єктів. При цьому властивості об'єктів, розташованих на більш високих рівнях ієрархії, автоматично ставляться до всіх породженим від них об'єктам.
Більшість об'єктно-орієнтованих мов програмування підтримує тільки одиничне успадкування, тобто клас може мати тільки один клас-батько. Лише в деяких мовах можливо так зване множинне спадкування, подразумевающее породження класу від двох або більше кл...