C++重點概念理解系列1-面向對象的編程思想

電腦 軟件 C語言 悲了傷的碼丁 2019-06-30

橫看成嶺側成峰,遠近高低各不同。

不識廬山真面目,只緣身在此山中。

---蘇軾

一、前言

本部分為C++重點概念理解系列中的第1節。本系列內容針對有一定基礎的同學,新學習的同學關注"C++實戰學習系列"或"C++學習刷題系列"。

二、主要內容

大家學習C++時,都是先定義一個類,再由類創建一個一個的對象。這一學習順序造成很多同學對對象理解的困難。例如,對象是什麼?老實的同學可能回答:由類定義的變量。而深沉的同學會回答:對象是實體。實體是什麼呢?唉,實體就是實體嘛,@#¥%...

在C++重點概念理解系列的開篇,我們將重點講解何為面向對象的思想,以及類與對象之間的關係!

2.1結構化的編程思想

眾所諸知,在計算機發展的初期,編寫軟件的主要目的是控制計算機以實現人們想要實現的功能。在這一階段,人們主要是採用功能分解的指導思想

所謂的功能分解,就是將大的功能模塊分解成比較小的功能模塊,然後再將較小的功能模塊分解成更小的功能模塊。按這一思路,分解到每一小功能模塊可以採用一個函數實現為止,如圖1.1所示。

C++重點概念理解系列1-面向對象的編程思想

圖1.1 功能分解實現圖(來源於百度圖庫)

模塊之間的分解關係,在編程實現時體現為函數之間的調用關係。因此,在學習C語言的過程中,大家重點是要掌握函數相關的知識。

2.2面向對象的編程思想

而計算機發展到一定階段後,編寫軟件的目的發生了根本變化:由原來的控制計算機轉變成模擬實現世界,即將現實生活中的某些現象或場景在計算機中模擬出來。例如,現實生活中的商店購物過程對應於互聯網的天貓店購物,現實生活中的賽車活動對應於計算機中的賽車遊戲等。

然而,在計算機中所模擬場景的逼真程度,取決於我們對現實世界的認識程度。因此,我們首先面臨的問題:怎樣有效地認識現實世界的現象或場景?

唯物辯證法認為:世界是由物質所組成的,並且物質之間存在普遍聯繫。物質是指自然界客觀存在的事物,它不以人們的意識為轉移,即不管人們是否看到或意識到某一物質,它都真實存在於自然界。將唯物辯證法引入到軟件工程領域中,就形成了面向對象的系統分析:所模擬世界是由對象所組成的,對象之間存在普遍聯繫

具體應用時,我們可以對這句話進行深入分解,作為我們認識現實世界的指導方針,如圖1.2所示。

其一,"所模擬世界是由對象所組成的"可以被分解成三個層次:1、所模擬世界是由哪些對象所組成的?據此,我們可以分析出所有的研究對象。2、每一個對象有哪些狀態?3、每一個對象有哪些行為?通過這兩步的分析,我們可以深入認識每一個研究對象的具體內容。

其二,"對象之間存在普遍聯繫"也可以被分解成:4、對象之間是否存在組合關係,比如結構上、空間上或邏輯上是否存在整體與部分的關係?5、對象之間是否滿足現實生活中的分類常識,比如是否存在一般與特殊的關係或同屬於一大類下的不同子類?6、對象之間是否存在依賴關係,以實現不同對象之間的協作?比如是否存在一對一、一對多或多對多的關係?利用這種面向對象的思維方式,可以讓我們有計劃、有步驟地分析現實世界

C++重點概念理解系列1-面向對象的編程思想

1.2面向對象看問題的方式

2.3類與對象之間的關係

1、由對象抽象出類

針對日常的教學活動(極端簡化版),我們採用面向對象的分析方法,可以分析很多對象:張三、侯俊傑、C語言、李四、譚浩強、C++語言,…。面對如此之多的對象,我們通常都是採用歸納、總結的方法進行分類處理,其分析過程如圖1.3所示。通過分類處理,我們可以發現這些對象都歸屬於學生、教師和課程三種類型之一。其好處在於:我們不需要面對千千萬萬個內容各異的具體對象,只需要將精力集中在每種類型的共性方面。因此,可以極大地方便與此項目相關人員之間的交流。

C++重點概念理解系列1-面向對象的編程思想

圖1.3由對象抽象出類的過程

2、由類實例化出對象

當我們認識所模擬的世界後,就需要採用C++語言將其在計算機系統中實現出來。也就是說,依據對所模擬世界的認識,我們在計算機世界中還原出相應的對象,以及對象之間的關係。即C++編程教程中講述的過程:先定義類以及類之間的關係,然後按要求逐一實例化出大量的對象。

綜上所述,類與對象的關係是:先由現實世界中的對象抽象出類,然後在計算機世界中依據類實例化出相應的對象,如圖1.4所示。

C++重點概念理解系列1-面向對象的編程思想

圖1.4類與對象之間的關係

C++重點概念理解系列1-面向對象的編程思想

相關推薦

推薦中...