Объектно-ориентированный язык
Термин «объектно-ориентированный язык» может использоваться в техническом смысле для описания любого языка программирования , в котором используется идея инкапсуляции состояния и операций внутри объектов . Объектно-ориентированные языки не обязательно поддерживают наследование или подтипирование , но те, которые поддерживают, также называются объектно-ориентированными . Объектно-ориентированные языки, которые не поддерживают наследование или подтипирование, обычно не считаются настоящими объектно-ориентированными языками.
Примеры объектно-ориентированных языков , в приблизительном хронологическом порядке, включают 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 ]
Объектно-ориентированный язык | Объектно-ориентированный язык |
---|---|
Объектно-ориентированные языки поддерживают все возможности объектно-ориентированного программирования (ООП): абстракцию , инкапсуляцию , наследование , полиморфизм. | Объектно-ориентированные языки поддерживают подмножество функций ООП, таких как полиморфизм или наследование. [ нужна ссылка ] |
Примеры: C++ , C# , Java и т. д. | Примеры: Visual Basic (до .NET). [ нужна ссылка ] |
Ссылки
[ редактировать ]- ^ Вегнер, Питер (декабрь 1987 г.). «Размеры проектирования объектно-ориентированного языка» (PDF) . В Мейровице, Норман (ред.). Материалы конференции «Объектно-ориентированные системы, языки и приложения программирования — OOPSLA '87» . Том. 22. С. 168–182. дои : 10.1145/38765.38823 . ISBN 0897912470 . S2CID 819420 .
- ^ Барби, С.; Кемпе, М.; Штромайер, А. (1993). «Объектно-ориентированное программирование на Ada 9X» . Проект технического отчета . Лаборатория программной инженерии Швейцарского федерального технологического института в Лозанне . Проверено 15 декабря 2013 г.
Сама Ада 83 обычно не считается объектно-ориентированной; скорее, согласно терминологии Вегнера [Weg 87], его называют объектно-ориентированным, поскольку он обеспечивает лишь ограниченную форму наследования и лишен полиморфизма.
См. также
[ редактировать ]- {{ Компьютерный язык }}
- {{ Языки программирования }}
- {{ Парадигмы программирования navbox }}