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

Поняття програми. Принципи програмування.

Програма визначається як «алгоритм, тобто послідовність інструкцій, який записаною мовою, що зрозуміла комп’ютерові». Це визначення є класичним, але воно явно акцентує увагу лише на одному аспекті програмування: програма є деяка послідовність операцій. Не менш важливими є й інші аспекти, наприклад:

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

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

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

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

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

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

3. Логічне програмування. В основі виконання програми лежить механізм виведення нових фактів з даних фактів згідно із заданими логічними правилами.  Найбільш відомий представник — Пролог.

4. Об’єктно-орієнтоване програмування – найбільш стрімко розвивається в сучасний час.

Об’єктна програма розглядається як сукупність паралельно існуючих об’єктів, які взаємодіють між собою. Кожний об’єкт вміє виконувати певні операції та характеризується певною поведінкою (C++, Delphi, Java).

Як окремий напрямок слід виділити мови програмування баз даних, призначені для маніпуляції великими централізованими масивами даних і отримання з них інформації.

 Об’єктно-орієнтоване програмування (ООП) — це метод програмування, оснований на поданні програми у вигляді сукупності взаємодіючих об’єктів, кожен з яких є екземпляром певного класу, а класи є членами певної ієрархії наслідування. Фундаментальні поняття ООП:

Клас – визначає абстрактні характеристики деякої сутності та дії, які вона здатна виконувати (її поведінки, методи або можливості).

Наприклад, клас Собака може характеризуватись рисами, притаманними всім собакам, зокрема: порода, колір хутра, здатність гавкати.

Об’єкт – окремий екземпляр класу.

Клас Собака відповідає всім собакам шляхом опису їхніх спільних рис; об’єкт Сірко є одним окремим собакою, окремим варіантом значень характеристик.

Метод – можливості об’єкта.

Оскільки Сірко — Собака, він може гавкати. Тому гавкати є одним із методів об’єкта Сірко. Він може мати й інші методи, зокрема: місце, або їсти.

Обмін повідомленнями – передача даних від одного процеса іншому, або надсилання викликів методів.

Успадкування Клас може мати «підкласи», спеціалізовані, розширені версії надкласу. Можуть навіть утворюватись цілі дерева успадкування.

Наприклад, клас Собака може мати підкласи Коллі, Пікінес, Вівчарка і т.п. Так, Сірко може бути екземпляром класу Вівчарка.

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

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

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

Наприклад Собака Сірко більшу частину часу може розглядатись як Собака, а коли потрібно отримати доступ до інформації, специфічної для собак – Сірка можна розглядати як тварину, як тварину певної породи.

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

Наприклад, якщо Собака отримує команду голос, то у відповідь можна отримати Гав; якщо Свиня отримує команду голос, то у відповідь можна отримати Хрю.

 

Об’єктно-орієнтований підхід полягає в наступному наборі основних принципів:

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

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

    У класі задається поведінка (функціональність) об’єкта. Таким чином усі об’єкти, які є екземплярами одного класу, можуть виконувати одні й ті ж самі дії.

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

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

 

Питання для самостійної перевірки знань:

  1. Що таке програма?
  2. Які ви знаєте принципи програмування?
  3. У чому полягає сутність об’єктно-орієнтованого програмування?
  4. Що таке клас у ОПП?
  5. Що таке об’єкт у ОПП?
  6. Що таке метод у ОПП?
  7. Що таке обмін повідомленнями у ОПП?
  8. Що таке приховування інформації у ОПП?
  9. Що таке абстрагуванняу ОПП?

10. Що таке поліформізм у ОПП?

11. Які ви знаєте принципа ОПП?