華中科技大學C++課件第一章面向對象程序設計概論_第1頁
華中科技大學C++課件第一章面向對象程序設計概論_第2頁
華中科技大學C++課件第一章面向對象程序設計概論_第3頁
華中科技大學C++課件第一章面向對象程序設計概論_第4頁
華中科技大學C++課件第一章面向對象程序設計概論_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

目的:嶄新的二十一世紀,以現(xiàn)代電子信息產業(yè)為龍頭的全球經濟一體化浪潮正席卷世界,這是當今人類所面臨的巨大挑戰(zhàn),人們將認真面對挑戰(zhàn)的內涵和挑戰(zhàn)所帶來的機遇。而以IT(InformationTechnology)技術為基礎的信息產業(yè)正深入到人類社會生活的方方面面,無論是生產制造、商業(yè)、國防和科技等領域、還是第三產業(yè),計算機軟件現(xiàn)已成為擔當重任的核心力量,互聯(lián)網和軟件已成為推動新經濟發(fā)展的重要基礎。因此,計算機軟件技術將是各類專業(yè)的大專生、本科生和研究生所必備的基礎知識。

課程名稱:

C++面向對象程序設計

面向對象程序設計OOP(Object-OrientedProgramming)是計算機軟件開發(fā)方法的一場革命,目前廣為流行的C++是面向對象程序設計語言的第一個大眾化版本,是當前學習面向對象程序設計方法的首選語言。本課程以最新ANSI(AmericanNationalStandardsInstitute)C++作為準則,以美國Microsoft公司開發(fā)的VisualC++6.0為語言藍本,系統(tǒng)介紹C++的主要語言特征,并用以講述面向對象程序設計技術,使學生具有閱讀和編寫C++程序的能力。為進一步學習完全面向對象、面向計算機網絡的Java語言打下牢固的基礎。

講課學時:32學時,2個學分教材:《面向對象程序設計》 劉正林編《C++習題解答與上機指導》 劉正林、周純杰、劉燁編著

華中科技大學出版社讀者服務部和教材出版科有售

第九章面向對象程序設計概論

1.1面向對象程序設計OOP(Object-OrientedProgramming)的基本思想和有關概念:1.面向對象程序設計的有關概念:

近10年來興起的面向對象程序設計方法是一種新的軟件開發(fā)方法,它是計算機軟件開發(fā)方法的一場革命。對于21世紀的人才,不管從事何種專業(yè),必須具有OOP的基本知識,否則將是不合格人才。近年來,由于高科技的飛速發(fā)展,如智能計算機、多媒體技術、計算機集成制造系統(tǒng)CIMS、人工智能等,迫切要求進一步改進系統(tǒng)的研究方法,特別要求提高計算機軟件的開發(fā)效率和質量。過去所學的各種程序設計語言(包括C語言)都是面向功能的(FunctionOriented),稱為傳統(tǒng)的程序設計語言,使用這類語言來開發(fā)軟件效率很低.首先要求編程者詳細了解所研究對象的具體細節(jié),包括它的功能、外觀、內部結構、各種狀態(tài)和基本原理等.然后再考慮在程序中如何用數據來描述它,還要花費很大精力研究出一些算法,設計出一些函數來操作這些數據,改變它的狀態(tài),并實現(xiàn)各種功能.這就是面向功能的程序定律: 程序=(算法)+(數據結構).所謂“算法”是一個有限條指令的集合,這些指令確定了解決某一特定類型問題的運算序列,它是一個獨立的整體,數據結構(包括數據類型和數據)也是一個整體。兩者分開設計,以算法(函數或過程)為主。

主函數函數1函數3函數3-1函數3-2函數2數據1數據2數據3圖9.1算法與數據結構的關系

隨著實踐經驗的不斷積累,軟件工程師越來越注重把數據結構與算法看作一個獨立功能模塊.程序定律重新認識:

程序=(算法+數據結構).即算法與數據結構是一個不可分割的整體,因為:a.算法總是離不開數據結構,算法是用來訪問數據結構的,所以算法只能適用于特定的數據結構。b.程序設計時,最好使算法與數據結構構成一對一(1:1)的關系。c.若數據結構改變了,必須重新設計算法。

算法2

數據結構3

數據結構1

數據結構2

數據結構4

數據結構

算法1

算法2

只能與一個對應

同一種操作的不同算法實現(xiàn)是多余的圖9.2算法與數據結構應為1:1關系

這種程序設計方法就類似于在硬件領域里,一個技術員安裝一臺電腦,若想給電腦添加一塊“聲卡”,是用原始的集成電路芯片和材料去制作一塊“聲卡”呢,還是向電腦制造廠商選購一塊“聲卡”。前者要求技術員要掌握“聲卡”的基本原理、功能、內部結構、各種狀態(tài)及調試技能等許多具體細節(jié),顯然這是一種效率很低的開發(fā)方法。軟件開發(fā)如果走過去硬件的這條老路,矛盾更突出。

不僅開發(fā)效率難于提高,而且程序代碼的可重用性和軟件的可維護性很差。特別可維護性是軟件產品質量的重要指標之一。因為軟件產品不同于硬件產品,硬件產品一旦開發(fā)成功就是成熟的產品,而軟件產品總是不斷修改、完善,從不成熟逐步走向成熟,要求“可維護性好”是必不可少的。傳統(tǒng)的結構化語言,例如C語言是用函數實現(xiàn)對數據結構的操作,這就是用函數實現(xiàn)算法。如前所述,算法與數據結構應構成一對一的關系,特定的函數往往是操作特定的數據結構。若程序在維修時,數據結構改變了,必須編寫新的操作函數,這對程序的修改、完善極為不利。(1)封裝性和數據隱藏:我們生活在高科技時代的社會里,科技成果是人類共同擁有的財富。人們是在某一程度的細節(jié)中生活,為了充分利用現(xiàn)代科技成果,減少必須處理的事情,根據所要達到的目的進行抽象,即抓住與目的有關的重要信息,忽略掉某些不重要的細節(jié)。例如,人類發(fā)明了電話,它已是人們進行通信的強有力的工具之一。但人類的絕大多數只是以“使用它”作為目的,只需知道它的功能和使用方法就可以使用電話,而不必了解電話是如何實現(xiàn)通話的具體實現(xiàn)細節(jié)。因此電話制造廠商將它們放在電話機殼內隱藏起來,封裝成一個自成一體的電話機,而將一些操作按鍵安裝在機殼上作為人-機操作的接口界面。人們只需操作電話機殼上的操作鍵就可以控制電話機實現(xiàn)與外界的通話。又如電腦制造廠商將“聲卡”做成一塊模板自成一體,這種“自成一體性”稱為“封裝性”(Encapsulation)。技術員關心的是“聲卡”的功能,即只知道是做什么的,而并不關心“聲卡”的工作原理和內部結構,是如何實現(xiàn)這些功能的,即不知道它是如何做的。無需知道封裝單元是如何工作的就能使用的思想稱為“數據隱藏”。當然“數據隱藏”也具有保護的作用,以防止外界的干擾破壞和誤操作,如電話機殼對內部電路具有保護作用,但更重要的是隱藏了很多具體實現(xiàn)細節(jié)。

(2)對象(Object):是面向對象程序設計的核心概念?!皩ο蟆钡母拍畈⒉簧衩?它來源于生活。在現(xiàn)實生活中,其實我們每時每刻都在和對象打交道。例如,一本書、一臺電腦、一部電話機,戴的手表、騎的自行車等,在面向對象程序員的眼中無一例外都看成“對象”。如果把問題抽象一下,會發(fā)現(xiàn)現(xiàn)實生活中的這些對象具有兩個共同特點,第一,它們都有自己的狀態(tài)。例如,一部電話有機型、大小、顏色等。第二它們都具有自己的行為。例如,電話有通話、撥打、掛起等行為。

在面向對象程序設計中,抽象是最基本的原則思想之一。什么是抽象呢?抽象是對現(xiàn)實世界中的實體進行簡化的描述,使它模型化,即抓住編程者所關心的重要信息,而忽略掉一些不重要的細節(jié)部分,這是克服軟件復雜性,將現(xiàn)實世界的模型在計算機中自然地表示出來的最好辦法。因此,人們將對象的狀態(tài)用數據來表示,稱為對象的屬性(attribute/Properties),而對象的行為用對象中的程序代碼來實現(xiàn),稱為對象的方法(method),并將這數據和程序代碼封裝在一個實體內。例如:

structComplex{

doublereal;(C語言中的結構體)

doubleimag;};

classComplex{程序實體private:doublereal,imag;public:voidSet(doubler,doublei){real=r;imag=i;}

...};voidmain(){Complexa,b;//a,b是Complex類的實例變量,即該類的對象a.

Set(4.0,6.0);//用成員函數的調用來實現(xiàn)消息發(fā)送

b.Set(8.0,12.0);//用一條消息可發(fā)向多個對象

...}

因此,對象類是一個“狀態(tài)”和“操作”的封裝體。“狀態(tài)”是由對象的數據結構的內容及其值定義的,方法是一系列的實現(xiàn)步驟,它由若干個“操作”組成的。例如,一個人有很多信息,姓名、年齡、身高、體重、文化程度、身份證號碼等,但最重要的信息是姓名和身份證號碼。這是人的重要屬性。

2.面向對象程序設計的基本思想:面向對象程序設計的基本思想是在程序空間內,對客觀世界中的實體,利用數據抽象的方法進行描述,即將一種數據結構和操作該數據結構的方法捆在一起,封裝在一個程序實體內,從而實現(xiàn)了“數據隱藏”和“封裝性”。即把數據結構隱藏在操作的后面,通過“操作”作為接口界面實現(xiàn)與外部的交流(消息傳遞)。對外部來講,只知道“是做什么的”,而不知道“是如何做的”。

1.2面向對象程序設計的要點:面向對象程序設計語言應支持對象、類和繼承(Inheritance)等要素,其要點為:1.客觀世界是由各種對象(Object)組成,任何事物都是對象,是某個類(Class)的實例(instance)。在程序空間內,類是抽象數據類型(ADTAbstractDatatype)的實現(xiàn)。(1)由于客觀世界是復雜的,人們在處理它們時,為了克服復雜性,常根據不同的目的將客觀事物加以區(qū)別,按照事物的狀態(tài)和特性(屬性)、行為或用途進行分門別類,這就是歸納分類,簡稱“歸類”。這種歸類的結果便是逐步抽象的過程,最終可抽象出具有相同屬性和相同行為的某一類對象。即找到了這一類對象的抽象數據類型ADT。于是在程序空間內,就可以編寫一個類(class)的代碼。例如,對于各種各樣的飛機,今天看見一架波音747,它是一個對象,明天又看到一架圖154,它也是一個對象,如此等等。如果將這一類對象抽取它們的共同特性,便可構造一個類”Airplane”(飛機)。描述飛機的所有共有特性:凡是飛機都能在空中飛行,具有改變飛行方向,控制飛行高度和速度的操作。飛機都具有機名、機型、飛行速度、高度、方向等數據,用來描述飛機的結構特性和狀態(tài)等。而每架具體的飛機自然可作為這種類”Airplane”的一個實例。所以該類的抽象數據類型ADT為: 飛機的屬性

飛機的操作(方法)

機名

改變飛行高度

機型

改變飛行方向

飛行高度

改變飛行速度

飛行方向

飛行速度

(2)什么是類:類是面向對象程序設計封裝的基本單元,它被當作一個樣板,用來生產該類的所有對象,就象將“類”比如成“餅干模具”,用來生產“餅干”之類的“對象”一樣。因此一個類的所有對象都具有相同的數據結構,并且共享實現(xiàn)操作的程序代碼。這就是說,在創(chuàng)建一個新對象時,該對象具有“類”定義中所描述的相同數據結構和操作它們的方法所對應的程序代碼。而不必對每個新創(chuàng)建對象的操作代碼和數據結構重新編寫一次,從而大大減輕了編程者的勞動強度。再加上無數軟件技術人員對OOP語言系統(tǒng)完成了標準類庫的設計工作,形成了“應用程序框架”(ApplicationFramework)機制,為面向對象應用程序設計提供了有力的支持。例如VisualC++已為OOP應用程序的編程者提供了MFC(MicrosoftFoundationClass)標準類庫和ATL(ActiveTemplateLibrary)活動模板類庫作為“應用程序框架”。已為編程者預先定義了許多象窗體、按紐、滾動條和對話框等對象的標準類。當編程者需要這些類的對象時,例如要創(chuàng)建一個新的窗體,只需用窗體類創(chuàng)建一個實例即可。

既然現(xiàn)實世界是由各種對象組成,任何對象都具有一定的屬性與操作,也就總能用數據結構和算法(操作該數據結構的方法)兩者合一地加以描述。這樣前述程序定律就變成: 對象=(算法+數據結構) 程序=(對象1+對象2+...)即程序就是許多對象在計算機中相繼表現(xiàn)自己,而對象又是一個個程序實體。人們不再靜止地去看待數據結構了,而把它看成是一個程序單位,一個程序分子或者一個對象的象征。它本身又包含有算法和數據結構,即“對象”,如圖1.3所示。

數據結構

算法+數據結構

算法+數據結構

算法

對象

算法+數據結構

算法+數據結構

算法+數據結構

算法+數據結構

圖1.3構成程序的對象

2.OOP采用消息(message)傳遞機制作為對象之間相互通信和作用的唯一方式。傳統(tǒng)的結構化程序設計方法強調功能抽象和模塊性,正如圖1.4所示,每個模塊都是一個過程,其輸入與輸出對應著處理過程前、后的數據。因此結構化程序設計方法將解題過程看作一系列的處理過程。由編程者編寫調用“過程”的程序,對于相同的輸入數據經“過程”處理后,每次輸出結果都相同的,編程繁瑣,使用不靈活。數據1數據2參數

f2()返回值

過程2參數

f1()返回值

數據3

數據5

過程1數據4

參數

f3()返回值

過程3圖1.4傳統(tǒng)的結構化方法

對象與傳統(tǒng)的結構化程序設計方法中所說的數據有本質區(qū)別,對象本身具有很強的獨立性,它不象結構化程序設計方法中的數據被動地等待對它執(zhí)行某種操作。而是操作處理的主體,必須發(fā)消息(message)請求對象執(zhí)行它的某個(算法)操作,正如圖1.5所示,(算法)操作不是獨立存在的實體,而是隸屬于對象的,是對象的功能體現(xiàn)。其中MF1(MethodFunction,方法函數),...,MF4是隸屬于對象的方法函數。每當需要改變對象的狀態(tài)時,只能向對象發(fā)送消息來處理對象,消息帶來了執(zhí)行該操作的詳細信息。C++是利用成員函數調用來實現(xiàn)消息發(fā)送。在成員函數體內,處理對象的數據改變其狀態(tài),對象收到消息后,按消息提供的詳細信息(包括目標對象、所請求的操作方法和參數)激活本對象內相匹配的操作(成員函數),并執(zhí)行該操作,返回所需要的結果,以響應這條消息。并且,同一條消息可同時發(fā)至多個對象,并允許這些對象按照自身的狀態(tài)加以響應。因此與過程調用不同,同樣的輸入數據,可能因對象的狀態(tài)不同而產生不同的輸出結果。對人彈琴,對牛彈琴,情況各異。圖1.5面向對象方法

消息2MF1MF1MF4對象1MF2MF4對象2MF2MF3MF3消息13.對象類將按照“父類”(或稱基類),“子類”(或稱派生類)的關系構成一個層次結構的系統(tǒng)。稱為“類層次結構”。在這種“類層次結構”中,上層對象類所具有的屬性和方法全部被下層對象類自動繼承。因此,越在上層的類越具有普遍性和共性,越在下層的類越細化,越具體和專門化。(1)繼承將客觀世界中一般和特殊的關系模型化成層次結構。...

...

工人學生教師農民小學生中學生大學生研究生助教講師教授圖1.6“人”的類層次結構圖

例如圖1.6所示,小學生、中學生、大學生和研究生可歸納為“學生”,教授、講師、助教可歸納為“教師”,學生、工人、教師、農民、...又可進一步用“人”加以概括,從而形成了類層次結構,一個類的上層可以有父類,下層可以有子類。例如:最上層的對象類“人”是“學生”類的基類而“學生”又派生出“小學生”、“中學生”、“大學生”、“研究生”等派生類。

在一個“類層次結構”中,每個類只允許一個基類時,類的繼承是單繼承,即類的層次結構為樹結構。最上層的“人”為根結點,最下層的“小學生”、“中學生”、“大學生”、...等為葉結點,除根結點外,每個類都有它的基類,除了葉結點外,每個類都有它的派生類。一個派生類可以從它的基類那里繼承所有的數據和操作,并擴充自己的特殊數據及其操作?;惓橄蟪龉餐奶卣?,派生類表達差別。當允許一個類有多個基類時,類的繼承是多重繼承。圖1.6中“研究生”子類中,既攻讀學位又從事教師工作時,就出現(xiàn)了既屬于學生又屬于教師的情況。ANSIC++

支持多重繼承,因此功能更強,使用更方便。

人身份證號碼:字符串(18位)姓名:字符串(20位)學生學校名稱:字符串(30位)

學號:字符串(12位)

研究生

專業(yè):字符串(30位)

入學年月日:結構類型Date

實例:研究生王平作為“人”

身份證號碼:420106740112520

姓名:王平

專業(yè):工業(yè)自動化

學校名稱:中國華中理工大學

學號:59613022

作為“研究生”

入學年月日:1/9/1999

作為“學生”

圖1.7類的繼承

(2)通過繼承增強程序代碼的可重用性(reusable),代碼的重用是利用繼承基類的屬性和方法來實現(xiàn)的。例如,由于研究生是學生的派生類,而學生又是人的派生類。因此,對于任一位研究生都應具有本類的屬性:“專業(yè)”和“入學年月日”,還應當繼承學生的屬性:“學校名稱”和“學號”,進而向上還應該繼承人的屬性:“身份證號碼”和“姓名”。(3)在創(chuàng)建新的派生類時,只要指明新派生類是以哪一個已存在的類作為基類派生而來,就可自動繼承基類的全部屬性和方法。即新派生類只需定義新增加的屬性和方法,不必再重復定義基類已有的屬性和方法,減少了程序的冗余信息,節(jié)省了存儲空間。如圖1.7所示,在創(chuàng)建新的派生類例如學生時,只要指明新派生類是以“人”作為基類派生而來,就可自動繼承基類“人”的全部屬性和方法。即新派生類“學生”不必再重寫一遍基類“人”中的“身份證號碼”和“姓名”的程序代碼,只需寫出新增加的“學校名稱”和“學號”等。同樣只要指明研究生是學生的派生類,它自動繼承了“身份證號碼”、“姓名”、

“學校名稱”、“學號”等。減少了程序的冗余信息,節(jié)省了存儲空間。

(4)修改和擴充程序時也不必修改原有的程序代碼,只需增加一些新的代碼,因而也無需知道原有的程序模塊是如何實現(xiàn)的,從而極大地減少了軟件的維護工作量,這是實現(xiàn)軟件重用的重要機制。

類的層次結構和繼承性使得相似的對象可以共享程序代碼的數據,不同對象的共有特性只需定義一次。從而大大減少了程序中的冗余信息。在創(chuàng)建新的派生類時,只要聲明新的派生類以哪一個已存在的類作為基類,就可自動繼承基類的全部特性,即新派生類不必再重定義基類已有的性質,減少程序的冗余信息,節(jié)省存儲空間。同時使得用戶在編寫程序時不必從零開始,可繼承原有程序模塊的功能。修改和擴充程序時也不必修改原有的程序代碼,只需增加一些新的代碼,因而無須知道原有的程序模塊是怎樣實現(xiàn)的,從而極大地減少了軟件維護工作量,這是實現(xiàn)軟件重用的重要機制。在軟件開發(fā)過程中,編程人員一次又一次地重復編制一些基本模式:分類,搜索,讀寫,分配,同步,比較......但這些事情并不是每次都一模一樣的,有非常多的細節(jié)需要變化,因此軟件工程師大多情況下是這樣做的,時時不斷地在同一主題上,精心雕琢著一個個新的變種。

4.面向對象和軟件“IC"(IntegratedCircuits)a.軟件IC的概念。在軟件工程中要提高軟件的生產率就應當走類似硬件的道路,應該有軟件的“集成電路”(稱軟件IC)。因此,必須尋找一種能夠比較容易地將正確成熟的軟件單元應用于新的軟件系統(tǒng)中的技術。最好有一種集成機制,將已經成熟的軟件單元制成一個相對獨立的實體,使它們可以不加改動或很少改動就可以應用于新的軟件系統(tǒng)中。只有這樣生產軟件才可望減少重復勞動,提高生產率?!败浖蘒C”的概念就是基于這一思想的一種軟件集成機制?!败浖蘒C"是一種可重用模塊。具有如下特征:(1)模塊性好,獨立性強,可靠性高。一個“軟件IC"是用于構造新軟件系統(tǒng)的基本單位,應是可以獨立存在的實體,它應當不受或少受外界的影響,以便自由地為各個不同的軟件系統(tǒng)所用。(2)封裝功能,連接簡單,使用方便,作為集成機制,“軟件IC"必須將集成的功能封裝起來,使用者不必搞清楚它的內部細節(jié),便能方便地連接,安全地用于新的軟件,提高了軟件的生產率。(3)內部功能的高效實現(xiàn)和清晰,簡明的說明。"軟件IC"是可重用的,內部代碼實現(xiàn)的高效與否,直接影響到軟件系統(tǒng)的性能。作為產品交給用戶,它應當具有類似于硬件集成插件的功能及各項指標的說明,以便使用戶可以根據需要選擇合適的“軟件IC”。

在面向對象語言中,對象類充當了系統(tǒng)構造的單元,支持“軟件IC”技術。這是因為:(1)類是一類對象的統(tǒng)一模板;它具有很強的模塊性。類的功能代碼實現(xiàn)只通過外部接口與外界聯(lián)系,具有很強的獨立性,其可靠性表現(xiàn)在一個類的出錯不會傳播到其它類中,一個系統(tǒng)的類如果出錯了,可以將其刪除,作為一個降級的的系統(tǒng)使用,而不會使整個系統(tǒng)癱瘓。(2)類是對象一級的抽象,它將一類對象的數據結構的描述和其功能封裝起來,使得外界不必清楚其內部實現(xiàn)細節(jié),只要從它的說明中了解其基本功能,就可以使用它。(3)類之間的連接有繼承性描述和一組外協(xié)消息,因而清晰,明了。

因此,面向對象方法實際上是當前軟件開發(fā)中最接近問題的一種方法。它產生一種與現(xiàn)實世界具有自然關系的軟件系統(tǒng),是軟件開發(fā)的一場革命。但面向對象的研究還不成熟。我們不能指望在許多領域馬上有類似上述“軟件IC"的產品出售,但在一個開發(fā)小組,或一個開發(fā)項目中自覺地“按對象方式思維(thinkinglikeanobject)”,采用面向對象的思想開發(fā)和組織軟件系統(tǒng)是很有必要的。

1.3常用的C++產品

C++這種可靠、理想的語言雖然樸實無華,但卻始終是建立快速、可靠windows應用程序的捷徑,而且,因為采用新的應用程序框架,大大地提高了編程效率,因此它是倍受用戶青睞的面向對象程序設計語言第一個大眾化版本。

1.應用程序框架:是C++產品所提供的一個開發(fā)工具,有了它可以大大減少編寫代碼的工作量,它為編程者提供了極好的“拿來即用”的能力,充分體現(xiàn)了OOP的代碼的可重用性。

OOP是軟件開發(fā)領域的一次革命,它把事物分解成一個個的模塊,就象是一個個集成電路塊,每個模塊完成一定的功能,只要各個模塊是現(xiàn)成的,象集成電路塊是一塊塊標準的芯片,我們就可以用它組合成一個新的應用軟件,windows系統(tǒng)(windows3.1+DOSV6.22,windows95,WindowsNT)為微機提供了一個先進的OS,界面漂亮,使用方便,功能強大。但在Windows環(huán)境下編寫應用程序的開發(fā)方法與DOS的應用程序有很大的差別。Windows是采用OOP的程序設計方法來設計的。只有采用這種方法設計才能和Windows系統(tǒng)保持一致。發(fā)揮Windows的優(yōu)勢,但它的程序設計思想在概念和結構上與DOS的應用程序有本質的區(qū)別,C++的產品理應提供一種開發(fā)工具,以確保開發(fā)的高質量和高效率。

BorlandC++采用一種新的應用程序機制,即應用程序框架稱為對象窗口庫(ObjectWindowsLibrary)簡稱OWL。它在Windows下以圖形方式運行,OWL由于對應用程序代碼隱藏了許多底細,消除了許多Windows應用程序開發(fā)中的繁瑣工作。從而大大簡化了Windows應用程序的編寫過程。比如,Windows把窗口作為一標準窗口類,在自行編寫的應用程序中自然要借用它來描述窗口的行為。雖然OWL提供了極其豐富的標準類庫,但它不能把所有的問題全部包括在內,比如在一個應用程序中需要一個特殊形狀的按鈕,我們就不能直接利用OWL提供的標準類。而需要自行定義一個按鈕類的派生類,在派生類中把特殊的需要加進去,特別在開發(fā)復雜程序的過程中。其思路必須使用“框架”的概念,利用OWL可以替編程者開發(fā)的應用程序創(chuàng)建合適的框架,并附有大量的插座,允許插入指明應用程序“做什么”的代碼段。如圖所示,已有現(xiàn)存的標準模塊A、B,類似于硬件的標準芯片。OWL應用程序框架可提供大量的插座,插座A、B指明模塊A、B“做什么”,正如同硬件一樣構成一個新的應用程序。而編程者不能了解模塊A和B,“怎么做”的具體細節(jié),也不必掌握太多的框架知識,就能象用現(xiàn)成的集成電路標準芯片組合成一個新的機器。微軟公司VisualC++提供的應用程序框架是微軟基類數據庫MicrosoftFoundationClasses.簡稱MFC,它已成為所有應用程序開發(fā)的標準。

SymantecC++通過設置編譯器和鏈接

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論