1. 程式人生 > >類和物件01 簡單認識類和物件

類和物件01 簡單認識類和物件

接下來我們就開始學習C++的部分

首先 我們要搞清楚C++語言是一門面向物件的程式語言

 

問: 首先什麼是程式設計思想?

答: 所謂的程式設計思想 就是人們用計算機來解決實際問題的時候的一種思維方式 或者說是一種基本的策略

常見的程式設計思想有面向過程(例如c語言)和麵向物件(例如c++),很多語言的語法各不相同 但是基本的程式設計思想卻是差不多的

 

舉個簡單的例子:大家去學校“報名上學”這件事,可以分成哪些步驟?

首先來看面向過程的程式設計思想:其實就是分析好以下這些步驟 然後依次執行即可

                        

再來看看面向物件的程式設計思想 所謂的面向物件 就是在程式設計的時候儘可能的去模擬現實世界

 

現實世界中,任何一個操作(動作)或者是任何一個業務邏輯的實現都需要一個實體去完成,實體就是操作(動作)的支配者 沒有實體就沒有動作發生

 

接下來我們來思考一個問題:上述報名的每一個步驟都有哪些動詞?

答:提出 提供 繳 分配 增加

有動詞就一定有實現這個動詞的實體

 

所謂的模擬現實世界,就是使計算機的程式語言與解決相關的業務邏輯的時候,與真實的現實世界中的業務邏輯的發生保持一致 需要使某個動作都是依賴於一個實體的“動作/操作/行動”,可以看做是一個一個的實體在發揮其各自的“能力”並在內部進行協調有序的呼叫過程

如果採用面向物件的思想,解決上面的報名的問題應該如下:

1,分析哪些動作是由哪些實體發出的!

提出 提供 繳 分配 增加

學生提出報名; 學生繳費; 學校收費; 老師分配教室; 班級增加學生資訊

於是在整個的報名過程中,一共出現了四個實體:學生、x學校、老師、班級

在現實中的一個具體的實體,就是計算機程式設計中的一個具體的物件

2,定義這些實體,為其增加相應的屬性和功能(功能就是能完成的動作,在面向物件的專業術語中叫作方法,其實也就是函式)

1,讓實體,去執行相應的功能或動作

學生提出報名

學生繳費

機構收費

教師分配教室

班級增加學生資訊

班級管理學生資訊

所以說,面向過程主要是針對功能,但是面向物件主要是針對能夠實現這些功能的主體(實體)

所以我們要從面向過程到面向物件有一個程式設計思想的轉變:以前寫程式碼,首先想到的是需要實現什麼功能——可以呼叫系統函式,也可以自己定義函式,或者按部就班的執行步驟,然而以後寫程式碼,首先想到的是應該有什麼樣的實體(主體)去完成什麼樣的功能,再把這些實體的屬性和功能進行封裝,最後才去實現這些實體的功能

面向物件不是一種技術,而是一種思想,是一個解決問題的最根本的思維方式

所以,面向物件的核心思想是:不僅僅是簡單的將某些功能進行封裝,而是對呼叫該功能的主體進行封裝,如果一個實體擁有多個功能的話,在使用的過程中,先得到相關的物件,再使用物件去呼叫其相關的功能

 

接下來我們用一張圖來表示:

oop(面向物件的思想):模擬現實

 

那麼什麼是類?什麼是物件呢?

 

類:對某一類物件的統稱。比如:花類、鳥類、人類、動物類、汽車類。泛指一大群有相同特質的東西。

物件:對類的具體例項化出來的東西。比如 鳥類中的具體一個物件 鸚鵡,比如自己家養的貓等。就是對類的具體例項化。

 

實體轉換成描述為抽象的過程;

類(class)例項化一個物件;

 

成員變數對物件來說是獨享的(好比一個房子的長寬高對每個房子來說都是不同的)

屬性對實體來說是獨享的(名字對每一個人來說都是獨享的)

 

成員方法對物件來說是共享的;

行為對實體來說是共享的(人都要吃飯)

 

因此可以讓每個物件開闢不同的存在空間放自己成員變數的空間

從而實現共享行為 獨享屬性

 

總結來說:類是事物的抽象。類的物件就是類的具體化,實際化。

 

C++的三大特徵:封裝 繼承 多型

 

首先來簡單瞭解一下這三種特徵

 

封裝:根據實際情況對類進行屬性、方法的包裝。對外隱藏資訊。把實際的過程在類外面不能看到,只給一個介面給外界。

 

繼承:減少冗餘,如果有幾個類中有相同的屬性或方法,可以通過繼承獲取到。子類可以繼承父類的所有屬性和方法。

 

多型:多型一詞最初來源於希臘語,意思是具有多種形式或形態的情形,在C++中是指同樣的訊息被不同型別的物件接收時導致不同的行為,這裡講的訊息就是指物件的成員函式的呼叫,而不同的行為是指不同的實現。也就是呼叫了不同的函式。

 

到此我們對C++有一個初步的瞭解了