Функціональне програмування має дуже елегантний обчислення Lambda та його варіанти як теорії резервного копіювання. Чи є така річ у ООП? Що таке абстракція для об'єктно-орієнтованої моделі?
Функціональне програмування має дуже елегантний обчислення Lambda та його варіанти як теорії резервного копіювання. Чи є така річ у ООП? Що таке абстракція для об'єктно-орієнтованої моделі?
Відповіді:
Існує чотири основні підходи, хоча вони лише дряпають поверхню наявного:
Зв'язок між ядром об'єктної моделі та теорією множин описаний у наступних документах:
У документах представлена структура примірників та спадкових відносин між об'єктами. Таку структуру можна вважати найвищою можливою абстракцією ООП. Показано, як структура застосовується до конкретних мов програмування (Ruby, Python, Java, Scala, Smalltalk-80, Objective-C, CLOS, Perl, Dylan, JavaScript), а також до мов онтології (RDF Schema та OWL 2 Full).
У документах класів є об'єкти, підхід приймається таким чином, що основна структура є односортною. У основному вигляді структура може бути виражена як (O, ϵ , ≤, .ec) де
Зразок структури ядра відповідно до об'єктної моделі Ruby показаний на наступній схемі. Зелені посилання показують відношення успадкування при рефлексивному транзитивному зменшенні, сині посилання показують відношення членства у "зменшенні субсидії" - синє посилання від х вказує на найменший контейнер 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
Основні частини об'єктної моделі всіх перерахованих вище мов можна розглядати як спеціалізацію структури, яка не містить або лише кілька додаткових складових. З теоретичної точки зору, найбільш значущим випадком додаткової складової є однотонна карта (позначена .ɛϲ ), введена Діланом. Це робить Ділана єдиною мовою програмування (із зазначеного вище), що не підпадає під умову монотонності (≤) ○ (ϵ) ⊆ (ϵ), де символ композиції ○ інтерпретується зліва направо.
Один із способів формалізувати зв'язок між ядром об'єктної моделі та теорією множин - через сімейство структур (O, ≤, r, .ec, .ɛϲ), що називаються метаоб'єктними структурами у посилаються на документи, оскільки x.ec або x.ɛϲ можна вважати. як метаоб'єкти х . У цих структурах x.ec визначається для кожного об'єкта x, а x.ɛϲ визначається для кожного обмеженого ("малого") об'єкта x . Структури підпорядковані дев'яти аксіомам нижче. Аксіоматизація використовує визначене розширення, яке досить просте для перших восьми аксіом ( Tпозначає набір кінцевих об'єктів - тих, які не є нащадками r , а .ec ∗ - рефлексивне перехідне замикання .ec ), а скоріше задіяне для останньої аксіоми.
В останній аксіомі, π є фіксованим лімітом порядковим, і .d є ранг функції , отриманої з допомогою дефініцій розширення. Відношення належності до об'єкта, отримують як (( .ɛϲ ) ∪ ( .ec )) ○ (≤). Відповідно до останньої аксіоми обмеження домену domain на множину обмежених об'єктів дорівнює ( .ɛϲ ) ○ (≤). У посилаються на документи це відношення називається обмеженим членством і позначається ∊. Як важлива характеристика, це відношення є обґрунтованим. Це на відміну від ϵ, що є недостатньо обґрунтованим, оскільки r ϵ r. Виявляється, основна відповідність між (основною частиною) об'єктної технології та теорією множин може бути виражена як
∊ ↔ ∈
тобто обмежене членство відповідає встановленому членству між обґрунтованими наборами. Як окремий випадок, частковий Всесвіт фон Неймана рангу ϖ + 1 є метаоб'єктною структурою за визначеним розширенням. Загалом, кожна абстрактна ( ϖ + 1 ) - надбудова (O, ∊ ) є остаточно еквівалентною цілковитій структурі метаоб'єкта. Кожна структура метаоб'єкта може бути правдиво вбудована у повну метаоб'єктну структуру, яка, у свою чергу, може бути правдиво вбудована у Всесвіт фон Неймана.
Термін " основна структура" використовується для узагальнення структур метаоб'єктів. У цьому узагальненні .ec та .ɛϲ можуть бути (довільно) частковими, можливо, порожніми. Зокрема, можливі кінцеві основні структури, при цьому мінімальна структура містить лише корінь спадкування r . Кожна основна структура може бути розширена до метаоб'єктної структури шляхом завершення силового класу з подальшим однотонним завершенням, що, в свою чергу, робить основні структури правдиво вбудованими у Всесвіт фон Неймана.