Функциональное программирование имеет очень элегантное Lambda Calculus и его варианты в качестве теории резервного копирования. Есть ли такая вещь для ООП? Что такое абстракция для объектно-ориентированной модели?
Функциональное программирование имеет очень элегантное Lambda Calculus и его варианты в качестве теории резервного копирования. Есть ли такая вещь для ООП? Что такое абстракция для объектно-ориентированной модели?
Ответы:
Существует четыре основных подхода, хотя они лишь затрагивают поверхность того, что доступно:
Связь между ядром объектной модели и теорией множеств описана в следующих документах:
Документы представляют структуру отношений экземпляра и наследования между объектами. Такую структуру можно считать максимально возможной абстракцией ООП. Показано, как структура применяется к конкретным языкам программирования (Ruby, Python, Java, Scala, Smalltalk-80, Objective-C, CLOS, Perl, Dylan, JavaScript), а также к языкам онтологии (RDF Schema и OWL 2 Full).
В документах классы являются объектами подхода, принятого таким образом, что базовая структура является односортированной. В основном виде структура может быть выражена как (O, ϵ , ≤, .ec) где
Пример структуры ядра в соответствии с объектной моделью Ruby показан на следующей диаграмме. Зеленые ссылки показывают отношение наследования в рефлексивном переходном сокращении, синие ссылки показывают отношение членства в «сокращении потребления» - голубая ссылка от x указывает на наименьший контейнер x . Карта powerclass .ec состоит из горизонтальных синих ссылок. Объекты с изображения этой карты - классы мощности (серого цвета). В Ruby их называют собственными классами или также синглтон-классами (последний термин довольно устарел). Объекты s , u и v (розовые) являются терминальнымиостальные объекты являются потомками корня наследования r .
r = BasicObject; c = Class; A = c.new(r); B = c.new(A); s = A.new; u = B.new; v = B.new; class << s; end; class << v; end
Основные части объектной модели всех вышеперечисленных языков можно рассматривать как специализации структуры без каких-либо дополнительных компонентов или только с их несколькими. С теоретической точки зрения наиболее значимым случаем дополнительной составляющей является одноэлементное отображение (обозначено .ɛϲ ), введенное Диланом. Это делает Dylan единственным языком программирования (из вышеупомянутого), который не подчиняется условию монотонности (≤) ○ (ϵ) ⊆ (ϵ), где символ композиции ○ интерпретируется слева направо.
Одним из способов формализовать связь между ядром объектной модели и теорией множеств является использование семейства структур (O, ≤, r, .ec, .ɛϲ), называемых структурами метаобъектов в ссылочных документах, поскольку можно рассмотреть x.ec или x.ɛϲ как метаобъекты х . В этих структурах x.ec определен для каждого объекта x, а x.ɛϲ определен для каждого ограниченного («маленького») объекта x . Структуры подчиняются девяти аксиомам ниже. Аксиоматизация использует определение дефиниции, которое довольно просто для первых восьми аксиом ( Tобозначает множество терминальных объектов - тех, которые не являются потомками r , а .ec ∗ является рефлексивным транзитивным замыканием .ec ), а скорее задействованы для последней аксиомы.
В последней аксиоме ϖ - фиксированный предельный ординал, а .d - функция ранга, полученная из дефиниционного расширения. Отношение принадлежности к объекту, ϵ, получается как (( .ɛϲ ) ∪ ( .ec )) ○ (≤). Согласно последней аксиоме, ограничение области ϵ на множество ограниченных объектов равно ( .ɛϲ ) ○ (≤). В ссылочных документах это отношение называется ограниченным членством и обозначается ∊. В качестве существенной характеристики это соотношение является обоснованным. Это в отличие от ϵ, который не является обоснованным, так как r ϵ r, Оказывается, что основное соответствие между (основной частью) объектной технологии и теорией множеств можно выразить как
↔ ↔ ∈
т.е. ограниченное членство соответствует множеству принадлежностей между обоснованными множествами. Как частный случай, частичная вселенная фон Неймана ранга ϖ + 1 является структурой метаобъекта по определению расширения. В общем, любая абстрактная ( ϖ + 1 ) - надстройка (O, ∊ ) по определению эквивалентна полной структуре метаобъекта. Каждая структура метаобъекта может быть точно встроена в целостную структуру метаобъекта, которая, в свою очередь, может быть точно встроена во вселенную фон Неймана.
Термин базовая структура используется для обобщения структур метаобъектов. В этом обобщении .ec и .ɛϲ могут быть (произвольно) частичными, возможно, пустыми. В частности, возможны конечные базовые структуры с минимальной структурой, содержащей только корень наследования r . Каждая базовая структура может быть расширена до структуры метаобъекта с помощью дополнения PowerClass, за которым следует одноэлементное завершение, что, в свою очередь, делает базовые структуры достоверно встраиваемыми во вселенную фон Неймана.