Термінова допомога студентам
Дипломи, курсові, реферати, контрольні...

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

РефератДопомога в написанніДізнатися вартістьмоєї роботи

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

Об'єктно-орієнтовані мови програмування (реферат, курсова, диплом, контрольна)

МІНІСТЕРСТВО ОСВІТИ РФ.

ВОРОНЕЗЬКИЙ ІНСТИТУТ ВИСОКИХ ТЕХНОЛОГИЙ.

Факультет заочно-дистанционного обучения.

КУРСОВА РОБОТА за курсом: «ІНФОРМАТИКА «на задану тему: «Об'єктно-орієнтовані мови програмування. «.

|Выполнил: |ст. грн. ИСз-011 | | |Старовойтов З. А.| |Прийняв: |к.т.н., доцент | | |Питолин А. У. |.

ВОРОНЕЖ 2002.

ВВЕДЕНИЕ

3.

I. ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАМУВАННЯ 5 1.1. ТЕХНОЛОГІЇ ПРОГРАМУВАННЯ 5 1.2. СУТНІСТЬ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПІДХОДУ До ПРОГРАМУВАННЯ 7.

II. Об'єктно-орієнтовані мови програмування. 10 2.1. SIMULA 67 10 2.2. SMALLTALK 11 2.3. ПРОДУКТИ, ЗАСНОВАНІ НА МОВІ СІ 14.

2.3.1. З++ 16.

2.3.2. OBJECTIVE-C 18.

2.3.3 ІНШІ ПРОДУКТИ, ЗАСНОВАНІ НА СІ 19 2.4. ПРОДУКТИ, ЗАСНОВАНІ НА ЛИСПЕ 19 2.5. EIFFEL 22 2.6. МОВИ, ЗАСНОВАНІ НА ПАСКАЛЕ 22.

2.6.1. ACTOR 22.

2.6.2. OBJECT PASCAL 23 2.7. МОВИ, ПІДТРИМУЮТЬ АБСТРАКЦІЮ ДАНИХ 23.

2.7.1. ADA 23.

2.7.2. MODULA-2 24.

ЗАКЛЮЧЕНИЕ

26.

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

Питання реалізації програмного забезпечення, розробка якого велася із застосуванням одній з объектно-ориентированных методологій, розглядаються розділ 5. Реалізація програмного забезпечення пов’язані з використанням однієї з мов програмування. Показано, що зручними для реалізації програмних систем, розроблених у межах объектно-ориентированного підходу, є об'єктно-орієнтовані мови програмування, хоча можлива виконання і на звичайних (не объектноорієнтованих) мовами (наприклад, мовою З і мовою Fortran).

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

Перший объектно-ориентированный мову програмування Simula 67 був розроблений наприкінці 1960;х років в Норвегії. Автори цієї мови якраз вгадали перспективи розвитку програмування: їхню мову набагато випередив своє время.

Проте сучасники (програмісти 1960;х років) не були готові сприйняти цінності мови Simula 67, і не витримав би конкуренції з іншими мовами програмування (передусім, із мовою Fortran). Прохолодному відношення до мови Simula 67 сприяло й то обставина, що він реалізували як интерпретируемый (а чи не компилируемый) мову, що було неприйнятним у роки, оскільки інтерпретація пов’язана з зниженням ефективності (швидкості виконання) программ.

Але гідності мови Simula 67 помітили деякими програмістами, й у роки було розроблено велику число експериментальних объектноорієнтованих мов програмування: наприклад, мови CLU, Alphard, Concurrent Pascal та інших. Ці мови і залишилися експериментальними, але у результаті їхні дослідження розроблено сучасні объектноорієнтовані мови програмування: З++, Smalltalk, Eiffel і др.

Найпоширенішим объектно-ориентированным мовою програмування безумовно, є З++. Вільно поширювані комерційні системи програмування З++ існують на будь-який платформі. Широко відома вільно що розповсюджується система програмування G++, що дає змогу всім бажаючим розібрати досить добре та детально прокоментований вихідний текст однієї з зразкових компіляторів мови З++. Завершується робота з стандартизації мови З++: останній Draft стандарту З++ випущено у червні 1995 р. (він доступний по Internet).

Розробка нових объектно-ориентированных мов програмування триває. З 1995 року стало широко поширюватися новий объектноорієнтований мову програмування Java, орієнтований мережі комп’ютерів, і, передусім, на Internet. Синтаксис цієї мови нагадує синтаксис мови З++, проте ці мови мають мають. Java интерпретируемый мову: йому визначено внутрішнє уявлення (bytecode) і інтерпретатор цього подання, які вже реалізовані більшості платформ. Інтерпретатор спрощує налагодження програм, написаних мовою Java, забезпечує їх перенесення налаштувалася на нові платформи, і адаптируемость до нових окружениям. Він дає змогу виключити вплив програм, написаних мовою Java, інші програми розвитку й файли, наявні новому платформі, і тим самим дбати про безпеку при виконання цих програм. Ці властивості мови Java використовувати його як основний мову програмування для програм, розповсюджуваних по мереж (зокрема, через мережу Internet).

ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ.

1.1. ТЕХНОЛОГІЇ ПРОГРАММИРОВАНИЯ.

Технологія програмування — це сукупність методів і коштів розробки (написання) програм, тож порядок застосування цих методів і средств.

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

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

У 1958 року було розроблено перші мови програмування, Фортран і Алгол-58. Програма на Фортрані складалася з головною програми розвитку й деякого кількості процедур — підпрограм і державних функцій. Програма на Алголе-58 та її наступної версії Алголе-60представляла собою єдине ціле, але мала блочну структуру, що включає головний блок і вкладені блоки підпрограм і функцій. Компілятори для Фортрану забезпечували роздільне трансляцію процедур і наступне об'єднання в робочу програму, перші компілятори для Алгола припускали, що відразу вся програма, роздільний трансляція процедур не обеспечивалась.

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

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

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

Застосування програм, у найрізноманітніших сферах людської діяльності призвело до необхідність підвищення надійності всього програмного забезпечення. Однією з напрямів вдосконалення мов програмування стало підвищити рівень типізації даних. Теорія типів даних виходить із те, що кожне використовуване у програмі дане належить одному і лише типу даних. Тип даного визначає безліч можливих значень даного й створили набір операцій, допустимих з цього даним. Дане конкретного типу часом то, можливо перетворено на дане іншого типу, але таке перетворення має бути явно представлено у програмі. У залежність від ступеня виконання перелічених вимог можна говорити про рівень типізації тієї чи іншої мови програмування. Прагнення підвищити рівень типізації мови програмування призвело до появи мови Паскаль, який вважається суворо типизированным мовою, хоча у ньому дозволені деякі неявні перетворення типів, наприклад, цілого в речовинне. Застосування суворо типизированного мови під час написання програми дозволяє іще за трансляції вихідного тексту виявити багато помилки використання даних, і цим підвищити надійність програми. Разом з тим сувора типізація сковувало свободу програміста, утрудняла застосування деяких прийомів перетворення даних, часто які у системному програмуванні. Практично разом з Паскалем розробили мову Сі, більшою мірою орієнтований системне програмування і належить до слабко типизированным языкам.

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

— Побудовою мови програмування, що містить якнайбільше типів даних, і вибором кожному за класу завдань деякого підмножини цієї мови. Таку мову іноді називають языком-оболочкой. На ролі мовиоболонки претендував мову ПЛ/1, виявився настільки складним, що Німеччина не вдалося побудувати його формалізоване опис. Відсутність формалізованого описи, проте, знадобилася широкому застосуванню ПЛ/1 як і Західної Європі, і у СССР.

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

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

1.2. СУТНІСТЬ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПІДХОДУ До ПРОГРАММИРОВАНИЮ.

Основні ідеї объектно-ориентированного підходу спираються ми такі положения:

— Програма є модель деякого реального процесу, частини реального мира.

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

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

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

— Об'єкти, описані у тому ж набором параметрів та найздібніші виконувати і той ж набір дій є клас однотипних объектов.

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

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

Класи об'єктів часто зручно будувати те щоб вони утворювали ієрархічну структуру. Наприклад, клас «Студент», описує абстрактного студента, може стати основою для побудови класів «Студент 1 курсу», «Студент 2 курсу» тощо., які мають усіма властивостями студента загалом і деякими додатковими властивостями, котрі характеризують студента конкретного курсу. Під час розробки інтерфейсу з користувачем програми може використати об'єкти загального класу «Вікно» і об'єкти класів спеціальних вікон, наприклад, вікон з повідомлень, вікон введення даних, і т.п. У цих ієрархічних структурах один клас може розглядатися як й інших, похідних від цього класів. Об'єкт похідного класу має усіма властивостями базового класу тут і деякими власними властивостями, може реагувати ті ж типи повідомлень від інших об'єктів, як і об'єкт базового класу тут і на повідомлення, мають сенс лише похідного класу. Зазвичай кажуть, що об'єкт похідного класу успадковує все властивості свого базового класса.

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

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

Досвід програмування показує, що кожен методичний підхід в технології програмування ні застосовуватися сліпо з ігноруванням інших підходів. Це стосується і до объектно-ориентированному підходу. Є низка типових проблем, котрим його корисність найбільш очевидна, до таких проблем ставляться, зокрема, завдання імітаційного моделювання, програмування діалогів з користувачем. Є й завдання, у яких застосування об'єктного підходу нічого, крім зайвих витрат праці, не призведе. У зв’язку з цим найбільшого поширення отримали об'єктно-орієнтовані мови програмування, дозволяють поєднувати об'єктний підхід коїться з іншими методологіями. У деяких мовами й системах програмування застосування об'єктного підходу обмежується засобами інтерфейсу з користувачем (наприклад, Visual FoxPro ранніх версий).

Найбільш які у час объектно-ориентированными мовами є Паскаль з об'єктами і Сі++, причому найрозвинутіші кошти на роботи з об'єктами зберігають у Си++.

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

2.1. SIMULA 67.

Усі об'єктно-орієнтовані мови походить від мови Симула, розробленого на початку 60-х рр. в Norwegian Computing Centre. Синтаксис мови узятий із Алгола-60. Основними нововведеннями були поняття об'єкта, класу і наслідування. Симула не нав’язує сувору инкапсуляцию даних, і не піклується про деталях реалізації. Модулі можна перекомпілювати по окремішності, не змінюючи зовнішні інтерфейси. Перевірка типів здійснюється у час компіляції. Складання сміття здійснюється системою підтримки працюючої программы.

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

Среда.

Стерпна система Simula (S-Port) містить незалежний пакет, що з компілятора, генеруючого проміжний мову S-code, систему підтримки працюючої програми розвитку й символьного отладчика. Є також система, залежна від цільової машини, що містить компілятор, який транслює S-code в цільової код, й створили набір програм інтерфейсу. Планується створити додаткові кошти і бібліотеку визначених модулей.

Поставщики.

Перша реалізації на Univac 1107 з’явилася початку 70-х рр. З цього часу мова була реалізований більшості платформ, від великих ЕОМ до персоналок. Нині Simula розвивається й виступає над ринком під назвою Simula a.s., встановленим норвезької фірмою в 1984 г.

Стерпна система Simula (S-Port) — є основою численних версій, включаючи PC Simula. У табл. С2.1 наводяться основні реалізації і постачальники. Системи DEC, Univac і IBM прописані у більш, ніж 300 точках Європи й Америки.

Таблиця С2.1а. Реалізації мови Simula.

|платформа |Постачальник | |CDC 3300 |Academy of Sciences, Budapest | |CDC Cyber |Control Data a.s., Oslo, Norway | |Cromemco під Cromix |Omnibus a.s., 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 a.s., Oslo, Norway |.

Таблиця С2.1b. Реалізації які систем Simula.

|Платформа |Постачальник | |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 |.

Сформована в 1972 р. організація Simula Standards Group здійснює над розвитком мови: остання версія і була випущена в 1986 р. Зміни у мову вносить Simula Developement Group. Крім того асоціація користувачів мови Simula.

2.2. SMALLTALK.

Smalltalk досі був найліпшим мовою при експериментуванні в технології объектно-ориентированного програмування. Останніми роками з’явився дешевий компілятор З++ для персоналок, який порушив баланс убік З++ серед перших користувачів объектно-ориентированных систем. Smalltalk розробили на фірмі Xerox PARC внаслідок дослідницького проекту, втіливши у собі низку ідей про тому, як то вона може використовувати комп’ютер найкраще. Сюди ставилися використання персональних робочих станцій, інтерактивних середовищ, графічних інтерфейсів, миші і объектно-ориентированного програмування. Кожна з цих ідей як така мала велике значення, і в середині фірми, і в усій комп’ютерної індустрії. У 1980;х рр. поєднання цих потужних ідей у мовою й системі Smalltalk-80 було непропорційно малим числом фактичних пользователей.

Язык.

Змістом мови Smalltalk є його універсальність. Історія мови характеризується трьома признаками:

— дані зберігаються як об'єкти, які звільняються автоматически;

— виконання дій здійснюється через посилку повідомлень объектам;

— поведінка об'єктів описано в классах.

У мові все є. Усі взаємодії об'єктів здійснюються через посилки повідомлень, навіть складання цілих чисел: 1 +2. У етой мовє 1 — це примірник класу цілих чисел, + - ім'я методу, 2- аргумент. Об'єкт 1 отримує повідомлення + 2 і повертає результат 3. Состоятельность такий підхід гарантує стислість мови та простий синтаксис. Але це збільшується ціна накладних витрат на посилку повідомлень: зв’язування виробляється повністю під час роботи програми. Автоматична складання сміття також викликає проблеми швидкодії. Smalltalk підтримувати не може множинне наследование.

З іншого боку, Smalltalk-80 не маленький мову. Існує велика бібліотека класів: більш 250 класів та понад 2.000 методів. Робота з такою бібліотекою становить важливе завдання щодо мови, незважаючи те що, що з перегляду методів і класів існують спеціальні средства.

Среда.

Smalltalk-80 тісно пов’язані з розвиненою середовищем програмування. Користувальницький інтерфейс складається з набору екранних образів: це прямокутні області, містять текст чи графіку, які можна переміщати екраном, змінювати у вигляді, заміняти міткою чи закривати. Образи можуть перекриватися в цілому або частково. Взаємодія з системою здійснюється з допомогою трехкнопочной миші чи з клавіатури. Візуальні об'єкти для користувача — це курсоры, высвечивание, меню, смужки зсуву і рамки з подсказкой.

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

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

Поставщики.

У 1981;82 рр. чотирьом фірмам пропонувалося реалізувати Smalltalk на своєї апаратурі. Після цього експерименту Smalltalk поставлявся університетам і дослідницьким інститутам як продукт без супроводу. З іншого боку, був випущений чимало книжок за мовою й його реалізації. Проте, мову не запатентували фірмою Xerox до 1986 р. Ця фірма досі контролює ринок Smalltalk-80 з допомогою відділення SIS і фірми ParcPlace Systems. Інші продавці мають ліцензію на продукт та її різні реалізації. Винятком є фірма Digitalk, випустила свою власну версію для PC — Smalltalk/V. У таблиці С2.2 наведено доступні нині продукти Smalltalk.

Таблиця C2.2 Продавці і продукти мови Smalltalk.

|Продукт |платформа |Продавець | |Smalltalk-80 |DEC Station 3100 під Ultrix |ParcPlace systems | | |PC 80 386 під 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 |.

Майбутнє мови Smalltalk хвилює як користувачів, і постачальників. У серпні 1987 р. було організовано асоціація розроблювачів і прикладних користувачів Smalltalk — OOPSTAD. Вона публікує новини HOOPLA (Hooray for Object-Oriented Languages). Роботу по стандартизації взяв він IEEE Microprocessor Standards Committee (P1152). Чільну увагу він приділяє мови оригіналу й базовим класам типу Number і Collection. Основні постачальники і кілька консультантів сформували Консорціум Smalltalk задля розвитку застосування мови та середовища проживання і управління, їх технічної еволюцією. Він є відкритим окремих користувачів і корпораций.

2.3. ПРОДУКТИ, ЗАСНОВАНІ НА МОВІ СИ.

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

— вже можна скористатися нагромадженим досвідом программирования;

— інтерфейси існуючих систем набагато проще;

— мову прийнятніший у сфері управления;

— постачання можна здійснити на стандартних платформах;

— гарантія переносимості між платформами.

Найбільшим потенціалом для великих комерційних організацій має мову З++ фірми AT&T. Хоча і немає поки великих коштів супроводу, деякі комерційні організації вже працюють над створенням середовищ розвитку мови, інші розробляють додаткові інструменти, і бібліотеки класів. З іншого боку, кілька компаній розробили мови і інструментальні кошти, засновані мовою Сі. У таблиці C2.3 підбиваються підсумки доступних продуктів, заснованих на виключно Си.

Таблиця С2.3 Продавці і продукти мов, заснованих на виключно Си.

|Продукт |платформа |Продавець | | |Трансляторы З++ | | |Advantage З++ |IBM PC під MS-DOS, Xenix, Unix |Lifeboat | |Designer З++ |Macintosh II |Oasys | | |IBM PC під MS-DOS, OS/2 | | | |IBM RT | | | |PC 80 386 під Unix, Xenix | | | |HP 9000/300 і 9000/800 | | | |NEC Astra | | | |AT&T 3b2 | | | |DEC Vax під VMS і Ultrix | | | |Sun-3, Sun-4 | | |Glockenspiel З++ |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 З++ |IBM PC під MS-DOS |Guidelines | | |Компілятори З++ | | |Oregon З++ |Sun-3 |Oregon | | |DEC Vax під Ultrix | | | |PC 386 під Xenix | | |Zortech З++ |IBM PC під MS-DOS |Zortech | |Інші продукти, засновані мовою Сі | |C-talk |IBM-PC під MS-DOS |CNS | | |Macintosh | | |Complete З |IBM PC під MS-DOS, OS/2, Unix |Complete | | | |Computer | | | |Corporation | |Objective З |Sun |Stepstone | | |DEC Vax | | | |Apollo | | | |HP 9000 series 200/300 | |.

2.3.1. C++.

Язык.

Мова З++ переважно є мовою Сі зі спеціальними синтаксичними розширеннями визначення та управління об'єктами. У ньому було враховано низку недоліків мови Сі: тепер ведеться перевірка типів аргументів функцій, можна робити макроподстановку функцій. Також у нього включені деякі кошти проекту стандарту Ansi З. Після закінчення стандарту З++ буде переглянутий видалення несовместимостей двох мов. Важливою нової особливістю З++ є підтримка абстракції даних, і объектноорієнтованого програмування. Абстракція даних підтримується з допомогою запровадження типів, певних користувачем. Наприклад, припустимо, що є новим типом даних shape, вживаний у графічної системі. Цей тип визначається за допомогою оператора class:

class shape { point centre; colour col;

// … комментарий.

public: point where () {return centre; } void move (point to).

{ centre = to; draw (); } virtual void draw (); virtual void rotate (int);

// … комментарий.

};

Цю ухвалу містить інформацію, як загальну, і приватну. Спочатку уявлення постаті shape визначається двома елементами приватних даних — центром і. Потім іде інтерфейс, у якому загальну інформацію. Користувач може мати простий координати центру, переміщати центр фігур у цю точку, малювати постать крутити її. Функції draw () і rotate () не можна визначити для абстрактного типу shape. Вони називаються віртуальними функціями і визначаються згодом кожної специфічної постаті: окружності, трикутника чи квадрата. Кожна їх визначається оператором class. Це означає, що, наприклад, новим типом даних circle є похідним класу shape, що називається його базовим класом. Похідний клас успадковує властивості базового класу. У разі клас circle успадковує члени класу col і centre класу shape. Крім цього, він має член radius. Функції draw () і rotate () тепер реалізовані для класу circle:

class circle: public shape { // окружність — це контур int radius;

public: void draw () { /* … */ }; void rotate (int) {} // rotate — нульова функция.

};

Объектно-ориентированное програмування підтримується у мові З++ в основному реалізацією наслідування методом завдання взаємодії типів даних [Stroustrup 1988].

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

Хоча З++ підтримує объектно-ориентированное програмування, не нав’язує його. Можна ігнорувати об'єктні розширення й просто писати звичайні програми мови Сі. Це перевагу з погляду сумісності двох мов і культур основною причиною надмірної цікавості до З++ з розробки ПО. З іншого боку, виникатимуть здивування у тому, як і ступеня З++ вважатимуться объектно-ориентированным мовою. Понад те, важко оцінити, яка частку ринку мови відбиває унікальний поворот співтовариства Сі убік ООС. Є ознаки, що з відповідному курсі З++ відійде від объектно-ориентированного співтовариства: вже 1988;го асоціацією користувачів UNIX (Usenix) була скликана окрема конференція по З++, а також створено нову журнал The З++ Report видавцями журналу Journal of Object-Oriented Programming.

Среда.

З++ - це мову програмування, а чи не середовище розробки програм типу Smalltalk. Тому його потрібні чималі кошти підтримки роботи програміста: сюди входять розширення існуючих коштів мови Сі (редактори, отладчики) і кошти підтримки роботи з об'єктами (вікна перегляду класів). Під час перебування чергу, ці гроші повинні з'єднуватися з середовищем програмування. Швидке зростання ринку З++ надає гарні перспективи продавцям, у яких продукти для З++. До них належать, наприклад, існуючі продавці компіляторів і трансляторів З++. Одне з цікавих проектів, у цій галузі - угоду між ParcPlace Systems і Glockenspiel про розробку Cynergy — версії середовища Smalltalk, підтримує програми на С++.

Поставщики.

AT&T поставляє транслятор, обробний програму на З++ і генеруючий вихідний код Ansi З, і потім компілюється нормальним чином. Транслятор поки що залишається продуктом AT&T без супроводу. Ліцензію можна безпосередньо в фірмі. Крім цього, транслятор перенесений на різноманітні платформи фірмою Glockenspiel (Дублін). Кілька організацій мають подлицензии: Oasys для робочих станцій (Sun, Apollo), Guidelines і Lifeboat для IBM PC.

Дві інші фірми, Zortech і Oregon Software, недавно випустили компілятори З++. Вони вже засновані на довідковому керівництві [Stroustrup 1986], а чи не на вихідних текстах, не мають ліцензії від AT&T.

2.3.2. OBJECTIVE-C.

Язык.

Іншим провідним продавцем продуктів, заснованих на виключно Сі, є Stepstone, колишній PPI. Objective-C — це гібридний мову, що з підмножини Ansi З і засад Smalltalk-80. Тексти програм можуть утримувати чисті оператори мови Сі чи об'єктно-орієнтовані конструкції. Об'єкти задаються новим типом даних, званим id. Повідомлення посилаються об'єктах з допомогою модифікованої версії синтаксису мови Smalltalk. Нові об'єкти створюються посилкою повідомлення new спеціальному типу об'єкта, званому объектом-производителем. Наприклад, новий примірник класу Pen створюється з допомогою наступного текста:

extern id Pen; id aPen; aPen = [Pen new];

Objective-C підтримувати не може множинне запозичення ро-сійських та автоматичну складання сміття, проте, тестова версія останньої створена і протестирована фірмою Stepstone [Cox 1986]. Компілятор Objective-C генерує вихідний текст мовою Сі. За умовчанням використовується динамічний зв’язування методів, проте, підвищення надійності та ефективності можна вибрати статична зв’язування. Середовище Крім компілятора, фірма Stepstone надає (необов'язково) інтерактивну середу програмування Objective-C Interpreter. Вона підтримує низку бычных дій програміста: написання програм, компіляцію, зв’язування, тестування і налагодження. Вона містить команди для обчислення висловів, виведення даних, установки контрольних точок, пошуку каталогів файла, редагування командного файла, перевірки об'єктів, виведення ієрархії класів та наслідуваних методів. Також надається дві бібліотеки класів на підтримку основного і графічного користувальницького интерфейса.

2.3.3 ІНШІ ПРОДУКТИ, ЗАСНОВАНІ НА СИ.

C-talk C-talk — це запатентований мову для MS-DOS і Apple Macintosh, створений відділом програмних продуктів фірми CNS Inc, що спеціалізується на продуктах діагностики для медицини. Синтаксис мови грунтується на Сі з додатковими конструкціями, підтримують класи і силові методи, запозичення ро-сійських та посилку повідомлень. Надається набір основних класів для структур даних типу Buffer, Stream і ByteArray. Він приходить у вигляді пакета, що містить препроцесор для перетворення файлів на C-talk в вихідні тексти на Сі, та середовища програмування, званої C-talk Browser, заснованої на віконному інтерфейсі. Існують кошти редагування файлів і перегляду класів та методів. Complete З Complete Computer Corporation, New York працює створення объектно — орієнтованої середовища розробки програм, званої Complete З. Вона складається з прекомпилятора, генеруючого стандартний Ansi З з объектноорієнтованого Сі, набору інструментів (отладчика, компоновщика, генератора документів) і забезпечення бібліотеки основних класів. Complete З працює під MS-DOS, OS/2 і Unix. 2.4. ПРОДУКТИ, ЗАСНОВАНІ НА ЛИСПЕ Объектно-ориентированные розширення Лиспа призначені переважно для співтовариства дослідників штучного інтелекту. Деякі з цих розширень були спочатку створені у університетах. Лідерами є дві самостійні версії: 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 System (об'єкт перший клас — це об'єкт, який можна явно створити, й працювати з нею); бажання позбутися складного поведінки спрощення понять та його пояснень; зробити специфікацію мови максимально точної [DeMichiel and Gabriel 1987]. Основні кошти CLOS: три шару мови: інтерфейс для объектно-ориентированного програмування, функціональний інтерфейс для Object System, і навіть інструменти, дозволяють програмісту створювати свої власні об'єктно-орієнтовані мови; використання узагальнених функцій замість посилки повідомлень; в такому підході об'єкти і функції є анонімними об'єктами: жодного з них є власністю іншого; підтримка множинного наслідування: список старшості класів використовується на вирішення потенційних конфліктів між наследуемой структурою і поведінкою; засіб комбінації методів щоб одержати значень узагальненої функції - завдання способу комбінації методів, застосовних до набору аргументів (внаслідок множинного наслідування); гарантія, що узагальнені функції і класи є об'єктами першого класу (тобто. вони можуть зберігатися будь-де, де дозволено зберігання узагальнених об'єктів). Delphi Common Lisp Delphi — це італійська фірма, вважає себе першою у реалізації стандарту для CLOS. Останній постає як частина продукту Delphi Common Lisp (DCL), заснованого на розширеній версії Kyoto Common Lisp. Розроблено три розширення CLOS: підтримка традиційних систем; підтримка постійної пам’яті; підтримка паралельності. Allegro Common Lisp Allegro CL — це реалізація Common Lisp, розроблена і виставлена на ринок фірмою Franz Inc широкому наборі апаратури. Нині він включає об'єктно-орієнтовані розширення на підтримку Flavors і Portable CommonLoops. Підтримка стандарту CLOS якщо реалізована щойно він буде доступним. ExperCommon Lisp ExperTelligence розробляє й висуває ринку объектно — орієнтоване розширення ExperLisp для Macintosh. Підтримує Macintosh Toolbox і MacApp.

2.5. EIFFEL.

Язык Eiffel — це запатентований мову, розроблений і проданий фірмою Interactive Software Engineering. Його розробка велася під впливом объектно-ориентированных понять мови Симула, об'єднаних з синтаксисом мови Ада і сучасними методами технології програмування. Крім підтримки класів та наслідування, Eiffel запроваждує низку нових засобів: затвердження висловлення формальних властивостей класів: що можуть бути preconditions, postconditions чи invariants; узагальнені параметри до подання типів в оголошеннях класів; засіб rename на підтримку множинного наслідування дозволом конфліктів імен із разі, коли в класу більше батька; засіб перевизначення в нижчестоящих класах, що дозволяє здійснювати динамічний зв’язування всупереч статичної перевірки типів; відкладені програми, реалізація яких міститься лише у нижніх класах. Розміщення і приніс визволення пам’яті здійснюється системою часу виконання, що включає пошаговый складальник сміття. Є інтерфейс коїться з іншими мовами з допомогою поняття external, видавало список кожної зовнішньої підпрограми, яка у програмі. Середовище Система Eiffel складається з компілятора і набору інструментальних коштів. Вони містять кошти автоматичної конфігурації, налагодження, перевірки затвердження під час роботи програми, документування, оптимизирующий постпроцессор і бібліотеку базових класів для загальних структур даних (списків, дерев, стеков, хэш-таблиц). Постпроцессор може генерувати окремий пакет на Сі, яке можна використовувати для поставки на системи, котрі підтримують Eiffel.

2.6. МОВИ, ЗАСНОВАНІ НА ПАСКАЛЕ.

2.6.1. ACTOR.

Actor — це об'єктно-орієнтовані язик, і середовище, засновані на Паскале і працюючі під Microsoft Windows. Він з'єднує систему управління динамічної пам’яттю і автоматичну складання сміття. Actor створили групою Whitewater Group. Він використовується до створення окремих прикладних завдань для Windows, які можна скомпонувати з програмами на Microsoft C.

2.6.2. OBJECT PASCAL.

Object Pascal — це объектно-ориентированное розширення Паскаля, розроблене М. Віртом що з командою з фірми Apple. Класи (типи) реалізовані як розширення паскалевской структури RECORD. У Object Pascal можуть утримувати як поля даних, і поля методів. Методи визначаються як процедури чи функції Паскаля, зумовлені під назвою класу. Повідомлення посилаються з допомогою звичайних конструкцій Паскаля для визначення поля. Object Pascal використовувався для внутрішніх розробок фірми Apple. Бібліотека класів Object Pascal лежить в основі інтегрованої системи розробки прикладних програм MacApp. Мова вільно поширюється [Schmucker 1986].

2.7. МОВИ, ПІДТРИМУЮТЬ АБСТРАКЦІЮ ДАННЫХ Раздаются вигуки, що кілька інших мов таки також або объектно — орієнтовані, або підтримують об'єктно-орієнтовані поняття. У цьому вся розділі розглядаються дві мови, мають істотну підтримку програмістів — Modula-2 і Ada, які порівнюються з вищенаведеними объектно-ориентированными мовами. У таблиці С2.4 підбили підсумки основних коштів мов і основних комерційних объектно-ориентированных языков.

2.7.1. ADA.

Ada було створено Міністерстві Оборони США від використання у вбудованих комп’ютерних системах. Його використання обов’язково жити у державних контрактах у деяких сферах як і США, і у Великобританії. Завдяки цьому такі є природними прикладними завданнями для объектно — риентированных понять: значних зусиль було витрачено на доказ те, що Ада підтримує ООС. Нові типи даних (класи) можна поставити у мові Ада як пакети. Пакет містить як загальну, і приватну інформацію. Користувальницький інтерфейс заданий як специфікація пакета, тоді як реалізація задається окремо у тілі пакета, надаючи ефективного механізму инкапсуляции. Зв’язування відбувається в час компіляції, коли явно перевіряються типи всіх даних. У пакеті можна перевизначати оператори, даючи нового змісту традиційним операторам типу +. Ада Демшевського не дозволяє типам успадковувати інформацію чи поведінка з інших типів, хоча є можливість вільно використовувати різновид наслідування — узагальнення (genericity), що дозволяє експортувати обмежену кількість приватних типів і операцій. Ада можна використовувати і розробити програм, заснованих на виключно об'єктах. Для проектів, у військової техніки та аерокосмічній областях іншого вибору немає і. Користувачі, не обмежені цими областями, можуть із задоволенням відзначити, що й вимоги може бути виконано іншим объектноорієнтованим мовою типу Eiffel.

Таблица С2.4 Порівняння мов программирования Язык |Приховання інформації |Класи |Наследо-вание |Связы-вание |Складання сміття |Инструментарий | |Simula |так |так |єдиний. |стат. |немає |є | |Smalltalk-80 |так |так |єдиний. |динам. |автом. |повний | |З++ |так |так |єдиний.* |обидва |немає |немає | |Objective-C |так |так |єдиний.* |обидва |немає |є | |Eiffel |так |так |обидва |обидва |немає |є | |Ada |так |так |немає |стат. |немає |немає | |Modula-2 |так |немає |немає |стат. |немає |немає | | * множинне успадкування на стадії разработки.

2.7.2. MODULA-2.

Modula-2, розроблена М. Віртом, є нащадком мов Algol 60 і Pascal, і приковує багатьох, навчених на традиції мов. Її ключове засіб — принцип приховання інформації, що полягає у Московському відділенні специфікації модуля його реалізації. Абстрактні типи даних може бути визначено як закриті типи. Специфікація типу міститься у модулі з визначенням, який описує тип даних, і процедури для доступу щодо нього. Програми, виконують ці процедури, зберігають у модулі реалізації. Як можна і в Аді, такий поділ служить як механізм инкапсуляции. Проте Modula-2 більш обмежує, ніж Ада, не дозволяючи ні перевизначення, ні узагальнення операцій. З’явилося кілька статей, що б, як Modula-2 то, можливо використана і розробити объектно-ориентированных систем. Це істотною навантаження на програміста, оскільки мову підтримувати не може об'єктно-орієнтовані кошти, достойні главі B1. Необхідність користувачів мов Algol-Pascal-Modula у засобах ОВП може бути задоволені, наприклад, реалізацією мови Modula-3, объектноорієнтованого нащадка Modula-2, розробленого групою дослідницького центру фірм DEC і Olivetti у Каліфорнії [Cardelli et al 1988].

ЗАКЛЮЧЕНИЕ

Ведущие продавці ПО для персоналок є активними користувачами объектно-ориентированных мов і культур коштів. Microsoft вважається творцем объектно-ориентированных ієрархій класів для Word і Excel. Позиція Microsoft прояснилася після кількох публікацій, і інтерв'ю. Компанія підтримала об'єктно-орієнтовані розширення існуючих мов, включаючи Basic. Bill Gates також вразив усіх заявою у тому, що не бачить майбутнього за запровадженням нових объектно-ориентированных мов після 1988 р., але ОС майбутнього повинен мати объектно-ориентированную підтримку: «Ви підніміть всієї глибини прикладних завдань, працюючи тільки з ними, до того часу, коли ми не зробимо це всередині ОС «[Byte, 1988]. Це буде досягнуто додатковими можливостями OS/2. Практично всі об'єктно-орієнтовані мови програмування є що розвиваються мовами, їх стандарти регулярно уточнюються і розширюються. Внаслідок цього розвитку є неминучі розбіжності в вхідних мовами компіляторів різних систем програмування. Найпоширенішими нині є системи програмування Microsoft З++, Microsoft Visual З++ і системи програмування фірми Borland International.

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

А. Р. Іванов «Об'єктно-орієнтовані системи: Стан і», Москва 1992 р. Подбельский В. В. Мова З++. — М.:Финансы і статистика, 1996. Об'єктно-орієнтовані мови програмування, [internet Объектно-ориентированное програмування, (internet.

Показати весь текст
Заповнити форму поточною роботою