มักจะได้ยินว่า OOP นั้นสอดคล้องกับวิธีที่ผู้คนคิดเกี่ยวกับโลก แต่ฉันจะไม่เห็นด้วยอย่างยิ่งกับข้อความนี้: เรา (หรืออย่างน้อยฉัน) สร้างแนวคิดโลกในแง่ของความสัมพันธ์ระหว่างสิ่งต่าง ๆ ที่เราพบ แต่จุดเน้นของ OOP คือการออกแบบคลาสบุคคลและลำดับชั้นของพวกเขา
โปรดสังเกตว่าในชีวิตประจำวันความสัมพันธ์และการกระทำมีอยู่ส่วนใหญ่ระหว่างวัตถุที่จะเป็นอินสแตนซ์ของคลาสที่ไม่เกี่ยวข้องใน OOP ตัวอย่างของความสัมพันธ์เช่น: "หน้าจอของฉันอยู่ด้านบนของตาราง"; "ฉัน (มนุษย์) กำลังนั่งอยู่บนเก้าอี้"; "รถยนต์อยู่บนถนน"; "ฉันพิมพ์บนแป้นพิมพ์"; "เครื่องชงกาแฟต้มน้ำ" "ข้อความจะปรากฏในหน้าต่างเทอร์มินัล"
เราคิดในแง่ของ bivalent (บางครั้ง trivalent เช่นใน "ฉันให้คุณดอกไม้") คำกริยาที่กริยาคือการกระทำ (ความสัมพันธ์) ที่ทำงานบนวัตถุสองชิ้นเพื่อสร้างผลลัพธ์ / การกระทำบางอย่าง โฟกัสอยู่ในการดำเนินการและทั้งสอง (หรือสาม) [ไวยากรณ์] วัตถุมีความสำคัญเท่าเทียมกัน
เปรียบเทียบกับ OOP ที่คุณต้องค้นหาวัตถุหนึ่ง (คำนาม) ก่อนและบอกให้ดำเนินการบางอย่างกับวัตถุอื่น วิธีการคิดเปลี่ยนจากการกระทำ / คำกริยาที่ใช้กับคำนามเป็นคำนามปฏิบัติการบนคำนาม - ราวกับว่าทุกอย่างถูกพูดด้วยเสียงเฉยๆหรือสะท้อนเสียงเช่น "ข้อความแสดงโดยหน้าต่างเทอร์มินัล" หรืออาจจะ "ข้อความวาดตัวเองบนหน้าต่าง terminal"
ไม่เพียง แต่การโฟกัสจะเปลี่ยนเป็นคำนาม แต่หนึ่งในคำนาม (เรียกว่าเป็นเรื่องไวยากรณ์) จะได้รับ "ความสำคัญ" ที่สูงกว่าอีกอันหนึ่ง (วัตถุไวยากรณ์) ดังนั้นหนึ่งจะต้องตัดสินใจว่าจะพูด terminalWindow.show (someText) หรือ someText.show (terminalWindow) แต่ทำไมผู้คนถึงต้องตัดสินใจเรื่องเล็ก ๆ น้อย ๆ เช่นนี้โดยไม่มีผลการดำเนินงานเมื่อผู้คนหมายถึงการแสดงจริงๆ (terminalWindow, someText) [ผลที่ตามมานั้นไม่มีนัยสำคัญในการใช้งาน - ในทั้งสองกรณีข้อความจะปรากฏบนหน้าต่างเทอร์มินัล - แต่อาจมีความร้ายแรงมากในการออกแบบลำดับชั้นของชั้นเรียนและตัวเลือก "ผิด" สามารถนำไปสู่การสับสน
ดังนั้นฉันจะเถียงว่าวิธีการหลักในการทำ OOP (อิงตามระดับชั้นเรียน) เป็นเรื่องยากเพราะมันเป็น UNNATURAL และไม่สอดคล้องกับวิธีที่มนุษย์คิดเกี่ยวกับโลก วิธีการทั่วไปจาก CLOS นั้นใกล้กับวิธีคิดของฉันมากขึ้นแต่ทว่านี่ไม่ใช่วิธีการที่แพร่หลาย
เมื่อพิจารณาถึงปัญหาเหล่านี้มันเกิดขึ้นได้อย่างไรว่าวิธีการหลักในการทำ OOP ที่เป็นที่นิยมในปัจจุบันเป็นอย่างไร? และถ้ามีอะไรที่สามารถทำได้เพื่อกำจัดมันได้?