Тема: Обєктно-орієнтовне програмування

План

Вступ

1.         Обєктно-орієнтована методологія програмування.

2.         Обєктно-орієнтовані мови програмування.

- Smalltalk

- C++

- Common Lisp Object System (CLOS)

- Ada

- Eiffel

- Java

- Object Pascal

- Система візуального об'єктно-орієнтованого проектування Delphi.

Висновки

Використана література


Вступ

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

· процедурний

· функціональний

· логічний

· об'єктно-орієнтований.

Прототипом об'єктно-орієнтованого програмування послужили ряд засобів, що входять до складу мови Simula-67. Але в самостійний стиль воно оформилося з появою мови SMALLTALK, розробленого А. Кєєм в 1972 році і з початку призначеного для реалізації функцій машинної графіки.

Основна мета ООП, як і більшості інших підходів до програмування - підвищення ефективності розробки програм. Ідеї ООП виявилися плідними і знайшли застосування не тільки в мовах програмування, але і в інших областях Computer Science, наприклад, в області розробки операційних систем.

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


1. Об'єктно-орієнтована методологія програмування

Останнім часом розвиток апаратних засобів істотно випереджав розвиток систем і засобів програмування. Щоб виправити положення, в 70-80-х роках були запропоновані різні підходи до збільшення продуктивності праці програміста. Серед цих спроб виділяється такий напрям, як об'єктно-орієнтований підхід до конструювання і кодування програм. Особливу роль в популярності цього підходу зіграло як його тісний зв'язок з інтерфейсами користувача (особливо графічними), так і включення елементів цього підходу в популярні (на персональних комп'ютерах фірми IBM) реалізації гібридних мов програмування C++ і Pascal with Objects фірми Borland.

До цих пір більшість використовуваних програмних систем побудовані на принципах структурного підходу, суть якого полягає в декомпозиції системи на ряд модулів, процедур, функцій і структур даних, зв'язаних загальним алгоритмом функціонування. Але розповсюдження могутніх персональних комп'ютерів (порівнянних з робочими станціями 70-80-х років) створило в 90-х роках основу для широкого застосування об'єктно-орієнтованого підходу на практиці. Останнім часом ширше починають використовуватися мови програмування, створені в рамках об'єктно-орієнтованої методології, такі як Smalltalk і Java.

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

· автоматизація експерименту, робототехника;

· планування;

· інтерфейс користувача, анімація;

· комунікації, зв'язок;

· медицина, експертні системи;

· обробка комерційної інформації;

· операційні системи;

· системи управління;

· тренажери, моделювання.

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

Такий підхід дозволяє локалізувати ухвалювані рішення рамками об'єкту, об'єднуючи в нім і структуру, і поведінку, а, отже, знижуючи складність окремої програми (що реалізовує об'єкт). Ця ідея об'єднання структури і поведінки в одному місці і заховання всіх даних усередині об'єкту, що робить їх невидимими для всіх, за винятком методів самого об'єкту називається інкапсуляцією. Це дозволяє об'єктам функціонувати абсолютно незалежно один від одного, приховуючи за інтерфейсом деталі реалізації. Інкапсуляція дозволяє розглядати об'єкти, як ізольовані "чорні ящики", які знають і уміють виконувати певні дії. З цієї точки зору, внутрішній устрій "чорних ящиків" для нас значення не має, нам все одно, що відбувається усередині. Важливо тільки знати, що треба покласти в ящик при зверненні до нього і що ми при цьому з нього отримаємо. Таким чином, об'єкти об'єктно-орієнтованих систем - це мінімальні одиниці інкапсуляції. Але як управляти таким обсягом об'єктів, коли їх стало досить багато? Адже багато хто з них буде дуже сильно відрізнятися один від одного, а інші об'єкти будуть дуже схожі один на одного. Тут на сцену виходить одна з ключових концепцій об'єктно-орієнтованого програмування - ідея угрупування об'єктів в класи, відповідно до того як вони влаштовані і діють. Така ідея вперше була реалізована ще в 60-і роки в мові Simula. Під класом розуміється безліч об'єктів, зв'язаних спільністю структури і поведінки. Клас можна порівняти з шаблоном, по якому створюються об'єкти. Саме клас спочатку описує змінні і методи об'єкту, тобто структуру і поведінку об'єкту, і визначає механізми створення об'єкту, що реально існує в системі, який, коли створюється, є екземпляр класу.

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

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

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

Абстрагування.

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

Обмеження доступу.

Процес захисту окремих елементів об'єкту, що не зачіпає істотних характеристик об'єкту, як цілого.

Модульність.

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

Існування ієрархій.

Ранжирування, впорядковування за деякими правилах об'єктів системи.

Об'єктно-орієнтована методологія (ООМ) складається з наступних частин:

 · об'єктно-орієнтований аналіз (OOA)

 · об'єктно-орієнтоване проектування (OOD)

 · об'єктно-орієнтоване програмування (OOР).

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

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

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

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

Інкапсуляція дозволяє багато в чому ізолювати клас від решти частин програми, зробити його «самодостатнім» для вирішення конкретного завдання. В результаті клас завжди несе в собі деяку функціональність. Наприклад, клас Tform в Delphi містить (інкапсулює в собі) все необхідне для створення Windows-вікна, клас Ttimer забезпечує роботу таймера і так далі.

Одиницею інкапсуляції в OOD є об'єкт.

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

Будь-який клас може бути породжений від іншого класу. Для цього при його оголошенні вказується ім'я класу-батька:

Tchildclass = class(Tparentclass) (мова Object Pascal)

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

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

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

Таким чином, поліморфізм проводить ідею «один інтерфейс - безліч методів». Вибір конкретної дії залежить від ситуації.

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

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

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

· всі об'єкти відносяться до відповідних типів (класам);

· класи можуть успадковувати від суперкласів.

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

Останній принцип відрізняє чисті об'єктно-орієнтовані мови такі як Smalltalk, Actor, від гібридних мов програмування, що виросли з раніше існуючих процедурних мов (Object Pascal, C++). Ці підходи - як би крайнощі в сімействі об'єктно-орієнтованих мов. Ближче до середини лежить абсолютно новий, повністю побудований на принципах об'єктно-орієнтованої ідеології, але все таки останній принцип, що порушує, мова Java.


Информация о работе «Обєктно-орієнтовне програмування»
Раздел: Информатика, программирование
Количество знаков с пробелами: 25988
Количество таблиц: 0
Количество изображений: 0

Похожие работы

Скачать
29682
0
0

... системах наукової класифікації. Однак перш ніж зануритися в об’єктно-орієнтовану розробку, давайте розглянемо деякі з властивостей, загальні для класу "об'єктів". Абстракція Ціль об'єктно-орієнтованого програмування полягає в тому, щоб побачити в задачі абстракції об'єктів реального світу. Що за реальні об'єкти малися на увазі? Буквально будь-які, аби вони давали представлення про функці ...

Скачать
158519
16
2

... ліворуч. Перевантажені операції помістити в потік і взяти з потоку повинні об’являтися як дружні, якщо вони повинні мати прямий доступ до закритих елементів класу з міркувань продуктивності. 2. Розробка власного класу clsString   2.1 Загальний алгоритм вирішення Створимо базовий клас TPString у якому розмістимо мінімальнонеобхідні компоненти, але при цьому цей клас вже буде функці ...

Скачать
27117
2
10

... він може переміщувати у своїй частині екрану, а далі все теж саме, як і при грі одного гравця. 2. Постановка задачі Метою курсового проекту є реалізація гри «Арканоід» на основі XNA Framework, що буде виконувати такий список функцій: а) Функціонування та відображення меню. Переключення між пунктами меню та виділення поточного пункту. б) Читання з файлу розташування блоків та особливостей, ...

Скачать
17353
1
5

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

0 комментариев


Наверх