(1)爲何採用面向對象編程模式?
面向過程開發模式適用於小型軟件的開發設計,但是在開發大型應用時,存在以下不足:
(a)開發效率較低; 面向過程設計一個典型特點就是數據和操作分離,對同一數據的不同操作,往往分佈在不同地方;如果某個數據發生變化,那麼與此數據相關的代碼都要修改,操作較爲複雜。
(b)軟件的可重用性較差。
面向對象編程模式的特點:
(a)開發效率大大提高(b)代碼可重用性顯著提升(c)軟件的可維護性好(d)對大型程序設計支持良好
(2)面向對象包含的基本概念
(a)對象 在面向對象程序設計時,現實中的對象特徵被抽象爲屬性,而行爲則被抽象爲方法。
(b)消息 對象間通信方式
(c)類 具有相同屬性和操作的對象進行歸併
(d)方法 當對象接收到消息後,會執行相應的操作(通過調用特定方法實現),C++中的方法爲成員函數。
(3)面向對象技術的基本特徵
(a)封裝 將數據和具體操作的實現代碼封裝在對象內部,代碼實現細節不被外界發現;外界只能通過接口使用該對象
(b)繼承 主要是用於實現代碼複用
(c)多態 在繼承體系中,所有派生類都從基類繼承;但由於每個派生類都是獨立的實體,因而在接收同一消息時,可能會有不同的響應
(4)爲什麼封裝對面向對象來說很重要
封裝的主要目的就是達到接口和實現的分離。通過封裝,對內可以隱藏實現的細節,對外通過接口向客戶提供相應服務。封裝提高了程序的安全性。
(5)接口與實現分離的好處
(a)降低系統複雜性 用戶不必關注接口怎麼實現,只需瞭解接口能夠實現什麼功能即可
(b) 降低系統各組件之間的耦合密度,可維護性較高
(c)簡化調試和測試工作
(6)抽象的概念
抽象是對象最簡化的接口,提供了用戶所期望的服務。抽象是對對象接口的抽象;對於特定的對象,抽象就是一個接口。設計好的抽象必須提供明確的、完整的以及易於理解的說明。
(7) 封裝和抽象有何聯繫
封裝將抽象得到的數據和功能相結合,形成一個有機整體;二者緊密聯繫,封裝通過抽象來隱藏實現細節。
(8)繼承是否會削弱封裝機制
這種說法是不正確的,繼承機制並不影響封裝機制。在程序中將對象進行封裝,使數據和操作成爲一個整體。如果該對象所在類是派生類,那麼派生類只需將其繼承而來的數據和操作與自身獨有的數據和操作一起封裝即可。
繼承和封裝都提供了共享代碼的手段,提高了代碼的可重用性。繼承的代碼共享是靜態的,派生類對象將自動繼承基類的代碼實現,從而實現派生類對象與基類對象的代碼共享;封裝的代碼共享是動態的,屬於某個類的多個實例對象在程序運行時將共享該類指定的代碼。
(9)組合是怎樣定義的,它有什麼作用
組合就是某個對象中包含其他對象的一種機制。如果新類的內部包含已有類的特徵,並且不希望將已有類作爲接口,則要用到組合。
(10)如何理解動態特性
C++中多態性、虛函數以及動態聯編這3個動態特性彼此之間是相互關聯的。
參考書籍: 範立峯 李世欣 《你必須知道的222個c++語言問題》