[Python OOP] Ep.1 : OOP คืออะไร?

stackpython
2 min readJan 20, 2020

--

อะไรคือ self ฟ่ะ?😵 ทำไม๊ทำไมต้อง underscore ตรงนี้? บทความนี้จะมาช่วยให้การเขียน อ่าน Python ของเพื่อนๆหายข้องใจกันนนน….🐍🐍🐍🐍

ก่อนอื่นเลย Object Oriented Programming (OOP) คืออะไร? 5555

OOP เป็นวิธีการเขียนโปรแกรมรูปแบบหนึ่ง โดยมองสิ่งต่างๆในระบบเป็นวัตถุ (Object) ชิ้นหนึ่งที่มีหน้าที่และความหมายในตัว โดยวัตถุๆนั้น ก็มี คุณสมบัติ (Attributes) และ พฤติกรรม (Method,Behavior) หรือการกระทำของมัน เป็นการมองบนพื้นฐานความเป็นจริงมากขึ้น เช่น

( ปล. โดยใน Ep. นี้จะแนะนำข้าวๆ!! เอ้ย คร่าวๆ!! ก่อนนะครับ ส่วนใครสนใจที่มาของแนวคิด หรือ การเขียนโปรแกรมรูปแบบอื่น จะมีใน Ep.พิเศษเพิ่มเติมนะครับบบบ )

Object → มนุษย์ ประกอบด้วย คุณสมบัติ (Attributes) คือ ชื่อ,นามสกุล,รหัสบัตรประชาชน,ส่วนสูง….. และมี พฤติกรรม (Method) เช่น พูด,นอน,นั่ง,วิ่ง………….

การมองเชิงวัตถุใน Object มนุษย์

แล้วอะไรคือ Class ? เหมือนหรือต่างอะไรกับ Object ?

Class เหมือนกับ ต้นแบบ,แม่แบบ,แม่พิมพ์,พิมพ์เขียว,ต้นฉบับ,… พอแล้วก็ได้555+ ส่วน Object ก็คือสิ่งที่เกิดจาก Class นั้นแหละครับ ดังนั้น Object ที่เกิดจาก Class เดียวกันจึงมี Attributes, Methods พื้นฐานเหมือนกัน เช่น

แสดงการสร้างวัตถุจากคลาสรถยนต์

จากรูป Class Car ก็คือต้นแบบให้กับรถรุ่นใหม่ๆ โดยที่ Attributes หลักๆก็จะถูกถ่ายทอดมา เช่น จำนวนล้อ,จำนวนไฟหน้า… Methods หลักๆ ก็เช่น ไปข้างหน้า,เลี้ยว,เบรค,…. แต่เมื่อสร้างเป็นวัตถุใหม่ เช่น รถเปิดประทุน ก็จะมี Attributes และ Methods เพิ่มเติมมาได้

หัวใจ 4 ห้องของ OOP (สรุปบรรทัดเดียวท้ายบท..)

1. Encapsulation ( การห่อหุ้มข้อมูล )

คือ วิธีการในการซ่อนข้อมูลหรือจำกัดการเข้าถึงข้อมูลบางอย่าง โดยหากต้องการเข้าถึงข้อมูลให้เข้าถึงผ่านทาง Methods หรือเราสามารถกำหนดระดับการเข้าถึงได้ ยกตัวอย่างเช่น public , private

2. Inheritance ( การสืบทอด )

เป็นหลักการที่ คลาสแม่ ( Super Class ) สามารถสืบทอด Attributes และ Method ต่างๆ ไปยัง คลาสลูก ( Sub Class ) ได้ ซึ่ง คลาสลูกจะได้รับทุกอย่างจากคลาสแม่ และสามารถเพิ่มเติม Attributes หรือ Method เฉพาะตัวเข้าไปได้

แสดงการสืบทอดของรถยนต์

3. Polymorphism ( การพ้องรูป )

แสดงคุณสมบัติการพ้อง

เป็นคุณสมบัติที่ว่า วัตถุใหม่ที่เกิดจากวัตถุแม่ชนิดเดียวกัน มีความสามารถเหมือนแม่แต่การผลลัพธ์การทำงานไม่เหมือนกัน โดยมีลักษณะเฉพาะตัว

ตัวอย่างเพิ่มเติม เช่น สามเหลี่ยม และ วงกลม มาจาก รูปทรง 2D มีการคำนวณพื้นที่ที่ต่างกัน

4. Abstraction ( หลักการนามธรรม )

คือ การแสดง Attributes และ Method ของ Object เท่าที่จำเป็น เรารู้แค่ว่า Method นี้ทำงานอย่างไรมี input parametes เป็นอย่างไร แต่ไม่จำเป็นที่ต้องรู้ถึงวิธีการทำงาน เช่น เครื่องชงกาแฟ เรารู้แค่ว่า ใส่เม็ดกาแฟ ,ใส่นม ,ใส่น้ำตาล แต่ไม่จำเป็นต้องรู้ว่าใช้น้ำกี่องศาหรือต้องบดกาแฟละเอียดเท่าไร

คำศัพท์เพิ่มเติมอื่นๆ

- Constructor

คือ Method หรือ Function ที่สร้างตัวเองอัตโนมัติเมื่อการสร้างวัถตุจากคลาส เพื่อในการกำหนดสภาพแวดล้อมก่อนการเริ่มต้นการทำงาน สำหรับ python คือ __init__()

- Overriding Method

Method หรือ Function ที่มีชื่อเหมือนกันกับ Method ใน คลาสแม่ แต่มีการทำงานที่แตกต่างกัน

- Overloading Method

Method หรือ Function ที่มีชื่อเหมือนกัน แต่สามารถแยกการทำงานของแต่ละ Method ด้วย parameter หรือ arguments

สรุปห้วนๆหลักการของ OOP

  1. Encapsulation : ห่อหุ้มค่าของสิ่งต่างๆไว้ แก้ไขหรือเข้าถึงได้ผ่าน Method
  2. Inheritance : สืบทอด Attributes และ Method จากคลาสแม่โดยสามารถเพิ่มได้
  3. Polymorphism : Object จาก Class เดียวกันมีผลลัพธ์ของ Method ต่างกัน
  4. Abstaction : เป็นแบบร่างคร่าวๆให้พอรู้ โดยยังไม่สนใจวิธีการทำงาน

ตัวอย่างสั้นๆของ OOP ด้วย Python

ตัวอย่างการสร้าง class และใช้งานง่ายๆ

สำหรับ episode นี้ขอจบการเกริ่นนำ OOP เพียงเท่านี้ครับ หากมีข้อผิดพลาดหรือคำแนะเพิ่มเติม สามารถ note comment ไว้ได้เลยครับ ^^

Ep.2 เริ่มต้นการเขียน OOP ด้วย Python

--

--