Чи є теорія / абстракція позаду ООП?


13

Функціональне програмування має дуже елегантний обчислення Lambda та його варіанти як теорії резервного копіювання. Чи є така річ у ООП? Що таке абстракція для об'єктно-орієнтованої моделі?


5
Вантажі та вантажі. Ви пробували Google? Наприклад, є семінар-практикум під назвою FOOL, присвячений Основам об'єктно-орієнтованих мов, який працює з 1993 року. Це лише дряпає поверхню.
Дейв Кларк

@DaveClarke. Я не зовсім згоден. Обчислення лямбда - це основа для функціонального програмування в дуже точному розумінні. Наприклад, у звіті Haskell сказано, що всю мову Haskell можна вважати лише синтаксичним цукром для основної мови, що еквівалентно введеному лямбдальному числу. Я не знаю жодної об'єктно-орієнтованої мови, яка б висловлювала подібне твердження стосовно обчислення. Отже, ви праві, що є "навантаження". Але нічого з цього не вірно.
Удай Редді

@UdayReddy: Можливо, це пов'язано із багатством об'єктно-орієнтованої мови.
Дейв Кларк

1
@DaveClarke Багатство теми може означати, що (1) це хороша модна мова, (2) ми не дуже розуміємо цю тему достатньо для досягнення консенсусу, (3) ми змішуємо декілька питань, які є майже ортогональними. . Хоча я не пильно стежив за (недавньою) літературою про програмування OO, у мене завжди було відчуття, що це змішання питань, не надто чітких щодо цього (звичайно, це стосується більше мов, ніж теоретичної роботи). Ці питання включають в себе типізацію, абстрагування, позитивність, паралелізм, повторне використання коду. Теорія (одна) навряд чи враховує всі варіанти.
бабу

Відповіді:


15

Існує чотири основні підходи, хоча вони лише дряпають поверхню наявного:

  • за допомогою лямбда і записів: ідея полягає в кодуванні об'єктів, класів і методів з точки зору більш традиційних конструкцій. Робота Бенджаміна Пірса з середини 90-х років є представником цього підходу.
  • Об'єктні обчислення Абаді та Карделлі (див. Книгу Абаді та Карделлі " Теорія об'єктів" : їх основна абстракція - це запис методів, а підхід ближче до прототипу реалізації об'єктно-орієнтованого програмування, хоча класи та успадкування можуть бути закодовані в терміни більш примітивних елементів.
  • Багатометодне обчислення Кастаньї (див. Книгу Кастаньї. Об'єктно-орієнтоване програмування. Єдиний фонд ): його підхід передбачає, що багатометоди є ключовою абстракцією.
  • Розрахунки на основі класів (як, наприклад, у книзі Кіма Брюса Основи об'єктно-орієнтованих мов: типи та семантика або невелика вага Java ): ці підходи спрямовані на те, щоб зафіксувати суть класового програмування та зосередити увагу на класах та успадкуванні.

12

Зв'язок між ядром об'єктної моделі та теорією множин описаний у наступних документах:

У документах представлена ​​структура примірників та спадкових відносин між об'єктами. Таку структуру можна вважати найвищою можливою абстракцією ООП. Показано, як структура застосовується до конкретних мов програмування (Ruby, Python, Java, Scala, Smalltalk-80, Objective-C, CLOS, Perl, Dylan, JavaScript), а також до мов онтології (RDF Schema та OWL 2 Full).

У документах класів є об'єкти, підхід приймається таким чином, що основна структура є односортною. У основному вигляді структура може бути виражена як (O, ϵ , ≤, .ec) де

  • 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 ), а скоріше задіяне для останньої аксіоми.

  1. Спадщина - це часткове замовлення.
  2. Карта powerclass, .ec , є впорядкуванням порядку (O, ≤) у собі.
  3. Об'єкти з T.ec мінімальні.
  4. Кожен силовий клас є нащадком r .
  5. Множина r.ec не має нижньої межі.
  6. Однотонна карта, .ɛϲ , є ін’єктивною.
  7. Об'єкти з O.ɛϲ.ec мінімальні.
  8. Для кожних об'єктів х , у , такі , що x.ɛς визначено, x.ɛς ≤ y.ec ↔ х ≤ у .
  9. Для кожного об'єкта x , x.ɛϲ визначається ↔ xd <ϖ .

В останній аксіомі, π є фіксованим лімітом порядковим, і .d є ранг функції , отриманої з допомогою дефініцій розширення. Відношення належності до об'єкта, отримують як (( .ɛϲ ) ∪ ( .ec )) ○ (≤). Відповідно до останньої аксіоми обмеження домену domain на множину обмежених об'єктів дорівнює ( .ɛϲ ) ○ (≤). У посилаються на документи це відношення називається обмеженим членством і позначається ∊. Як важлива характеристика, це відношення є обґрунтованим. Це на відміну від ϵ, що є недостатньо обґрунтованим, оскільки r ϵ r. Виявляється, основна відповідність між (основною частиною) об'єктної технології та теорією множин може бути виражена як

∊ ↔ ∈

тобто обмежене членство відповідає встановленому членству між обґрунтованими наборами. Як окремий випадок, частковий Всесвіт фон Неймана рангу ϖ + 1 є метаоб'єктною структурою за визначеним розширенням. Загалом, кожна абстрактна ( ϖ + 1 ) - надбудова (O,) є остаточно еквівалентною цілковитій структурі метаоб'єкта. Кожна структура метаоб'єкта може бути правдиво вбудована у повну метаоб'єктну структуру, яка, у свою чергу, може бути правдиво вбудована у Всесвіт фон Неймана.

Термін " основна структура" використовується для узагальнення структур метаоб'єктів. У цьому узагальненні .ec та .ɛϲ можуть бути (довільно) частковими, можливо, порожніми. Зокрема, можливі кінцеві основні структури, при цьому мінімальна структура містить лише корінь спадкування r . Кожна основна структура може бути розширена до метаоб'єктної структури шляхом завершення силового класу з подальшим однотонним завершенням, що, в свою чергу, робить основні структури правдиво вбудованими у Всесвіт фон Неймана.


@Raphael Набагато краще - спасибі, панове!
Девід Річербі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.