Основні принципи об’єктно-орієнтованого програмування 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Основні принципи об’єктно-орієнтованого програмування



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

У 80-і роки минулого століття стало зрозуміло, що надії на те, що структурне програмування (і проектування) зможе суттєво покращити якість програм і продуктивність праці програмістів не виправдалися.

Якщо на початку ери комп'ютеризації вартість апаратних засобів (hardware) значно перевищувала вартість програмних засобів (ПЗ) (software), то згодом ситуація змінилася. Витрати на розробку і супровід ПЗ зростали, а вартість розробки апаратних засобів - знижувалася.

Об'єктно-орієнтований підхід базується на «старому» фундаменті процедурної парадигми і успадковує такі її кращі риси, як модульність і абстракція типів даних.

Основна новизна цієї парадигми в тому, що в ній поєднані структури даних і функції обробки цих даних.

Отже, повторимо основні концепції ООП.

Визначення. Об'єктно-орієнтоване програмування (ООП) – парадигма, заснована на представленні предметної області у вигляді системи взаємозв'язаних абстрактних об'єктів і їх реалізацій.

Зараз в парадигмі об'єктно-орієнтованого програмування домінують два стилі – програмування, базоване на класах (class-based programming) і програмування, базоване на прототипах (prototype-based programming) – відносно новий напрям ООП.

Програмування, базоване на класах. На відміну від процедурного програмування, в якому дані і функції їх обробки не зв'язані, в ООП визначена нова структура даних - клас - абстрактний тип, в якому окрім даних містяться функції їх обробки (методи).

Розглянемо основні поняття ООП: об'єкт, клас, властивість і метод.

Кожний об'єкт в ООП має свій тип (клас).

Клас представляє собою абстрактний тип даних, який має:

Поля – атрибути об'єкту.

Властивості - параметри об'єкту (значення його атрибутів).

Методи - дії, які можна виконувати над об'єктом цього типу, або які сам об'єкт може виконувати (процедури та функції).

Події - повідомлення, які посилає об'єкт (або посилаються об'єкту) при зміні стану.

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

В основі об'єктно-орієнтованого програмування лежать 4 основні принципи:

Абстракція - опис взаємодії виключно в термінах повідомлень/подій в предметній області. Об'єкти надають не повну інформацію про реальні властивості предметної області. Їх моделі адекватні вирішуваній задачі, працювати з ними зручніше, ніж з низькорівневим описом усіх можливих властивостей і реакцій об'єкту.

Інкапсуляція - здатність приховування реалізації (властивостей і методів усередині класу), тобто можливість доступу до об'єкту і маніпулювання ним виключно за допомогою властивостей (get, set) і методів класу.

До основних властивостей інкапсуляції відносяться наступні:

1. сумісне зберігання даних і функцій (тобто властивостей і методів) усередині класу;

2. приховування внутрішньої інформації від користувача (що забезпечує більшу безпеку програмі) – за допомогою специфікаторів доступу private, internal;

3. ізоляція користувача від деталей реалізації (що забезпечує незалежність від моделі обчислень і потенційно дружній інтерфейс програми).

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

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

Поліморфізм – це концепція, що дозволяє мати різні реалізації для одного і того ж методу, які будуть вибиратися залежно від типу об'єкту, переданого до методу при його виклику.

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

Питання: Які приклади поліморфізму можна навести?

Відповідь: в С++, C# перевантаження функцій – одне і те саме ім'я функції може використовуватися для передачі повідомлень об'єктам різних класів. Такі функції повинні мати різні списки параметрів.

Отже -

Класи, наслідування і поліморфізм - фундаментальні властивості, яким повинні задовольняти мови програмування, щоб підтримувати об'єктно-орієнтовану парадигму програмування.

Для реалізації цих властивостей різні мови програмування використовують різні підходи.



Поделиться:


Последнее изменение этой страницы: 2017-02-21; просмотров: 1333; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.144.127.232 (0.005 с.)