iT邦幫忙

2025 iThome 鐵人賽

DAY 11
0
Software Development

來一場軟體開發學習之旅系列 第 11

Day 11:OOP 基礎 ─ 用物件看世界

  • 分享至 

  • xImage
  •  

到目前為止,我們的程式多是以函式 + 變數為主,雖然好用,但在複雜專案中會逐漸顯得 難以維護。這時候,物件導向程式設計(OOP)就登場了!
想像我們要設計一個動物園管理系統:
每隻動物都有名字、年齡、叫聲
每隻動物也能吃東西、睡覺、發出聲音
如果用函式 + 變數,每新增一種動物都要寫一堆重複程式。
OOP提供了一種方式:
用類別(Class)來定義動物的藍圖
用物件(Object)來創建具體的動物

  1. 建立類別與物件
    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 指向物件本身。

  1. OOP的三大特性
    封裝(Encapsulation)
    把資料(屬性)與方法包在一起。

繼承(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() # 小花:喵喵!

  1. 真實案例:銀行帳戶
    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)

  2. OOP的好處
    模擬真實世界(例如:動物、帳戶、用戶…)
    程式碼重複性低(不用一再複製相同函式)
    可維護性強(修改父類別,子類別就會更新)
    可擴充性高(容易新增功能)

學會了物件導向程式設計的基礎,會發現它是軟體工程中非常強大的思想。
明天,會深入OOP,學習類別進階技巧(繼承、覆寫與多型的實戰應用)!


上一篇
Day 10:模組與套件 ─ 打造積木式程式設計
下一篇
Day 12:OOP 進階 ─ 繼承、覆寫、多型
系列文
來一場軟體開發學習之旅12
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言