Тема: Обєктно-орієнтовне програмування
План
Вступ
1. Обєктно-орієнтована методологія програмування.
2. Обєктно-орієнтовані мови програмування.
- Smalltalk
- C++
- CommonLispObjectSystem (CLOS)
- Ada
- Eiffel
- Java
- ObjectPascal
- Система візуального об'єктно-орієнтованого проектування Delphi.
Висновки
Використана література
Вступ
В даний час можна виділити декілька типів мов програмування. Однією з найважливіших ознак їх класифікації є приналежність їх до одного із стилів, основними з яких є наступні стилі:
· процедурний
· функціональний
· логічний
· об'єктно-орієнтований.
Прототипом об'єктно-орієнтованого програмування послужили ряд засобів, що входять до складу мови Simula-67. Але в самостійний стиль воно оформилося з появою мови SMALLTALK, розробленого А. Кєєм в 1972 році і з початку призначеного для реалізації функцій машинної графіки.
Основна мета ООП, як і більшості інших підходів до програмування - підвищення ефективності розробки програм. Ідеї ООП виявилися плідними і знайшли застосування не тільки в мовах програмування, але і в інших областях ComputerScience, наприклад, в області розробки операційних систем.
Концепція об'єктно-орієнтованого програмування має на увазі, що основою управління процесом реалізації програми є передача повідомлень об'єктам. Тому об'єкти повинні визначатися спільно з повідомленнями, на які вони повинні реагувати при виконанні програми. У цьому полягає головна відмінність ООП від процедурного програмування. Таким чином, об'єктно-орієнтована програма складається з об'єктів - окремих фрагментів кодів, які оброблюють дані, які взаємодіють один з одним через певні інтерфейси.
1. Об'єктно-орієнтована методологія програмування
Останнім часом розвиток апаратних засобів істотно випереджав розвиток систем і засобів програмування. Щоб виправити положення, в 70-80-х роках були запропоновані різні підходи до збільшення продуктивності праці програміста. Серед цих спроб виділяється такий напрям, як об'єктно-орієнтований підхід до конструювання і кодування програм. Особливу роль в популярності цього підходу зіграло як його тісний зв'язок з інтерфейсами користувача (особливо графічними), так і включення елементів цього підходу в популярні (на персональних комп'ютерах фірми IBM) реалізації гібридних мов програмування C++ і PascalwithObjects фірми Borland.
До цих пір більшість використовуваних програмних систем побудовані на принципах структурного підходу, суть якого полягає в декомпозиції системи на ряд модулів, процедур, функцій і структур даних, зв'язаних загальним алгоритмом функціонування. Але розповсюдження могутніх персональних комп'ютерів (порівнянних з робочими станціями 70-80-х років) створило в 90-х роках основу для широкого застосування об'єктно-орієнтованого підходу на практиці. Останнім часом ширше починають використовуватися мови програмування, створені в рамках об'єктно-орієнтованої методології, такі як Smalltalk і Java.
Об'єктно-орієнтована методологія (ООМ) орієнтована, перш за все, на створення великих систем, колективну їх розробку, подальший активний супровід при експлуатації і регулярні модифікації. Серед типових завдань, для яких ООМ є перспективною, можна виділити такі:
· автоматизація експерименту, робототехника;
· планування;
· інтерфейс користувача, анімація;
· комунікації, зв'язок;
· медицина, експертні системи;
· обробка комерційної інформації;
· операційні системи;
· системи управління;
· тренажери, моделювання.
У основі об'єктно-орієнтованої методології програмування лежить об'єктний підхід, коли прикладна наочна область представляється у вигляді сукупності об'єктів, які взаємодіють між собою за допомогою передачі повідомлень. Об'єкт - це сукупність даних (змінних) і способів роботи з ними (компонентних процедур і функцій). Стан об'єкту характеризується переліком всіх його можливих (зазвичай статичних) властивостей і значеннями кожної з цих властивостей (зазвичай динамічних). Стан об'єкту описується його змінними. Поведінка об'єкту (або його функціональність) характеризує те, як об'єкт взаємодіє з іншими об'єктами або піддається взаємодії інших об'єктів, проявляючи свою індивідуальність. Індивідуальність - це такі властивості об'єкту, які відрізняють його від всіх інших об'єктів. Поведінка об'єкту реалізується у вигляді функцій, які називають методами. При цьому структура об'єкту доступна тільки через його методи, які в сукупності формують інтерфейс об'єкту.
Такий підхід дозволяє локалізувати ухвалювані рішення рамками об'єкту, об'єднуючи в нім і структуру, і поведінку, а, отже, знижуючи складність окремої програми (що реалізовує об'єкт). Ця ідея об'єднання структури і поведінки в одному місці і заховання всіх даних усередині об'єкту, що робить їх невидимими для всіх, за винятком методів самого об'єкту називається інкапсуляцією. Це дозволяє об'єктам функціонувати абсолютно незалежно один від одного, приховуючи за інтерфейсом деталі реалізації. Інкапсуляція дозволяє розглядати об'єкти, як ізольовані "чорні ящики", які знають і уміють виконувати певні дії. З цієї точки зору, внутрішній устрій "чорних ящиків" для нас значення не має, нам все одно, що відбувається усередині. Важливо тільки знати, що треба покласти в ящик при зверненні до нього і що ми при цьому з нього отримаємо. Таким чином, об'єкти об'єктно-орієнтованих систем - це мінімальні одиниці інкапсуляції. Але як управляти таким обсягом об'єктів, коли їх стало досить багато? Адже багато хто з них буде дуже сильно відрізнятися один від одного, а інші об'єкти будуть дуже схожі один на одного. Тут на сцену виходить одна з ключових концепцій об'єктно-орієнтованого програмування - ідея угрупування об'єктів в класи, відповідно до того як вони влаштовані і діють. Така ідея вперше була реалізована ще в 60-і роки в мові Simula. Під класом розуміється безліч об'єктів, зв'язаних спільністю структури і поведінки. Клас можна порівняти з шаблоном, по якому створюються об'єкти. Саме клас спочатку описує змінні і методи об'єкту, тобто структуру і поведінку об'єкту, і визначає механізми створення об'єкту, що реально існує в системі, який, коли створюється, є екземпляр класу.
Наведення за допомогою класів порядку в світі об'єктів - велике досягнення, але можна піти далі, визначаючи деякий порядок і серед класів. Досягається це за допомогою введення механізму спадкоємства - мабуть, наймогутнішого засобу в будь-якій об'єктно-орієнтованій системі, оскільки воно дозволяє багато разів використовувати одного разу створений код. Механізм спадкоємства дуже простий: один клас, званий в рамках цих відносин суперкласом, повністю передає іншому класу, який називається підкласом, свою структуру і поведінку, тобто всі свої змінні і всі методи. Що далі робити з цим багатством визначає тільки підклас: він може додати в структуру щось своє, щось з успадкованого інтерфейсу він може використовувати без змін, щось змінити, і, зрозуміло, може додати свої власні методи. Тобто клас за допомогою підкласів розширюється, і як результат, створювані об'єкти стають все більш і більш спеціалізованими. Класи, розташовані за принципом спадкоємства, починаючи з найзагальнішого, базового класу, утворюють ієрархію класів.
Зрозуміло, система, що реалізовує такі принципи побудови, пред'являє жорсткіші, ніж при структурному підході, вимоги до продуктивності обчислювальної системи.
Після короткого опису деяких ключових понять об'єктно-орієнтованої методології, можна зробити вивід, що концептуально об'єктно-орієнтована методологія програмування спирається на об'єктний підхід, який включає чотири основні принципи:
Абстрагування.
Виділення таких істотних характеристик об'єктів, які відрізняють його від всіх інших об'єктів і які чітко визначають особливості даного об'єкту з погляду подальшого розгляду і аналізу. Тільки істотне для даного завдання і нічого більш. Мінімальною одиницею абстракції в ООМ є клас.
Обмеження доступу.
Процес захисту окремих елементів об'єкту, що не зачіпає істотних характеристик об'єкту, як цілого.
Модульність.
Властивість системи, пов'язана з можливістю декомпозиції на ряд тісно зв'язаних частин (модулів). Модульність спирається на дискретне програмування об'єктів, які можна модернізувати або замінювати, не впливаючи на інші об'єкти і систему в цілому.
Існування ієрархій.
Ранжирування, впорядковування за деякими правилах об'єктів системи.
Об'єктно-орієнтована методологія (ООМ) складається з наступних частин:
· об'єктно-орієнтований аналіз (OOA)
· об'єктно-орієнтоване проектування (OOD)
· об'єктно-орієнтоване програмування (OOР).
ООА - методологія аналізу суті реального світу на основі понять класу і об'єкту, складових словник наочної області, для розуміння і пояснення того, як вони (суть) взаємодіють між собою. Моделі OOA надалі перетворюються в об'єктно-орієнтований проект.
OOD - методологія проектування програмного продукту, що сполучає в собі процес об'єктної декомпозиції, що спирається на виділення класів і об'єктів, і прийоми представлення моделей, що відображають логічну (структура класів і об'єктів) і фізичну (архітектура моделей і процесів) структуру системи. Наступні поняття є в OOD фундаментальними:
Інкапсуляція.
Інкапсуляція є найважливішою властивістю об'єктів, на якій будується об'єктно-орієнтоване програмування. Інкапсуляція - це об'єднання в одному класі даних і дій над ними. При цьому включені в об'єкт підпрограми (методи) безпосередньо працюють з даними цього об'єкту, звертаються до інших методів цього об'єкту або методів об'єктів-предків.
Інкапсуляція дозволяє багато в чому ізолювати клас від решти частин програми, зробити його «самодостатнім» для вирішення конкретного завдання. В результаті клас завжди несе в собі деяку функціональність. Наприклад, клас Tform в Delphi містить (інкапсулює в собі) все необхідне для створення Windows-вікна, клас Ttimer забезпечує роботу таймера і так далі.