Об'єктно-орієнтовані мови
Багато сучасних мов спеціально створено для полегшення об'єктно-орієнтованого програмування. Проте слід зазначити, що можна застосовувати техніку ООП і для не-объектно-ориентированного мови і навпаки, застосування об'єктно-орієнтованої мови зовсім не означає, що код автоматично стає об'єктно-орієнтованим.
Сучасна об'єктно-орієнтована мова пропонує, як правило, наступний обов'язковий набір синтаксичних засобів:
Оголошення класів з полями (даними — членами класу) і методами (функціями — членами класу).
Механізм розширення класу (спадкоємство) — породження нового класу від того, що існує з автоматичним включенням всіх особливостей реалізації класу-предка до складу класу-нащадка. Більшість ООП- підтримують тільки одиничне спадкоємство.
Поліморфні змінні і параметри функцій (методів), що дозволяють привласнювати одній і тій же змінній екземпляри різних класів.
Поліморфна поведінка екземплярів класів за рахунок використання віртуальних методів. У деяких ООП- всі методи класів є віртуальними.
Мабуть, за мінімальну традиційну об'єктно-орієнтовану мову можна вважати мову Оберон, який не містить ніяких інших об'єктних засобів, окрім вищеперелічених (у початковому Обероне навіть немає окремого ключового слова для оголошення класу, а також відсутні явно описувані методи, їх замінюють поля процедурного типу). Але більшість мов додають до вказаного мінімального набору ті або інші додаткові засоби. У їх числі:
Конструктори, деструкції, финализаторы.
Властивості (аксесори).
Індексатори.
Інтерфейси (наприклад, в Java використовуються також як альтернатива множинному спадкоємству — будь-який клас може реалізувати скільки завгодно інтерфейсів).
Перевизначення операторів для класів.
Засоби захисту внутрішньої структури класів від несанкціонованого використання ззовні. Звичайно це модифікатори доступу до полів і методів, типу public, private, зазвичай також protected, іноді деякі інші.
Частина мов (іноді званих «чисто об'єктними») цілком побудована навколо об'єктних засобів — в них будь-які дані (можливо, за невеликим числом виключень у вигляді вбудованих скалярних типів даних) є об'єктами, будь-який код — методом якого-небудь класу, і неможливо написати програму, в якій не використовувалися б об'єкти. Приклади подібних мов — Smalltalk, Python, Java, C#, Ruby, AS3. Інші мови (іноді використовується термін «гібридні») включають ООП-підсистему в початково процедурну мову. У них існує можливість програмувати, не звертаючись до об'єктних засобів. Класичні приклади — C++, Delphi і Perl.
