МІНІСТЕРСТВО ОСВІТИ РФ p>
Воронезька ІНСТИТУТ ВИСОКИХ ТЕХНОЛОГІЙ p>
Факультет заочно-дистанційного навчання p>
Курсова робота по курсу: "Інформатика" на тему: "Об'єктно - орієнтовані мови програмування. " p>
| Виконав: | ст. гр. ШСЗ-011 |
| | Старовойтов С. А. |
| Прийняв: | к.т.н., доцент |
| | Пітолін А. В. | p>
ВОРОНІЖ 2002 p>
ВСТУП 3 p>
I. Об'єктно-орієнтоване програмування 5
1.1. ТЕХНОЛОГІЇ ПРОГРАМУВАННЯ 5
1.2. СУТНІСТЬ об'єктно-орієнтованого підходу до програмування 7 p>
II. Об'єктно-орієнтовані мови програмування. 10
2.1. SIMULA 67 10
2.2. SMALLTALK 11
2.3. ПРОДУКТИ, заснований на мові СІ 14 p>
2.3.1. C + + 16 p>
2.3.2. OBJECTIVE-C 18 p>
2.3.3 ІНШІ ПРОДУКТИ, ЗАСНОВАНІ НА СІ 19
2.4. ПРОДУКТИ, ЗАСНОВАНІ НА ЛИСП 19
2.5. EIFFEL 22
2.6. МОВИ, ЗАСНОВАНІ на Паскалі 22 p>
2.6.1. ACTOR 22 p>
2.6.2. OBJECT PASCAL 23
2.7. Мови, які підтримуються Абстракції ДАНИХ 23 p>
2.7.1. ADA 23 p>
2.7.2. MODULA-2 24 p>
ВИСНОВОК 26 p>
Список літератури 27 p>
ВСТУП p>
Питання реалізації програмного забезпечення, розробка якого веласяіз застосуванням однієї з об'єктно-орієнтованих методологій,розглядаються в розділі 5. Реалізація програмного забезпечення пов'язана звикористанням однієї з мов програмування. Показано, що найбільшзручними для реалізації програмних систем, розроблених у рамкахоб'єктно-орієнтованого підходу, є об'єктно-орієнтовані мовипрограмування, хоча можлива реалізація і на звичайних (не об'єктно -орієнтованих) мовах (наприклад, на мові C і мовою Fortran). p>
Об'єктно-орієнтовані мови програмування користуються останнімчас великою популярністю серед програмістів, тому що вони дозволяютьвикористовувати переваги об'єктно-орієнтованого підходу не тільки наетапах проектування і конструювання програмних систем, а й на етапахїх реалізації, тестування і супроводу. p>
Перший об'єктно-орієнтована мова програмування Simula 67 буврозроблений в кінці 60-х років в Норвегії. Автори цієї мови дуже точновгадали перспективи розвитку програмування: їх мова набагато випередивсвій час. p>
Однак сучасники (програмісти 60-х років) виявилися не готовісприйняти цінності мови Simula 67, і він не витримав конкуренції зіншими мовами програмування (перш за все, з мовою Fortran).
Прохолодне ставлення до мови Simula 67 сприяло і теобставина, що він був реалізований як інтерпретується (а немодульна) мова, що було абсолютно неприйнятним у 60-ті роки, тому щоінтерпретація пов'язана зі зниженням ефективності (швидкості виконання)програм. p>
Але гідності мови Simula 67 були помічені деякими програмістами,і в 70-і роки було розроблено велику кількість експериментальних об'єктно -орієнтованих мов програмування: наприклад, мови CLU, Alphard,
Concurrent Pascal та ін Ці мови так і залишилися експериментальними, але врезультаті їхнього дослідження були розроблені сучасні об'єктно -орієнтовані мови програмування: C + +, Smalltalk, Eiffel та ін p>
Найбільш поширеним об'єктно-орієнтованою мовоюпрограмування безумовно є C + +. Вільно розповсюджуютьсякомерційні системи програмування C + + існують практично на будь-якийплатформі. Широко відома вільно розповсюджується системапрограмування G + +, яка дає можливість всім бажаючим розібратидосить добре і докладніше прокоментувати вихідний текст одного ззразкових компіляторів мови C + +. Завершується робота з стандартизаціїмови C + +: останній Draft стандарту C + + випущений в червні 1995 р. (віндоступний за Internet). p>
Розробка нових об'єктно-орієнтованих мов програмуваннятриває. З 1995 року став широко розповсюджуватися новий об'єктно -орієнтована мова програмування Java, орієнтований на мережікомп'ютерів і, перш за все, на Internet. Синтаксис цієї мови нагадуєсинтаксис мови C + +, однак ці мови мають мало спільного. Javaінтерпретується мову: для нього визначені внутрішнє подання
(bytecode) та інтерпретатор цього подання, які вже заразреалізовані на більшості платформ. Інтерпретатор спрощує налагодженняпрограм, написаних на мові Java, забезпечує їх переносимість на новіплатформи і адаптованість до нових оточення. Він дозволяє виключитивплив програм, написаних на мові Java, на інші програми та файли,наявні на новій платформі, і тим самим забезпечити безпеку привиконання цих програм. Ці властивості мови Java дозволяють використовуватийого як основну мову програмування для програм, які розповсюджуються помереж (зокрема, через мережу Internet). p>
Об'єктно-орієнтоване програмування p>
1.1. ТЕХНОЛОГІЇ ПРОГРАМУВАННЯ p>
Технологія програмування - це сукупність методів і засобіврозробки (написання) програм та порядок застосування цих методів ікоштів. p>
На ранніх етапах розвитку програмування, коли програми писалися ввигляді послідовностей машинних команд, будь-яка технологіяпрограмування була відсутня. Перші кроки у розробці технологіїполягали у поданні програми у вигляді послідовності операторів.
Написанню послідовності машинних команд передувало складанняоператорної схеми, що відбиває послідовність операторів і переходиміж ними. Операторні підхід дозволив розробити перші програми дляавтоматизації складання програм - так звані складові програми. p>
Зі збільшенням розмірів програм стали виділяти їх відокремлені частини іоформляти їх як підпрограми. Частина таких підпрограм об'єднувалася вбібліотеки, з яких подпрошрамми можна було включати в робочі програмиі потім викликати з робочих програм. Це поклало початок процедурномупрограмування - велика програма представлялася сукупністю процедур -підпрограм. Одна з підпрограм є головною та з неї починалосявиконання програми. p>
У 1958 році були розроблені перші мови програмування, Фортран та
Алгол-58. Програма на Фортране складалася з головної програми і деякогокількості процедур - підпрограм і функцій. Програма на Алгол-58 і йогонаступної версії Алгол-60представляла собою єдине ціле, але малаблокову структуру, що включає головний блок і вкладені блоки підпрограм іфункцій. Компілятори для Фортрану забезпечували роздільну трансляціюпроцедур і подальше їх об'єднання в робочу програму, першийкомпілятори для Алгол припускали, що транслюється відразу вся програма,роздільна трансляція процедур не забезпечувалася. p>
Процедурний підхід зажадав структурування майбутньої програми,поділу її на окремі процедури. При розробці окремої процедури проінших процедурах було потрібно знати тільки їх призначення і спосіб виклику.
З'явилася можливість переробляти окремі процедури, не зачіпаючирешті частини програми, скорочуючи при цьому витрати праці і машинногочасу на розробку і модернізацію програм. p>
Наступним кроком у поглибленні структурування програм стало такзване структурне програмування, при якому програма вцілому і окремі процедури розглядалися як послідовностіканонічних структур: лінійних ділянок, циклів і розгалужень. З'явиласяможливість читати і перевіряти програму як послідовний текст, щопідвищило продуктивність праці програмістів при розробці і налагодженнюпрограм. З метою підвищення структурності програми були висунутівимоги до більшої незалежності підпрограм, підпрограми повиннізв'язуватися з викликають їх програмами тільки шляхом передачі їмаргументів, використання в підпрограма змінних, що належать іншимпроцедур або головній програмі, стало вважатися небажаним. p>
Процедурне і структурне програмування торкнулися перш за всепроцес опису алгоритму як послідовності кроків, що ведуть відварьируемых вихідних даних до шуканого результату. Для вирішення спеціальнихзадач стали розроблятися мови програмування, орієнтовані наконкретний клас задач: на системи управління базами даних, імітаційнемоделювання і т.д. При розробці трансляторів все більше уваги сталоприділятися виявлення помилок у вихідних текстах програм, забезпечуючи цимскорочення витрат часу на налагодження програм. p>
Застосування програм у різних галузях людської діяльностіпризвело до необхідності підвищення надійності всього програмногозабезпечення. Одним з напрямків вдосконалення мов програмуваннястало підвищення рівня типізації даних. Теорія типів даних виходить зтого, що кожне використовуване в програмі дане належить одному ітільки одного типу даних. Тип даного визначає безліч можливихзначень цього та набір операцій, допустимих над цими даними. Данеконкретного типу в ряді випадків може бути перетворено в даний іншоготипу, але таке перетворення повинно бути явно представлено в програмі. Узалежно від ступеня виконання перерахованих вимог можна говоритипро рівень типізації тієї чи іншої мови програмування. Прагненняпідвищити рівень типізації мови програмування призвело до появи мови
Паскаль, який вважається універсальна мова, хоча й у ньомудозволені деякі неявні перетворення типів, наприклад, цілого вречовий. Застосування універсальна мова при написанніпрограми дозволяє ще при трансляції вихідного тексту виявити багатопомилки використання даних і цим підвищити надійність програми. Разом зтим строга типізація сковувала свободу програміста, ускладнювала застосуваннядеяких прийомів перетворення даних, що часто використовуються в системномупрограмуванні. Практично одночасно з Паскалем була розроблена мова
Сі, більшою мірою орієнтована на системне програмування тащо відноситься до слабо універсальна мова. p>
Всі універсальні мови програмування, незважаючи на відмінності всинтаксисі і використовуваних ключових словах, реалізують одні й ті жканонічні структури: оператори присвоювання, цикли і розгалуження. Підвсіх сучасних мовах присутні зумовлені (базові) типи даних
(цілі і речові арифметичні типи, символьний і, можливо,рядковий тип), є можливість використання агрегатів даних, у томучислі масивів і структур (записів). Для арифметичних даних дозволенізвичайні арифметичні операції, для агрегатів даних зазвичай передбаченатільки операція привласнення і можливість звернення до елементів агрегату.
Разом з тим при розробці програми для вирішення конкретної прикладноїзавдання бажана можливо велика концептуальна близькість тексту програмидо опису завдання. Наприклад, якщо рішення завдання вимагає виконанняоперацій над комплексними числами або квадратними матрицями, бажано,щоб у програмі явно були присутні оператори додавання, віднімання,множення і ділення даних типу комплексного числа, додавання, віднімання,множення й звернення даних типу квадратної матриці. Вирішення цієї проблемиможливо кількома шляхами: p>
- Побудовою мови програмування, що містить як можна більшетипів даних, і вибором для кожного класу задач деякого підмножиницієї мови. Такий мова іноді називають мовою-оболонкою. На роль мови -оболонки претендував мова ПЛ/1, що виявився настільки складним, що так і невдалося побудувати його формалізований опис. Відсутність формалізованогоописи, проте, не завадило широкому застосуванню ПЛ/1 як у Західній
Європі, так і в СРСР. P>
- Побудовою розширюваного мови, що містить невелике ядро ідопускає розширення, доповнює мову типами даних і операторами,відображають концептуальну сутність конкретного класу задач. Такий мованазивають мовою-ядром. Як мова-ядро були розроблені мови Симула і Алгол-
68, які не отримали широкого розповсюдження, але що зробили великий вплив нарозробку інших мов програмування. p>
Подальшим розвитком другого шляху з'явився об'єктно-орієнтованийпідхід до програмування. p>
1.2. СУТНІСТЬ об'єктно-орієнтованого підходу до програмування p>
Основні ідеї об'єктно-орієнтованого підходу спираються на наступніположення: p>
- Програма є модель деякого реального процесу,частини реального світу. p>
- Модель реального світу або його частини може бути описана яксукупність взаємодіючих між собою об'єктів. p>
- Об'єкт описується набором параметрів, значення яких визначаютьстан об'єкта, і набором операцій (дій), які може виконуватиоб'єкт. p>
- Взаємодія між об'єктами здійснюється посилкою спеціальнихповідомлень від одного об'єкта до іншого. Повідомлення, отримане об'єктом,може вимагати виконання певних дій, наприклад, змінистану об'єкта. p>
- Об'єкти, описані одним і тим же набором параметрів і здатнівиконувати один і той самий набір дій являють собою клас однотипнихоб'єктів. p>
З точки зору мови програмування клас об'єктів можнарозглядати як тип даного, а окремий об'єкт - як дане цього типу.
Визначення програмістом власних класів об'єктів для конкретногонабору завдань повинно дозволити описувати окремі завдання в термінах самогокласу задач (при відповідному виборі імен типів та імен об'єктів, їхпараметрів і виконуваних дій). p>
Таким чином, об'єктно-орієнтований підхід припускає, що прирозробці програми повинні бути визначені класи використовуються у програміоб'єктів і побудовані їх описи, потім створені екземпляри необхіднихоб'єктів і визначено взаємодію між ними. p>
Класи об'єктів часто зручно будувати так, щоб вони утворювалиієрархічну структуру. Наприклад, клас "Студент", що описуєабстрактного студента, може бути основою для побудови класів
"Студент 1 курсу", "Студент 2 курсу" і т.д., які мають всівластивостями студента взагалі і деякими додатковими властивостями,характеризують студента конкретного курсу. При розробці інтерфейсу зкористувачем програми можуть використовувати об'єкти загального класу "Вікно" іоб'єкти класів спеціальних вікон, наприклад, вікон інформаційних повідомлень,вікон введення даних і т.п. У таких ієрархічних структурах один клас можерозглядатися як базовий для інших, похідних від нього класів. Об'єктпохідного класу має всі властивості базового класу і деякимивласними властивостями, він може реагувати на ті ж типи повідомлень відінших об'єктів, що і об'єкт базового класу і на повідомлення, що мають сенстільки для похідного класу. Зазвичай кажуть, що об'єкт похідногокласу успадковує всі властивості свого базового класу. p>
Деякі параметри об'єкта можуть бути локалізовані всередині об'єкта інедоступні для прямого впливу ззовні об'єкта. Наприклад, під часруху об'єкта-автомобіля об'єкт-водій може впливати тільки наобмежений набір органів управління (рульове колесо, педалі газу,зчеплення і гальма, важіль перемикання передач) і йому недоступний цілий рядпараметрів, що характеризують стан двигуна і автомобіля в цілому. p>
Очевидно, для того, щоб продуктивно застосовувати об'єктний підхід длярозробки програм, необхідні мови програмування, що підтримують цейпідхід, тобто що дозволяють будувати опис класів об'єктів, утворюватидані об'єктних типів, виконувати операції над об'єктами. Одним з першихтаких мов стала мова SmallTalk в якому всі дані є об'єктамидеяких класів, а загальна система класів будується як ієрархічнаструктура на основі визначених базових класів. p>
Досвід програмування показує, що будь-методичний підхід втехнології програмування не повинен застосовуватися сліпо з ігноруваннямінших підходів. Це відноситься і до об'єктно-орієнтованого підходу.
Існує ряд типових проблем, для яких його корисність найбільшочевидна, до таких проблем відносяться, зокрема, завдання імітаційногомоделювання, програмування діалогів з користувачем. Існують ізавдання, в яких застосування об'єктного підходу ні до чого, крім зайвихзатрат праці, не приведе. У зв'язку з цим найбільшого поширенняотримали об'єктно-орієнтовані мови програмування, що дозволяютьпоєднувати об'єктний підхід з іншими методологіями. У деяких мовах ісистемах програмування застосування об'єктного підходу обмежуєтьсязасобами інтерфейсу з по?? ьзователем (наприклад, Visual FoxPro ранніхверсій). p>
Найбільш використовуваними в даний час об'єктно-орієнтованимимовами є Паскаль з об'єктами і Сі + +, причому найбільш розвиненізасоби для роботи з об'єктами містяться в Сі ++. p>
Об'єктно-орієнтовані мови програмування. p>
2.1. SIMULA 67 p>
Всі об'єктно-орієнтовані мови походять від мови Симула,розробленого на початку 60-х рр.. в Norwegian Computing Centre. Синтаксисмови взято з Алгол-60. Основними нововведеннями були поняття об'єкта, класуі успадкування. Симула не нав'язує строгу інкапсуляцію даних і непіклується про деталі реалізації. Модулі можна перекомпіліровать поокремо, не змінюючи зовнішні інтерфейси. Перевірка типів здійснюється підчас компіляції. Прибирання сміття здійснюється системою підтримкипрацюючої програми. p>
Об'єкти можуть діяти незалежно один від одного, надаючиможливість виконання квазіпараллельних обчислень. Дія об'єкта можнапризупинити і відновити пізніше. Вбудовані класи додають в мовузасоби роботи зі списками, графіку та моделювання дискретних подій. p>
середу p>
переносима система Simula (S-Port) містить незалежний пакет,що складається з компілятора, що генерує проміжна мова S-code, системупідтримки працюючої програми і символьного відладчика. Також є система,залежна від цільової машини, що містить компілятор, що транслює S-code уцільової код, і набір програм інтерфейсу. Планується створитидодаткові кошти і бібліотеку зумовлених модулів. p>
Постачальники p>
Перша реалізації на Univac 1107 з'явилася на початку 70-х рр.. З цього часумову був реалізований на більшості платформ, від великих ЕОМ до персоналок.
В даний час Simula розвивається і виступає на ринку під назвою
Simula as, встановленим норвезькою фірмою в 1984 р. p>
переносима система Simula (S-Port) - є основою численнихверсій, включаючи PC Simula. У табл. С2.1 наводяться основні реалізації тапостачальники. Системи DEC, Univac і IBM встановлені в більш, ніж 300 точках
Європи та Північної Америки. P>
Таблиця С2.1а. Реалізації мови Simula p>
| Платформа | Постачальник |
| CDC 3300 | Academy of Sciences, Budapest |
| CDC Cyber | Control Data a.s., Oslo, Norway |
| Cromemco під Cromix | Omnibus as, Sweden |
| Data General Eclipse | Lund Software, Sweden |
| DEC 10/20 | Stockholm Computing Centre QZ, Sweden |
| IBM 370 | Simula a.s., Oslo, Norway |
| ND 10/100 | Norsk Data, Oslo, Norway |
| Siemens 75xx під BS2000/3000 | Simula as, Oslo, Norway | p>
Таблиця С2.1b. Реалізації переносите систем Simula p>
| Платформа | Постачальник |
| Apollo | Simprog AB, Stockholm, Sweden |
| HP 900/300 | Simprog AB, Stockholm, Sweden |
| IBM PC/XT (AT) | Simula a.s., Oslo, Norway |
| ICL 2900 | University of Edinburgh, Scotland |
| Mach-S | Simulation Technology, Oslo, Norway |
| Masscomp | Simprog AB, Stockholm, Sweden |
| ND 500 | Norsk Data, Oslo, Norway |
| Prime | Prime Scandinavia, Stockholm, Sweden |
| Sperry 1100 | Unisys Corp., USA |
| Sun | Simprog AB, Stockholm, Sweden |
| Vax під Unix | Simprog AB, Stockholm, Sweden |
| Vax під Ultrix | Simprog AB, Stockholm, Sweden |
| Vax під VMS | Stockholm Computing Centre QZ, Sweden | p>
Сформована в 1972 р. організація Simula Standards Groupздійснює контроль за розвитком мови: остання версія булавипущена в 1986р. Зміни в мову вносить Simula Developement Group. Крімтого, є асоціація користувачів мови Simula. p>
2.2. SMALLTALK p>
Smalltalk до останнього часу був найкращим мовоюпри експериментуванні в технології об'єктно-орієнтованогопрограмування. В останні роки з'явився дешевий компілятор C + + дляперсоналок, який порушив баланс убік C + + серед перших користувачівоб'єктно-орієнтованих систем. Smalltalk був розроблений на фірмі Xerox
PARC в результаті дослідницького проекту, втіливши в собі низку ідей проте, як людина може використовувати комп'ютер найкращим чином. Сюдиставилися використання персональних робочих станцій, інтерактивних середовищ,графічних інтерфейсів, миші і об'єктно-орієнтованого програмування.
Кожна з цих ідей сама по собі мала велике значення, як всередині фірми,так і у всій комп'ютерної індустрії. У 80-х рр.. підключення цих потужнихідей в мові та системі Smalltalk-80 було непропорційно з малим числомфактичних користувачів. p>
Мова p>
Основною рисою мови Smalltalk є його універсальність. Історіямови характеризується трьома ознаками: p>
- дані зберігаються як об'єкти, які звільняються автоматично; p>
- виконання дій здійснюється через посилку повідомлень об'єктам; p>
- поведінка об'єктів описано в класах. p>
У мові все є об'єктом. Всі взаємодії об'єктівздійснюються через посилки повідомлень, навіть складання цілих чисел: 1 +2. Уцією мовою 1 - це екземпляр класу цілих чисел, + - ім'я методу, 2 --аргумент. Об'єкт 1 отримує повідомлення + 2 і повертає результат
3.Состоятельность такого підходу гарантує стислість мови і простийсинтаксис. Але через це збільшується ціна накладних витрат напосилку повідомлень: зв'язування проводиться цілком під час роботипрограми. Автоматична збірка сміття теж викликає проблемишвидкодії. Smalltalk не підтримує множинне успадкування. P>
З іншого боку, Smalltalk-80 зовсім не маленький мову. Існуєвелика бібліотека класів: понад 250 класів і більше 2000 методів. Роботаз такою бібліотекою становить важливе завдання при вивченні мови, незважаючина те, що для перегляду методів і класів існують спеціальні засоби. p>
середу p>
Smalltalk-80 тісно пов'язаний з розвиненою середовищем програмування.
Інтерфейс користувача складається з набору екранних образів: цепрямокутні області, що містять текст або графіку, які можнапереміщати по екрану, змінювати в розмірі, замінювати міткою або закривати.
Образи можуть перекриватися повністю або частково. Взаємодія зсистемою здійснюється за допомогою трехкнопочной миші або з клавіатури.
Візуальні об'єкти для користувача - це курсори, висвічення, меню,смужки зсуву і рамки з підказкою. p>
Основні компоненти системи активізуються всередині екранних образів.
Сюдивходять текстовий редактор, редактор форми і бітовий редактор для створеннямалюнків, інспектор для перевірки змінних об'єкта, вікно перегляду системидля вивчення класів і повідомлень, мітки вікна для опису перерваногопроцесу і Відладчик. p>
Smalltalk був розроблений для індивідуальної роботи програміста наперсональної робочої станції. Таким чином, ця система спочатку буладоступна тільки як одного користувача. Зараз в ній вже є засобипідтримки колективів програмістів. p>
Постачальники p>
У 1981-82 рр.. чотирьом фірмам пропонувалося реалізувати Smalltalk насвоїй апаратурі. Після цього експерименту Smalltalk поставлявсяуніверситетам і дослідницьким інститутам як продукт без супроводу.
Крім того, був випущений ряд книг по мові і його реалізації. Однак, мова небув запатентований фірмою Xerox аж до 1986 р. Ця фірма досіконтролює ринок Smalltalk-80 за допомогою відділення SIS та фірми ParcPlace
Systems. Інші продавці мають ліцензію на продукт і його різніреалізації. Винятком є фірма Digitalk, що випустила своювласну версію для PC - Smalltalk/V. У таблиці наведено С2.2 доступнів даний час продукти Smalltalk. p>
Таблиця C2.2 Продавці та продукти мови Smalltalk p>
| Продукт | Платформа | Продавець |
| Smalltalk-80 | DEC Station 3100 під Ultrix | ParcPlace systems |
| | PC 80386 під MS-DOS | |
| | Sun-3, 4, 386i | |
| | Apple Macintosh II, Plus і SE | |
| | HP 9000 series 300 | |
| | Apollo Series 3000, 4000 | |
| | Apollo DN570, 580, 590 | |
| Smalltalk-80 | Tektronix 4315 | Tektronix |
| Color Smalltalk-80 | Tektronix 4316, 17 і 19 | Tektronix |
| Smalltalk-80 | Xerox 8010/1108 та 6085/1186 | Xerox SIS |
| Smalltalk/V | IBM PC/XT/AT під MS-DOS | Digitalk |
| Smalltalk/V 286 | 286 і 386 PC під MS-DOS | Digitalk |
| Smalltalk/V Mac | Apple Macintosh II, PLUS і SE | Digitalk | p>
Майбутнє мови Smalltalk хвилює як користувачів, так і постачальників. Усерпні 1987 р. була організована асоціація розробників і прикладнихкористувачів Smalltalk - OOPSTAD. Вона публікує новини HOOPLA (Hooray for
Object-Oriented Languages). Роботу із стандартизації взяв на себе IEEE
Microprocessor Standards Committee (P1152). Основну увагу він приділяємови та базових класів типу Number і Collection. Основні постачальники та рядконсультантів сформували Консорціум Smalltalk з метою розвитку застосуваннямови та середовища і управління їх технічної еволюцією. Він є відкритимдля окремих користувачів і корпорацій. p>
2.3. ПРОДУКТИ, заснований на мові СІ p>
В даний час об'єктно-орієнтовані мови прагнуть наблизитисядо традиційних мов (в основному до мови Сі). Для цього є ряд причин: p>
- вже можна скористатися накопиченим досвідом програмування; p>
- інтерфейси існуючих систем набагато простіше; p>
- мова більш прийнятний у галузі управління; p>
- постачання може бути здійснена на стандартних платформах; p>
- гарантія переносимості між платформами. p>
Найбільшим потенціалом для великих комерційних організацій маємову C + + фірми AT & T. Хоча він і не має поки великої кількості коштівсупроводу, деякі комерційні організації вже працюють надстворенням середовищ розвитку мови, а інші розробляють додатковіінструменти і бібліотеки класів. Крім того, кілька компанійрозробили мови та інструментальні засоби, засновані на мові Сі. Утаблиці C2.3 підводяться підсумки доступних продуктів, заснованих на Сі. p>
Таблиця С2.3 Продавці та продукти мов, заснованих на Сі p>
| Продукт | Платформа | Продавець |
| | Перекладачі C + + | |
| Advantage C + + | IBM PC під MS-DOS, Xenix, Unix | Lifeboat |
| Designer C + + | Macintosh II | Oasys |
| | IBM PC під MS-DOS, OS/2 | |
| | IBM RT | |
| | PC 80386 під Unix, Xenix | |
| | HP 9000/300 та 9000/800 | |
| | NEC Astra | |
| | AT & T 3b2 | |
| | DEC Vax під VMS і Ultrix | |
| | Sun-3, Sun-4 | |
| Glockenspiel C + + | IBM PC під MS-DOS, OS/2 | Glockenspiel |
| | 386/ix і Xenix | |
| | AT & T 3b2 під Sys V.2 | |
| | HP 9000/300 | |
| | Sun-3, Sun/386i | |
| | IBM RT під Sys V.2 | |
| | Apollo | |
| | DEC Vax під Ultrix і VMS | |
| Guidelines C + + | IBM PC під MS-DOS | Guidelines |
| | Компілятори С + + | |
| Oregon C + + | Sun-3 | Oregon |
| | DEC Vax під Ultrix | |
| | PC 386 під Xenix | |
| Zortech C + + | IBM PC під MS-DOS | Zortech |
| Інші продукти, засновані на мові Сі |
| C-talk | IBM-PC під MS-DOS | CNS |
| | Macintosh | |
| Complete C | IBM PC під MS-DOS, OS/2, Unix | Complete |
| | | Computer |
| | | Corporation |
| Objective C | Sun | Stepstone |
| | DEC Vax | |
| | Apollo | |
| | HP 9000 series 200/300 | | p>
2.3.1. C + + p>
Мова p>
Мова С + + в основному є мовою Сі з спеціальними синтаксичнимирозширеннями для визначення та управління об'єктами. У ньому було враховано ряднедоліків мови Сі: тепер ведеться перевірка типів аргументів функцій,можна робити макропідстановка функцій. Також в нього включені деякікошти проекту стандарту Ansi C. По завершенні стандарту C + + будепереглянутий для видалення несумісність двох мов. Важливою новоїособливістю C + + є підтримка абстракції даних і об'єктно -орієнтованого програмування. Абстракція даних підтримується задопомогою введення типів, визначених користувачем. Наприклад, припустимо,що є новий тип даних shape, що використовується в графічнійсистемі. Цей тип визначається за допомогою оператора class: p>
class shape (point centre; colour col; p>
// ... коментар p>
public: point where () (return centre;) void move (point to) p>
(centre = to; draw ();) virtual void draw (); virtual void rotate (int); p>
// ... коментар p>
); p>
Це визначення містить інформацію як загальну, так і приватну. Спочаткуподання фігури shape визначається двома елементами приватних даних --центром і кольором. Потім іде інтерфейс, що містить загальну інформацію.
Користувач може отримати координати центру, переміщати центр фігури вдану точку, малювати фігуру і обертати її. Опції draw () і rotate ()не можна визначити для абстрактного типу shape. Вони називаються віртуальнимифункціями і визначаються пізніше для кожної специфічної фігури: кола,трикутника чи квадрата. Кожна з них визначається оператором class. Цеозначає, що, наприклад, новий тип даних circle є похіднимкласу shape, який називається його базовим класом. Похідний класуспадковує властивості базового класу. У даному випадку клас circle успадковуєчлени класу col і centre класу shape. Крім цього, у нього є членradius. Опції draw () і rotate () тепер реалізовані для класу circle: p>
class circle: public shape (//окружність - це контур int radius; p>
public: void draw () (/* ... * /); Void rotate (int) ()// rotate - нульова функція p>
); p>
Об'єктно-орієнтоване програмування підтримується в мові С + + восновному реалізацією успадкування методом завдання взаємодії типівданих [Stroustrup 1988]. p>
С + + не підтримує автоматичну збірку сміття: розміщення ізвільнення пам'яті здійснюється функціями конструктора і деструктора.
При нормальному виконанні функції відбувається статичне зв'язування,визначається під час компіляції. Динамічне зв'язування реалізовано яквиклик віртуальної функції, де викликається, залежить від типу об'єкта іне може бути визначена до виконання програми. Деякі версії С + +підтримують множинне успадкування. p>
Хоча С + + підтримує об'єктно-орієнтоване програмування, він ненав'язує його. Можна ігнорувати об'єктні розширення і просто писатизвичайні програми мови Сі. Ця перевага з точки зору сумісностідвох мов і основна причина підвищеного інтересу до С + + в розробці ПЗ.
З іншого боку, можуть виникнути здивування з приводу того, в якіймірою С + + можна вважати об'єктно-орієнтованою мовою. Більш того,важко оцінити, яка частина ринку мови відображає унікальний поворотспільноти Сі в бік ООС. Є ознаки, що при відповідному курсі
С + + відійде від об'єктно-орієнтованого співтовариства: у 1988 асоціацієюкористувачів UNIX (Usenix) була скликана окрема конференція з С + +, атакож був створений новий журнал The C + + Report видавцями журналу Journal of
Object-Oriented Programming. P>
середу p>
С + + - це мова програмування, а не середовище розробки програм типу
Smalltalk. Тому йому потрібні засоби підтримки роботи програміста: сюдивходять розширення існуючих засобів мови Сі (редактори, відладчик) ізасоби підтримки роботи з об'єктами (вікна перегляду класів). У своючергу, ці кошти повинні з'єднуватися із середовищем програмування.
Швидке зростання ринку С + + надає гарні перспективи продавцям, які маютьпродукти для C + +. До них належать, наприклад, що існують продавцікомпіляторів і трансляторів С + +. Один із цікавих проектів у цій області
- Угода між ParcPlace Systems і Glockenspiel про розробку Cynergy --версії середовища Smalltalk, що підтримує програми на С ++. p>
Постачальники p>
AT & T поставляє транслятор, що обробляє програму на С + + ігенерує вихідний код Ansi C, який потім компілюється нормальнимчином. Транслятор поки ще залишається продуктом AT & T без супроводу.
Ліцензію можна купити прямо на фірмі. Крім цього, транслятор перенесено нарізноманітні платформи фірмою Glockenspiel (Дублін). Кілька організаціймають подліцензіі: Oasys для робочих станцій (Sun, Apollo), Guidelines і
Lifeboat для IBM PC. P>
Дві інші фірми, Zortech і Oregon Software, нещодавно випустиликомпілятори С + +. Вони більше засновані на довідковому керівництві [Stroustrup
1986], а не на вихідних текстах, та не мають ліцензії від AT & T. p>
2.3.2. OBJECTIVE-C p>
Мова p>
Іншим провідним продавцем продуктів, заснованих на Сі, є
Stepstone, колишній PPI. Objective-C - це гібридний мова, що складається зпідмножини Ansi C і основних положень Smalltalk-80. Тексти программожуть містити чисті оператори мови Сі або об'єктно-орієнтованіконструкції. Об'єкти задаються новим типом даних, що називаються id. Повідомленнянадсилаються об'єктів за допомогою модифікованої версії синтаксису мови
Smalltalk. Нові об'єкти створюються посилкою повідомлення new спеціального типуоб'єкта, що зветься об'єктом-виробником. Наприклад, новий екземпляркласу Pen створюється за допомогою наступного тексту: p>
extern id Pen; id aPen; aPen = [Pen new]; p>
Objective-C не підтримує множинне успадкування і автоматичнузбирання сміття, однак, тестова версія останньої створена і протестованафірмою Stepstone [Cox 1986].
Компілятор Objective-C генерує вихідний текст на мові Сі. За замовчуваннямвикористовується динамічне зв'язування методів, однак, для підвищеннянадійності та ефективності можна вибрати статичний зв'язування.
Середа
Крім компілятора, фірма Stepstone надає (необов'язково)інтерактивну середовище програмування Objective-C Interpreter. Вонапідтримує цілий ряд бичних дій програміста: написання програм,компіляцію, зв'язування, тестування і налагодження. Вона включає команди дляобчислення виразів, виведення даних, встановлення контрольних точок, пошукукаталогів файлу, редагування командного файлу, перевірки об'єктів, виведенняієрархії класів і успадкованих методів.
Також надається дві бібліотеки класів для підтримки основного іграфічного інтерфейсу користувача. p>
2.3.3 ІНШІ ПРОДУКТИ, ЗАСНОВАНІ НА СІ p>
C-talk
C-talk - це запатентований мова для MS-DOS і Apple Macintosh, створенийвідділом програмних продуктів фірми CNS Inc, що спеціалізується напродуктах діагностики для медицини. Синтаксис мови заснований на Сі здодатковими конструкціями, що підтримують класи і методи,успадкування і посилку повідомлень. Надається набір основних класівдля структур даних типу Buffer, Stream і ByteArray. Він поставляється у виглядіпакета, що містить препроцесор для перетворенийия файлів на C-talk ввихідні тексти на Сі, і середовища програмування, що називається C-talk Browser,заснованої на віконному інтерфейсі. Існують засоби редагування файлівта перегляду класів і методів.
Complete C
Complete Computer Corporation, New York працює над створенням об'єктно --орієнтованого середовища розробки програм, званої Complete C. Вонаскладається з прекомпілятора, що генерує стандартний Ansi С з об'єктно -орієнтованого Сі, набору інструментів (відладчика, компонувальника,генератора документів) та бібліотеки основних класів. Complete C працюєпід MS-DOS, OS/2 і Unix.
2.4. ПРОДУКТИ, ЗАСНОВАНІ НА ЛИСП p>
Об'єктно-орієнтовані розширення Ліспу призначені в основному дляспівтовариства дослідників штучного інтелекту. Деякі з цихрозширень були спочатку створені в університетах. Лідерами єдві самостійні версії: New Flavors, розроблений в Symbolics, і
CommonLoops, розроблена в Xerox PARC. Вони склали базу для Common Lisp
Object System (CLOS).
Відмінною особливістю деяких систем, заснованих на Лісп, єспосіб управління взаємодією об'єктів. На відміну від традиційнихвикликів функцій, тут перший аргумент відповідає об'єкту-приймача.
Фактично викликається, залежить від виду об'єкта, визначеного цимпершим аргументом, у той час як ім'я функції еквівалентно імені повідомлення.
CommonLoops
Loops - це многопарадігмовая система для обробки знань іпрограмування, розроблена в Xerox PARC. У поданні знаньвикористовується об'єктно-орієнтований підхід. підтримує класи іспадкування. Об'єктно - орієнтована частина Loops пізніше була оформленаяк пакет у складі продукту Common Lisp, більш відомого як CommonLoops.
Характеристики мови:часткова інтеграція системи типу Common Lisp з класами CommonLoops;використання синтаксису узагальнених функцій замість посилки повідомлень;здатність визначати методи, які розрізняються не тільки по першому аргументу
(Так звані мультіметоди);підтримка реалізації інших об'єктно-орієнтованих мов за допомогою ядраметаклассов, набору наперед визначених класів, що становлять частину, що залишиласясистеми.
Дослідна реалізація, названа Portable CommonLisp (PCL), поширена дляневеликого спільноти. Вона використовується в Hewlett-Packard
Laboratories для реалізації іншого об'єктно - орієнтованого мови -
CommonObjects [Kempf, Harris, D'Souza and Snyder 1987].
New Flavors
Flavors - це розширення MacLisp/ZetaLisp. Це система посилки повідомлень,що використовується в комерційних цілях фірмами Symbolics і TI Explorers. New
Flavors - це похідна від Flavors, сумісна з нею, але використовуєсинтаксис узагальнених функцій.
Common Lisp Object System (CLOS)
У 1986 р. групи з фірм Xerox PARC і Symbolics, а також група з фірми
Lucid, розпочала роботу над проектом специфікації для CLOS, представлений нарозгляд технічної робочій групі Ansi, X3J13. Ця специфікаціясхвалена для ймовірного прийняття в якості частини розвивається стандарту
Common Lisp. Цілі CLOS: використання набору рівнів для незалежних одинвід одного дій мови програмування; зробити якомога більше в рамкахпершого класу Object