ฟังก์ชั่นการเขียนโปรแกรมมีแลมบ์ดาแคลคูลัสที่สง่างามและตัวแปรในฐานะทฤษฎีสำรอง มีสิ่งนี้สำหรับ OOP หรือไม่? นามธรรมสำหรับแบบจำลองเชิงวัตถุคืออะไร
ฟังก์ชั่นการเขียนโปรแกรมมีแลมบ์ดาแคลคูลัสที่สง่างามและตัวแปรในฐานะทฤษฎีสำรอง มีสิ่งนี้สำหรับ OOP หรือไม่? นามธรรมสำหรับแบบจำลองเชิงวัตถุคืออะไร
คำตอบ:
มีสี่วิธีหลักแม้ว่าสิ่งเหล่านี้เพียงเกาพื้นผิวของสิ่งที่มีอยู่:
การเชื่อมต่อระหว่างแกนโมเดลวัตถุและทฤษฎีเซตอธิบายไว้ในเอกสารต่อไปนี้:
เอกสารนำเสนอโครงสร้างของอินสแตนซ์และความสัมพันธ์ระหว่างการสืบทอดระหว่างวัตถุ โครงสร้างดังกล่าวถือได้ว่าเป็นนามธรรมที่เป็นไปได้สูงสุดของ OOP มันแสดงให้เห็นว่าโครงสร้างที่ใช้กับภาษาการเขียนโปรแกรมเฉพาะ (Ruby, Python, Java, Scala, Smalltalk-80, Objective-C, CLOS, Perl, Dylan, JavaScript) และภาษาออนโทโลจี (RDF Schema และ OWL 2 เต็ม)
ในเอกสารคลาสเป็นวัตถุเข้าใกล้เพื่อให้โครงสร้างหลักเป็นแบบเรียงเดี่ยว ในรูปแบบหลักโครงสร้างสามารถแสดงเป็น(O, ϵ , ≤, .ec)โดยที่
โครงสร้างแกนตัวอย่างตามโมเดลวัตถุทับทิมแสดงโดยแผนภาพต่อไปนี้ การเชื่อมโยงสีเขียวแสดงความสัมพันธ์มรดกในการลดสกรรมกริยาสะท้อนการเชื่อมโยงสีฟ้าแสดงความสัมพันธ์ของสมาชิกใน "ลด subsumption" - การเชื่อมโยงสีฟ้าจากxจุดไปยังภาชนะที่น้อยที่สุดของx แม็พpowerclass .ecถูกสร้างโดยลิงก์สีน้ำเงินแนวนอน วัตถุจากภาพของแผนที่นี้คือpowerclasses (เป็นสีเทา) ในทับทิมพวกเขาจะเรียกว่าeigenclassesหรือชั้นเดียว (ระยะหลังถูกเลิกค่อนข้าง) วัตถุ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 แนะนำ สิ่งนี้ทำให้ดีแลนเป็นภาษาการเขียนโปรแกรมเพียงอย่างเดียว (จากที่กล่าวถึงข้างต้น) thas ไม่ได้อยู่ภายใต้เงื่อนไขความน่าเบื่อ (≤) ○ (ϵ) ⊆ (ϵ) โดยที่สัญลักษณ์องค์ประกอบ composition ตีความจากซ้ายไปขวา
วิธีหนึ่งที่จะทำให้การเชื่อมต่อระหว่างวัตถุจำลองหลักและทฤษฎีเซตเป็นทางการคือผ่านตระกูลของโครงสร้าง(O, ≤, r, .ec, .ɛϲ) ที่เรียกว่าโครงสร้าง metaobjectในเอกสารอ้างอิงเนื่องจากสามารถพิจารณาx.ecหรือx.ɛϲได้ เป็น metaobjects ของx ในโครงสร้างเหล่านี้x.ecถูกกำหนดสำหรับวัตถุทุกxและx.ɛςถูกกำหนดไว้สำหรับทุกกระโดด ( "เล็ก") วัตถุx โครงสร้างเหล่านี้ขึ้นอยู่กับความจริงทั้งเก้าด้านล่าง axiomatization นั้นใช้ส่วนขยายที่กำหนดซึ่งค่อนข้างง่ายสำหรับแปด axioms แรก ( Tหมายถึงชุดของวัตถุเทอร์มินัล - สิ่งที่ไม่ได้เป็นลูกหลานของrและ. e ∗คือการปิดการสะท้อนแสงของ. e ) แต่มีส่วนเกี่ยวข้องกับสัจพจน์สุดท้าย
ในสัจพจน์สุดท้ายϖเป็นเลขลำดับคงที่และ. dคือฟังก์ชันอันดับที่ได้มาจากส่วนขยายที่กำหนด ความสัมพันธ์สมาชิกวัตถุ, ϵ, ได้รับเป็น (( .ɛϲ ) ∪ ( .ec )) ○ (≤) ตามความจริงที่ผ่านมาการ จำกัด โดเมนของ ϵ กับชุดของวัตถุที่มีขอบเขตเท่ากับ ( .ɛϲ ) ○ (≤) ในเอกสารอ้างอิงความสัมพันธ์นี้เรียกว่าการเป็นสมาชิกแบบมีขอบเขตและแสดงว่า ∊ ในฐานะที่เป็นลักษณะสำคัญความสัมพันธ์นี้ได้รับการก่อตั้งขึ้นอย่างดี นี้เป็นในทางตรงกันข้ามกับεซึ่งเป็นที่ไม่ดีก่อตั้งขึ้นตั้งแต่R ε R. ปรากฎว่าการติดต่อหลักระหว่าง (ส่วนแกนกลาง) เทคโนโลยีวัตถุและทฤษฎีเซตสามารถแสดงได้
∊ ↔∈
สมาชิกที่ถูกผูกมัดเช่นสอดคล้องกับการตั้งค่าการเป็นสมาชิกระหว่างชุดที่ก่อตั้งขึ้นอย่างดี เป็นกรณีพิเศษส่วนฟอนนอยมันน์เอกภพในระดับϖ + 1เป็นโครงสร้าง metaobject โดยการขยายอย่างละเอียด โดยทั่วไปทุก ๆ นามธรรม ( ϖ + 1 ) - โครงสร้างเหนือชั้น (O, ∊ )นั้นมีความหมายเทียบเท่ากับโครงสร้าง metaobject ที่สมบูรณ์ ทุกโครงสร้างของ metaobject สามารถฝังลงในโครงสร้างของ metaobject ได้อย่างสมบูรณ์ซึ่งสามารถฝังลงในจักรวาลของ von Neumann ได้อย่างซื่อสัตย์
โครงสร้างพื้นฐานของคำนี้ใช้สำหรับการวางโครงสร้างทั่วไปของ metaobject ในลักษณะทั่วไปนี้. eและ. ɛϲได้รับอนุญาตให้เป็นบางส่วน (โดยพลการ) อาจว่างเปล่า โดยเฉพาะอย่างยิ่งโครงสร้างพื้นฐาน จำกัด ที่เป็นไปได้ที่มีโครงสร้างขั้นต่ำที่มีเพียงรากมรดกR ทุกโครงสร้างพื้นฐานสามารถขยายไปยังโครงสร้าง metaobject โดยการทำ Powerclass ตามด้วยการบรรลุผลแบบซิงเกิลตันซึ่งจะทำให้โครงสร้างพื้นฐานสามารถฝังเข้าไปในจักรวาลของ von Neumann ได้อย่างซื่อสัตย์