OOP Concept
พิมพ์เขียวห้องนั่งเล่น
ห้อง 2
ห้อง 1
ห้อง 3
หากมอง OOP เทียบกับการสร้างบ้าน เราจะมีพิมพ์เขียวขององค์ประกอบของบ้าน เช่นห้องนอน ห้องนั่งเล่น ห้องครัว ห้องน้ำ บันใด ลานจอดรถ ห้องเก็บของ ฯลฯ
การพัฒนาโปรแกรมคือการพิจารณาจัดองค์ประกอบของบ้านจากแบบพิมพ์เขียวต่าง ๆ ที่มีอยู่มาประกอบเชื่อมโยงข้อมูลให้เหมาะสมกับความต้องการ
ตัวอย่าง พิมพ์เขียวห้องนั่งเล่นแบบมีเปียโน
OOP Concept Class and Object
ที่มา : https://www.tamemo.com/post/122/all-about-oop-1-class-and-object/
OOP Concept Class and Object
OOP Concept
ในการออกแบบพิมพ์เขียวห้อง อาจเริ่มต้นด้วยการออกแบบพิมพ์เขียวห้องสี่เหลี่ยมพร้อมประตูเป็นพื้นฐานก่อน แล้วจึงค่อยวางแผ่นใสทับออกแบบห้องต่าง ๆ เพิ่มเติมจากห้องสี่เหลี่ยมพร้อมประตู (การออกแบบ Base Class)
ที่มา : https://www.tamemo.com/post/125/all-about-oop-3-polymorphism/
OOP Concept
ในห้องต่าง ๆ มีระบบระบายอากาศที่แตกต่างกัน (ห้องนอน ห้องนั่งเล่น ห้องน้ำ ห้องสุขา ห้องครัว ห้องเก็บของ ฯลฯ) การเปิดระบบระบายอากาศในแต่ละห้องมีชื่อเหมือนกัน แต่ทำงานต่างกัน (คุณสมบัติการมีหลากหลายรูปแบบ Polymorphism)
OOP Concept
ในการใช้งานพิมพ์เขียว อาจมีความซับซ้อนบางอย่างที่ซ่อนอยู่ภายในโดยผู้ใช้งานไม่จำเป็นและอาจไม่สามารถจัดการได้ เช่น สายไฟ สายอากาศ ท่อน้ำ ท่อแก๊ส อิฐโครงสร้างในผนัง (คุณสมบัติการห่อหุ้มข้อมูล Data Encapsulation & Data Abstraction)
การเขียนโปรแกรมในรูปแบบ OOP สามารถรวมพิมพ์เขียวของห้องนั่งเล่นและห้องอาหารให้กลายเป็น ห้องนั่งเล่นที่มีโต๊ะกินข้าว ก็ได้ (คุณสมบัติการสืบทอดลูกหลานแบบหลายพ่อแม่ multiple inheritance = mixin)
OOP Concept Summary
บฝ.
ให้สร้าง Class บัญชี (ธนาคาร) ซึ่งมีการตั้งชื่อบัญชี และ เงินฝากเริ่มต้น แล้วมี
ให้สร้าง Class Shape ซึ่งมี attribute เป็นชื่อรูปร่าง และ attribute area เป็นพื้นที่ (กำหนดใน constructor) และมี method compare รับ argument เป็น object Shape แล้ว return string มากกว่า น้อยกว่า และ เท่ากัน
บฝ.
1. ให้สร้าง Class Shape ซึ่งมี attribute เป็นชื่อรูปร่าง และ attribute area เป็นพื้นที่ (กำหนดใน constructor) และมี method compare_area รับ argument เป็น object Shape แล้ว return string มากกว่า น้อยกว่า และ เท่ากัน
2. สร้าง Class Rectangle เป็นสืบทอดมาจาก Class Shape มี constructor รับความกว้างและความยาวและมี method show_area
3. สร้าง Class Square เป็นสืบทอดมาจาก Class Rectangle มี constructor รับความกว้างและความยาวและมี method show_area