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

23.08.2015

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

2. Об’єкт – як базове поняття в об’єктно-орієнтованому програмуванні

2.1 Інкапсуляція

2.2 Спадкування як найважливіша властивість об’єкта

2.3 Примірники об’єктних типів

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

5 Об’єктно-орієнтовані мови

6 Проста об’єктна модель і ссылочно-об’єктна модель

7 Мови і програмне оточення

Висновок

Список літератури

Введення

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

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

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

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

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

В основі об’єктно-орієнтованого програмування мовою лежать два основних поняття: об’єкт і клас. Основними характеристичними властивостями цих понять є:

Інкапсуляція — комбінування записів з процедурами та функціями, манипулирующими полями цих записів, формує новий тип даних — об’єкт (під записом розуміється змінна типу «запис»).

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

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

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

Поняттю «об’єкт» зіставляють ряд доповнюючих один одного визначень. Нижче наведені деякі з них.

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

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

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

Можна виділити п’ять типів операцій:

— конструктор, створення і ініціалізація об’єкта;

— деструктор, що руйнує об’єкт;

— модифікатор, що змінює стан об’єкта;

— селектор для доступу до змінних об’єкта без їх зміни;

— ітератор для доступу до вмісту об’єкту по частинах у певній послідовності.

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

Під індивідуальністю об’єкта розуміють властивість об’єкта, що дозволяє відрізняти цей об’єкт від всіх інших об’єктів.

Об’єкти можуть перебувати в певних відносинах один до одного. Ці відносини можуть бути ієрархічними. Основні ієрархічні відносини — це відносини використання і включення. Ставлення використання реалізується посилкою повідомлень від об’єкта A до об’єкта B. При цьому об’єкт A може виступати в ролі:

— активного чи впливає об’єкта, коли він впливає на інші об’єкти, але сам впливу не піддається;

— пасивного або виконуючого, коли об’єкт піддається впливу, але сам на інші об’єкти не впливає;

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

Відношення включення має місце, коли складовою об’єкт містить інші об’єкти.

2.1 Інкапсуляція

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

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

2.2 Спадкування як найважливіша властивість об’єкта

Не менш важливим є і той факт, що об’єкти можуть успадковувати характеристики і поведінка того, що ми називаємо породжують, батьківські об’єкти (або предки). Тут відбувається якісний стрибок: спадкування, можливо, є сьогодні єдиним найбільшим відмінністю між звичайним програмування на Паскалі і об’єктно-орієнтованим програмуванням в Borland Pascal.

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

Процес, за допомогою якого один тип успадковує характеристики іншого типу, називається спадкуванням. Спадкоємець називається породженим (дочірнім) типом, а тип, якому успадковує дочірній тип, називається породжує (батьківським) типом. Раніше відомі типи записів Паскаля не можуть успадковувати. Однак Borland Pascal розширює мова Паскаля для підтримки спадкування. Одним з цих розширень є нова категорія структури даних, пов’язана з записами, але значно потужніша. Типи даних в цій новій категорії визначаються за допомогою нового зарезервованого слова object. Тип об’єкта може бути визначений як повний, самостійний тип в манері опису записів Паскаля, але він може визначатися і як нащадок існуючого типу об’єкта шляхом приміщення породжує (батьківського) типу в дужки після зарезервованого слова object.

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

Як показали дані визначення, об’єкти тісно пов’язані із записами. Нове зарезервоване слово object є найбільш очевидною відмінністю, але як ми побачимо пізніше, є велике число інших відмінностей, деякі з яких досить тонкі.

2.3 Примірники об’єктних типів

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

2.4 Поля об’єктів

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

2.5 Методи

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

Відповідь полягає в тому, що при всякій можливості для доступу до полів даних повинні використовуватися методи об’єкта. Метод є процедурою або функцією, описаної в межах об’єкта і жорстко обмеженою цим об’єктом.

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

Метод — це процедура або функція, об’єднана з даним типом настільки тісно, що метод є як би оточеним невидимим оператором with, що робить примірник даного типу доступними для зсередини методу. Визначення типу включає заголовок методу. Повне визначення методу кваліфікується в імені типу. Тип об’єкта і метод об’єкта є двома особами цієї нової різновиди структури, яка називається методом.

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

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

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

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

Отже, підведемо деякий підсумок. Що таке об’єкт?

Об’єкт складається з структури даних і пов’язаних з нею процедур, які називаються методами), які працюють з даними, записаними в примірниках структури даних.

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

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

2.6. Поліморфізм

Поліморфізм означає, що один і той же метод виконується по-різному для різних об’єктів. Наприклад, метод класу Музичний інструмент — PlayMusicForAnOrchestra (грай музику для оркестру) — може бути визначений як загальний метод, який може використовуватися з будь-якою категорією музичних інструментів. Цей метод написаний таким чином, що не важливо, який саме інструмент отримує завдання грати, проте для класів, що описують конкретні інструменти, цей метод повинен бути перевизначено (override), що дасть змогу визначити конкретні дії, які враховують особливості даного інструменту.

Поняття класу

В клас об’єднуються об’єкти з однаковими властивостями і методами.

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

Використання ієрархії класів вводить необхідність абстракції. Класи стають більш абстрактними у міру просування вгору по ієрархії.

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

Клас — це абстрактне поняття, порівнянне з поняттям категорія в його звичайному розумінні.

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

Це можна пояснити на прикладі музичних інструментів. Музичні інструменти поділяються на наступні категорії: духові, ударні і струнні.

Всі ці категорії належать до категорії музичних інструментів. У свою чергу, категорія музичних інструментів входить у категорію інструментів. На рис.1 ця структура категорій графічно представлена у вигляді дерева.

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

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

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

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

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

Між класами також можуть бути встановлені відносини:

— ставлення різновиди (кішка — вид певного біологічного сімейства або кішка — домашня тварина);

— включення або складової частини (лапа — частина кішки);

— асоціативності, коли між класами є чисто смислова зв’язок (кішки й собаки — домашні тварини).

Короткий опис статті: об’єктно орієнтоване програмування Тема: Поняття об’єктно-орієнтованого програмування. Тип: Контрольна робота. У роботі є: малюнки 1 шт. Мова: російська. Розмістив (ла): Малина. Розмір: 43 кб. Категорія: Інформатика. Короткий опис: ‘Поняття об’єктно-орієнтованого програмування. 1. Основні поняття об’єктно-орієнтованого програмування. 2. Об’єкт — як базове поняття в об’єктно-орієнтованому програмуванні.’ Контрольна робота Поняття об’єктно-орієнтованого програмування Інформатика

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

Також ви можете прочитати