1 of 9

OOP Concept

พิมพ์เขียวห้องนั่งเล่น

ห้อง 2

ห้อง 1

ห้อง 3

หากมอง OOP เทียบกับการสร้างบ้าน เราจะมีพิมพ์เขียวขององค์ประกอบของบ้าน เช่นห้องนอน ห้องนั่งเล่น ห้องครัว ห้องน้ำ บันใด ลานจอดรถ ห้องเก็บของ ฯลฯ

การพัฒนาโปรแกรมคือการพิจารณาจัดองค์ประกอบของบ้านจากแบบพิมพ์เขียวต่าง ๆ ที่มีอยู่มาประกอบเชื่อมโยงข้อมูลให้เหมาะสมกับความต้องการ

ตัวอย่าง พิมพ์เขียวห้องนั่งเล่นแบบมีเปียโน

  • ผู้ใช้จะสามารถสร้างห้องนั่งเล่นที่มีเปียโนได้หลายห้อง โดยแต่ละห้องอาจะมีรายละเอียดที่แตกต่างกันได้ เช่น สี ขนาด ชนิดและจำนวนเก้าอี้ ฯลฯ (class object attribute and method)
  • ผู้ใช้สามารถสร้างพิมพ์เขียวที่เพิ่มเติมจากเดิมเช่น " พิมพ์เขียวห้องนั่งเล่นแบบมีเปียโน และ Hometheater" ก็ได้โดยการนำพิมพ์เขียวโปร่งใสมาวางทับแล้วออกแบบเพิ่มเติม (คุณสมบัติการสืบทอดลูกหลาน Inheritance)

2 of 9

OOP Concept Class and Object

ที่มา : https://www.tamemo.com/post/122/all-about-oop-1-class-and-object/

3 of 9

OOP Concept Class and Object

4 of 9

OOP Concept

ในการออกแบบพิมพ์เขียวห้อง อาจเริ่มต้นด้วยการออกแบบพิมพ์เขียวห้องสี่เหลี่ยมพร้อมประตูเป็นพื้นฐานก่อน แล้วจึงค่อยวางแผ่นใสทับออกแบบห้องต่าง ๆ เพิ่มเติมจากห้องสี่เหลี่ยมพร้อมประตู (การออกแบบ Base Class)

ที่มา : https://www.tamemo.com/post/125/all-about-oop-3-polymorphism/

5 of 9

OOP Concept

ในห้องต่าง ๆ มีระบบระบายอากาศที่แตกต่างกัน (ห้องนอน ห้องนั่งเล่น ห้องน้ำ ห้องสุขา ห้องครัว ห้องเก็บของ ฯลฯ) การเปิดระบบระบายอากาศในแต่ละห้องมีชื่อเหมือนกัน แต่ทำงานต่างกัน (คุณสมบัติการมีหลากหลายรูปแบบ Polymorphism)

6 of 9

OOP Concept

ในการใช้งานพิมพ์เขียว อาจมีความซับซ้อนบางอย่างที่ซ่อนอยู่ภายในโดยผู้ใช้งานไม่จำเป็นและอาจไม่สามารถจัดการได้ เช่น สายไฟ สายอากาศ ท่อน้ำ ท่อแก๊ส อิฐโครงสร้างในผนัง (คุณสมบัติการห่อหุ้มข้อมูล Data Encapsulation & Data Abstraction)

การเขียนโปรแกรมในรูปแบบ OOP สามารถรวมพิมพ์เขียวของห้องนั่งเล่นและห้องอาหารให้กลายเป็น ห้องนั่งเล่นที่มีโต๊ะกินข้าว ก็ได้ (คุณสมบัติการสืบทอดลูกหลานแบบหลายพ่อแม่ multiple inheritance = mixin)

7 of 9

OOP Concept Summary

  • What is a class?
  • Object and object instantiation
  • Class methods
  • Inheritance in Python Class
  • Encapsulation
  • Polymorphism
  • Data abstraction

8 of 9

บฝ.

ให้สร้าง Class บัญชี (ธนาคาร) ซึ่งมีการตั้งชื่อบัญชี และ เงินฝากเริ่มต้น แล้วมี

  • method withdraw ซึ่งถอนเงินจากเงินฝาก (return False ถ้าเงินไม่พอ)
  • method deposit ซึ่งจะฝากเงินเข้าบัญชี
  • method display แสดงชื่อบัญชีและจำนวนเงินคงเหลือบัญชี
  • method show_statement ซึ่งแสดงข้อมูลการฝาก/ถอนที่ผ่านมา

ให้สร้าง Class Shape ซึ่งมี attribute เป็นชื่อรูปร่าง และ attribute area เป็นพื้นที่ (กำหนดใน constructor) และมี method compare รับ argument เป็น object Shape แล้ว return string มากกว่า น้อยกว่า และ เท่ากัน

9 of 9

บฝ.

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