Skip to content

Latest commit

 

History

History
111 lines (69 loc) · 14.1 KB

README.md

File metadata and controls

111 lines (69 loc) · 14.1 KB
description
🤔 หลักพื้นฐานในการเขียนโค้ดด้วยแนวคิดแบบ OOP เขาคิดกันยังไง ?

👦 OOP

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

🤨 เคลียความเข้าใจกันนิส

ตั้งแต่เริ่มเรียนเขียนโค้ดครั้งแรก ผมเชื่อว่า 99.99% ทุกคนน่าจะได้ทำโจทย์หลายๆแบบ เช่น ตัดเกรด คำนวณหาพื้นที่ หรืออะไรก็ตามแต่ที่จะช่วยฝึกให้เราเข้าใจคำสั่งต่างๆ เช่น if..else, switch..case, loop บลาๆ กันมาใช่ไหม? แล้วพอผ่านมาซักระยะเราก็จะได้รับโจทย์ที่ยากขึ้น เช่นเขียนโปรแกรมเครื่องคิดเลข ทำระบบจองโรงแรม หรืออะไรก็ตามที่ไม่ได้เขียนจบภายในไฟล์เดียวอีกต่อไป

จากที่ยกตัวอย่างไป อยากจะบอกว่าส่วนใหญ่ที่เราเขียนนั้น มันจะทำให้เรารู้จักสิ่งที่เรียกว่า ตัวแปร และ ฟังก์ชั่น ต่างๆ ซึ่งหลักในการคิดพวกนั้นจะเป็นสิ่งที่เราเรียกว่า Procedural Programming นั่นเอง

🤔 Procedural Programming คือไย ?

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

ยกตัวอย่าง เราจะเขียน โปรแกรมส่งจดหมาย เราก็จะคิดเป็นขั้นตอนว่า

  1. จะสร้างจดหมายขึ้นมา
  2. ทำการส่งหมายผ่าน function A ตัวนี้
  3. function A ก็จะส่งข้อมูลต่อไปให้กับ function B เพื่อติดต่อออกไปผ่าน SMTP
  4. บลาๆ

ซึ่งวิธีการเขียนโค้ดแบบ Procedural Programming นั้นมันจัดการอะไรต่างๆค่อนข้างยาก เวลาอยากจะแก้ไขอะไรซักอย่างก็ต้องไปไล่หาว่ามันอยู่ขั้นตอนไหน และแต่ละขั้นตอนก็อาจจะไปพันกับอีกขั้นตอน ทำให้แก้จุดนี้ก็มีผลกระทบกับจุดอื่นๆด้วย ดังนั้นเลยมีการคิดวิธีการเขียนโปรแกรมอีกแบบที่เรียกว่า Object-Oriented Programming ขึ้นมา

{% hint style="info" %} สรุปสั้นๆ
หลักในการคิดของ Procedural Programming คือ คิดเป็นขั้นตอน สั่งงานตามขั้นตอนที่คิดไว้ โดยเราจะทำการ สร้าง step ต่างๆเอาไว้เรียกใช้นั่นเอง {% endhint %}

🤔 Object-Oriented Programming คือไย ?

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

ยกตัวอย่าง เราจะเขียน โปรแกรมส่งจดหมาย เราก็จะคิดออกมาว่ามันมีองค์ประกอบอะไรบ้าง เช่น

  • ถ้าจะส่งจดหมายได้จะต้องมี ซองจดหมาย ที่ระบุคนรับคนส่ง
  • ถ้าจะส่งจดหมายจะต้องมี ตัวส่งจดหมาย ที่จะสามารถเก็บ จดหมาย ไว้ข้างในได้
  • บลาๆ

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

{% hint style="info" %} สรุปสั้นๆ
หลักในการคิดของ Object-Oriented Programming คือ มองของต่างๆเป็นเรื่องๆ ที่สอดคล้องกลับปัญหาที่เราจะแก้ไข {% endhint %}

🤼 เคลียกันรอบสุดท้าย

การเขียนโปรแกรมไม่ว่าจะเป็น Procedural Programming หรือ Object-Oriented Programming สุดท้ายมันก็เป็นแค่วิธีการเขียนโปรแกรมแบบหนึ่งเท่านั้น และในโลกของการเขียนโปรแกรมก็ไม่ได้มีแค่นี้นะ เพราะในสมัยนี้มันมีอีกยั้วเยี้ยเลยให้เราเลือกศึกษา ซึ่งแต่ละวิธีก็จะมีข้อดีข้อเสียของมันเองทั้งนั้น

🥺 แล้วจะรู้เรื่อง OOP ไปทำไม ?

แม้ว่า OOP จะเป็นแค่หนึ่งในวิธีการคิดในการเขียนโปรแกรม แต่มันก็เป็นวิธีที่คนทั่วโลกนิยมใช้กัน แหละมันเหมือนกับเป็นเกณฑ์ตัวแรกเลยที่เขาวัดว่าเขาจะรับเราเข้าร่วมงานหรือเปล่าก็ว่าได้ ดังนั้นเรียนเจ้าตัวนี้ไปก็ไม่เสียหายหรอก เพราะสุดท้ายถ้าเราเข้าใจหลักในการเขียน OOP อย่างถ่องแท้แล้ว มันก็จะช่วยเป็น guideline ให้เราออกแบบโค้ดได้อย่างมีประสิทธิภาพและเป็นมืออาชีพในวงการนี้มากยิ่งขึ้นครับ 👍

😁 เข้าเรื่องของ OOP กัน

ในการเขียนโค้ดโดยใช้หลักของ OOP นั้น เราจะต้องดูก่อนว่าภาษาที่เราใช้อยู่มันรองรับ OOP หรือเปล่าด้วย ซึ่งโดยปรกติภาษาส่วนใหญ่จะทำ OOP ได้อยู่แล้วนะดังนั้นสบายใจได้ (C# รองรับ OOP 100%) โดยวิธีการดูว่าภาษาของเรารองรับ OOP หรือเปล่าคือ มันจะต้องทำ 4 เสาหลัก หรือเราเรียกว่า 4 Pillars ด้านล่างนี้ได้

💖 4 Pillars of OOP

4 เสาหลักที่เป็นตัววัดว่าภาษานั้นรองรับการทำ OOP หรือเปล่า และเป็นตัว guideline ในการออกแบบโค้ดที่เราจะนำมาใช้ในการแก้ปัญหาคือ

  1. Abstraction
  2. Encapsulation
  3. Inheritance
  4. Polymorphism

ซึ่งแต่ละเรื่องผมจะขออธิบายแยกเป็นเรื่องๆของมันไปเน่อ ดังนั้นสนใจเรื่องไหนก็ลองไปจิ้มอ่านเอาที่ตัวด้านล่างได้

🧭 เนื้อหาทั้งหมดของคอร์สนี้

{% hint style="info" %} ใครที่ไม่อยากพลาดอัพเดทบทความใหม่ๆ สามารถเข้าไปกด Like เพื่อรับข่าวสารใหม่ๆจาก Facebook Blog: Mr.Saladpuk ได้นะครับ 😍 {% endhint %}

{% page-ref page="abstraction.md" %}

{% page-ref page="encapsulation.md" %}

{% page-ref page="abs-n-enc.md" %}

{% page-ref page="inheritance.md" %}

{% page-ref page="polymorphism.md" %}

{% page-ref page="inh-n-poly.md" %}

{% page-ref page="example.md" %}

{% page-ref page="oop-n-design.md" %}

{% page-ref page="tips.md" %}

{% hint style="danger" %} คำเตือน
การศึกษาเรื่อง OOP เป็นเรื่องที่ดี แต่การที่เราจะเข้าใจมันได้อย่างถ่องแท้นั้น เราจะต้องลองฝึกออกแบบ ลองเจอโจทย์เยอะๆ ลองผิดลองถูกจนถึงจุดหนึ่ง แล้วประสบการณ์เหล่านั้นมันจะช่วยทำให้เรากลับมาอ่าน concept พวกนี้แล้วถึงจะบรรลุหลักการพวกนี้อย่างแท้จริง ไม่อย่างนั้นแล้วเราก็จะเข้าตามตัวอักษร อาจเอาไปใช้ตอบเพื่อให้ผ่าน certificate ได้ แต่สุดท้ายเมื่อเจอโจทย์ในงานจริง คุณก็จะงูๆปลาๆอยู่ดี {% endhint %}

{% hint style="info" %} แนะนำให้อ่าน
สำหรับเพื่อนๆที่สนใจในการออกแบบโค้ด เพื่อให้โค้ดของเรามันดียิ่งขึ้น เป็นมืออาชีพมากขึ้นไปอีก สามารถไปศึกษาได้จากลิงค์ด้านล่างพวกนี้ได้เลยครัช