stringtranslate.com

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

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

Примерами объектно-ориентированных языков в грубом хронологическом порядке являются 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. Все эти языки поддерживают определение объекта как структуры данных, но не имеют полиморфизма и наследования.

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

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

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

Ссылки

  1. ^ Wegner, Peter (декабрь 1987). "Dimensions of object-based language design" (PDF) . В Meyrowitz, Norman (ред.). Труды конференции по объектно-ориентированным системам программирования, языкам и приложениям - OOPSLA '87 . Том 22. С. 168–182. doi :10.1145/38765.38823. ISBN 0897912470. S2CID  819420.
  2. ^ Barbey, S.; Kempe, M.; Strohmeier, A. (1993). "Объектно-ориентированное программирование с Ada 9X". Проект технического отчета . Швейцарский федеральный технологический институт в Лозанне, Лаборатория программной инженерии . Получено 15 декабря 2013 г. Сама Ada 83 обычно не считается объектно-ориентированной; скорее, согласно терминологии Вегнера [Weg 87], ее называют объектно-ориентированной, поскольку она обеспечивает только ограниченную форму наследования и в ней отсутствует полиморфизм.

Смотрите также