第一章習題
第一章、物件導向程式設計概論習題
一、名詞解釋
抽象:指對具體問題(物件)進行概括,找出一類物件的公共性質並加以描述的過程。
封裝:就是將抽象出來的物件的屬性和行為結合成一個獨立的單位,並儘可能隱藏物件的內部細節。
訊息:訊息機制是物件導向程式設計用來描述物件之間通訊的機制。一個訊息就是一個物件要求另一個物件實施某種操作的一個請求。
二、填空題
(1)目前有結構化程式設計方法和物件導向程式設計方法兩種重要的程式設計方法。
(2)結構化程式設計方法中的模組由順序、選擇和迴圈3種基本結構組成。
(3)在結構化程式設計方法中,程式可表示為程式=資料結構+演算法;而物件導向的程式設計方法,程式可表示為程式=物件+訊息。
(4)結構化程式設計方法中的基本模組是過程;而物件導向的程式設計方法中的基本模組是類。
(5)物件導向程式設計的方法具有抽象性、封裝性、繼承性和多型性等特點。
三、選擇題(至少選一個,可以多選)
(1)物件導向程式設計著重於(B)的設計。
A. 物件 B. 類 C. 演算法 D. 資料
(2)物件導向程式設計中,把物件的屬性和行為組織在同一個模組內的機制叫(C)
A. 抽象 B. 繼承 C. 封裝 D. 多型
(3)在物件導向程式設計中,類通過(D)與外界發生關係。
A. 物件 B. 類 C. 訊息 D. 介面
(4)物件導向程式設計中,物件與物件之間的通訊機制是(C)
A. 物件 B. 類 C. 訊息 D. 介面
(5)關於C++與C語言的關係的描述中,(D)是錯誤的。
A. C語言是C++的一個子集
B. C語言與C++是相容的
C. C++對C語言進行了一些改進
D. C++和C語言都是物件導向的
(6)物件導向的程式設計將資料結構與(A)放在一起,作為一個相互依存、不可分割的整體來處理。
A. 演算法 B. 資訊 C. 資料隱藏 D. 資料抽象
(7)下面(A)不是物件導向系統所包含的要素。
A. 過載 B. 物件 C. 類 D. 繼承
(8)下面說法正確的是(BC)
A. 將資料結構和演算法置於同一個函式內,即為資料封裝
B. 一個類通過繼承可以獲得另一個類的特徵
C. 物件導向要求程式設計師集中於事物的本質特徵,用抽象的觀點看待程式
D. 同一訊息為不同的物件接受時,產生的行為是一樣的,這稱為一致性
(9)下面說法正確的是(AD)
A. 物件是計算機記憶體中的一塊區域,它可以存放程式碼和資料
B. 物件實際是功能相對獨立的一段程式
C. 各個物件間的資料可以共享是物件的一大優點
D. 在物件導向的程式中,物件之間只能通過訊息相互通訊
四、判斷題
(1)在高階程式設計語言中,一般用類來實現物件,類是具有相同屬性和行為的一組物件的集合,它是建立物件的模板。(√)
(2)C++語言只支援物件導向技術的抽象性、封裝性、繼承性、等特性,而不支援多型性。(×)
(3)物件導向程式設計中的訊息應該包含“如何做”的資訊。(×)
(4)一個訊息只能產生特定的響應效果。(×)
(5)類的設計和類的繼承機制實現了軟體模組的可重用性。(√)
(6)C++語言和Java語言均不是一個純正的物件導向的程式設計的語言。(×)
(7)學習C++語言是學習物件導向的程式設計方法的唯一途徑。(×)
(8)在C++語言中,類是支援資料封裝的工具。(√)
五、簡答題
(1)什麼是結構化程式設計方法?它有哪些優點和缺點?
答:結構化程式設計方法著眼於系統要實現的功能,從系統的輸入輸出出發,分析系統要做哪些事情,進而考慮如何做這些事情,自頂向下地對系統的功能進行分解,來建立系統的功能結構和相應的程式模組結構,有效地將一個較複雜的程式系統設計任務分解成許多易於控制和處理的子任務,便於開發和維護。
隨著程式規模與複雜性的增長,這種程式導向的結構化程式設計方法存在明顯的不足之處。首先是資料安全性問題。由於資料被每個模組所共用,因此是不安全的,一旦出錯,很難查明原因。其次是可維護性及可重用性差。它把資料結構和演算法分離為相互獨立的實體,一旦資料結構需要改變時,常常要涉及整個程式,修改工作量極大並容易產生新的錯誤。每一種相對於老問題的新方法都要帶來額外的開銷。另外,圖形使用者介面的應用程式,很難用過程來描述和實現,開發和維護也都很困難。
(2)什麼是物件導向程式設計方法?它有哪些優點?
答:物件導向的程式設計方法中,將程式設計為一組相互協作的物件而不是一組相互協作的函式。在程式中,屬性用資料表示,用來描述物件靜態特徵;行為用程式程式碼實現,用來描述物件動態特徵。可見,在物件導向的程式設計方法中,物件是資料結構和演算法的封裝體。物件之間存在各種聯絡,它們之間通過訊息進行通訊。程式可表示為:程式=物件+訊息。
在物件導向程式設計中應著重於類的設計。類正是面嚮物件語言的基本程式模組,通過類的設計來完成實體的建模任務。類通過一個簡單的外部介面與外界發生關係。一個類中的操作不會處理到另一個類中的資料,這樣程式模組的獨立性、資料的安全性就有了良好的保障。程式的執行取決於事件發生的順序,由順序產生的訊息來驅動程式的執行。不必預先確定訊息產生的順序,更符合客觀世界的實際。並且物件導向程式設計方法提供了軟體重要、解決大問題和複雜問題的有效途徑,具有抽象性、封裝性、繼承性和多型性等特點。
(3)結構化程式設計方法與物件導向程式設計方法在對待資料結構和演算法關係上有什麼不同?
答:結構化程式設計方法中,把資料結構和演算法分離為相互獨立的實體;而在物件導向程式設計中,資料結構和演算法封裝在一起,結合成一個獨立的單位,即物件,並儘可能隱蔽物件的內部細節。物件的私有屬性只能由這個物件的行為來讀取和修改,與外部的聯絡通過公有行為充當外部介面
相關文章
- 西電--工程優化第一章習題優化
- 第一章 遞迴問題 學習筆記遞迴筆記
- 第一章 聯言命題選言命題及其推理-練習題:6~12題
- 第一章 聯言命題選言命題及其推理-練習題:1~5題
- 第一章 聯言命題選言命題及其推理-練習題:13~18題
- 第一章 聯言命題選言命題及其推理-德摩根定律及其練習題
- 機器學習 第一章學習機器學習
- 第一章-JAVA基礎-課後總結和課後習題Java
- 《深度學習入門:》學習基本第一章深度學習
- GIT學習筆記——第一章Git筆記
- 第一章 聯言命題選言命題及其推理-難點一:否定肯定式及其練習
- JAVA入門第三季第一章第九節課後練習題!Java
- 作業系統複習第一章作業系統
- head first java第一章的學習Java
- 第一章 聯言命題選言命題及其推理-難點二:不相容選言命題及其練習
- Java基礎學習筆記 第一章Java筆記
- 深度學習day1(第一章:什麼是深度學習?)深度學習
- 《機器學習實戰》第一章 機器學習基礎機器學習
- 第一章 聯言命題選言命題及其推理-聯言命題性質
- 第一章 聯言命題選言命題及其推理-選言命題性質
- 計算機作業系統第一章複習計算機作業系統
- mysql學習1:第一章:Mysql簡介與主流MySql
- 習題練習題-第二題
- 【無線感測器網路簡明教程-學習筆記9】第一章課後思考題答案筆記
- 百面機器學習總結--第一章特徵工程機器學習特徵工程
- Hadoop 從 0 到 1 學習 ——第一章 Hadoop 介紹Hadoop
- 遊戲程式設計模式學習:第一章命令模式遊戲程式設計設計模式
- Flink 從 0 到 1 學習 —— 第一章 Flink 簡介
- 第一章
- 阿里巴巴面試題總結(java後端)-第一章阿里面試題Java後端
- Java_EE企業級開發學習筆記——spring學習筆記第一章Java筆記Spring
- 第一章(1.2) 機器學習演算法工程師技能樹機器學習演算法工程師
- 第一章-概念
- 第一章 困境
- Python(第一章)Python
- java第一章Java
- 計算機網路自頂向下方法:第一章 計算機網路和因特網 課後複習題計算機網路
- 習題9.4