阿摩線上測驗 登入

申論題資訊

試卷:111年 - 111 臺灣港務股份有限公司_新進從業人員甄試試題_師級_資訊:系統分析設計與資料庫應用#112862
科目:系統分析與設計及資料庫應用
年份:111年
排序:0

申論題內容

(2) 比較物件導向設計與程序導向設計,對解決問題的差異性。(10 分)

詳解 (共 1 筆)

詳解 提供者:hchungw

物件導向設計(Object-Oriented Design, OOD)和程序導向設計(Procedural Design)是兩種不同的編程範式,它們在解決問題的方法和方式上有顯著的差異。以下是對這兩種設計方法的比較及其解決問題的差異性:

1. 問題分解方式

物件導向設計

  • 基於物件和類:物件導向設計將問題分解為物件,每個物件表示問題領域中的一個具體實體或概念。這些物件通過類來定義,它們封裝了屬性(數據)和方法(行為)。
  • 實體建模:物件導向設計強調模擬真實世界的實體和他們之間的互動。這使得設計和代碼更接近問題領域,易於理解和維護。

程序導向設計

  • 基於過程和函數:程序導向設計將問題分解為一系列過程或函數,每個過程或函數執行特定的任務。這些過程和函數通過順序、條件和迴圈結構來組織。
  • 步驟分解:程序導向設計強調將問題分解為一系列步驟或算法,然後依次執行這些步驟來解決問題。

2. 資料和行為的組織

物件導向設計

  • 封裝:物件導向設計將數據和行為封裝在物件內部,外部只能通過公開的方法來訪問和操作數據。這有助於保護數據的完整性和安全性。
  • 資料和行為一體化:數據和操作數據的行為被整合在一起,形成具有自我描述和自我控制能力的物件。

程序導向設計

  • 全局數據:程序導向設計通常依賴於全局數據,這些數據可以被多個過程或函數訪問和修改。這可能導致數據被意外修改的風險。
  • 資料和行為分離:數據和操作數據的行為是分離的。函數操作數據,數據本身並不包含行為。

3. 可重用性和擴展性

物件導向設計

  • 繼承和多態性:物件導向設計通過繼承來重用代碼,通過多態性來實現接口的靈活擴展。這使得系統具備很高的可重用性和擴展性。
  • 模組化設計:每個物件都是獨立的模組,可以獨立開發、測試和維護。這促進了代碼的重用和系統的擴展。

程序導向設計

  • 函數重用:程序導向設計通過將常用的代碼封裝成函數來實現重用。但函數重用的範圍和靈活性相對較低。
  • 模組化較弱:程序設計中的模組化通常依賴於函數庫或模組,但這些模組之間的耦合度通常較高,擴展性和靈活性不如物件導向設計。

4. 可維護性

物件導向設計

  • 高可維護性:由於數據和行為封裝在一起,並且系統是通過清晰的接口進行交互,修改代碼時對其他部分的影響較小。
  • 易於理解:物件導向設計模擬真實世界的實體和關係,系統結構和行為更直觀,易於理解和維護。

程序導向設計

  • 維護挑戰:由於數據和行為分離,以及對全局數據的依賴,修改代碼時可能會影響多個函數或模組,增加了維護的難度。
  • 理解困難:隨著系統的複雜性增加,程序導向設計的系統結構和邏輯可能變得難以理解和管理。