คลาสและออบเจ็กต์ (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);ประโยชน์ของการใช้คลาสและออบเจ็กต์
- การจัดระเบียบโค้ด: คลาสช่วยให้เราจัดกลุ่มข้อมูลและฟังก์ชันที่เกี่ยวข้องไว้ด้วยกัน
- การนำกลับมาใช้ใหม่: เราสามารถสร้างออบเจ็กต์ใหม่จากคลาสได้หลายครั้ง
- การบำรุงรักษา: การแก้ไขคลาสจะส่งผลต่อทุกออบเจ็กต์ที่สร้างจากคลาสนั้น
- การซ่อนรายละเอียด: เราสามารถซ่อนรายละเอียดภายในของออบเจ็กต์ได้ (เราจะเรียนรู้เรื่องนี้ในบท 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 ช่วยให้เราสร้างโครงสร้างโปรแกรมที่เป็นระเบียบ เข้าใจง่าย และนำกลับมาใช้ใหม่ได้ การเข้าใจแนวคิดนี้จะช่วยให้คุณสามารถออกแบบและเขียนโปรแกรมที่ซับซ้อนได้อย่างมีประสิทธิภาพมากขึ้น