Skip to content

แนวคิดหลัก

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 และการแบ่งหน้าที่ชัดเจน