ฉันมักจะลองและอธิบายการเขียนโปรแกรมเชิงวัตถุโดยใช้ตัวอย่างโลกแห่งความจริง
ตัวอย่างเช่นฉันอาจจะบอกว่าคลาสที่เรียกว่าVehicle
อธิบายสิ่งต่ำสุดที่ยานพาหนะเป็น ฉันจะขอให้บุคคลนั้นบอกฉันว่าเขาหรือเธอคิดว่ายานพาหนะคืออะไร บางครั้งพวกเขาพูดสิ่งต่าง ๆ เช่น "ดีเหมือนรถยนต์หรือรถบรรทุก" และฉันก็พยักหน้าและเห็นด้วยกับพวกเขา ฉันจะถามว่าความแตกต่างระหว่างรถยนต์กับรถบรรทุกคืออะไร บางครั้งพวกเขากล่าวถึงขนาดบางครั้งวัตถุประสงค์และสิ่งอื่น ๆ
จากนั้นฉันจะขอให้พวกเขาลืมเกี่ยวกับรถยนต์หรือรถบรรทุกและขอให้พวกเขาอธิบายยานพาหนะต่อไป:
"โอ้มันเคลื่อนไหวได้ดี"
"มันมีโอเปอเรเตอร์หรือไดรเวอร์"
ฯลฯ ...
ในไม่ช้าเราก็รู้ว่ายานพาหนะคืออะไรและฉันบอกว่าใน OOP เราจะกำหนดยานพาหนะและเพื่อการโต้แย้งว่ามันสามารถเคลื่อนที่ได้และให้คนขับรถแปลก ๆ ถ้าอย่างนั้นฉันจะถามว่าโอเครถมีอะไรบ้าง
"ประตู"
"Windows"
แล้วรถบรรทุก ....
"ประตู" "windows" "ล้อเพิ่มเติม!"
ในไม่ช้าหลังจากการสนทนามากมายบุคคลอื่นโดยทั่วไปได้ระบุ:
1) สิ่งที่ถือเป็นยานพาหนะ
2) สิ่งที่ถือเป็นรถยนต์
3) สิ่งที่ถือเป็นรถบรรทุก
4) อะไรประกอบเป็นเครื่องบิน
ทั้งหมดไม่มีเทคนิคใด ๆ เราได้แบ่งคุณสมบัติของแต่ละรายการในพื้นที่ที่เหมาะสม พวกเขาเข้าใจการถ่ายทอดทางพันธุกรรม ("ใช่รถยนต์เป็นยานพาหนะรถบรรทุกเป็นพาหนะ แต่รถยนต์ไม่ใช่รถบรรทุกมันเป็นเรื่องง่ายมาก!")
พวกเขาเข้าใจถึงความหลากหลาย "แน่นอนพวกเขาทำแบบเดียวกัน แต่อาจแตกต่างกันเล็กน้อย" เราสามารถพูดคุยเกี่ยวกับพฤติกรรมและสถานที่ที่ควรอยู่ในต้นไม้แห่งวัตถุ
ขึ้นอยู่กับการศึกษาและภูมิหลังของพวกเขาบางคนได้เร็วกว่าคนอื่น ๆ แต่เมื่อฉันเปรียบเทียบ OOP กับวัตถุในชีวิตจริงคนส่วนใหญ่มักจะได้รับมัน ในความเป็นจริงฉันได้พบกับการสนทนากับคนที่ไม่ใช่ด้านเทคนิคที่ฉันไม่เคยคิด ยานพาหนะไม่จำเป็นต้องได้รับการจัดการเช่น (โดรน) แต่โปรแกรมเมอร์จะคิดว่าผู้ควบคุมยานพาหนะเป็นสมบัติของมันหรือไม่? ฉันไม่ได้พูดว่าถูกหรือผิดที่มีโอเปอร์เรเตอร์กล่าวถึง แต่มันทำให้เราคิดถึงสิ่งที่เราทำตัวเป็นแบบอย่างและสิ่งที่เราพยายามทำเมื่อเราพัฒนาซอฟต์แวร์
ในขณะนี้ความเชี่ยวชาญเทมเพลตบางส่วนกลับกัน .... :)