OOP (Object-Oriented Programming)

แนวคิดการเขียนโปรแกรมที่จัดการทุกอย่างเป็น “วัตถุ” (Object) ใช้ใน Java และภาษาอื่น ๆ อีกมาก

4 เสาหลัก

1. Abstraction

ซ่อนความซับซ้อน เปิดเผยแค่สิ่งที่ต้องใช้ เหมือนสวิตไฟ — รู้แค่เปิด-ปิด ไม่ต้องรู้วงจรข้างใน

EmailService email = new EmailService();
email.send("[email protected]", "สวัสดี"); // ไม่ต้องรู้ว่าข้างในส่งยังไง

2. Encapsulation

กำหนดสิทธิ์เข้าถึงข้อมูลภายใน class ด้วย access modifier (private, public) ป้องกันไม่ให้ข้างนอกมายุ่งตรง ๆ

public class BankAccount {
    private double balance = 0;        // ข้างนอกเข้าถึงไม่ได้
    public void deposit(double amount) { this.balance += amount; }
    public double getBalance() { return this.balance; } // อ่านได้ แก้ตรงๆ ไม่ได้
}

3. Inheritance (Override)

Class ลูกสืบทอดคุณสมบัติจาก class แม่ และปรับเปลี่ยนพฤติกรรมได้

public class Animal { public void speak() { ... } }
public class Dog extends Animal {
    @Override
    public void speak() { System.out.println("โฮ่ง!"); }
}

4. Polymorphism (Overload)

ชื่อเดียวกัน แต่ทำงานต่างกันขึ้นอยู่กับ object เหมือนคำว่า “บิน” — เครื่องบินบินด้วยเครื่องยนต์ นกบินด้วยปีก

Flyable f1 = new Airplane(); // ใช้เครื่องยนต์
Flyable f2 = new Bird();     // ใช้ปีก
f1.fly(); // ชื่อเดียวกัน ทำงานต่างกัน

จุดสำคัญ

  • เป็นพื้นฐานที่ต้องเข้าใจก่อนเรียน Dependency Injection (interface, class)
  • Java เป็น OOP เต็มรูปแบบ — ทุกอย่างอยู่ใน class
  • Java — ภาษา OOP เต็มรูปแบบ
  • Dependency Injection — ต้องเข้าใจ OOP ก่อน (interface)
  • IoC Container — ใช้ OOP (interface → implementation)
  • Framework — framework บังคับใช้ OOP patterns