You are here:--OOP – Object Oriented Programming – การเขียนโปรแกรมเชิงวัตถุ ตอนที่ 1

OOP – Object Oriented Programming – การเขียนโปรแกรมเชิงวัตถุ ตอนที่ 1

เรื่องต่อไปที่เราจะเรียนคือเรื่อง Object Oriented Programming หรือ การเขียนโปรแกรมเชิงวัตถุ ซึ่งมักจะถูกเรียกย่อๆว่า OOP เรื่องนี้จัดได้ว่าเป็นหนึ่งในพื้นฐานที่ค่อนข้างสำคัญในการเขียนโปรแกรมคอมพิวเตอร์ยุคใหม่ ซึ่งก่อนที่เราจะเขียน Application หรือ เขียนโปรแกรมต่างๆ เราจะต้องเข้าใจในเรื่องนี้ก่อน เพราะว่าในภาษาคอมพิวเตอร์ยุคใหม่เกือบทุกภาษาในปัจจุบันใช้หลักการนี้เป็นรากฐานในการออกแบบตัวภาษา งั้นเรามาเริ่มดูกันเลยว่า concept ของ Object Oriented Programming  หรือ OOP นั่นเป็นอย่างไร

คำถามแรกที่ต้องเจอคือ OOP คืออะไร? ตาม wikipedia ได้บอกไว้ว่า มันคือรูปแบบในการเขียนโปรแกรมอย่างหนึ่ง ที่จะมองการเขียนโปรแกรมเป็นวัตถุต่างๆ โดยจะมีการสร้างเป็นรูปแบบข้อมูล ที่เรียกว่า fields หรือ attributes และมีการกระทำที่เรียกว่า methods

อ่านแล้วงงใช่ไหมครับ

ขออนุญาติสรุปให้เข้าใจง่ายๆในประโยคเดียวว่า

OOP หรือ การเขียนโปรแกรมเชิงวัตถุ ก็เปรียบเสมือน การเขียนนิยายที่คอมพิวเตอร์เข้าใจนั่นเอง

พอคอมพิวเตอร์เข้าใจนิยายของเราแล้ว คอมพิวเตอร์ก็จะเอานิยายของเราไปทำเป็นหนัง

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

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

สำหรับหลายๆคนที่ไม่เคยเขียนโปรแกรมมาก่อนอาจจะงงว่า อ่าวแล้วเมื่อก่อนนี้เขาเขียนโปรแกรมกันอย่างไร?

เรามาดูตัวอย่าง code ภาษา C ที่เขียนต่อ Hardwareในบอร์ด Arduino กัน ซึ่งเราจะเห็นได้ว่ามันจะประกอบไปด้วยคำสั่งต่างๆ เช่น pinMode 13 OUT, digitalWrite 13 High, delay 1000, digitalWrite 13 Low, delay 1000 เวลาเราอ่าน code แบบนี้เราจะต้องไล่ไปทีละบรรทัด ซึ่งถ้าเป็นโปรแกรมยาวๆ อ่านแล้วมันจะงงมาก ว่าจริงๆแล้วเรากำลังสั่งให้คอมพิวเตอร์มันทำงานอะไรอยู่ เพราะมันไม่มีเรื่องราวอยู่ในนั้นเลย แต่ถ้าเราอ่าน comment ในด้านขวามือของ code จะมีเขียนกำกับไว้ว่า set the LED on คือ เปิดไฟ LED, wait for a second คือ รอ 1 วินาที แล้ว set the LED off คือ ปิดไฟ แล้วก็ wait for a second คือ รออีก 1 วินาที จากนั้นเราถึงจะรู้ว่า อ๋อ มันคือการทำให้ LED กระพริบนั่นเอง นี่คือการเขียนโปรแกรมแบบเก่า โดยใช้ภาษายุคเก่า คือภาษา C

ในภาษายุคเก่าอย่างเช่น ภาษา C เราจะเห็นได้ว่ามันเต็มไปด้วยตัวแปร และ funtion ที่เราอ่านแล้วไม่เข้าใจ ไม่เป็นเรื่องเป็นราว ปล่อยให้มันทำงานไปทีละบรรทัด ซึ่งเราไม่รู้ว่าการกระทำ หรือผลลัพธ์โดยรวมคืออะไร

เราลองมาดูอีกตัวอย่างหนึ่งสำหรับ Code ที่ไม่ถูกเขียนแบบ OOP กันครับ ในตัวอย่างนี้มันคือการเขียน Code ให้หุ่นยนต์ 1 ตัวทำงานอะไรบางอย่าง โดยการกำหนดค่าตัวแปรต่างๆ เช่น speed เท่ากับ 40 แล้วให้มอเตอร์หมุนไปข้างหน้า 20 รอบด้วยความเร็วเท่ากับ speed ที่ตั้งไว แล้วก็ให้มอเตอร์คุมทิศทาง หมุนไปทางซ้าย 40 รอบ พอเราเห็น code แบบนี้แล้วเราจะต้องไล่ดูไปทีละบรรทัด และก็ไม่รู้ว่ารัน code ชุดนี้ทำไปแล้วมันจะเกิดอะไรขึ้น หุ่นยนต์ตัวนี้มันจะทำอะไร

เราไม่สามารถเข้าใจถึง code โดยรวมได้ในขณะที่เราอ่าน code ไปทีละบรรทัด

การเขียนโปรแกรมในรูปแบบของ OOP จึงมาแก้ไขปัญหาต่างๆเหล่านี้ โดยที่เราจะมองตัวแปรต่างๆใน Code ของเราว่ามันคือวัตถุจริงๆ แทนที่จะมองว่ามันคือ ตัวแปร x y ที่ไม่มีความหมาย

หรือแม้กระทั่งมองว่าใน code นั้นมี ประธาน กริยา กรรม ที่ชัดเจน เช่น แทนที่เราจะสั่งให้หุ่นยนต์หมุนมอเตอร์ เราก็จะสั่งให้หุ่นยนตินั้นเดินหน้า หรือสั่งให้หุ่นยนต์นั้นเลี้ยวซ้ายเลี้ยวขวา แทนที่จะสั่งให้มอเตอร์หมุนไปในทิศทางนั้นๆ ดั้งนั้นการอ่าน code ที่เป็น oop มันจะมีจุดประสงค์ที่ชัดเจน ทำให้เราเข้าใจการทำงานของมันได้ง่ายขึ้น

เราลองมาดูตัวอย่างกันครับ แทนที่เราจะเขียน code ให้หุ่นยนต์ตัวหนึ่งบังคับให้มอเตอร์มันหมุนไปหมุนมาเหมือนรอบก่อน เราจะสั่งมันเป็น OOP คือเป็นเรื่องราว เช่น หุ่นยนต์ตัวนี้ชื่อว่า Android เราสั่งให้ Android เริ่มต้นเดินทางไป “ตลาด” ด้วยความเร็วเริ่มต้น “20 Kg/hour”, Android เดินหน้า จนถึง “3 แยก”,Android รอ “3 วินาที”,Android เลี้ยว “ซ้าย”, Android เดินหน้า จนถึง “ตลาด” เป็นอย่างไรบ้างครับ ง่ายขึ้นไหมครับ การอ่าน code ในแต่ละบรรทัดจะทำให้เรารู้เป้าหมายที่ชัดเจนของการทำงานของวัตถุนั่นๆ

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

ดังนั้นเราจึงจำเป็นที่จะต้องในหลักการที่เรียกว่า Class-Base Programming เข้ามาช่วยในการเขียน OOP

Class-Base Programming คืออะไร มันก็คือการเขียนโปรแกรมที่มีอยุ่ 3 องค์ประกอบหลักคือ Class Instance และ Method

โดย Class-Base Programming นี้ถูกนำไปใช้ในเกือบทุกภาษาคอมพิวเตอร์ยุคใหม่ แปลว่าถ้าเราเข้าใจในเรื่องนี้เราจะสามารถเขียนได้เกือบทุกภาษาคอมพิวเตอร์ที่มีอยู่ในตอนนี้

เอาล่ะครับ ก่อนที่เราจะมาดูว่า Class Instance Method มันคืออะไร เราลองมาดูตัวอย่างนิยายตรงนี้กันก่อน นิยายเรื่องนี้เขียนไว้แบบนี้ครับ

  • ในหนังสือประกอบไปด้วย “บุคคล”
  • บุคคลแรก คือ พระเอก
  • พระเอกถูกตั้งชื่อว่า ณเดชน์
  • พระเอกมีความสูง 175 cm
  • บุคคลที่สอง คือ นางเอก
  • นางเอกถูกตั้งชื่อว่า ญาญ่า
  • นางเอกมีความสูง 168 cm
  • พระเอกพานางเอกไปตลาด
  • พระเอกซื้อกาแฟคาปูชิโนให้นางเอก
  • นางเอกจูบพระเอก

ในโลกของ OOP ที่เป็น Class-Base Programming มันจะแบบส่วนต่างๆในเรื่องออกเป็นแบบนี้คือ

  • ในหนังสือประกอบไปด้วย “บุคคล” ชึ่ง บุคคล ก็คือ Class
  • บุคคลแรก คือ พระเอก พระเอกก็คือ Instance ตัวแรกของเรา
  • พระเอกถูกตั้งชื่อว่า ณเดชน์ คือ มีการเรียกใช้ method ตั้งชื่อ
  • พระเอกมีความสูง 175 cm คือ มีการเรียกใช้ method ตั้งความสูง
  • บุคคลที่สอง คือ นางเอก นางเอกคือ Instance ตัวที่สองของเรา
  • นางเอกถูกตั้งชื่อว่า ญาญ่า มีการเรียกใช้ method ตั้งชื่อ
  • นางเอกมีความสูง 168 cm คือ มีการเรียกใช้ method ตั้งความสูง
  • พระเอกพานางเอกไปตลาด คือ มีการเรียกใช้ method ไปตลาด
  • พระเอกซื้อกาแฟคาปูชิโนให้นางเอก คือ มีการเรียกใช้ method  ซื้อของ
  • นางเอกจูบพระเอก คือ มีการเรียกใช้ method จูบ

เอาหล่ะครับ Class Instance และ Method นี่คือความหมายจริงๆของมัน

เริ่มด้วยตัวแรก คือ Class, Class คือพิมพ์เขียนของวัตถุ ถามว่า Class เป็น วัตถุ จริงๆแล้วละยัง ตอบว่า ยังนะครับ มันเป็นแค่แบบโครงสร้างของวัตถุเฉยๆ ยังใช่เป็นวัตถุจริงๆ เช่น ผมพูดว่า บุคคล บุคคลมันคือต้นแบบของอะไรบางอย่าง มันคือพิมพ์เขียว มันสามารถจะเป็นใครก็ได้ เรายังไม่ได้ระบุ ถ้าเรานึกถึงบุคคล บุคคลมันต้องมีชื่อ มันต้องมีส่วนสูง มีอายุ มีเพศ นี่คือความหมายของ class คือพิมพ์เขียนของวัตถุ

โอเค ต่อมา Instance เจ้าตัว Instance ของเราในเรื่องคือ พระเอก และ นางเอก

Instance ก็คือวัตถุจริงๆนั่นเอง ที่ถูกสร้างมาจาก Class ให้เราลองจินตนาการว่า ถ้าผมพูดว่า พระเอก เราจะคิดถึงตัวบุคคลคนหนึ่งที่เป็นผู้ชาย ชื่อณเดชน์ มีส่วนสูง มีอายุ และ นางเอกก็เช่นเดียวกันครับเราก็สามารถจินตนาการได้ เพราะมันคือวัตถุจริงๆ และมันเกิดขึ้นแล้ว นี่คือ Instance

ส่วนสุดท้ายคือ Method, Method คือการกระทำใดๆที่วัตถุสามารถทำได้นั่นเอง เช่น ณเดชน์ เป็นบุคคล ณเดชน์เลยสามารถ กิน เดิน นั่ง นอน ได้

นี่คือ 3 องค์ประกอบ หลักใน OOP แบบ Class-Base ครับ คือ Class Instance และ Method จำไว้ให้ดีนะครับ เดี๋ยวเราจะนำไปเขียน code โดยใช้ 3 อย่างนี้กันใน Clip หน้าครับ

แล้วใน Clip หน้าเราจะมาดูกันว่าการเขียน OOP ในภาษาคอมพิวเตอร์จริงๆนั้นเป็นอย่างไร

 

2017-11-28T17:47:57+00:00