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

Вид материалаДокументы
Подобный материал:
Букатко Ігор


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


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

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

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

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

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

 Мови програмування мають різні класифікацій, наприклад:

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


Приклад (Паскаль): Вивід на екран 5 випадкових чисел в діапазоні -10 .. 10.

var i: integer;
begin
    randomize;
    for i: = 1 to 5 do writeln (random (21) -10);
end.


Приклад (асемблер): Ця команда додає значення джерела до значення приймача і і поміщає результат в приймач. Інші математичні команди:

mov ax, 3406d

mov dx, 13EAh

xor ax, dx

ax = 3406 (десятковий), в двійковому - 0000110101001110.

dx = 13EA (шістнадцятковий), в двійковому - 0001001111101010.


Команда mov заміщає перший операнд (приймач) другим (джерелом). При цьому початкове значення першого операнда втрачається. Другий операнд не змінюється. 

ХOR (НЕ АБО) встановлює біт результату в 1, якщо біт джерела відрізняється від біта приймача.


2) Мови високого рівня можуть бути декларативними (наприклад, Пролог, ЛИСП) і процедурно-орієнтованими (наприклад, Си, Бейсик, Паскаль, Ада). Процедурні мови розвиваються в об'єктно-орієнтовані.

 Та сама мова програмування може бути реалізована у вигляді компілятора або інтерпретатора, наприклад, Quick Basic — компілятор, MSX Basic — інтерпретатор. Останнім часом з'явилися: мови змішаного типу. Вони можуть бути як компіляторами, так і інтерпретаторами залежно від бажання користувача, наприклад мова програмування в СУБД Foxpro.

3) Розрізняють мови універсальні й спеціалізовані, до останніх можна віднести мови керування базами даних.

Можна спостерігати тенденцію розвитку мов програмування убік більшої описовості: від принципу « як робити» до принципу «що робити». Мови також стають усе більш незалежними від типів комп'ютерів.

Деякі автори розділяють мови, як і комп'ютери, по поколіннях.

Мови першого покоління: машинно-орієнтовані з ручним керуванням пам'яті на комп'ютерах першого покоління.

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

Мови третього покоління: загального призначення, використовувані для створення прикладних програм будь-якого типу. Наприклад, Бейсик, Кобол,' Си й Паскаль.

Мови четвертого покоління: удосконалені, розроблені для створення спеціальних прикладних програм, для керування базами даних. Наприклад, мови програмування, сумісні з dbase, SQL.

 Мови програмування п'ятого покоління: мови декларативні, об'єктно-орієнтовані й візуальні . Наприклад, Пролог, ЛИСП, C++, С#, Visual Basic, Delphi.

З появою мережі Internet пов'язана розробка спеціалізованих мов програмування. Інтерпретатори для них вбудовані в браузери. Це мови HTML, " onclick="return false">

За останні роки у сфері програмного забезпечення відбувся ряд значних змін. В результаті пошуку нових ідей програмування було розроблено три нові концепції програмування:
  • об’єктно-орієнтоване програмування (ООП);
  • уніфікована мова моделювання (UML);
  • спеціалізовані засоби розробки програмного забезпечення.

Об’єктно-орієнтований підхід

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

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

Функції об’єкта, що в С++ називаються методами (Можливості об'єкта), зазвичай призначені для доступу до даних об’єкта. Прямий доступ до даних неможливий. Дані скриті від зовнішнього впливу, що захищає їх від випадкового змінення. Говорять, що дані та методи інкапсульовані.

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

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

Класи

Та, хоча кожен об’єкт є унікальним, він підпадає під певну категорію, що називається класом. І коли ми говоримо про об’єкти, ми говоримо, що вони є екземплярами класів. Що це означає? Клас є свого роду формою \зразком\, що визначає, які дані й функції будуть включені в об’єкт цього класу. Тобто, клас можна представити як деякий шаблон, що визначає формат об’єкта. Клас є описом сукупності схожих між собою об’єктів. А об’єкти є втіленням властивостей, притаманних класу, до якого вони належать.

Приклад. Хоча мій РС є унікальним, він відноситься до класу персональних комп’ютерів, так само як і ваші комп’ютери. Проте, кожна машина працює в різних умовах (різні версії Windows, файли, папки тощо) та виконує різні задачі (бух. облік, набір текстів, проектування техніки, діагностика хворого тощо). Але при цьому вони всі виконують такі задачі, які визначаються класом. Іншими словами, я не управляю своїм РС як автомобілем. Аналогічно, жодна з наших машин не має властивостей поза класом персональних комп’ютерів – наприклад, не використовує в якості джерела енергії ядерну енергію. Кожен РС – екземпляр класу персональних комп’ютерів.

Наслідування

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

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

Поліморфізм

Поліморфізм означає залежність поведінки від класу, в якому ця поведінка викликається, тобто, два або більше класів можуть реагувати по різному на однакові повідомлення. Наприклад, якщо натиснути на сигнал в машині, то у відповідь можна отримати якийсь звук; якщо в посигналити в простій машині то (), а якщо посигналити в міліцейській машині то почуємо серену.

Інкапсуляція — одна з трьох парадигм об'єктно-орієнтованого програмування і дизайну. Також відома як приховування даних. Зміст інкапсуляції полягає у приховуванні від зовнішнього користувача деталей реалізації об'єкта, замість цього надаючи інтерфейс взаємодії. Слугує передусім для того, щоб не давати можливості клієнту змінювати внутрішній стан об'єкта без відома останнього, залишаючи лише можливість впливу через «офіційні» методи роботи з полями та власне методи. Завдяки використанню інкапсуляції, досягаються щонайменше дві переваги:
  • Можливість зміни внутрішнього представлення даних без необхідності зміни програмного коду клієнта
  • Зменшення ймовірності помилок через приведення екземпляра до непередбаченого стану.

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