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

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

Примеры объектно-ориентированные языки в приблизительном хронологическом порядке включать Симула, Болтовня, C ++ (чья объектная модель была основана на модели Симулы), Цель-C (чья объектная модель была основана на Smalltalk), Эйфель, Xojo (ранее REALbasic), Python, Рубин, Ява, Visual Basic .NET, C #, и Фортран 2003. Примеры языка, который является объектно-ориентированным, но не объектно-ориентированным, являются ранними версиями Ада, Visual Basic (VB),JavaScript и Фортран 90. Все эти языки поддерживают определение объекта как структуры данных, но не имеют полиморфизма и наследования.

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

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

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

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

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

Рекомендации

  1. ^ Вегнер, Питер (декабрь 1987 г.). Мейровиц, Норман (ред.). «Измерения объектно-ориентированного языкового дизайна» (PDF). Материалы конференции OOPSLA'87. 22 (12): 168--182.
  2. ^ Барби, S; М. Кемпе; А. Штромайер (1993). «Объектно-ориентированное программирование с помощью Ada 9X». Проект технического отчета. Швейцарский федеральный технологический институт в лаборатории программной инженерии Лозанны. Получено 15 декабря 2013. Сама Ada 83 обычно не считается объектно-ориентированной; скорее, согласно терминологии Вегнера [Weg 87], он называется объектно-ориентированным, так как он обеспечивает только ограниченную форму наследования и не имеет полиморфизма.