第一章 面向對象程序設計概論 課後習題
一、名詞解釋
抽象:面向對象方法中的抽象,是指對具體問題(對象) 進行概括,找出一類對象的公共性質並加以描述的過程。
封裝:面向對象方法中的封裝就是把抽象出來的對象的屬性和行爲結合成一個獨立的單位,並儘可能隱蔽對象的內部細節。
消息:消息機制是面向對象程序設計用來描述對象之間通信的機制。一個消息就是一個對象要求另一個對象實施某種操作的一個請求。
二、填空題
(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) 什麼是結構化程序設計方法? 它有哪些優點和缺點?
答:結構化程序設計方法着眼於系統要實現的功能,從系統的輸入輸出出發,分析系統要做哪些事情,進而考慮如何做這些事情,自頂向下地對系統的功能進行分解,來建立系統的功能結構和相應的程序模塊結構,有效地將一個較複雜的程序系統設計任務分解成許多易於控制和處理的子任務,便於開發和維護。隨着程序規模與複雜性的增長,這種面向過程的結構化程序設計方法存在明顯的不足之處。首先是數據安全性問題。由於數據被每個模塊所共用,因此是不安全的,一旦出錯,很難查明原因。其次是可維護性及可重用性差。它把數據結構和算法分離爲相互獨立的實體,一旦數據結構需要改變時,常常要涉及整個程序,修改I 作量極大並容易產生新的錯誤。每一種相對於老問題的新方法都要帶來額外的開銷。另外,圖形用戶界面的應用程序,很難用過程來描述和實現,開發和維護也都很困難。
(2) 什麼是面向對象程序設計方法?它有哪些優點?
答:面向對象的程序設計方法中,將程序設計爲一組相互協作的對象而不是一組相互協作的函數。在程序中,屬性用數據表示,用來描述對象靜態特徵;行爲用程序代碼實現,用來描述對象動態特徵.可見,在面向對象的程序設計方法中,對象是數據結構和算法的封裝體。對象之間存在各種聯繫,它們之間通過消息進行通信。程序可表示爲:程序對象+消息 在面向對象程序設計中應着重於類的設計。類正是面嚮對象語言的基本程序模塊,通過類的設計來完成實體的建模任務。類通過 一個簡單的外部接口與外界發生關係。一個類中的操作不會處理到另一個類中的數據,這樣程序模塊的獨立性、數據的安全性就有了良好的保障。程序的執行取決於事件發生的順序,由順序產生的消息來驅動程序的執行。不必預先確定消息產生的順序,更符合客觀世界的實際。並且面向對象程序設計方法提供了軟件重用、解決大問題和複雜問題的有效途徑,具有抽象性、封裝性、繼承性和多態性等特點。
(3) 結構化程序設計方法與面向對象程序設計方法在對待數據結構和算法關係上有什麼不同?
答:結構化程序設計方法中,把數據結構和算法分離爲相互獨立的實體: 而在面向對象程序設計中,數據結構和算法封裝在一起,結合成一個獨立的單位。即對象。並儘可能隱蔽對象的內部細節。對象的私有屬性只能由這個對象的行爲來讀取和修改,與外部的聯繫通過公有行爲充當外部接口。