🐍 บทที่ 8: การเขียนโปรแกรมเชิงวัตถุ (OOP) ใน Python

📌 OOP คืออะไร?

การเขียนโปรแกรมเชิงวัตถุ (Object-Oriented Programming - OOP) เป็นแนวคิดในการเขียนโปรแกรมที่ใช้ **วัตถุ (Objects)** และ **คลาส (Classes)** เพื่อจัดโครงสร้างของโค้ดให้มีความเป็นระเบียบและสามารถนำกลับมาใช้ใหม่ได้

🛠️ การสร้างคลาส (`class`)

คลาสคือแม่แบบของวัตถุ ใน Python ใช้คำสั่ง `class` เพื่อสร้างคลาส

# สร้างคลาส Car
class Car:
    def __init__(self, brand, color):
        self.brand = brand
        self.color = color

# สร้างวัตถุ (Object) จากคลาส Car
car1 = Car("Toyota", "Red")
car2 = Car("Honda", "Blue")

print(car1.brand, car1.color)
print(car2.brand, car2.color)
        

✅ ผลลัพธ์:

Toyota Red
Honda Blue
        

🔄 คอนสตรักเตอร์ (`__init__`)

คอนสตรักเตอร์ (`__init__`) เป็นเมธอดที่ถูกเรียกเมื่อสร้างออบเจ็กต์ใหม่

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

person1 = Person("Jhon", 21)
print(person1.name, person1.age)
        

✅ ผลลัพธ์:

Jhon 21
        

⚡ เมธอด (`Methods`) ในคลาส

สามารถกำหนดเมธอดในคลาสเพื่อให้วัตถุสามารถทำงานได้

class Dog:
    def __init__(self, name):
        self.name = name

    def bark(self):
        print(f"{self.name} กำลังเห่า!")

dog1 = Dog("Buddy")
dog1.bark()
        

✅ ผลลัพธ์:

Buddy กำลังเห่า!
        

🛠️ การสืบทอดคลาส (`Inheritance`)

Python รองรับ **การสืบทอดคลาส (Inheritance)** เพื่อให้คลาสลูกสามารถใช้คุณสมบัติของคลาสแม่

# คลาสแม่ (Parent Class)
class Animal:
    def __init__(self, name):
        self.name = name

    def speak(self):
        print(f"{self.name} ส่งเสียง!")

# คลาสลูก (Child Class)
class Cat(Animal):
    def speak(self):
        print(f"{self.name} พูดว่า Meow!")

cat1 = Cat("Whiskers")
cat1.speak()
        

✅ ผลลัพธ์:

Whiskers พูดว่า Meow!
        

🔄 การใช้ `super()` ในการเรียกเมธอดของคลาสแม่

สามารถใช้ `super()` เพื่อเรียกเมธอดของคลาสแม่

class Animal:
    def __init__(self, name):
        self.name = name

    def speak(self):
        print(f"{self.name} ส่งเสียง!")

class Dog(Animal):
    def __init__(self, name, breed):
        super().__init__(name)
        self.breed = breed

dog1 = Dog("Buddy", "Golden Retriever")
print(dog1.name, dog1.breed)
        

✅ ผลลัพธ์:

Buddy Golden Retriever
        

🔐 การห่อหุ้มข้อมูล (`Encapsulation`)

สามารถกำหนดค่าตัวแปรให้เป็น **private** โดยใช้ `__` (สองขีดล่าง) เพื่อป้องกันการเข้าถึงจากภายนอก

class BankAccount:
    def __init__(self, balance):
        self.__balance = balance  # Private attribute

    def deposit(self, amount):
        self.__balance += amount

    def get_balance(self):
        return self.__balance

account = BankAccount(1000)
account.deposit(500)
print(account.get_balance())
        

✅ ผลลัพธ์:

1500
        

🔹 ไม่สามารถเข้าถึง `self.__balance` ได้โดยตรง

📌 สรุป

  • ✅ ใช้ `class` เพื่อสร้างคลาส
  • ✅ ใช้ `__init__` เป็นคอนสตรักเตอร์
  • ✅ ใช้ `self` เพื่ออ้างถึงออบเจ็กต์
  • ✅ ใช้ `Inheritance` เพื่อสืบทอดคุณสมบัติ
  • ✅ ใช้ `super()` เพื่อเรียกเมธอดจากคลาสแม่
  • ✅ ใช้ `__` เพื่อกำหนดตัวแปรเป็น private
🔙 ย้อนกลับ 🏠 กลับไปหน้าหลัก