Объектно-ориентированный язык - Object-based language

Термин объектно-ориентированный язык может использоваться в техническом смысле для описания любого языка программирования, который использует идею инкапсуляции состояния и операций внутри объектов . Объектно-ориентированные языки не должны поддерживать наследование или создание подтипов , но те, которые поддерживают, также называются объектно-ориентированными . Объектно-ориентированные языки, которые не поддерживают наследование или создание подтипов, обычно не считаются настоящими объектно-ориентированными языками.

Примеры объектно-ориентированных языков в приблизительном хронологическом порядке включают Simula , Smalltalk , C ++ (какая объектная модель основана на Simula), Objective-C (какая объектная модель основана на Smalltalk), Eiffel , Xojo (ранее REALbasic), Python. , Ruby , Java , Visual Basic .NET , C # и Fortran 2003 . Примерами языка, который является объектно-ориентированным, но не объектно-ориентированным, являются ранние версии Ada , Visual Basic (VB), JavaScript и Fortran 90 . Все эти языки поддерживают определение объекта как структуры данных, но не имеют полиморфизма и наследования.

На практике термин объектно-ориентированный обычно применяется к тем объектно-ориентированным языкам, которые также не являются объектно-ориентированными, хотя все объектно-ориентированные языки также являются объектно-ориентированными по определению. Вместо этого термины объектно-ориентированный и объектно-ориентированный обычно используются как взаимоисключающие альтернативы, а не как категории, которые перекрываются.

Иногда термин объектно-ориентированный применяется к языкам программирования на основе прототипов , истинным объектно-ориентированным языкам, в которых отсутствуют классы, но в которых объекты вместо этого наследуют свой код и данные непосредственно от других объектов шаблона . Примером широко используемого языка сценариев на основе прототипов является JavaScript .

Как объектно-ориентированные, так и объектно-ориентированные языки (основанные на классах или на прототипах) могут подвергаться статической проверке типов . Статическая проверка языков на основе прототипов может быть трудной, потому что эти языки часто позволяют объектам динамически расширяться с новым поведением и даже изменять их родительский объект (от которого они наследуют) во время выполнения .

Разница между объектно-ориентированными и объектно-ориентированными языками

Объектно-ориентированный язык Объектно-ориентированный язык
Объектно-ориентированные языки поддерживают все функции объектно-ориентированного программирования (ООП): абстракцию , инкапсуляцию , наследование , полиморфизм. Объектно-ориентированные языки поддерживают подмножество функций ООП, например полиморфизм или наследование.
Примеры: C ++ , C # , Java и т. Д. Примеры: Visual Basic (до .NET)

использованная литература