ดูเหมือนว่า C มีวัตถุเสมือนของตัวเองเช่น 'structs' ที่ถือได้ว่าเป็นวัตถุ
มาด้วยกันกับคุณและฉันอ่านหน้า Wikipedia เกี่ยวกับการเขียนโปรแกรมเชิงวัตถุและตรวจสอบคุณสมบัติของ struct สไตล์ C ที่สอดคล้องกับสิ่งที่ถือว่าเป็นแบบดั้งเดิมเชิงวัตถุ:
(OOP) เป็นกระบวนทัศน์การเขียนโปรแกรมโดยใช้ "วัตถุ" - โครงสร้างข้อมูลประกอบด้วยเขตข้อมูลและวิธีการพร้อมกับการโต้ตอบ
C structs ประกอบด้วยเขตข้อมูลและวิธีการพร้อมกับการโต้ตอบหรือไม่? เลขที่
เทคนิคการเขียนโปรแกรมอาจรวมถึงคุณสมบัติต่าง ๆ เช่นการลบข้อมูล, การห่อหุ้ม, การส่งข้อความ, แบบแยกส่วน, ความหลากหลายและการสืบทอด
C structs ทำสิ่งเหล่านี้ในแบบ "ชั้นหนึ่ง" หรือไม่? ไม่ภาษาใช้กับคุณได้ทุกย่างก้าว
วิธีการเชิงวัตถุสนับสนุนให้โปรแกรมเมอร์วางข้อมูลที่ไม่สามารถเข้าถึงได้โดยตรงจากส่วนที่เหลือของโปรแกรม
C structs ทำสิ่งนี้หรือไม่? เลขที่
โปรแกรมเชิงวัตถุมักจะมีประเภทของวัตถุที่แตกต่างกันซึ่งแต่ละประเภทจะสอดคล้องกับข้อมูลที่ซับซ้อนชนิดใดประเภทหนึ่งเพื่อจัดการหรืออาจเป็นวัตถุหรือแนวคิดในโลกแห่งความจริง
C structs ทำสิ่งนี้หรือไม่? ใช่.
สามารถคิดได้ว่าวัตถุห่อหุ้มข้อมูลภายในชุดของฟังก์ชันที่ออกแบบมาเพื่อให้แน่ใจว่ามีการใช้ข้อมูลอย่างเหมาะสม
เลขที่
แต่ละวัตถุมีความสามารถในการรับข้อความประมวลผลข้อมูลและส่งข้อความไปยังวัตถุอื่น
struct สามารถส่งและรับข้อความได้หรือไม่? ไม่มันสามารถประมวลผลข้อมูลได้หรือไม่ เลขที่
โครงสร้างข้อมูล OOP มีแนวโน้มที่จะ "พกพาผู้ปฏิบัติงานไปด้วย"
สิ่งนี้เกิดขึ้นใน C หรือไม่? เลขที่
การจัดส่งแบบไดนามิก ... การห่อหุ้ม ... ความหลากหลายชนิดย่อย ... การสืบทอดวัตถุ ... การเรียกซ้ำเปิด ... คลาสของวัตถุ ... อินสแตนซ์ของคลาส ... วิธีการที่ทำหน้าที่กับวัตถุที่แนบ ... ข้อความที่ผ่านมา .. . สิ่งที่เป็นนามธรรม
มีคุณสมบัติเหล่านี้ของ C structs หรือไม่ เลขที่
คุณคิดว่าคุณลักษณะของ structs ใดเป็น "เชิงวัตถุ" อย่างแม่นยำ? เพราะผมไม่สามารถหาใด ๆอื่น ๆ นอกเหนือจากความจริงที่ว่า structs กำหนดประเภท
ตอนนี้แน่นอนคุณสามารถสร้าง struct ที่มีเขตข้อมูลที่เป็นตัวชี้ไปยังฟังก์ชัน คุณสามารถทำให้ structs มีเขตข้อมูลที่เป็นตัวชี้ไปยังอาร์เรย์ของตัวชี้ฟังก์ชันซึ่งสอดคล้องกับตารางวิธีการเสมือน และอื่น ๆ แน่นอนว่าคุณสามารถเลียนแบบ C ++ ใน C แต่นั่นเป็นวิธีที่ไม่มีการใช้โปรแกรมใน C; คุณน่าจะดีกว่าเพียงแค่ใช้ C ++
และไฟล์ C เองก็แยก "โมดุล" เป็นหลักใช่มั้ย ถ้าเช่นนั้นโมดูลก็ไม่เหมือน 'วัตถุ' ด้วยใช่ไหม
คุณคิดว่าโมดูลลักษณะใดที่ทำให้พวกมันทำหน้าที่เหมือนวัตถุ โมดูลสนับสนุน abstraction, encapsulation, messaging, modularity, polymorphism และการสืบทอดหรือไม่?
สิ่งที่เป็นนามธรรมและการห่อหุ้มค่อนข้างอ่อนแอ เห็นได้ชัดว่าโมดูลเป็นแบบแยกส่วน; นั่นเป็นเหตุผลที่พวกเขาเรียกว่าโมดูล ส่งข้อความ? เฉพาะในแง่ที่ว่าการเรียกใช้เมธอดเป็นข้อความและโมดูลสามารถมีเมธอดได้ ความแตกต่าง? Nope มรดก? Nope โมดูลเป็นตัวเลือกที่ค่อนข้างอ่อนสำหรับ "วัตถุ"