Fonksiyonel programlama, yedek teori olarak çok zarif Lambda Calculus ve varyantlarına sahiptir. OOP için böyle bir şey var mı? Nesneye yönelik model için soyutlama nedir?
Fonksiyonel programlama, yedek teori olarak çok zarif Lambda Calculus ve varyantlarına sahiptir. OOP için böyle bir şey var mı? Nesneye yönelik model için soyutlama nedir?
Yanıtlar:
Dört ana yaklaşım vardır, ancak bunlar sadece mevcut olanın yüzeyini çizer:
Nesne modeli çekirdeği ve küme teorisi arasındaki bağlantı aşağıdaki belgelerde açıklanmıştır:
Belgeler, nesneler arasındaki örnek ve miras ilişkilerinin yapısını sunar. Böyle bir yapı, OOP'nin mümkün olan en yüksek soyutlaması olarak kabul edilebilir. Yapının belirli programlama dillerine (Ruby, Python, Java, Scala, Smalltalk-80, Objective-C, CLOS, Perl, Dylan, JavaScript) ve ayrıca ontoloji dillerine (RDF Şeması ve OWL 2 Full) nasıl uygulandığı gösterilmiştir.
Belgelerde, sınıflar nesne şeklindedir , böylece çekirdek yapı tek sıralıdır. Ana formda, yapı (O, ϵ , ≤, .ec) olarak ifade edilebilir ;
Ruby nesne modeline göre örnek bir çekirdek yapı aşağıdaki diyagramda gösterilmiştir. Bir mavi renkli - Yeşil bağlantılar dönüşlü geçişli azalma miras ilişkisi, mavi bağlantılar "yutulma azaltılması" üyelik ilişkisi show x en kaba puan x . Powerclass haritası .ec yatay mavi bağlantılar ile oluşturulur. Bu haritanın görüntüsündeki nesneler güç sınıflarıdır (gri renkte). Ruby'de bunlara eigenclasses veya singleton sınıfları denir (ikinci terim oldukça kullanılmamaktadır). S , u ve v (pembe renkte) nesneler terminaldir, kalan nesneler miras kökü r'nin torunlarıdı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
Yukarıdaki tüm dillerin nesne modelinin çekirdek kısımları, birkaç ek bileşen olmadan veya sadece birkaç bileşen olmadan yapının uzmanlık alanları olarak görülebilir. Teorik bakış açısından, ek bir kurucu maddenin en önemli örneği Dylan tarafından sunulan tekli haritadır ( .ɛϲ ). Bu, Dylan'ı (yukarıda belirtilenlerden) tek programlama dilidir (symbol) ○ (ϵ) ⊆ (ϵ), kompozisyon sembolünün left soldan sağa yorumlandığı monotonluk koşuluna (≤) ○ (ϵ) ⊆ (ϵ) tabi değildir.
Nesne modeli çekirdeği ve küme teorisi arasındaki bağlantıyı resmileştirmenin bir yolu, x.ec veya x.ɛϲ referans alınan belgelerde metaobject yapılar olarak adlandırılan yapıların ailesi (O, ≤, r, .ec, .ɛϲ) aracılığıyla düşünülebilir. arasında metaobjects olarak x . Bu yapılarda x.ec her nesne x için tanımlanır ve x.ɛϲ her sınırlı ("küçük") nesne x için tanımlanır . Yapılar aşağıdaki dokuz aksiyomlara tabidir. Aksiyomatizasyon, ilk sekiz aksiyom için oldukça basit olan tanımlayıcı bir uzantı kullanır ( Tsoyundan olmayanlardır - terminali nesnelerin dizi gösterir r , ve .ec * dönüşlü geçişli bir kapaktır .ec ) bunun son aksiyomu için çıkıyor.
Son aksiyomda, ϖ sabit bir sınır ordinalidir ve .d , tanımsal uzantı tarafından türetilen sıra işlevidir. Nesne üyelik ilişkisi, ϵ, (( .ɛϲ ) ∪ ( .ec )) ○ (≤) olarak elde edilir. Son aksiyoma göre, ϵ 'nin sınırlı nesne kümesine etki alanı kısıtlaması ( .ɛϲ ) ○ (≤)' ya eşittir . Atıfta bulunulan belgelerde bu ilişkiye sınırlı üyelik denir ve ∊ ile gösterilir. Önemli bir özellik olarak, bu ilişki iyi kurulmuştur. Bu beri-iyi-olmayan kurulmuştur £ değerinin aksine bulunmaktadır r ε r. Nesne teknolojisi ile küme teorisi arasındaki temel yazışmanın şu şekilde ifade edilebileceği ortaya çıktı:
∊ ↔ ∈
yani sınırlı üyelik, iyi kurulmuş kümeler arasındaki üyelik ayarlarına karşılık gelir. Özel bir durum olarak, ϖ + 1 rütbesi kısmi von Neumann evreni, tanımsal genişleme ile bir metaobject yapısıdır. Genel olarak, her soyut ( ϖ + 1 ) - üstyapı (O, ∊ ) tanımlanmış olarak tam bir metaobject yapısına eşdeğerdir . Her metaobject yapısı, sadakatle von Neumann evrenine gömülebilen eksiksiz bir metaobject yapısına gömülebilir.
Temel yapı terimi metaobject yapılarının genelleştirilmesi için kullanılır. Bu genellemede, .ec ve .ɛϲ'nin (keyfi olarak) kısmi, muhtemelen boş olmasına izin verilir. Özellikle, sadece kalıtım kökü r'yi içeren minimum yapı ile sonlu bazik yapılar mümkündür . Her temel yapı, bir powerclass tamamlaması ve ardından da tekton tamamlanması ile bir metaobject yapısına genişletilebilir ve bu da temel yapıları von Neumann evrenine sadakatle gömülebilir hale getirir.