到目前為止,我們的程式多是以函式 + 變數為主,雖然好用,但在複雜專案中會逐漸顯得 難以維護。這時候,物件導向程式設計(OOP)就登場了!
想像我們要設計一個動物園管理系統:
每隻動物都有名字、年齡、叫聲
每隻動物也能吃東西、睡覺、發出聲音
如果用函式 + 變數,每新增一種動物都要寫一堆重複程式。
OOP提供了一種方式:
用類別(Class)來定義動物的藍圖
用物件(Object)來創建具體的動物
建立類別與物件
class Animal:
def init(self, name, age):
self.name = name # 屬性
self.age = age
def speak(self): # 方法
print(f"{self.name} 發出聲音!")
#建立物件
dog = Animal("小黑", 3)
cat = Animal("小花", 2)
dog.speak() # 小黑 發出聲音!
cat.speak() # 小花 發出聲音!
init 稱為建構子,在建立物件時自動呼叫。
self 指向物件本身。
繼承(Inheritance)
子類別可以繼承父類別,避免重複程式碼。
class Dog(Animal):
def speak(self):
print(f"{self.name}:汪汪!")
多型(Polymorphism)
相同的方法,在不同物件中有不同表現。
class Cat(Animal):
def speak(self):
print(f"{self.name}:喵喵!")
dog = Dog("小黑", 3)
cat = Cat("小花", 2)
dog.speak() # 小黑:汪汪!
cat.speak() # 小花:喵喵!
真實案例:銀行帳戶
class BankAccount:
def init(self, owner, balance=0):
self.owner = owner
self.balance = balance
def deposit(self, amount):
self.balance += amount
print(f"{self.owner} 存款 {amount} 元,餘額 {self.balance} 元。")
def withdraw(self, amount):
if amount <= self.balance:
self.balance -= amount
print(f"{self.owner} 提款 {amount} 元,餘額 {self.balance} 元。")
else:
print("餘額不足!")
#測試
account = BankAccount("Allen", 1000)
account.deposit(500)
account.withdraw(300)
account.withdraw(1500)
OOP的好處
模擬真實世界(例如:動物、帳戶、用戶…)
程式碼重複性低(不用一再複製相同函式)
可維護性強(修改父類別,子類別就會更新)
可擴充性高(容易新增功能)
學會了物件導向程式設計的基礎,會發現它是軟體工程中非常強大的思想。
明天,會深入OOP,學習類別進階技巧(繼承、覆寫與多型的實戰應用)!