阿摩線上測驗 登入

申論題資訊

試卷:101年 - 101年專門職業及技術人員高等建築師、技師、第二次食品技師暨普通不動產經紀人、記帳士考高等_資訊技師#26118
科目:公職◆系統分析與設計
年份:101年
排序:0

申論題內容

二、物件使用訊息來模擬彼此間的互動,訊息是物件之間的溝通橋樑,可以啟動另一個 物件來執行指定的行為,而在程序式程式設計的程序或函數名稱是識別字,如同變 數一般,需要與其他程序或函數擁有不同的名稱。請分別舉例解釋說明物件導向程 式語言的三個特點。(15 分)

詳解 (共 1 筆)

詳解 提供者:hchungw
1. 封裝(Encapsulation)
說明:
封裝是指將物件的數據(屬性)和操作數據的方法(行為)捆綁在一起,形成一個獨立的單位。這樣,物件的內部狀態只能通過物件的方法來訪問和修改,從而保護數據的完整性和安全性。
例子:
假設我們有一個表示銀行帳戶的類別 BankAccount:
python
複製程式碼
class BankAccount:
    def __init__(self, account_number, balance):
        self.__account_number = account_number  # 私有屬性
        self.__balance = balance  # 私有屬性
    def deposit(self, amount):
        if amount > 0:
            self.__balance += amount
    def withdraw(self, amount):
        if 0 < amount <= self.__balance:
            self.__balance -= amount
    def get_balance(self):
        return self.__balance
在這個例子中,__account_number 和 __balance 是私有屬性,只有通過 deposit、withdraw 和 get_balance 方法才能訪問和修改它們,這就是封裝的體現。
2. 繼承(Inheritance)
說明:
繼承是指一個類別(子類別)可以從另一個類別(父類別)繼承屬性和方法。這使得子類別可以重用父類別的代碼,並且可以在子類別中添加新的屬性和方法或修改現有的方法。
例子:
假設我們有一個表示動物的父類別 Animal 和一個表示狗的子類別 Dog:
python
複製程式碼
class Animal:
    def __init__(self, name):
        self.name = name
    def make_sound(self):
        return "Some sound"
class Dog(Animal):  # Dog 繼承自 Animal
    def __init__(self, name, breed):
        super().__init__(name)  # 呼叫父類別的初始化方法
        self.breed = breed
    def make_sound(self):  # 重寫父類別的方法
        return "Bark"
dog = Dog("Buddy", "Golden Retriever")
print(dog.name)       # 繼承自 Animal
print(dog.breed)      # Dog 自己的屬性
print(dog.make_sound())  # 重寫的方法
在這個例子中,Dog 繼承了 Animal 的屬性和方法,但也可以添加自己的屬性 breed 並重寫方法 make_sound。
3. 多態(Polymorphism)
說明:
多態是指不同類別的物件可以通過相同的接口呼叫相同的方法,即使這些方法在不同類別中的具體實現不同。這使得可以用統一的方式處理不同類別的物件,提高程式的靈活性和可擴展性。
例子:
假設我們有一個表示動物的父類別 Animal 和兩個子類別 Cat 和 Dog:
python
複製程式碼
class Animal:
    def make_sound(self):
        pass
class Cat(Animal):
    def make_sound(self):
        return "Meow"
class Dog(Animal):
    def make_sound(self):
        return "Bark"
def make_animal_sound(animal):
    print(animal.make_sound())
cat = Cat()
dog = Dog()
make_animal_sound(cat)  # 輸出 "Meow"
make_animal_sound(dog)  # 輸出 "Bark"
在這個例子中,make_animal_sound 函數接受一個 Animal 類別的物件,但由於 Cat 和 Dog 都繼承自 Animal,並且重寫了 make_sound 方法,所以可以傳入 Cat 和 Dog 的物件,並且輸出不同的聲音,這就是多態的體現。
  • 封裝: 封裝通過將數據和行為捆綁在一起,保護數據的完整性和安全性。
  • 繼承: 繼承允許類別重用其他類別的代碼,並在子類別中添加新的屬性和方法或修改現有的方法。
  • 多態: 多態允許不同類別的物件通過相同的接口呼叫相同的方法,提高程式的靈活性和可擴展性。

這些特點使得物件導向程式設計更具模塊化、可重用性和可維護性,是現代軟體開發中的重要技術。