การเขียนโปรแกรมเชิงวัตถุ

23 August 2016

ในบทนี้ เราจะแนะนำให้คุณรู้จักกับการเขียนโปรแกรมเชิงวัตถุ (Object-oriented programming, OOP) ในภาษา Java ซึ่งเป็นรูปแบบในการเขียนโปรแกรมที่สำคัญในปัจจุบัน หรือเป็นการพัฒนาจากการเขียนโปรแกรมแบบเดิมที่เราคุณเคยกันคือ Procedural programming และเราจะแนะนำให้คุณรู้จักกับสมบัติหลักที่สำคัญในการเขียนโปรแกรมเชิงวัตถุในภาษา Java เช่น Inheritance Encapsulation และ Polymorphism

การเขียนโปรแกรมเชิงวัตถุ คืออะไร

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

ภาษาต่างๆ เป็นจำนวนมากสนับสนุนการเขียนโปรแกรมเชิงวัตถุ เช่น Java C++C# Python PHP Ruby และภาษาอื่นๆ ซึ่ง Java ถือว่าเป็นภาษาของออบเจ็คอย่างเต็มรูปแบบ การเขียนโปรแกรมเชิงวัตถุนั้นเป็นการพัฒนารูปแบบของการเขียนโปรแกรมไปอีกขั้นจากการเขียนโปรแกรมแบบเดิมที่เราเคยเขียนคือ Procedural programming

คุณสมบัติของ OOP

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

  • Code reuse: การนำโค้ดกลับมาใช้ใหม่ ได้อย่างมีประสิทธิภาพ
  • Maintenance: ง่ายต่อการบำรุงรักษาและปรับปรุง แต่ละคลาสจะมีขอบเขตการทำงานและเมธอดของมันเอง
  • Classes: คลาสที่สร้างขึ้นนั้น สามารถนำไปสร้างเป็นออบเจ็คได้ไม่จำกัด และแต่ละออบเจ็คมีสมาชิกเป็นของมันเอง
  • Inheritance: คุณสมบัติการสืบทอด คลาสสามารถสืบทอดจากคลาสอื่นได้ ซึ่งเป็นการ reuse code และพัฒนาต่อเดิมความสามารถจากคลาสเดิมที่มีอยู่
  • Polymorphism: คุณสมบัติของออบเจ็คที่หลากหลายรูปแบบ ซึ่งสามารถจัดการได้จาก Base คลาสของมัน
  • Encapsulation: เป็นคุณสมบัติการห่อหุ้ม เป็นแนวคิดแบบนามธรรมที่ว่าคุณไม่จำเป็นต้องรู้ว่าเมธอดหรือในคลาสนั้นทำงานยังไง แต่มันสามารถทำงานได้สำเร็จและให้ผลลัพธ์แก่คุณได้
  • Abstraction: คือการอธิบายการทำงานของคลาสและเมธอดในแบบนามธรรม เพื่อนำไปใช้สำหรับออบเจ็คที่มีการทำงานแตกต่างกัน เช่น เราบอกว่าสัตว์สามารถเคลื่อนที่ การเคลื่อนที่คือการบอกอย่างเป็นนามธรรม เพราะวา่สัตว์แต่ละตัวมีวิธีการเคลื่อนที่ที่แตกต่างกัน เช่น สุนัขจะเดิน นกจะบิน ส่วนเต่าจะคลาน เป็นต้น

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

คลาสและออบเจ็ค

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

ไดอะแกรมของรถ ในมุมมองของ OOP

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

มาดูตัวอย่างของการประกาศคลาสในภาษา Java เราจะประกาศคลาส Car ซึ่งจะประกอบไปด้วยคุณสมบัติ และเมธอดการทำงาน

public class Car {

    public float fuel;
    public int maxSpeed;
    public int currentSpeed = 0;
    public String color;

    public void reFuel() {
        fuel = 100;
    }

    public float getFuel() {
        return fuel;
    }

    private void setSpeed(int speed) {
        currentSpeed = speed;
    }

    public void drive() {
        setSpeed(currentSpeed + 1);
        if(currentSpeed >= maxSpeed) {
            currentSpeed = maxSpeed;
        }
    }

}

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

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

บทความนี้เป็นประโยชน์หรือไม่?Yes·No