Об'єктно-базована мова— мова програмування, яка використовує ідею інкапсуляції стану та операцій всередині об’єктів. Об’єктно-базованим мовам не обов’язково підтримувати усі характеристики ООП: успадкування чи підтипи, але ті, які мають такі можливості, називаються об’єктно-орієнтованими. Об'єктно-базовані мови, які не підтримують успадкування або підтипи, зазвичай не вважаються справжніми об'єктно-орієнтованими мовами.
Зазвичай мова вважається об’єктно-базованою, якщо вона включає основні можливості для об’єкта: ідентичність, властивості та атрибути. Мова вважається об’єктно-орієнтованою, якщо вона об’єктно-базована, а також має можливість поліморфізму, успадкування, інкапсуляції та, можливо, композиції. Поліморфізм означає здатність перевантажувати ім’я функції кількома способами поведінки, залежно від того, які об’єкти їй передаються. Звичайна передача повідомлень розрізняє лише перший об’єкт і розглядає це як «надсилання повідомлення» цьому об’єкту.
Об’єктно-орієнтованими мовами (у приблизному хронологічному порядку їх появи) є Simula, Smalltalk, C++ (об’єктна модель базується на Simula), Objective-C (об’єктна модель базується на Smalltalk), Eiffel, Xojo (раніше REALbasic), Python, Ruby, Java, Visual Basic.NET, C# і Fortran 2003. Об'єктно-базованими, але не об’єктно-орієнтованими мовами є ранні версії Ada, Visual Basic (VB) і Fortran 90. Усі ці мови підтримували визначення об’єкта як структури даних, але не мали поліморфізму та успадкування.
Іноді термін об’єктно-базована мова застосовують до мов програмування на основі прототипів, справжніх об’єктно-орієнтованих мов, у яких відсутні класи, але в яких об’єкти успадковують свій код і дані безпосередньо від інших об’єктів шаблону.
Як об’єктно-базовані, так і об’єктно-орієнтовані мови (на основі класів чи прототипів) можуть перевірятися статично. Статична перевірка мов на основі прототипів може бути складною, оскільки ці мови часто дозволяють динамічно розширювати об’єкти за допомогою нової поведінки та навіть змінювати їх батьківський об’єкт (від якого вони успадковуються) під час виконання[1][2].
Різниця між об'єктно-орієнтованою та об'єктно-базованою мовами
Об'єктно-орієнтована мова | Об'єктно-базована мова |
---|---|
Об’єктно-орієнтовані мови підтримують усі функції об’єктно-орієнтованого програмування (ООП): абстракцію , інкапсуляцію , успадкування , поліморфізм. | Об’єктно-базовані мови підтримують частину функцій ООП, наприклад інапсуляцію, поліморфізм або успадкування. [ потрібна цитата ] |
Приклади: C++ , C# , Java тощо. | Приклади: Visual Basic (до .NET) [ потрібне цитування ] |
Список літератури
- ↑ Wegner, Peter (1987). Dimensions of object-based language design. Conference proceedings on Object-oriented programming systems, languages and applications - OOPSLA '87 (англ.). ACM Press. с. 168—182. doi:10.1145/38765.38823. ISBN 978-0-89791-247-1. Процитовано 30 березня 2023.
- ↑ Object-Oriented Programming with Ada 9X. www.adahome.com. Процитовано 30 березня 2023.