阿摩線上測驗 登入

申論題資訊

試卷:110年 - 110 專技高考_資訊技師:系統分析與資訊安全#104067
科目:系統分析與資訊安全
年份:110年
排序:0

申論題內容

三、物件是資料與相關處理資料的程序與函數結合在一起的組合體,請分別 條列說明物件的三種特性為何?並以該三特性模擬並寫出真實的一輛 紅色、四門、3000 cc、休旅車。(30 分)

詳解 (共 1 筆)

詳解 提供者:hchungw
 
class Car:
    def __init__(self, color, doors, engine_capacity):
        self.color = color
        self.doors = doors
        self.engine_capacity = engine_capacity
    def start(self):
        print("Car is starting.")
    def accelerate(self):
        print("Car is accelerating.")
    def brake(self):
        print("Car is braking.")
class SUV(Car):  # 繼承自 Car 類別
    def __init__(self, color, doors, engine_capacity):
        super().__init__(color, doors, engine_capacity)
    def start(self):
        print(f"{self.color.capitalize()} SUV with {self.doors} doors and {self.engine_capacity} cc engine is starting.")
    def accelerate(self):  # 覆蓋父類別的方法
        print(f"{self.color.capitalize()} SUV is accelerating quickly.")
# 創建一個紅色、四門、3000 cc 的休旅車實例
my_suv = SUV("red", 4, 3000)
# 呼叫休旅車的方法
my_suv.start()       # 顯示 "Red SUV with 4 doors and 3000 cc engine is starting."
my_suv.accelerate()  # 顯示 "Red SUV is accelerating quickly."
my_suv.brake()       # 顯示 "Car is braking." (繼承自 Car 類別)
# 輸出物件的屬性
print(f"Color: {my_suv.color}")
print(f"Doors: {my_suv.doors}")
print(f"Engine Capacity: {my_suv.engine_capacity} cc")
解釋
封裝:在 Car 類別和 SUV 類別中,將屬性(color、doors、engine_capacity)和方法(start、accelerate、brake)封裝在一起。
繼承:SUV 類別繼承自 Car 類別,擁有 Car 類別的所有屬性和方法,並且可以擴展或覆蓋這些方法。
多型:在 SUV 類別中,覆蓋了 Car 類別的 start 和 accelerate 方法,使得 SUV 對這些方法呼叫有不同的行為。
這段程式碼展示了如何使用物件導向的三種特性來模擬一輛紅色、四門、3000 cc 的休旅車。

物件導向程式設計(OOP)中,物件的三種主要特性是封裝(Encapsulation)、繼承(Inheritance)和多型(Polymorphism)。以下是這三種特性的詳細說明:

  1. 封裝(Encapsulation)

    • 定義:將資料(屬性)與處理資料的方法(函數或方法)封裝在一起,組成一個獨立的單元(物件),並保護資料不被外界直接訪問或修改,只能通過物件的方法進行操作。
    • 例子:將汽車的屬性(如顏色、門數、引擎容量等)和方法(如啟動、加速、煞車等)封裝在一起,形成一個汽車物件。
  2. 繼承(Inheritance)

    • 定義:一個類別(子類別)可以繼承另一個類別(父類別)的屬性和方法,從而重用和擴展現有的程式碼。
    • 例子:可以有一個一般汽車類別,休旅車類別可以繼承一般汽車類別,並擴展其功能。
  3. 多型(Polymorphism)

    • 定義:不同的物件可以對相同的方法呼叫做出不同的反應。這通常通過方法覆蓋(Method Overriding)實現,即子類別可以重新定義父類別的方法。
    • 例子:不同類型的汽車可以有各自不同的加速方法,但它們都可以通過相同的方法名稱(如 accelerate)被呼叫。