999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

在面向對象程序設計教學過程中培養學生面向對象編程思想

2008-12-31 00:00:00葛建芳
電腦知識與技術 2008年17期

摘要:面向對象程序設計方法是一種新穎的、更符合人類思維習慣的解題方法。本文闡述了面向對象思想的重要性,強調面向對象程序設計課程的重點應該定位在“方法論教學”方面。在教學過程中要通過實例的分析幫助學生樹立起面向對象程序設計的新思維,掌握運用面向對象程序設計技術解決實際問題的方法。

關鍵詞:面向對象;程序設計;思維方法

中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2008)17-21493-03

1 引言

程序設計作為計算機科學與技術專業重要的學科基礎課,在由基礎訓練到專業課教學階段過渡過程中起到承上啟下的作用。它不僅為今后學習專業課打下堅實的理論基礎和技術基礎,而且為軟件開發提供必要的理論、方法和工具。由于面向對象程序設計是程序設計發展的趨勢,越來越多的大學已經開設C++、Java、Delphi等面向對象編程語言,作為學生學習程序設計的重要課程。面向對象編程語言的教學過程中,要注重向學生傳授面向對象的基本思想和方法,因為它們對編程實踐具有普遍的指導意義。

2 面向對象思想的重要性

傳統的程序設計是面向過程的,采用結構化程序設計思想。這種方法主要是圍繞設計算法來進行的,即在程序設計過程中常??紤]的問題是采用什么樣的解題方法和步驟。程序設計工作的本質是功能分解,采用“自頂向下、逐步求精”的方法,把所要開發的應用程序系統功能分解為若干子功能,針對每個子功能編寫程序模塊,所有功能都隱含在程序代碼中。當程序較大和較復雜時,各類數據及實現不同功能的過程之間的聯系變得復雜,以致于程序可靠性低,維護性較差。

面向對象是自結構化方法以來對系統開發過程的最重要的變革,在20世紀90年代,它代替了結構化方法而成為軟件開發的主要方法。這種開發策略基于下面的概念,即系統可以由一系列稱作對象的可重用組件來構建。對象是面向對象系統的基本思維單位,與結構化方法里分離數據和功能不同,對象包含了它們兩者,具有一定的屬性(數據)和行為(功能)。它的實質是從系統組成的角度對系統進行分析,利用類及對象作為基本構造單元,使設計出的軟件模塊化、可復用性、易于維護,降低開發維護費用,提高軟件質量。

面向對象的精髓在于考慮問題的思路是從現實世界的人類思維習慣出發的。面向對象語言對程序設計的主要影響并不在于它的語法特征,而在于它所提供的自然的問題求解機制和結構。要理解面向對象語言的能力,應首先理解面向對象技術的基本原理和基本思想。使用面向對象編程工具,如果沒有面向對象的編程思想,好比“不察其辭”,最終仍然是“近而不可見”,難以開發出優秀的系統。教學過程中要注意提醒學生面向對象是一種新的思維模式,不要只把注意力錯誤地放到語法規范的學習方面,而忽略了對于面向對象方法的學習和理解。

3 面向對象編程思想的培養

在面向對象程序設計中,有三個基本的原則思想,它們是封裝、繼承和多態性編程思想,只有掌握這些思想“利器”,才能把它們有效地用于指導實際編程。教學過程中要著重闡述這些思想方法。

3.1 引導學生認識封裝性,學會使用對象構造程序

面向對象程序設計方法是以對象為核心,把程序看作是相互協作又彼此獨立的對象的集合。因此,教學過程中訓練學生的編程思維時,要擺脫傳統的面向過程思維方式的束縛,首先要考慮使用什么對象來解決問題,如何設計對象以及如何讓對象發生聯系,即學會以對象為基本模塊來構造程序。

在進行面向對象程序設計時,一一去描述同類對象既不可能也是極大的工作重復,例如,設計一個求圓面積的程序時,不可能一一描述每個圓對象。為了克服類似的復雜性,在程序設計時,采用了人們在處理復雜問題時常用的一種方法—抽象,它是將做什么和怎么做分開,從而隱藏了問題的復雜性。在面向對象程序設計中,抽象是最基本的原則之一,包括數據抽象和行為抽象。數據抽象是抽象出某類對象的公共屬性,行為抽象是抽象出某類對象的公共行為。這樣,用抽象的方法抓住了編程者所關心的重要信息,而忽略掉一些不重要的細節部分,從而找到了一類對象的抽象數據類型。然后,用面向對象編程工具的類機制把一類對象共有屬性的數據結構和操作該數據結構的行為捆綁在一起,封裝在一個程序實體內定義成一種類類型,這一過程就是數據封裝,簡稱封裝。

下面是對圓對象抽象封裝后得到的C++類:

class Circle{

private:

int radius; //數據成員

public:

Circle(int r){radius=r;}//成員函數

double area(){return 3.14*radius*radius;}//成員函數

};

從上面的例子中看出,編程工具提供的類機制把對象的數據結構和使用數據結構的操作封裝在一起,并且通常將數據結構部分聲明為private訪問屬性而使其不能被外界直接訪問,或者說對外界隱藏,而只能通過在這個數據結構上定義的public訪問屬性的操作接口間接地訪問數據結構,使數據結構被隱藏在操作接口背后,操作的實現細節也一樣被隱藏在操作接口的背后;達到了封裝數據結構的目的,這種編程思想使得類的使用者只需知道操作的接口,而沒有必要了解數據結構及在數據結構上的操作的實現細節,大大減輕了使用者的負擔。另外,當類的數據結構或操作的實現被修改時,只要操作的接口不變,使用類的程序的其余部分則不必修改,有利于程序的維護。

在定義類之后,以類為模型生成所需的對象,不同對象之間通過發送消息向其他對象提出服務請求,接受消息的對象主動完成指定的功能,整個程序的功能由所有對象共同完成。例如,在C++程序中編寫下面的代碼,生成了兩個圓對象,并向它們發消息要求計算自身的面積:

Circle c1(3),c2(5);

c1.area();c2.area();

3.2 領悟繼承性,實現代碼重用

繼承可以說是面向對象程序設計的最重要特點,它不僅自然地體現了現實世界中對象的一般和特殊關系,而且很好地解決了軟件的可重用性問題。在教學過程中可以通過實例,使學生領悟繼承性的“真諦”,并通過它合理地實現代碼重用。

所謂繼承,是指子類自動擁有父類的屬性和操作,并可以增加自己的新的屬性和操作,這就為面向對象程序設計的代碼重用提供了很好的方法支持。在繼承關系中子類還可以被繼承得到子類,如此下去,使得類與類間的繼承關系形成多層次結構,從而能很好地刻畫現實世界中存在的多層次關系。例如,針對某小型公司編寫計算雇員工資的程序,首先,根據工資計算方法的不同,分析得出該公司存在經理、技術人員、銷售員、銷售經理四種類型的雇員。根據各類雇員之間的聯系,抽取姓名、工號等共性形成頂層的雇員類,經理、技術人員、銷售員三個類由雇員類派生而來,雇員類中增加級別屬性,技術人員類中增加專業屬性,銷售員類中增加銷售額屬性;而銷售經理又繼承了經理和銷售員兩個類,形成軟件系統的類的層次結構。下面是雇員類與經理類的C++定義:

class employee{

char name[10];//姓名

unsigned no; //工號

……

};

class manager: public employee{

int level; //級別

……

};

利用繼承與派生機制,對于類似的問題或只有部分類似的問題都可以通過從已定義的類派生出新類來解決,避免了重復。即繼承性使得用戶在開發新的應用系統時不必完全從零開始,可以繼承原有的相似系統的功能或者從類庫中選取需要的類,再派生出新的類以實現所需要的功能。繼承機制實現了代碼的重用,加快和簡化了程序設計,極大地提高了開發效率。

3.3 靈活運用多態性,簡化程序處理邏輯

在面向對象程序設計領域,多態性通常特指如下機制:派生類對象可以象基類對象一樣使用,同樣的消息既可以發送給基類對象也可以發送給派生類對象。也就是說,在類等級的不同層次中可以共享一個行為的名字,但是不同層次中的類卻各自按自己的需要來實現這個行為。當一個對象接收到發送給它的消息時,根據該對象所屬于的類動態地選用該類中定義的實現算法。

例如,C++語言中是通過虛函數來實現多態性的,對于上面提到的計算雇員工資的問題,因為各種類型的雇員的工資計算方法不同,在雇員類、經理、技術人員、銷售員類中分別定義如下虛函數:

virtual double salary()=0;

virtual double salary(){ return 5000+level*100; }

virtual double salary(){ return 3000+hour*50; }

virtual double salary(){ return sales*0.04; }

對上述幾個類構成的簡單的類層次結構, 可以用如下的代碼計算工資:

void ShowSalry(const employee r){cout<

并且,可按下面的方式使用多態程序段:

void main(){

manager e1(\"Tom\",1001,5);

technician e2(\"Sue\",2023,30),

salesman e3(\"Liu\",2012,30);

ShowSalry(e1);

ShowSalry(e2);

ShowSalry(e3);

可見,多態性為統一地處理一組接口相同但實現不同的操作提供了極好的方法支持, 是一種形而上學的方法, 它使程序邏輯簡單明了、可讀性強。此外, 多態性還能使程序擴充特別容易,例如,如果我們還希望求其它類型雇員的工資,只需要從employee類直接或間接派生出該類并為其定義不同版本的salary函數,而多態程序段保持不變。

多態性機制不僅增加了面向對象軟件系統的靈活性,而且進一步減少了冗余信息,顯著提高了軟件的可重用性和可擴充性。

4 總結

正是由于封裝、繼承和多態性編程思想, 使面向對象的程序設計方法能自然、 準確地模擬現實世界的問題。面向對象程序的教學,要重視對學生進行面向對象思想的培養,只有掌握了面向對象這一優秀的理論工具,才能運用面向對象的思想分析、設計,并利用語言支持和實現面向對象理論的語法結構去編程解決問題,編程過程中可以方便地共享已有的軟件資源和程序代碼,從而大幅度提高軟件的開發效率和減少今后的軟件維護工作量。

參考文獻:

[1] 楊芙清. 面向對象的系統分析[M]. 北京:清華大學出版社,1998.5.

[2] Ian Graham. 袁兆山 譯. 面向對象方法原理與實踐[M]. 北京:機械工業出版社,2003.1.

[3] 呂鳳翥. C++語言基礎教程[M]. 北京:清華大學出版社,1999.

[4] 張海藩,牟永敏. 面向對象程序設計實用教程[M]. 北京:清華大學出版社,2001.

注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文

主站蜘蛛池模板: av在线手机播放| 久久精品日日躁夜夜躁欧美| 成年免费在线观看| 激情无码字幕综合| 91在线一9|永久视频在线| 红杏AV在线无码| 99re这里只有国产中文精品国产精品| 国产在线观看高清不卡| 欧美色综合网站| 日韩欧美国产三级| 欧美一级专区免费大片| 免费无码AV片在线观看国产| 国产99在线| 69av免费视频| 成人国产精品2021| 伊人精品成人久久综合| 一边摸一边做爽的视频17国产| 91偷拍一区| 国产欧美日韩一区二区视频在线| 国产乱人乱偷精品视频a人人澡 | 久久综合婷婷| 国产成人精品一区二区不卡| 最新日韩AV网址在线观看| 亚洲午夜福利精品无码不卡| 国产成人精品一区二区秒拍1o| 综合色在线| 天堂成人在线视频| 日韩欧美在线观看| 久久精品一卡日本电影| 久久国产精品娇妻素人| 午夜成人在线视频| 91精品国产91久无码网站| 国产精品原创不卡在线| 伊人久久久久久久| 国产人成网线在线播放va| 久久亚洲国产视频| 欧美日韩国产在线播放| 99视频只有精品| 国产亚洲精品在天天在线麻豆| 视频在线观看一区二区| 欧美国产综合色视频| 欧美日韩国产在线人成app| 人妻免费无码不卡视频| 成人毛片在线播放| 精品国产成人高清在线| 伊人久久青草青青综合| 毛片免费视频| 国产激情在线视频| a级毛片免费看| 成人午夜天| 欧美激情网址| a天堂视频| 国产打屁股免费区网站| 成人国产精品视频频| 亚洲第七页| 色综合天天娱乐综合网| 欧美第一页在线| 99在线观看视频免费| 国产日产欧美精品| 伊人久久大线影院首页| 国产精品视频观看裸模| 欧美三級片黃色三級片黃色1| 久久精品视频一| 久久久久久久久亚洲精品| 精品国产三级在线观看| 国产精品美人久久久久久AV| 亚洲第一香蕉视频| 91国内在线视频| 无套av在线| 日韩无码真实干出血视频| 亚洲精品视频网| 亚洲第一页在线观看| 欧美日韩午夜视频在线观看| 22sihu国产精品视频影视资讯| 国产精品流白浆在线观看| 国产电话自拍伊人| 在线欧美a| 成人va亚洲va欧美天堂| 91破解版在线亚洲| 五月婷婷伊人网| 国产欧美在线| 免费国产无遮挡又黄又爽|