Dark mode
แนวคิดหลัก
Object-Oriented Programming (OOP) คือการเขียนโปรแกรมโดยเน้นการสร้างวัตถุ (object) ที่รวมข้อมูลและพฤติกรรมไว้ด้วยกัน เพื่อช่วยจัดระเบียบโค้ดและแก้ปัญหาที่ซับซ้อนได้ง่ายขึ้น
1. Encapsulation (การห่อหุ้ม)
รวมข้อมูล (properties) และพฤติกรรม (methods) ไว้ในวัตถุเดียวกัน
js
class User {
constructor(name) {
this.name = name;
}
sayHello() {
return `Hello, ${this.name}!`;
}
}
const user = new User("Alice");
console.log(user.sayHello()); // Hello, Alice!
2. Inheritance (การสืบทอด)
สร้างคลาสใหม่โดยอิงจากคลาสเดิม เพื่อใช้หรือขยายความสามารถเดิม
js
class Animal {
speak() {
return "...";
}
}
class Dog extends Animal {
speak() {
return "Woof!";
}
}
const dog = new Dog();
console.log(dog.speak()); // Woof!
3. Polymorphism (พหุรูป)
การใช้เมธอดเดียวกันแต่ให้ผลลัพธ์ต่างกันตามชนิดของวัตถุ
js
function makeSound(animal) {
console.log(animal.speak());
}
makeSound(new Dog()); // Woof!
makeSound(new Animal()); // ...
4. Abstraction (นามธรรม)
ซ่อนรายละเอียดที่ไม่จำเป็นและแสดงเฉพาะสิ่งที่สำคัญกับผู้ใช้
js
class Database {
connect() {
// ซ่อนรายละเอียดการเชื่อมต่อ
return "Connected";
}
}
const db = new Database();
console.log(db.connect()); // Connected
ข้อดี
- ช่วยจัดระเบียบโค้ดให้เป็นระบบและดูแลรักษาง่าย
- รองรับการ reuse โค้ดและขยายความสามารถได้ง่าย
- เหมาะกับโปรเจกต์ขนาดใหญ่ที่มีความซับซ้อน
- ส่งเสริมการทำงานร่วมกันในทีม
ข้อเสีย
- อาจมีความซับซ้อนในการออกแบบโครงสร้างวัตถุและคลาส
- ใช้ทรัพยากรมากขึ้นเมื่อเทียบกับแนวทางอื่นในบางกรณี
- มีโอกาสเกิดปัญหา inheritance ที่ซับซ้อนเกินไป (deep hierarchy)
เหมาะสำหรับ
- งานที่ต้องการโครงสร้างและการจัดการข้อมูลที่ซับซ้อน เช่น ระบบธุรกิจ, เกม, แอปพลิเคชันขนาดใหญ่
- งานที่ต้องการขยายหรือเปลี่ยนแปลงฟีเจอร์ในอนาคต
- งานที่ต้องการ teamwork และการแบ่งหน้าที่ชัดเจน