1. 程式人生 > >C++面向物件程式設計——概述(物件、類、抽象、封裝、繼承、多型)

C++面向物件程式設計——概述(物件、類、抽象、封裝、繼承、多型)

前言:今天第一次上C++課程。根據老師的所講內容進度,記錄C++知識!!!

第一章

問題一:什麼是面向物件程式設計?
面向物件程式設計是一種新的程式設計範型。主要特徵是:程式=物件+訊息
面向物件程式設計的基本元素是物件,面向物件程式的主要結構特點是:
1. 程式一般由類的定義和類的使用兩部分組成;
2.程式中的一切操作都是通過向物件傳送訊息來實現的,物件接收到訊息後,啟動有關方法完成相應的操作。
面向物件程式設計方法模擬人類習慣的解題方法,代表了計算機程式設計新穎的思維方式。這種方法的提出是對軟體開發方法的一場革命,是目前解決軟體開發面臨困難的最有希望、最有前途的方法之一。
補充:


1.程式設計範型是指設計程式的規範、模型和風格,它是一類程式設計語言的基礎。
2.面向過程程式設計的特徵:程式=過程+呼叫
問題二: 什麼是物件?什麼是類?物件與類的關係是什麼?
物件:在現實生活中,任何事物都是物件。它可以是一個有形的具體存在的事物(一張桌子,一個學生,一輛汽車);它也可以是一個無形的,抽象的事物(一次演出,一場球賽,一次出差)。物件既可以很簡單,也可以很複雜,複雜的物件可以由若干簡單的物件構成。物件一般可以表示為:屬性+行為,一個物件往往是由一組屬性和一組行為構成的。在面向物件程式設計中,物件是描述其屬性的資料以及對這些資料施加的一組操作封裝在一起構成的統一體。在C++中每個物件都是由資料和操作程式碼(通常用函式來實現)兩部分組成的。
類:在現實世界中,“類”是一組具有相同屬性和行為的物件的抽象。類和物件之間的關係是抽象和具體的關係。類是對多個物件進行綜合抽象的結果,物件又是類的個體實物,一個物件是類的一個例項。
在面向物件程式設計中,“類”就是具有相同的資料和相同的操作(函式)的一組物件的集合,也就是說,類是對具有相同資料結構和相同操作的一類物件的描述。
問題三:
現實世界中的物件有哪些特徵?請舉例說明。
現實世界中的物件,具有以下特徵:
(1)每一個物件必須有一個名字以區別於其他物件;
(2)用屬性來描述它的特徵;
(3)有一組操作,每組操作決定物件的一種行為;
(4)物件的行為可以分為兩類:一類是作用於自身的行為;另一類是作用於其他物件的行為。
問題四:什麼是訊息?訊息具有什麼性質?
在面向物件程式設計中,一個物件向另一個物件發出的請求被稱為“訊息”。當物件接收到發向它的訊息時,就呼叫有關的方法,執行相應的操作。例如:有一個教師物件和一個學生物件,學生可以發出訊息,請求老師演示一個實驗,當老師接收到這個訊息後,確定應完成的操作並執行之。
訊息具有以下三個性質:
(1)同一個物件可以接收不同形式的多個訊息,作出不同的響應;
(2)相同形式的訊息可以傳遞給不同的物件,所作出的響應可以是不同的;
(3)對訊息的響應並不是必須的,物件可以響應訊息,也可以不響應。
問題五:
什麼是抽象和封裝?請舉例說明。
抽象是將有關事物的共性歸納、集中的過程。抽象是對複雜世界的簡單表示,抽象並不打算了解全部的問題,而只強調感興趣的資訊,忽略了與主題無關的資訊。例如:在設計一個成績管理程式的過程中,只關心學生的姓名、學號、成績等,而對他的身高體重等資訊就可以忽略。而在學生健康資訊管理系統中,身高、體重等資訊必須抽象出來,而成績則可以忽略。
抽象是通過特定的例項抽取共同性質後形成概念的過程。面向物件程式設計中的抽象包括兩個方面:資料抽象和程式碼抽象(或稱為行為抽象)。前者描述某類物件的屬性或狀態,也就是此類物件區別於彼類物件的特徵物理量;後者描述了某類物件的公共行為特徵或具有的公共功能。
在現實世界中,所謂封裝就是把某個事物包圍起來,使外界不知道該事物的具體內容。在面向物件程式設計中,封裝是指把資料和實現操作的程式碼集中起來放在物件內部,並儘可能隱蔽物件的內部細節。
下面以一臺洗衣機為例,說明物件的封裝特徵。首先,每一臺洗衣機有一些區別於其他洗衣機的靜態屬性。如出廠日期、機器編號等。另外,洗衣機上有一些按鍵,如“啟動”、“暫停”、“選擇”等,當人們使用洗衣機時,只需要根據需要按下“選擇”、“啟動”或“暫停”等按鍵,洗衣機就會完成相應的工作。這些按鍵安裝在洗衣機的表面,人們通過他們與洗衣機交流,告訴它應該做什麼。我們無法(也沒必要)操作洗衣機的內部電路和機械控制部件,因為它們被裝在洗衣機裡面,這對於使用者來說是隱蔽的,不可見的。
問題六:什麼是繼承?並舉例說明。
繼承所表達的是類之間的相關關係,這種關係使得某類物件可以繼承另外一類物件的特徵和能力。現實生活中,繼承是很普遍和容易理解的。例如:我們繼承了父母的一些特徵,如種族、血型、眼睛的顏色等,父母是我們所具有的屬性的基礎。
以面向物件程式設計的觀點,繼承所表達的是類之間相關的關係。這種關係使得某一類可以繼承另一類的特徵和能力。
問題七:若類之間具有繼承關係,則它們之間具有什麼特徵?
(1)類間具有共享特徵(包括資料和操作程式碼共享)
(2)類間具有差別或新增部分(包括非共享資料和操作程式碼)
(3)類間具有層次結構
假設有兩個類A和B,若類B繼承類A,則B包含了A的特徵,同時可以加入自己所特有的新特徵。我們稱被繼承類A為基類或父類;而稱繼承類B為A的派生類或子類。即類B是從類A中派生出來的。
問題八:什麼是單繼承、多繼承?請舉例說明。
從繼承源上分,繼承分為單繼承和多繼承。
單繼承是指每個派生類只直接繼承一個基類的特徵。多繼承是指多個基類派生出一個派生類的繼承關係。
問題九:什麼是多型性??舉例說明。
面向物件系統的多型性是指不同的物件收到相同的資訊時執行不同的操作。例如:
有一個桌子類物件,還有一個棋子類物件,當我們對他們發出“移動”的訊息時,兩個類物件可以有不同的行為。
C++語言支援兩種多型性,即編譯時的多型性和執行時的多型性。編譯時的多型性是通過函式過載(包括運算子過載)來實現的,執行時的多型性是通過虛擬函式來實現的。
問題十:面向物件程式設計的主要優點是什麼?
面向物件程式設計本質上改變了人們以往設計軟體的思維方式,從而使程式設計者擺脫了具體的資料格式和過程的束縛,將精力集中於要處理物件的設計和研究上,極大地減少了軟體開發的複雜性,提高軟體開發效率。優點如下:
(1)提高程式的重用性
(2)控制程式的複雜性
(3)改善程式的可維護性
(4)能更好地支援大型程式設計
(5)增強計算機處理資訊的範圍
(6)能更好地適應新的硬體環境
面向物件程式設計是目前解決軟體開發面臨難題的最有希望、最有前途的方法之一。

聽說C++是一門很難的課程,希望通過上課、自習、複習我能學好它。加油!!!!