毛紅粉 陳蘭蘭 郝珂麗 孫新杰

摘 要:隨著近些年來計算機軟件開發的大眾化,面向對象的思想成為了一個迅速發展起來并逐漸被更多人所需要的思想研究領域。面向對象的思想對于我們計算機系的學生來說,是我們必須要掌握的一項基本的學科技能。在一個學期的面向對象編程學習過程中,綜合了面向對象的三個特點,探討了如何準確掌握面向對象思想。
關鍵詞:計算機軟件;思想研究;面向對象
1 面向對象的特性
1.1 繼承性
設計語言中的繼承主要指鏈接類的層次模型,它允許并鼓勵類的重用。[1]一個基類A(也稱作父類)它派生出了B類(子類),對于基類A來說,它有可供子類繼承的部分,也有屬于自己的不能被子類所繼承的部分。這就類似于遺傳方面,例如一個孩子和她父母都是大眼睛雙眼皮,這就是說這個孩子繼承了他父母的可供子類繼承的部分;而例如當馬和驢雜交產生騾子時,馬和驢都是可育的,但是騾子卻不具備這種能力,這就是說父類有屬于自己的不能被子類進行繼承的部分。繼承可以從兩個大方面進行探討,一種是單繼承,一種是多繼承。如下圖所示,就很好的解釋了繼承關系。
在上圖中,生物均具有會呼吸的特性,水生生物和陸生生物均繼承了生物會呼吸的特性,這屬于單繼承;與此同時水生生物又具有會游泳的特性,魚是水生生物,它繼承了水生生物的特性,同時它還擁有生物的特性,會游泳會呼吸,這屬于多繼承;鯨魚和鯉魚均屬于魚類,繼承他們父類魚的特性,但是鯨魚用肺呼吸,鯉魚用鰓呼吸;馬和驢雜交產生騾子時,馬和驢都是可育的,但是騾子卻不具備這種能力;青蛙屬于水陸兩棲動物,繼承自水生生物和陸生生物。
總而言之,繼承是傳遞的,子類繼承自父類,我們稱之為間接繼承。
1.2 封裝性
封裝是很容易理解的,它類似于我們現實生活中的打包,將每個成員所共有的封裝起來然后定義其中一個成員的時候,在調出我們已經封裝了的數據,對它進行重定義。一個類它可以分為三種屬性:公有屬性,私有屬性,保護屬性,即有三種成員函數:公有,私有和保護。舉個例子,一個班級里有50個學生,在這個學生類中,我們可以把學生學號,姓名定義為學生類的私有成員,它不可被子類進行訪問;對于年齡來說,作為每個成員所共有的,我們就可以將它單獨封裝起來,在結合每個成員不同的需求對他進行重定義。這種可以用友元函數來實現,以下面程序為例:
#include
using namespace std;
class beta;
class alpha
{
private:
int data;
public:
alpha():data(5){ }
friend int frifunc(alpha,beta);
};
class beta
{
private:
int data;
public:
beta():data(7){ }
friend int frifunc(alpha,beta);
};
int frifunc(alpha a,beta b)
{ ?return(a.data + b.data); }
int main()
{
alpha aa;
beta bb;
cout << frifunc(aa,bb)<< endl;
return 0;
}
運行結果為:12
在上述程序中,定義了兩個類一個為beta類,一個為alpha;在alpha中定義了其私有成員整型的data,及其公有構造函數和一個友元函數frifunc,并給構造函數賦初值為5;在beta中也定義了其私有成員整型的data,及其公有構造函數和一個友元函數frifunc,并給構造函數賦初值為7;接著對于友元函數重定義,讓它返回a.data與b.data之和,并將這個結果在主函數中輸出。一個類的友元可以存取該類的私有成員,節省了成員函數調用的開銷,[2]封裝可以使得編程更加簡便,其在面向對象編程中有不可或缺的作用。
1.3 多態性
多態在面相對象中指的是在同一個方法中,一段程序能夠被多種類型對象使用,從而產生不同的結果。使用多態,不僅可以解決方法同名的問題,還可以使程序變得更加靈活,從而使程序的可擴展性和維護性得到了有效地提高。
2 基于面向對象的發展趨勢
面向對象是從20世紀90年代發展起來的,而且很快的應用在各個層面,目前它的發展日趨成熟,而且面向對象的性能和優勢也更有利于人們接受。面向對象應用在軟件方面,使得軟件的功能、靈活性、透明性日益增強。
2.1 人工智能語言
面向對象的技術目前已經廣泛應用于人工智能語言方面,在人工智能語言方面面向對象的技術和分析方法的優勢更容易的展現在人工智能應用的各個層次。在將來,面向對象將會更加會應用在各個系統。
2.2 數據庫
面向對象技術在數據庫的應用使得數據庫的共享更加便利。雖然面向對象在數據庫方面使得數據庫的結構更加復雜,但是他的理解更加便于人們接受,而且面向對象使得數據庫有了許多特點,例如代碼共享、模塊性、更加易于設計等諸多方面的特征,更加使面向對象在數據庫的應用日益成熟。
2.3 并行處理
什么是并行處理呢,簡單來說并行處理其實也是并發處理的具體化。并行處理和并發處理他們都是計算機領域的處理方式,并行處理使用面向對象中的消息和并行處理自己消息其實是有點不同的,但是并行處理應用到對象的消息其實使得并行處理在計算機內部更加快捷。應用面向對象的并行處理方式會在今后的發展更加成熟。
2.4 軟件工程
目前有許多軟件工程的開發都應用了對象,而使用對象讓軟件的發展更進一步,雖然目前有許多語言都應用了對象,例如C++等,但是對象的應用使得人們對其他語言進行重新開發,例如Cabol、Basic等語言。面向對象的應用讓軟件工程的開發更上一層樓。
3 大學生如何準確掌握面向對象的思想
對于我們計算機系的學生來說,面向對象的思想是我們學科學習中需要學生們掌握的一項基本的思想。準確掌握面向對象的思想,有助于我們編程能力的提高。對于學生來說,無論學習那一方面的知識都離不開上課認真聽,下課多練習。關于大學生如何準確掌握面向對象的思想我們分了三個方面來討論:
3.1 課前預習
基于C++的面向對象程序設計是從C語言的基礎上發展起來的,其本質與C語言還是有很多的相似之處,在有了C語言程序設計的基礎之下,理解C++不算太困難;但是C++程序設計又不像JAVA程序設計一樣是一個單純的面向對象的學科,所以在進行C++程序設計時要求我們處理好面向過程和面向對象的關系;在我們預習的時候,可以先將書本上的程序敲下來,這樣面向對象的思想就會在我們的腦海里形成一個初步的認識。
3.2 課上練習
在課堂上,我們應該從學習算法開始,盡可能早些掌握面向對象的概念,把學與用結合起來,學生能立即體會到類概念對可視化編程和軟件的再利用的重要性。在課前預習時,我們會遇到各種問題,而且也只是對面向對象程序語言設計有一個初步的了解,但并深刻,所以這個時候,在課堂上,盡可能地通過老師的講解來理解課前遇到的各種專業問題,并進一步的對面向對象的類、構造函數等各個知識點進行深刻理解。認真聽課,解決課前預習的問題,在老師講課的同時,要了解面向對象的c++課程,教師的代碼要理解每個代碼的含義,也可以寫出程序的知識。
3.3 課后復習
當我們接觸一個新的事物的時候,不可能一下子全部掌握,所以需要在課后勤加練習,爭取達到學以致用的目的。我們學習面向對象的思想,是為我們編程能力的提高打基礎的。這就要求我們需要深入的了解面向對象的思想,而這的關鍵就是我們能否從客觀的事物中抽象出類來。只有從客觀事物中抽象出合理的、實用的類來,才有可能實現面向對象的程序設計。在課后,我們要講課堂上老師講的知識點并重新消化,如果不進行,我們所學到的將只會是一些比較容易理解的,而那些難的知識點我們是不會理解的,所以在課下要復習課堂上的,同時也要對書上的代碼多編寫幾遍,以便于我們掌握的更加透徹。
4 結語
在面向對象的學習過程中,我們對于面向對象的概念、特性、發展趨勢以及目前應用方面有了更多的熟知。而面向對象的思想對于我們計算機系的學生來說,是我們必須要掌握的一項基本的學科技能。繼承性、多態性和封裝性讓面向對象在計算機等各個領域應用更多,在計算機領域,不單單只有面向對象一種程序設計,還有面向過程等方法的程序設計,多方法的程序設計讓計算機、人工智能等領域的發展更快。不同方法的程序設計才能早就計算機、人工智能等領域的發展。
參考文獻:
[1]米文麗.探究C++面向對象程序設計的幾點思考[J].福建電腦,2016,32(03):149+127.
[2]張學文,章長釤,劉宇.C++語言的封裝性[J].微計算機信息,1998(04):67-69.
基金:六盤水師范學院大學生科研項目(LPSSYDXS18018)