Сутність об’єктно-орієнтованого програмування
Вибір ступеня абстракції визначається складністю розв'язуваної задачі. При цьому безглуздо використовувати складні технології для вирішення простих завдань, але точно також марно вирішувати складні завдання без використання відповідних їм технологій. Використовуваний інструмент повинен бути адекватний розв'язуваної задачі і моделі організації знань.
Наступним етапом розвитку програмування є об'єктно-орієнтоване програмування (ООП), основні принципи якого були розроблені ще в мові Simula-67.
Основою ООП є введення поняття об'єкта і взаємозв'язків між ними.
Об'єкт являє собою тип даних, який визначається користувачем. У ньому програміст задає властивості деякого явища (предмета або процесу) у вигляді полів даних і алгоритмів їх обробки у вигляді конкретних підпрограм, званих методами. Оскільки будь-який тип даних (стандартний або визначений користувачем) задає внутрішнє представлення даних цього типу в пам'яті комп'ютера, безліч значень, які можуть приймати дані цього типу, і набір допустимих операцій і способів обробки, то все це можна задати і при описі об'єкта.
Деталі реалізації об'єкта приховані від користувача за інтерфейсом, яким є заголовки його методів.
Конкретні дані цього типу називаються екземплярами об'єктів.
За допомогою ООП реалізується т.зв. «Подієво-керована модель», при якій активні дані, керуючі викликом того чи іншого способу їх обробки (тобто фрагмента програмного коду).
Основними властивостями ООП є інкапсуляція, успадкування і поліморфізм.
Інкапсуляція - це об'єднання даних і алгоритмів (підпрограм) їх обробки, в результаті якого і дані, і підпрограми в значній мірі втрачають своє самостійне значення. В результаті при написанні програм виключаються помилки, пов'язані із застосуванням для обробки даних, не призначених для цього підпрограм. Інкапсуляція підвищує рівень абстракції програми, які стають легко модифікується.
Механізм успадкування дозволяє будувати бібліотеку об'єктів за принципом «від простого до складного». Така технологія розробки програм реалізує технологію висхідного програмування.
Поліморфізм - це можливість використання в родинних об'єктах різного рівня ієрархії одних і тих же імен для позначення схожих за змістом дій. Це дозволяє при розробці об'єктів-нащадків не тільки доповнювати методи об'єкта-батька, а й замінювати їх новими зі збереженням назви.