Skip to Content

คลาสและออบเจ็กต์ (Classes & Objects)

วันนี้เรามาเรียนรู้เกี่ยวกับคลาสและออบเจ็กต์ ซึ่งเป็นพื้นฐานสำคัญของการเขียนโปรแกรมเชิงวัตถุ (OOP) กัน

คลาส (Class) คืออะไร?

คลาสเปรียบเสมือน “พิมพ์เขียว” หรือ “แบบแปลน” สำหรับสร้างออบเจ็กต์ คลาสจะกำหนดว่าออบเจ็กต์นั้นๆ ควรมีคุณสมบัติ (attributes) และพฤติกรรม (behaviors) อะไรบ้าง

ลองนึกภาพว่าคลาสเป็นเหมือนแบบแปลนบ้าน 🏠 แบบแปลนจะบอกว่าบ้านควรมีห้องอะไรบ้าง (คุณสมบัติ) และสามารถทำอะไรได้บ้าง (พฤติกรรม)

ออบเจ็กต์ (Object) คืออะไร?

ออบเจ็กต์คือสิ่งที่ถูกสร้างขึ้นจากคลาส เป็นตัวอย่างจริงๆ ของคลาสนั้น

ถ้าคลาสเป็นแบบแปลนบ้าน ออบเจ็กต์ก็คือบ้านที่สร้างจริงๆ ตามแบบแปลนนั้น 🏘️

การสร้างคลาส

มาดูตัวอย่างการสร้างคลาสง่ายๆ กัน:

public class รถยนต์ { // คุณสมบัติ (attributes) String ยี่ห้อ; String สี; int ความเร็วสูงสุด; // พฤติกรรม (behaviors) public void ขับ() { System.out.println("รถกำลังวิ่ง"); } public void เบรก() { System.out.println("รถกำลังเบรก"); } }

ในตัวอย่างนี้:

  • รถยนต์ คือชื่อคลาส
  • ยี่ห้อ, สี, และ ความเร็วสูงสุด คือคุณสมบัติ
  • ขับ() และ เบรก() คือพฤติกรรม (เรียกว่าเมธอด หรือ methods)

การสร้างออบเจ็กต์จากคลาส

เมื่อเรามีคลาสแล้ว เราสามารถสร้างออบเจ็กต์ได้ดังนี้:

public class โปรแกรมรถยนต์ { public static void main(String[] args) { // สร้างออบเจ็กต์ใหม่ รถยนต์ รถคันที่1 = new รถยนต์(); // กำหนดค่าให้คุณสมบัติ รถคันที่1.ยี่ห้อ = "โตโยต้า"; รถคันที่1.สี = "แดง"; รถคันที่1.ความเร็วสูงสุด = 180; // เรียกใช้พฤติกรรม รถคันที่1.ขับ(); รถคันที่1.เบรก(); // สร้างออบเจ็กต์อีกตัว รถยนต์ รถคันที่2 = new รถยนต์(); รถคันที่2.ยี่ห้อ = "ฮอนด้า"; รถคันที่2.สี = "น้ำเงิน"; รถคันที่2.ความเร็วสูงสุด = 200; } }

Constructor

Constructor เป็นเมธอดพิเศษที่ใช้สำหรับสร้างออบเจ็กต์และกำหนดค่าเริ่มต้นให้กับคุณสมบัติ:

public class รถยนต์ { String ยี่ห้อ; String สี; int ความเร็วสูงสุด; // Constructor public รถยนต์(String ยี่ห้อ, String สี, int ความเร็วสูงสุด) { this.ยี่ห้อ = ยี่ห้อ; this.สี = สี; this.ความเร็วสูงสุด = ความเร็วสูงสุด; } // เมธอดอื่นๆ... } // การใช้งาน Constructor รถยนต์ รถคันที่3 = new รถยนต์("นิสสัน", "ขาว", 190);

ประโยชน์ของการใช้คลาสและออบเจ็กต์

  1. การจัดระเบียบโค้ด: คลาสช่วยให้เราจัดกลุ่มข้อมูลและฟังก์ชันที่เกี่ยวข้องไว้ด้วยกัน
  2. การนำกลับมาใช้ใหม่: เราสามารถสร้างออบเจ็กต์ใหม่จากคลาสได้หลายครั้ง
  3. การบำรุงรักษา: การแก้ไขคลาสจะส่งผลต่อทุกออบเจ็กต์ที่สร้างจากคลาสนั้น
  4. การซ่อนรายละเอียด: เราสามารถซ่อนรายละเอียดภายในของออบเจ็กต์ได้ (เราจะเรียนรู้เรื่องนี้ในบท Encapsulation)

ตัวอย่างการใช้งานจริง

ลองมาสร้างโปรแกรมจำลองบัญชีธนาคารง่ายๆ กัน:

public class บัญชีธนาคาร { private String ชื่อเจ้าของบัญชี; private double ยอดเงิน; public บัญชีธนาคาร(String ชื่อเจ้าของบัญชี, double ยอดเงินเริ่มต้น) { this.ชื่อเจ้าของบัญชี = ชื่อเจ้าของบัญชี; this.ยอดเงิน = ยอดเงินเริ่มต้น; } public void ฝากเงิน(double จำนวนเงิน) { if (จำนวนเงิน > 0) { ยอดเงิน += จำนวนเงิน; System.out.println("ฝากเงินสำเร็จ " + จำนวนเงิน + " บาท"); } else { System.out.println("จำนวนเงินไม่ถูกต้อง"); } } public void ถอนเงิน(double จำนวนเงิน) { if (จำนวนเงิน > 0 && จำนวนเงิน <= ยอดเงิน) { ยอดเงิน -= จำนวนเงิน; System.out.println("ถอนเงินสำเร็จ " + จำนวนเงิน + " บาท"); } else { System.out.println("จำนวนเงินไม่ถูกต้องหรือยอดเงินไม่พอ"); } } public void แสดงยอดเงิน() { System.out.println("ยอดเงินคงเหลือของ " + ชื่อเจ้าของบัญชี + ": " + ยอดเงิน + " บาท"); } } public class โปรแกรมธนาคาร { public static void main(String[] args) { บัญชีธนาคาร บัญชีของแอน = new บัญชีธนาคาร("แอน", 1000); บัญชีของแอน.แสดงยอดเงิน(); บัญชีของแอน.ฝากเงิน(500); บัญชีของแอน.ถอนเงิน(200); บัญชีของแอน.แสดงยอดเงิน(); } }

สรุป

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

ปรับปรุงล่าสุด