คำจำกัดความที่เป็นทางการ / ส่วนที่เคาน์เตอร์ในคณิตศาสตร์สำหรับ "วัตถุ" ของแบบจำลองเชิงวัตถุ


9

นี่เป็นคำถามที่ฉันถามในฟอรัม SE ทางคณิตศาสตร์และฉันถูกเรียกที่นี่ ดังนั้นนี่คือคำถาม -

ฉันเป็นมือใหม่ทั้งในวิชาคณิตศาสตร์และวิทยาการคอมพิวเตอร์เชิงทฤษฎีดังนั้นโปรดอดทนกับฉันหากคุณพบว่าคำถามของฉันไม่มีกรอบอย่างเหมาะสม การจำลองแบบเชิงวัตถุดูเหมือนว่ามีประโยชน์มากในการกำหนดปฏิสัมพันธ์ที่ซับซ้อนเมื่อจำลองโลกแห่งความจริง แต่ส่วนใหญ่จะใช้ในการเขียนโปรแกรม ฉันสงสัยว่าถ้าเรามีแนวคิดที่คล้ายกันในวิชาคณิตศาสตร์ เมื่อเราทำการเขียนโปรแกรมเราสามารถเข้าใจแนวคิดของ "Objects" และ "Object Oriented Programming" และใช้มัน แต่เรามีคำจำกัดความอย่างเป็นทางการของ "วัตถุ" ในแง่ของทฤษฎีเซตหรือไม่? หรือสำหรับเรื่องนั้นทฤษฎีทางคณิตศาสตร์อย่างเป็นทางการอื่น ๆ

เราสามารถใช้ / กำหนดสามแนวความคิดการสร้างแบบจำลองวัตถุหลักอย่างเป็นทางการ - 1. Encapsulation 2. การสืบทอด 3. Polymorphism

ฉันรู้ว่าคำถามกว้างเกินไป แต่จะขอบคุณจริง ๆ ถ้าคุณสามารถให้ตัวชี้บางอย่างเช่นกันเพื่อให้ฉันสามารถเข้าใจแนวคิดเหล่านี้ได้ดีขึ้น


2
มีสองคำถามจริงๆที่ฉันเห็นมัน หนึ่งคือการขอแนวคิดเชิงวัตถุ อีกประเด็นหนึ่งคือการขอแนวคิดเชิงวัตถุในวิชาคณิตศาสตร์ อาจเป็นการดีกว่าถ้าถามคำถามสองข้อแยกกัน มีเนื้อหามากมายที่จะตอบคำถามแรกแม้ว่าอาจจะมีเพียงเล็กน้อยสำหรับคำถามที่สอง (และบางทีพรุ่งนี้ฉันจะหาเวลาตอบคำถาม)
Dave Clarke

ขอบคุณ .. คุณช่วยแนะนำวัสดุสำหรับการจัดระเบียบแนวคิดเชิงวัตถุให้เป็นมาตรฐานหรือ "ตำราหนังสือ" ได้ไหม? ฉันจะรอคำตอบของคุณสำหรับคนที่สอง .... :)
user1260776

2
หนังสือมาตรฐาน (ในไม่กี่ปีที่ผ่านมา) เป็นทฤษฎีของวัตถุ การทำงานมากขึ้นล่าสุดคือเวท Java นอกจากนี้ยังมีชุดของการฝึกอบรมที่เรียกว่าFoundations of Object-Oriented Languagesซึ่งเกี่ยวข้องกับปัญหาเหล่านี้
Dave Clarke

ขอบคุณ! จะผ่านพวกเขาไป ... นอกจากนี้ฉันยังสะดุดกับ "แลมบ์ดาแคลคูลัส" ซึ่งเกี่ยวข้องกับคำถามของฉัน ..
user1260776

คำตอบ:


9

คำตอบนั้นซับซ้อนด้วยสองเหตุผล

  1. คนต่าง ๆ ในวิทยาการคอมพิวเตอร์ตีความคำว่า "วัตถุ" แตกต่างกัน หนึ่งคือวัตถุประกอบด้วยข้อมูลและการดำเนินงานที่รวมกัน อีกสิ่งหนึ่งคือวัตถุล้วน แต่มี "สถานะ" นั่นคือมันเป็นรูปแบบหนึ่งของเอนทิตีที่เปลี่ยนแปลงได้

  2. มีประเด็นเชิงปรัชญาลึก ๆ เกี่ยวกับความหมายของ "การเปลี่ยนแปลง" (และ "เอนทิตี้" หมายถึงอะไรเพราะมันเปลี่ยนแปลงอยู่ตลอดเวลา) และคำอธิบายทางคณิตศาสตร์ว่าจับหน่วยงานที่เปลี่ยนแปลงได้จริงหรือไม่

วัตถุในแง่ของข้อมูล + การดำเนินงาน : นั่นเป็นมาตรฐานที่ค่อนข้างดีในวิชาคณิตศาสตร์ ใช้ตำราเรียนทฤษฎีกลุ่มใดก็ได้ มันจะมีคำนิยามบางแห่งเช่นชั่วโมงก.(x)=ก.xก.-1. (มันเป็นตัวดำเนินการผันคำกริยา)ชั่วโมงก.เป็น "วัตถุ" ในคำศัพท์นี้ มันมีข้อมูลบางส่วนก.) และการดำเนินการ xก.xก.-1. หรือคุณสามารถทำให้มัน object-y เพิ่มเติมโดยการจับคู่ก.,xก.xก.-1 หรือสาม ก.,xก.xก.-1,xก.-1xก.. คุณสามารถสร้าง "วัตถุ" เหล่านี้ในภาษาการเขียนโปรแกรมการทำงานใด ๆ ที่มีนามธรรมแลมบ์ดาและวิธีการแบบ tuples Abadi และ Cardelli "ทฤษฎีของวัตถุ" เกี่ยวข้องกับวัตถุประเภทนี้อย่างกว้างขวาง

วัตถุที่มีสถานะ (หรือวัตถุที่เปลี่ยนแปลง ): คณิตศาสตร์มีสิ่งนั้นหรือไม่? ฉันไม่คิดอย่างนั้น ฉันไม่เคยเห็นนักคณิตศาสตร์พูดถึงสิ่งที่เปลี่ยนแปลงไม่ได้อยู่ในชีวิตการทำงานของเขา / เธอ นิวตันเคยเขียนx สำหรับตำแหน่งของอนุภาคซึ่งควรจะเปลี่ยนแปลงและ x˙สำหรับอัตราการเปลี่ยนแปลง ในที่สุดนักคณิตศาสตร์ก็พบว่าสิ่งที่นิวตันพูดถึงคือฟังก์ชั่นx(เสื้อ) จากจำนวนจริงลงในช่องว่างเวกเตอร์และ x˙ เป็นอีกฟังก์ชั่นที่เป็นอนุพันธ์อันดับแรกของ x(เสื้อ) ด้วยความเคารพ เสื้อ. จากนี้นักคณิตศาสตร์ที่มีความคิดลึกล้ำได้สรุปว่าการเปลี่ยนแปลงนั้นไม่มีอยู่จริงและสิ่งที่คุณมีก็คือหน้าที่ของเวลา แต่สิ่งที่เปลี่ยนแปลงไปในกลไกของนิวตันไม่ได้อยู่ในตำแหน่ง แต่เป็นอนุภาคอนุภาคตำแหน่งคือสถานะในทันที ไม่มีนักคณิตศาสตร์หรือนักฟิสิกส์จะแกล้งทำเป็นว่าอนุภาคเป็นความคิดทางคณิตศาสตร์ มันเป็นเรื่องทางกายภาพ

ดังนั้นจึงเป็นกับวัตถุ พวกเขาเป็นสิ่ง "ทางกายภาพ" และรัฐเป็นคุณลักษณะทางคณิตศาสตร์ของพวกเขา สำหรับการอภิปรายที่ดีของด้านนี้ให้ดูที่บทที่ 3 ของ Abelson และ Sussman ของโครงสร้างและการแปลความหมายของโปรแกรมคอมพิวเตอร์ นี่คือหนังสือเรียนที่ MIT และพวกเขาสอนมันให้กับนักวิทยาศาสตร์และวิศวกรทุกคนที่ฉันคิดว่าเข้าใจสิ่งที่ "สมบูรณ์" ได้อย่างสมบูรณ์แบบ

ความจริงที่ว่าอนุภาคไม่ใช่เชิงคณิตศาสตร์ไม่ได้หมายความว่าเราไม่สามารถจัดการกับพวกมันทางคณิตศาสตร์ได้ หากคุณขอให้นักคณิตศาสตร์จำลองระบบอนุภาคสองอนุภาคเขาจะสร้างฟังก์ชันขึ้นสองฟังก์ชันทันทีและเรียกพวกมันx1(เสื้อ) และ x2(เสื้อ). ดังนั้นอนุภาคทั้งสองจะลดลงเป็นสองดัชนีไร้ความหมาย (1 และ 2) นี่เป็นวิธีที่นักคณิตศาสตร์บอกว่าเราไม่รู้ว่าอนุภาคเหล่านั้นคืออะไรและเราไม่สนใจ สิ่งที่เราต้องรู้ก็คือตำแหน่งของพวกเขาพัฒนาขึ้นอย่างอิสระ (หรือแยกกัน) ดังนั้นเราจะจำลองพวกมันด้วยสองฟังก์ชัน

ในทำนองเดียวกันวิธีการทางคณิตศาสตร์มาตรฐานในการสร้างแบบจำลองโปรแกรมเชิงวัตถุคือการปฏิบัติต่อแต่ละวัตถุเป็นดัชนีในพื้นที่รัฐ ความแตกต่างเพียงอย่างเดียวก็คือตั้งแต่วัตถุมาและไปและโครงสร้างของระบบเป็นแบบไดนามิกเราจำเป็นต้องขยายไปสู่รูปแบบ "โลกที่เป็นไปได้" ซึ่งแต่ละโลกนั้นเป็นกลุ่มของดัชนี การจัดสรรและการจัดสรรคืนวัตถุจะเกี่ยวข้องกับการเคลื่อนย้ายจากโลกหนึ่งไปยังอีกโลกหนึ่ง

มีปัญหาเกิดขึ้น ซึ่งแตกต่างจากในกลศาสตร์เราต้องการรัฐของวัตถุที่เราจะได้รับการห่อหุ้ม แต่คำอธิบายทางคณิตศาสตร์ของวัตถุทำให้รัฐทั่วสถานที่ทำลาย encapsulation อย่างสมบูรณ์ มีกลอุบายทางคณิตศาสตร์ที่เรียกว่า "parametricity เชิงสัมพันธ์" ซึ่งสามารถใช้เพื่อตัดสิ่งต่าง ๆ ให้มีขนาดกลับเป็น ฉันจะไม่เข้าไปในตอนนี้ยกเว้นจะเน้นว่ามันเป็นกลลวงทางคณิตศาสตร์ไม่ใช่คำอธิบายเชิงแนวคิดเกี่ยวกับการห่อหุ้ม วิธีที่สองของการสร้างแบบจำลองวัตถุทางคณิตศาสตร์ด้วยการห่อหุ้มคือการกลเม็ดเด็ดพรายรัฐและอธิบายพฤติกรรมของวัตถุในแง่ของเหตุการณ์ที่สังเกตได้ สำหรับการอภิปรายที่ดีของทั้งสองรุ่นนี้ผมสามารถนำคุณไปยังกระดาษชื่อของฉันวัตถุและการเรียนใน Algol เหมือนภาษา


[เพิ่มหมายเหตุ:]

การวิเคราะห์ที่ดีของการสนับสนุนทางคณิตศาสตร์ของวัตถุสามารถพบได้ในบทความของ William Cook " ในการทำความเข้าใจกับข้อมูลที่เป็นนามธรรม, Revisited "


2
ฉันรู้ว่าใครบางคนที่นี่จะสามารถตอบ ...
Andrej Bauer

ขอบคุณ Uday สำหรับเวลาของคุณและคำตอบอย่างละเอียด เมื่อฉันถามคำถามนี้ฉันคิดในแง่ของ "data + actions" เท่านั้นและมันไม่เคยเกิดขึ้นกับฉันเลยว่าทฤษฎีกลุ่มสามารถแสดง "OBJECT" เป็น "data + actions" นอกจากนี้ฉันจะทำตามลิงก์ที่คุณแนะนำ
user1260776

@AndrejBauer ใช่ฉันอาจไปลงน้ำ OP อาจใช้ "คณิตศาสตร์" เป็นคำสำหรับการทำให้เป็นระเบียบแบบตรงข้ามกับระเบียบวินัย
Uday Reddy

@ ทุกวันฉันอาจมีคำถามที่ใช้ถ้อยคำไม่ถูกต้อง แต่เมื่อฉันหมายถึง "คณิตศาสตร์" ฉันหมายถึงคณิตศาสตร์ที่เป็นทางการ ความคิดของฉันคือ "'set theory' เป็นรากฐานของคณิตศาสตร์วิธีการ 'อธิบาย' หรือ 'สืบทอด' ของ OO Modeling ในแง่ของทฤษฎีเซตเราจะรวมกันทั้งหมดได้อย่างไร - Set Theory, Objects และตรรกะเชิงตรรกะ (เช่น ตรรกะอันดับแรก) ... "แม้ว่าฉันจะไม่เข้าใจคำตอบของคุณอย่างเต็มที่ แต่ฉันก็สามารถ" รับรู้ "ถึงสิ่งที่คุณพูดและฉันรับรองกับคุณนี่คือคำตอบที่ฉันคาดหวัง ขอบคุณ !! (ความคิดของฉัน r ไม่ได้จัดอย่างสมบูรณ์โปรดยกโทษให้ฉันฉันยังคงเป็นมือใหม่ :))
user1260776

2
@ user1260776 ฉันเข้าใจ. แต่ประเด็นของฉันคือ "คณิตศาสตร์" และ "คณิตศาสตร์" เป็นแนวคิดที่แตกต่าง คุณสามารถทำให้เป็นแนวความคิดเป็นทางการได้โดยไม่ต้องทำให้พวกเขากลายเป็นคณิตศาสตร์ (หรือได้มาจาก) คณิตศาสตร์ กลไกของนิวตันทำเป็นกรงขัง แต่ไม่ได้สนใจที่จะลด "อนุภาค" เป็น "ชุด" ฉันมีความสุขเป็นการส่วนตัวที่จะทำตามการนำของนิวตันและยอมรับสิ่งที่ฉันไม่ได้ลดลงไป แต่ฉันคิดว่าเราต้องรู้ว่าเมื่อใดที่ควรลดและเมื่อไม่ลด หลังจากได้รับการฝึกฝนในฐานะนักฟิสิกส์ฉันพบว่ามันง่ายมากที่จะทำ สำหรับนักวิทยาศาสตร์คอมพิวเตอร์อื่น ๆ มันอาจจะไม่ง่ายนัก
Uday Reddy

0

คิดว่ามีคำอธิบายทางทฤษฎีที่ดีเกี่ยวกับวัตถุในหนังสือ "โครงสร้างและการตีความของโปรแกรมคอมพิวเตอร์" หนังสือคลาสสิกโบราณ [1] โดย abelson & sussman โดยยึดตามรูปแบบ (รูปแบบเสียงกระเพื่อม) ตอนนี้ออนไลน์ฟรี! สิ่งนี้แสดงให้เห็นว่าแนวคิดของการวางแนววัตถุสามารถฝังอยู่ในแคลคูลัสแลมบ์ดาได้หรือไม่ถ้าคุณมีกลไกในการจัดเก็บสถานะท้องถิ่น อย่างที่ฉันเข้าใจนี่เป็นตำรามาตรฐานของ MIT มาหลายปีแล้ว ไม่พูดนี่คือการอ้างอิงที่ดีที่สุดใน subj; ฉันแน่ใจว่ามีคนอื่น ๆ ที่ดีกว่าในจุดนี้

ฉันไม่คิดว่าสิ่งนี้จะเป็นทางการได้อย่างสมบูรณ์ทุกที่ที่ฉันเคยได้ยิน แต่วัตถุที่พูดอย่างหลวม ๆ นั้นประกอบด้วยรหัส + ข้อมูลในรูปแบบของ

  • วิธีการ (พร้อมพารามิเตอร์)
  • รัฐเช่นตัวแปรอินสแตนซ์

ในรูปแบบห่อหุ้มบางอย่าง เนื้อหาอื่น ๆ เช่นการถ่ายทอดทางพันธุกรรมไม่ใช่พื้นฐาน ตามที่ระบุไว้ใน abelson & sussman สิ่งที่พวกเขาเรียกว่า "น้ำตาลประโยค"

[1] โครงสร้างและการตีความโปรแกรมคอมพิวเตอร์โดย abelson & sussman


3
วัตถุของหลักสูตรในความรู้สึกการเขียนโปรแกรมเชิงวัตถุได้รับการกรงเล็บ มีหนังสือจาก Abadi & Cardelli, Castanga และ Kim Bruce ที่อุทิศให้กับหัวข้อ มีการประชุมเชิงปฏิบัติการ 10 ปีในซีรี่ส์ FOOL ที่อุทิศให้กับพื้นฐานของการเขียนโปรแกรมเชิงวัตถุ การประชุม ECOOP และ OOPSLA มีเอกสารเกี่ยวกับรากฐานของ OO เป็นประจำ แท้จริงแล้วบทความแรกในความหมายของ OO มีอายุประมาณ 20 ปี
Dave Clarke

@ vzn ขอบคุณสำหรับคำตอบ ฉันจะอ่านหนังสือที่คุณแนะนำ ...
user1260776

DC-- ฉันใช้ถ้อยคำที่ไม่ดี แม่นยำกว่าคิดว่าปลอดภัยที่จะพูดว่าคำจำกัดความที่เป็นทางการของสิ่งที่ถือเป็น "วัตถุ" หรือสิ่งที่เป็นองค์ประกอบสำคัญ / พื้นฐานของ OOP มีแนวโน้มที่จะแตกต่างกันอย่างมีนัยสำคัญในวรรณคดี คำจำกัดความอาจขยายอย่างมีนัยสำคัญเมื่อเวลาผ่านไป ตัวอย่างเช่นฉันสงสัยว่ามีการเพิ่มการสืบทอดในภายหลังและแนวคิดดั้งเดิมส่วนใหญ่เป็นเพียงรหัส + ข้อมูลในรูปแบบที่ห่อหุ้ม
vzn

อีกตัวอย่างหนึ่งของคุณสมบัติ OOP ที่ไม่เห็นด้วยในฐานะพื้นฐานจากสิ่งที่ฉันสามารถบอกได้คือการสืบทอดหลายอย่างที่เห็นในเช่น C ++ แต่จงใจหลีกเลี่ยงใน java เพื่อสนับสนุนอินเตอร์เฟสแทน ฯลฯ
vzn
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.