![3面向?qū)ο蟪绦蛟O(shè)計(jì)概述_第1頁](http://file4.renrendoc.com/view14/M00/16/1B/wKhkGWdzHBCARaC1AAFpvwQSUkQ147.jpg)
![3面向?qū)ο蟪绦蛟O(shè)計(jì)概述_第2頁](http://file4.renrendoc.com/view14/M00/16/1B/wKhkGWdzHBCARaC1AAFpvwQSUkQ1472.jpg)
![3面向?qū)ο蟪绦蛟O(shè)計(jì)概述_第3頁](http://file4.renrendoc.com/view14/M00/16/1B/wKhkGWdzHBCARaC1AAFpvwQSUkQ1473.jpg)
![3面向?qū)ο蟪绦蛟O(shè)計(jì)概述_第4頁](http://file4.renrendoc.com/view14/M00/16/1B/wKhkGWdzHBCARaC1AAFpvwQSUkQ1474.jpg)
![3面向?qū)ο蟪绦蛟O(shè)計(jì)概述_第5頁](http://file4.renrendoc.com/view14/M00/16/1B/wKhkGWdzHBCARaC1AAFpvwQSUkQ1475.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第3章面向?qū)ο蟪绦蛟O(shè)計(jì)概述3.1類與對(duì)象3.2消息和方法3.3什么是面向?qū)ο蟪绦蛟O(shè)計(jì)3.4數(shù)據(jù)抽象3.5封裝性和信息隱藏3.6繼承性與軟件重用3.7多態(tài)性3.8面向?qū)ο蟮某绦蛟O(shè)計(jì)語言3.9面向?qū)ο蟮能浖こ?.1類與對(duì)象3.1.1對(duì)象3.1.2類3.1.3對(duì)象與類的關(guān)系對(duì)象什么是對(duì)象(object)?現(xiàn)實(shí)世界中的任何一個(gè)事物都可以看成是一個(gè)對(duì)象。自然的實(shí)體:一個(gè)人,一輛汽車,一個(gè)教師抽象的邏輯結(jié)構(gòu):一個(gè)銀行帳號(hào),一個(gè)學(xué)生的學(xué)籍檔案一條客戶通信錄對(duì)象的廣義定義和特性對(duì)象是人們要研究的任何事物,其特性是:1、每一個(gè)對(duì)象必須有一個(gè)名字以區(qū)別于其它對(duì)象;2、用屬性(或叫狀態(tài))來描述它的某些特征;3、有一組操作,每一個(gè)操作決定對(duì)象的一種行為。舉例例如,教師張三是一個(gè)對(duì)象。對(duì)象名是:張三對(duì)象的屬性:職稱:副教授;學(xué)位:博士;專業(yè):微生物;出生日期:1963年10月1日;對(duì)象的操作:授課;做實(shí)驗(yàn);報(bào)出自己的名字;面向?qū)ο蟮南到y(tǒng)中的對(duì)象對(duì)象是基本的運(yùn)行時(shí)實(shí)體,它既包含數(shù)據(jù)(屬性),也包括作用于數(shù)據(jù)的操作(行為)。一個(gè)對(duì)象把屬性和行為封裝成一個(gè)整體。從程序設(shè)計(jì)者來看,對(duì)象是一個(gè)程序模塊;從用戶來看,對(duì)象為他們提供了所希望的行為。例如,圖形用戶界面上的一個(gè)按鈕或一個(gè)文本框就是一個(gè)對(duì)象。什么是類?人類水果類魚類“類”是對(duì)一組具有共同屬性特征和行為特征的對(duì)象的抽象。什么是類?在C++語言中,一個(gè)類是一個(gè)新的數(shù)據(jù)類型。在新的數(shù)據(jù)類型中,既包含數(shù)據(jù)又包含對(duì)數(shù)據(jù)的操作。一個(gè)類所包含的操作和數(shù)據(jù)描述一組對(duì)象的共同行為和屬性。OOP中類的例子classStudent{
intnumber; char*name; floatscore;public:
Student(intnumber1,char*name1,floatscore1); ~Student(); voidmodify(floatscore1); voidprint();};屬性操作
類的確定和劃分
類的確定與劃分非常重要,是軟件開發(fā)中的關(guān)鍵環(huán)節(jié),科學(xué)合理地劃分將有效提高程序質(zhì)量和代碼的可重用性?;驹瓌t
將系統(tǒng)中具有共性的部分確定為一個(gè)類。分類所依據(jù)的基本原則是抽象,即忽略事物的非本質(zhì)特征,只注意那些與當(dāng)前目標(biāo)有關(guān)的本質(zhì)特征,從而找出同類事物的共性,把具有共同性質(zhì)的事物劃分為一類。類的確定和劃分另外,還要知道什么事物不能被劃分為類。不能把一組函數(shù)組合在一起構(gòu)成類,也就是說,不能把面向過程的若干個(gè)函數(shù)簡(jiǎn)單組合變成類,類不是函數(shù)的集合。對(duì)象與類的關(guān)系類是對(duì)一組性質(zhì)相同的對(duì)象的描述。對(duì)象則是類的具體化,是類的實(shí)例。例如:“學(xué)生”是一個(gè)類,是對(duì)所有學(xué)生個(gè)體的共同特征的描述,張三、李四等學(xué)生個(gè)體則是學(xué)生類的實(shí)例。第3章面向?qū)ο蟪绦蛟O(shè)計(jì)概述3.1類與對(duì)象3.2消息和方法3.3什么是面向?qū)ο蟪绦蛟O(shè)計(jì)3.4數(shù)據(jù)抽象3.5封裝性和信息隱藏3.6繼承性與軟件重用3.7多態(tài)性3.8面向?qū)ο蟮某绦蛟O(shè)計(jì)語言3.9面向?qū)ο蟮能浖こ滔essage對(duì)象之間通過消息進(jìn)行交互。消息是要求某個(gè)對(duì)象執(zhí)行某個(gè)功能操作的規(guī)格說明。OOP中的一條消息由消息名(“消息操作”或“消息選擇器”)及若干個(gè)參數(shù)和接受消息的對(duì)象三部分組成,例如:Studentstudent1;student1.modify(score1);消息的例子接受消息的對(duì)象參數(shù)↓↓student1.modify(score1);
↑
消息名消息的性質(zhì)同一對(duì)象可接收不同形式的多個(gè)消息,產(chǎn)生的響應(yīng)各不相同;相同形式的消息可以送給不同的對(duì)象,產(chǎn)生的響應(yīng)各不相同;一個(gè)對(duì)象可以立即響應(yīng)發(fā)送給它的消息,也可以暫時(shí)不響應(yīng)消息。消息的分類:要求返回對(duì)象內(nèi)部屬性(狀態(tài))的消息;要求改變對(duì)象內(nèi)部屬性(狀態(tài))的消息;要求改變系統(tǒng)狀態(tài)的消息,或產(chǎn)生特定結(jié)果的消息。
面向?qū)ο筌浖到y(tǒng)中,程序的執(zhí)行取決于事件發(fā)生的順序,完全由所產(chǎn)生的消息來驅(qū)動(dòng)程序的執(zhí)行,無須預(yù)先確定消息產(chǎn)生的順序,因而更符合客觀世界的實(shí)際情況。發(fā)送消息與函數(shù)調(diào)用的比較1)消息中必須包含接收消息的對(duì)象,而一般的函數(shù)調(diào)用不需要指明對(duì)象。2) 消息名告訴對(duì)象應(yīng)做些什么,類似于函數(shù)名,但二者之間的本質(zhì)差別在于:函數(shù)名僅僅代表一段可執(zhí)行的代碼,其功能是固定的;而消息名對(duì)應(yīng)的具體功能的實(shí)現(xiàn)取決于所接收消息的對(duì)象。盡管消息名相同,如果接收消息的對(duì)象不同,可能有不同的響應(yīng)。方法(method)“方法”對(duì)應(yīng)于對(duì)象的行為(能力),它是實(shí)現(xiàn)對(duì)象所具有的功能操作的代碼段。在C++程序中,方法即是類中定義的成員函數(shù),它是該類對(duì)象所能執(zhí)行的操作的算法實(shí)現(xiàn)。通常每個(gè)類中包含多個(gè)方法(即成員函數(shù)),每個(gè)方法由方法名(函數(shù)名+參數(shù)表)和說明該成員函數(shù)的算法實(shí)現(xiàn)的一段代碼所組成。方法的例子voidStudent::print(){
cout<<”number:”<<number<<”name:”<<name<<”score:”<<score<<’\n’;}消息通過調(diào)用對(duì)象的方法來完成其功能,例如:student1.print();第3章面向?qū)ο蟪绦蛟O(shè)計(jì)概述3.1類與對(duì)象3.2消息和方法3.3什么是面向?qū)ο蟪绦蛟O(shè)計(jì)3.4數(shù)據(jù)抽象3.5封裝性和信息隱藏3.6繼承性與軟件重用3.7多態(tài)性3.8面向?qū)ο蟮某绦蛟O(shè)計(jì)語言3.9面向?qū)ο蟮能浖こ坛绦蛟O(shè)計(jì)方法的發(fā)展過程1946~1957:面向機(jī)器的程序設(shè)計(jì)1957~1972:面向過程的程序設(shè)計(jì)1968~1990:面向過程的結(jié)構(gòu)化程序設(shè)計(jì)1984~今:面向?qū)ο蟮某绦蛟O(shè)計(jì)程序設(shè)計(jì)方法的發(fā)展過程(續(xù))1990~今:面向組件的程序設(shè)計(jì)(component-orientedprogramming,COP,例如DCOM,CORBA,andJavaBeans)1994~今:面向服務(wù)的程序設(shè)計(jì)(serviceorientationprogramming)COP大型軟件系統(tǒng)是由許多組件(Component)構(gòu)成的,每個(gè)組件實(shí)現(xiàn)一組功能,對(duì)外提供一組服務(wù)接口。組件的粒度可大可小,可以只包含一個(gè)類,也可以由多個(gè)類組成。組件通常運(yùn)行在容器中,容器負(fù)責(zé)組件的初始化、配置和銷毀等。組件符合一定的通用規(guī)范,例如EJB,DCOM,CORBA。面向服務(wù)的程序設(shè)計(jì)軟件由一組可互操作的服務(wù)組合而成。這些服務(wù)既可以靈活組合在一起,也可以單獨(dú)運(yùn)行。服務(wù)之間通過定義良好的接口和契約聯(lián)系起來。接口是采用中立的方式進(jìn)行定義的,它應(yīng)該獨(dú)立于實(shí)現(xiàn)服務(wù)的操作系統(tǒng)和編程語言。服務(wù)的使用者通常使用一種代理機(jī)制來找到服務(wù)提供者,因此它們之間是松耦合的。面向服務(wù)的程序設(shè)計(jì)主要是考慮如何把服務(wù)拆分開發(fā),如何把服務(wù)組合運(yùn)行。選擇目的地:天氣預(yù)報(bào):匯率:飛機(jī)票價(jià):雨Redmond$1.56$1,999.98Northwind
商務(wù)旅游網(wǎng)XMLWebService應(yīng)用案例Internet天氣預(yù)報(bào)
XMLWebService匯率XMLWebService飛機(jī)票價(jià)數(shù)據(jù)庫(kù)飛機(jī)票價(jià)XMLWebService結(jié)構(gòu)化程序設(shè)計(jì)的基本思想按功能劃分模塊,分而治之。分解系統(tǒng)時(shí)按照自頂向下的順序,逐步求精。設(shè)計(jì)時(shí)使各模塊間的關(guān)系盡可能簡(jiǎn)單,功能上相對(duì)獨(dú)立,從而可單獨(dú)驗(yàn)證模塊的正確性。
結(jié)構(gòu)化程序的組成
主控模塊功能模塊1功能模塊7功能模塊2功能模塊3功能模塊6功能模塊5功能模塊4圖3.3結(jié)構(gòu)化程序的組成結(jié)構(gòu)化程序設(shè)計(jì)方法的基本特點(diǎn)把數(shù)據(jù)結(jié)構(gòu)和處理數(shù)據(jù)的操作過程分離為相互獨(dú)立的實(shí)體。用數(shù)據(jù)表達(dá)實(shí)際問題中的信息;程序代碼則實(shí)現(xiàn)用于處理加工這些數(shù)據(jù)的算法。簡(jiǎn)而言之,就是數(shù)據(jù)和操作代碼分離。
數(shù)據(jù)和操作代碼分離產(chǎn)生的問題給程序員增加了負(fù)擔(dān):必須確保數(shù)據(jù)和代碼匹配。當(dāng)數(shù)據(jù)結(jié)構(gòu)改變時(shí),所有相關(guān)的處理過程都要進(jìn)行相應(yīng)的修改。可維護(hù)性差。沒有數(shù)據(jù)保護(hù)機(jī)制,所以在程序中常常由于某些數(shù)據(jù)被無意中修改而造成一些十分隱蔽的錯(cuò)誤。面向?qū)ο蟪绦蛟O(shè)計(jì)用程序中的對(duì)象直接模擬現(xiàn)實(shí)世界中的對(duì)象,將問題空間直接映射到軟件空間。從而設(shè)計(jì)出盡可能直接、自然地表示問題求解方法的軟件。它把求解問題中客觀存在的事物看作各自不同的對(duì)象,再把具有相同特性的一些對(duì)象歸屬為一個(gè)類。面向?qū)ο蟮倪@種設(shè)計(jì)方式符合人類的自然思維習(xí)慣,使我們能夠在程序中自然地描述現(xiàn)實(shí)世界的實(shí)體和問題,增強(qiáng)了程序代碼的可讀性,有利于控制軟件的復(fù)雜性。模塊化將一個(gè)復(fù)雜的大規(guī)模軟件系統(tǒng)劃分成若干個(gè)規(guī)模較小、相對(duì)簡(jiǎn)單的模塊,即分而治之。面向?qū)ο蟪绦蛟O(shè)計(jì)方法是按對(duì)象來劃分,對(duì)象是基本的軟件模塊。面向?qū)ο蟮能浖到y(tǒng)由對(duì)象組成,對(duì)象之間通過消息傳遞互相聯(lián)系。面向?qū)ο蟮能浖到y(tǒng)的組成
對(duì)象1對(duì)象2對(duì)象3對(duì)象4圖中箭頭表示對(duì)象之間的消息傳遞對(duì)象作為程序模塊對(duì)象是由數(shù)據(jù)和對(duì)數(shù)據(jù)的操作(代碼)形成的一個(gè)整體。對(duì)象具有封裝性,使對(duì)象的內(nèi)部實(shí)現(xiàn)與外界隔離,實(shí)現(xiàn)了信息隱藏,從而提供了更理想的模塊化機(jī)制,顯著地減少了程序模塊間的相互干擾和依賴性。每一個(gè)模塊都是高度獨(dú)立的對(duì)象,使模塊間的關(guān)系更為簡(jiǎn)潔清晰,有效降低了系統(tǒng)的復(fù)雜性,有利于大型復(fù)雜軟件的開發(fā)。數(shù)據(jù)抽象技術(shù)
面向?qū)ο蟪绦蛟O(shè)計(jì)采用數(shù)據(jù)抽象技術(shù),將具有相同特征的對(duì)象抽象成一個(gè)新的抽象數(shù)據(jù)類型——類。并且考慮不同對(duì)象之間的聯(lián)系,引入了類之間的繼承機(jī)制,為我們提供了十分理想的可重用性的軟件成分。面向?qū)ο蟪绦虻闹饕Y(jié)構(gòu)特點(diǎn)是:第一,程序一般由類的定義和類的使用兩部分組成,在主程序中定義各對(duì)象并規(guī)定它們之間傳遞消息的規(guī)律;第二,程序中的一切操作都是通過向?qū)ο蟀l(fā)送消息來實(shí)現(xiàn)的,對(duì)象接收到消息后,啟動(dòng)有關(guān)方法完成相應(yīng)的操作。第3章面向?qū)ο蟪绦蛟O(shè)計(jì)概述3.1類與對(duì)象3.2消息和方法3.3什么是面向?qū)ο蟪绦蛟O(shè)計(jì)3.4數(shù)據(jù)抽象3.5封裝性和信息隱藏3.6繼承性與軟件重用3.7多態(tài)性3.8面向?qū)ο蟮某绦蛟O(shè)計(jì)語言3.9面向?qū)ο蟮能浖こ?抽象(Abstract)
抽象是指從具體的例子中抽出共同的性質(zhì),強(qiáng)調(diào)與目標(biāo)系統(tǒng)有關(guān)的某些本質(zhì)特性,忽略與目標(biāo)無關(guān)的非本質(zhì)特征,進(jìn)行簡(jiǎn)化描述的過程。簡(jiǎn)單的說就是對(duì)實(shí)例進(jìn)行分析,抽取出共同性質(zhì)。抽象包括兩個(gè)方面:數(shù)據(jù)抽象(對(duì)象屬性的描述)行為抽象(對(duì)象行為的描述)例:
學(xué)生對(duì)象的屬性和行為抽象性的例子classstudent{
intnumber; char*name; floatscore;public: student(intnumber1,char*name1,floatscore1); ~student(); voidmodify(floatscore1); voidprint();};抽象是有選擇地忽略。抽象性(Abstraction)抽象是對(duì)復(fù)雜的現(xiàn)實(shí)世界的簡(jiǎn)明的表示。抽象強(qiáng)調(diào)了我們所關(guān)心的(感興趣)的信息,而將我們不關(guān)心的其他信息忽略。通過抽象,可形成抽象數(shù)據(jù)類型。抽象數(shù)據(jù)類型一個(gè)值集和作用在值集上的操作集
C++語言中的一個(gè)類就是一個(gè)抽象數(shù)據(jù)類型每個(gè)抽象數(shù)據(jù)類型自成一個(gè)模塊,模塊的接口和內(nèi)部實(shí)現(xiàn)分離開來,使用模塊的應(yīng)用程序員只需要知道如何使用該模塊,而不必知道模塊內(nèi)部是如何實(shí)現(xiàn)的,也就是說,可以忽略模塊內(nèi)部的實(shí)現(xiàn)細(xì)節(jié)。這樣就降低了軟件開發(fā)的復(fù)雜性。
第3章面向?qū)ο蟪绦蛟O(shè)計(jì)概述3.1類與對(duì)象3.2消息和方法3.3什么是面向?qū)ο蟪绦蛟O(shè)計(jì)3.4數(shù)據(jù)抽象3.5封裝性和信息隱藏3.6繼承性與軟件重用3.7多態(tài)性3.8面向?qū)ο蟮某绦蛟O(shè)計(jì)語言3.9面向?qū)ο蟮能浖こ?.5封裝性和信息隱藏所謂封裝(encapsulation)
,就是包含和隱藏對(duì)象信息,如內(nèi)部數(shù)據(jù)結(jié)構(gòu)和代碼的能力。在面向?qū)ο蟮某绦蛑?,?duì)象是支持封裝的元素。對(duì)象把一個(gè)實(shí)體的屬性和行為封裝成一個(gè)整體。從外部只能看到它提供的接口,而看不到其內(nèi)部的實(shí)現(xiàn)細(xì)節(jié)。類的封裝性類成員的存取權(quán)限分為:
private(私有的)protected(受保護(hù)的)public(公有的)private和protected的成員構(gòu)成了類的私有部分,實(shí)現(xiàn)了封裝。public的成員構(gòu)成了類的接口。信息隱藏(informationhiding)
信息隱藏(InformationHiding)的含義:有效的模塊化可以通過定義一組獨(dú)立模塊來實(shí)現(xiàn),這些模塊相互之間只交流軟件功能必需的信息。換句話說:
模塊所包含的信息,不允許其它不需要這些信息的模塊訪問,獨(dú)立的模塊間僅僅交換為完成系統(tǒng)功能而必須交換的信息。封裝的好處封裝性降低了程序設(shè)計(jì)的復(fù)雜度。
封裝將操作對(duì)象的內(nèi)部復(fù)雜性與應(yīng)用程序的其他部分隔離開來。應(yīng)用程序員只需要通過對(duì)象的接口來操作對(duì)象完成特定的任務(wù),而不需要知道對(duì)象內(nèi)部復(fù)雜的細(xì)節(jié)。
封裝的好處(續(xù))提高了代碼的安全性和可靠性;外部代碼不能訪問對(duì)象內(nèi)部的私有數(shù)據(jù),避免了對(duì)這些數(shù)據(jù)的非法操作。通過類實(shí)現(xiàn)封裝,集中和統(tǒng)一了對(duì)類中數(shù)據(jù)成員的所有操作,從而可避免因分散操作造成的錯(cuò)誤。封裝的好處(續(xù))能有效提高軟件的可維護(hù)性;由于封裝,對(duì)象作為一個(gè)程序模塊,其內(nèi)部狀態(tài)不受外界干擾,也不會(huì)影響其它模塊。即模塊獨(dú)立性強(qiáng),模塊間依賴性極小或者沒有。這樣,當(dāng)修改軟件模塊時(shí),大部分改動(dòng)將局限在模塊內(nèi)部,不影響軟件的其他部分。同時(shí),還可以大大縮短我們查找程序錯(cuò)誤的時(shí)間。封裝的好處(續(xù))封裝也改善了程序模塊可重用性。封裝隱藏了模塊內(nèi)部的復(fù)雜性,提供給使用者一個(gè)簡(jiǎn)單的接口。使得重用一個(gè)模塊變成一件相當(dāng)容易的事情。面向?qū)ο蟪绦蛟O(shè)計(jì)的主要特征抽象性封裝性繼承性多態(tài)性第3章面向?qū)ο蟪绦蛟O(shè)計(jì)概述3.1類與對(duì)象3.2消息和方法3.3什么是面向?qū)ο蟪绦蛟O(shè)計(jì)3.4數(shù)據(jù)抽象3.5封裝性和信息隱藏3.6繼承性與軟件重用3.7多態(tài)性3.8面向?qū)ο蟮某绦蛟O(shè)計(jì)語言3.9面向?qū)ο蟮能浖こ?.6繼承性與軟件重用繼承性是面向?qū)ο蟪绦蛟O(shè)計(jì)的主要特征之一,繼承的目的就是為了重用(reuse)。
繼承,就是在一個(gè)已有的類的基礎(chǔ)上創(chuàng)建一個(gè)新類
,這個(gè)新類獲得了已有類的數(shù)據(jù)和操作代碼,并且新類可以增加新的數(shù)據(jù)和操作代碼。
繼承與派生問題舉例繼承繼承與派生的目的繼承實(shí)現(xiàn)了對(duì)父類的代碼重用,同時(shí)子類可以擴(kuò)充新的屬性和功能,解決新的問題。繼承的好處(1)繼承性很好地實(shí)現(xiàn)了代碼的重用。(2)能改進(jìn)軟件系統(tǒng)的可維護(hù)性。C++中類的繼承層次自然地表達(dá)了人們分析問題時(shí)所用的分類結(jié)構(gòu)。大大改善了軟件系統(tǒng)的可理解性和可維護(hù)性。
(3)繼承性使已有的程序庫(kù)具有清晰的層次結(jié)構(gòu)關(guān)系。便于程序代碼的管理和使用。第3章面向?qū)ο蟪绦蛟O(shè)計(jì)概述3.1類與對(duì)象3.2消息和方法3.3什么是面向?qū)ο蟪绦蛟O(shè)計(jì)3.4數(shù)據(jù)抽象3.5封裝性和信息隱藏3.6繼承性與軟件重用3.7多態(tài)性3.8面向?qū)ο蟮某绦蛟O(shè)計(jì)語言3.9面向?qū)ο蟮能浖こ?.7多態(tài)性廣義多態(tài)性:自然語言中的多態(tài)性;面向?qū)ο蟪绦蛟O(shè)計(jì)中的多態(tài)性什么是多態(tài)性?(廣義)polymorphism,“manyforms”:即多種形態(tài)在自然語言中,多態(tài)性即是“一詞多義”;更準(zhǔn)確地說,多態(tài)性是指相同的動(dòng)詞作用到不同類型的對(duì)象上,例如:
駕駛摩托車 駕駛汽車 駕駛飛機(jī) 駕駛輪船駕駛宇宙飛船什么是多態(tài)性?(OOP)當(dāng)不同對(duì)象接收到相同的消息產(chǎn)生不同的動(dòng)作,這種性質(zhì)稱為多態(tài)性。通俗地說,多態(tài)性是指用一個(gè)名字定義不同的函數(shù),這些函數(shù)執(zhí)行不同但又類似的操作,即用同樣的接口訪問功能不同的函數(shù),從而實(shí)現(xiàn)“一個(gè)接口,多種方法”。多態(tài)性的例子在C語言中,由于不支持多態(tài),求絕對(duì)值的動(dòng)作要求三個(gè)不同的函數(shù)名字:
abs(),labs(),fabs()分別用來求整數(shù),長(zhǎng)整數(shù)、浮點(diǎn)數(shù)的絕對(duì)值。在C++語言中,由于支持多態(tài),求絕對(duì)值的動(dòng)作可以只用一個(gè)函數(shù)名:abs()多態(tài)性由重載(編譯時(shí))或虛函數(shù)(運(yùn)行時(shí))來實(shí)現(xiàn)重載包括函數(shù)重載和運(yùn)算符重載因此:多態(tài)分為兩類:編譯時(shí)的多態(tài):編譯時(shí)確定消息的具體操作對(duì)象,如函數(shù)重載和運(yùn)算符重載。運(yùn)行時(shí)的多態(tài):運(yùn)行時(shí)才具體確定對(duì)象所屬類層次中的具體類,從而確定外部程序所發(fā)消息的匹配對(duì)象和匹配方法,如虛函數(shù)。應(yīng)用多態(tài)性的好處多態(tài)應(yīng)用于OOP的目的是允許用一個(gè)名字來指定一類動(dòng)作(即邏輯上相似的動(dòng)作)。從而帶來以下的好處:提高了處理問題的抽象級(jí)別;降低了程序設(shè)計(jì)時(shí)的復(fù)雜性;增強(qiáng)了軟件的靈活性。
多態(tài)性使得同一個(gè)屬性或行為在父類及其各派生類中具有不同的語義。從同一基類派生出的多個(gè)對(duì)象具有同一接口,因此能響應(yīng)同一格式的消息,但是響應(yīng)的方式可以因?qū)ο缶唧w類型的不同而不同,也就是說,每個(gè)對(duì)象可用適合自身的方式去響應(yīng)共同的消息。由此而帶來的好處是,使用這類對(duì)象提供的服務(wù)時(shí),不必區(qū)分具體是哪種對(duì)象類型,只要發(fā)送相同的消息就可以了。
繼承性和多態(tài)性的組合,可以輕易生成一系列雖類似但獨(dú)一無二的對(duì)象。由于繼承性,這些對(duì)象共享許多相似的特征。但由于多態(tài)性,一個(gè)對(duì)象可以有獨(dú)特的表現(xiàn)方式,相對(duì)另一個(gè)對(duì)象有另一個(gè)表現(xiàn)方式。面向?qū)ο蟪绦蛟O(shè)計(jì)的優(yōu)越性重用性好:有利于軟件生產(chǎn)率的提高;符合人類的自然思維習(xí)慣,能夠自然地描述現(xiàn)實(shí)世界的實(shí)體和問題:有利于控制軟件的復(fù)雜性;更好的模塊化,便于多人分工和合作開發(fā)軟件;編寫的代碼有更好的可維護(hù)性;第3章面向?qū)ο蟪绦蛟O(shè)計(jì)概述3.1類與對(duì)象3.2消息和方法3.3什么是面向?qū)ο蟪绦蛟O(shè)計(jì)3.4數(shù)據(jù)抽象3.5封裝性和信息隱藏3.6繼承性與軟件重用3.7多態(tài)性3.8面向?qū)ο蟮某绦蛟O(shè)計(jì)語言3.9面向?qū)ο蟮能浖こ堂嫦驅(qū)ο蟪绦蛟O(shè)計(jì)語言應(yīng)該具備下述特征:支持對(duì)象的概念(包括對(duì)象所有的特性,如封裝等);要求對(duì)象屬于類;提供繼承機(jī)制非面向?qū)ο笳Z言
Fortran(50年代中期)
Algol(60年代)Pascal(68年
)Basic(64年)C語言(72年
DennisRitchie創(chuàng)建〕面向?qū)ο笳Z言Smalltalk(72年開始)C++(80年由Bell公司Stroustrup
創(chuàng)建)Java(95年由SUN
公司創(chuàng)建)
C#(2000年由微軟推出)面向?qū)ο蟮某绦蛟O(shè)計(jì)語言Smalltalk是第一個(gè)真正的面向?qū)ο蟪绦蛟O(shè)計(jì)語言,它是由美國(guó)的Xerox公司于1970年代初研制的。被認(rèn)為是最純正最具代表性的面向?qū)ο蟪绦蛟O(shè)計(jì)語言。由于Smalltalk是基于Xerox的特定硬件平臺(tái)開發(fā)的,再加上它的動(dòng)態(tài)聯(lián)編的解釋執(zhí)行機(jī)制而導(dǎo)致的低運(yùn)行效率,使得該語言并沒有得到廣泛的應(yīng)用。面向?qū)ο蟪绦蛟O(shè)計(jì)語言的分類純面向?qū)ο蟪绦蛟O(shè)計(jì)語言:僅支持面向?qū)ο蠓椒ǖ能浖_發(fā),其中最具有代表性的語言是Java、Smalltalk和Eiffel?;旌闲兔嫦?qū)ο蟪绦蛟O(shè)計(jì)語言:對(duì)傳統(tǒng)語言進(jìn)行面向?qū)ο蟪绦蛟O(shè)計(jì)的擴(kuò)展,既支持面向?qū)ο蠓椒ǖ能浖_發(fā),也支持面向過程方法的軟件開發(fā),其最典型的代表是C++。C++語言允許使用類和對(duì)象。類是支持?jǐn)?shù)據(jù)封裝的工具,對(duì)象是數(shù)據(jù)封裝的實(shí)現(xiàn)。類中成員有不同的訪問權(quán)限。C++語言對(duì)面向?qū)ο蟪绦蛟O(shè)計(jì)的支持1.支持封裝性C++語言支持面向?qū)ο蠓椒ㄖ械睦^承性,它不僅支持單繼承,而且支持多重繼承。繼承和封裝是衡量一種語言是否是面向?qū)ο蟮某绦蛟O(shè)計(jì)語言的兩個(gè)重要標(biāo)準(zhǔn)。2.支持繼承性
多態(tài)性是在繼承性基礎(chǔ)上的面向?qū)ο蠓椒ㄖ械闹匾匦灾?。①支持函?shù)重載和運(yùn)算符重載。②支持虛函數(shù)和動(dòng)態(tài)聯(lián)編。3.支持多態(tài)性C++、Java和C#C++是Java和C#的父語言。三者的語法幾乎是一樣的。C++適合在特定的操作系統(tǒng)上編寫高性能的程序。Java適合創(chuàng)建分布式網(wǎng)絡(luò)環(huán)境下跨平臺(tái)的可移植性的程序。C#是為微軟的.Net框架設(shè)計(jì)的,適合在.NET框架支持的網(wǎng)絡(luò)環(huán)境下編寫基于組件的代碼。第3章面向?qū)ο蟪绦蛟O(shè)計(jì)概述3.1類與對(duì)象3.2消息和方法3.3什么是面向?qū)ο蟪绦蛟O(shè)計(jì)3.4數(shù)據(jù)抽象3.5封裝性和信息隱藏3.6繼承性與軟件重用3.7多態(tài)性3.8面向?qū)ο蟮某绦蛟O(shè)計(jì)語言3.9面向?qū)ο蟮能浖こ?.9面向?qū)ο蟮能浖こ堂嫦驅(qū)ο蟮姆治觯∣bject-OrientedAnalysis,簡(jiǎn)稱OOA)面向?qū)ο蟮脑O(shè)計(jì)(Object-OrientedDesign,簡(jiǎn)稱OOD)面向?qū)ο蟮木幊蹋∣bject-OrientedProgramming,簡(jiǎn)稱OOP)面向?qū)ο蟮臏y(cè)試(Object-OrientedTest,簡(jiǎn)稱OOT)面向?qū)ο蟮能浖S護(hù)(Object-OrientedSoftwareMaintain,簡(jiǎn)稱OOSM)面向?qū)ο蠓治鯫OA在采用面向?qū)ο蠓椒ㄩ_發(fā)軟件的過程中,抽取和整理用戶需求并建立問題域精確模型的過程叫面向?qū)ο蠓治?。分析階段建立的模型叫做“分析模型”。1面向?qū)ο蠓治霾襟E確定類確定類屬性確定類方法確定對(duì)象模型(1)確定類 確定如何將現(xiàn)實(shí)世界的對(duì)象關(guān)系映射到計(jì)算機(jī)的虛擬世界中去,對(duì)于現(xiàn)實(shí)世界來說,對(duì)象可分為三類:實(shí)體和概念、人或角色、事件
需求分析得到的類包括可感知的實(shí)體和抽象的概念??筛兄膶?shí)體如電腦、防盜門、出租車、茶杯、臺(tái)燈等,抽象的概念如學(xué)校校規(guī)、交通法規(guī)等。一個(gè)類主要包括類名、屬性和方法三部分。類可分為兩種:對(duì)象類(可創(chuàng)建對(duì)象實(shí)例的類)抽象類(不可創(chuàng)建對(duì)象實(shí)例的類)主要在繼承中使用,為子類定義統(tǒng)一的接口,使得不同的對(duì)象類統(tǒng)一在一個(gè)類族中。例如,圓、三角形、矩形等類繼承了“圖形”類。對(duì)于圓類來說,它的一個(gè)對(duì)象就是一個(gè)圓心明確,半徑固定,顏色清晰的圓。對(duì)于一個(gè)“圖形”類。如果產(chǎn)生它的一個(gè)實(shí)例,即用圖形類產(chǎn)生一個(gè)圖形,則我們無法準(zhǔn)確描述具體它的特征,也就是說,不可能創(chuàng)建出沒有具體形狀的圖形對(duì)象,因此圖形類是抽象類。圓圓心位置半徑顏色移動(dòng)選擇旋轉(zhuǎn)打印幾何圖形位置顏色移動(dòng)選擇旋轉(zhuǎn)打印對(duì)象類抽象類(2)確定類的屬性類的屬性是類所具有的性質(zhì)、特征或狀態(tài)。通常,在分析階段不可能確定類的所有屬性,但在分析階段要確定每個(gè)類的基本屬性。類的屬性可分為兩種:一種稱做實(shí)例屬性,它是類中各對(duì)象實(shí)例具有不同屬性值的屬性項(xiàng);另一種稱做類屬性,它是類的所有對(duì)象實(shí)例都具有相同屬性值的屬性項(xiàng)。(3)確定類的方法類的方法分為兩種:一種稱做常規(guī)性方法(或輔助性方法),主要包括設(shè)置對(duì)象屬性值方法和獲取對(duì)象屬性值方法等;另一種稱做功能性方法(或需求性方法),功能性方法反映了該類對(duì)象實(shí)例所具有的功能。確定類的方法主要是確定類的功能性方法。常規(guī)性方法通常在實(shí)現(xiàn)階段才具體考慮。(4)確定對(duì)象模型就是建立起對(duì)象之間的聯(lián)系方式。模型人們對(duì)現(xiàn)實(shí)世界中復(fù)雜事物以及這些事物之間關(guān)系的抽象的、可視化的表示。人們把握復(fù)雜事物及事物之間關(guān)系本質(zhì)、并進(jìn)行分析和交流的工具。由一組圖示符號(hào)、圖示符號(hào)規(guī)則以及必要的文字說明組成。利用模型把問題規(guī)范地表示出來,并可以作為下一步構(gòu)造實(shí)際系統(tǒng)的設(shè)計(jì)依據(jù)。對(duì)象模型整體-部分模式(組成、聚集關(guān)系)表示一個(gè)整體對(duì)象概念由若干個(gè)部分對(duì)象概念合成構(gòu)成。具有傳遞性例如計(jì)算機(jī)由機(jī)箱、主板、鍵盤和顯示器等部件構(gòu)成一般-特殊模式(分類關(guān)系)表示一個(gè)對(duì)象是另一個(gè)對(duì)象的特例用繼承關(guān)系來反映對(duì)象一般-特殊聯(lián)系方式例如工人和經(jīng)理類繼承了雇員類,工人和經(jīng)理類是特殊類,雇員類是一般類。連接模式(消息模式、關(guān)聯(lián)關(guān)系)一個(gè)對(duì)象與另一個(gè)對(duì)象有某種聯(lián)系,之間可以發(fā)送消息。用一條直線直接連接存在消息模式的兩個(gè)類。直線上方用文字表示連接的含義。
生產(chǎn)廠商……計(jì)算機(jī)商品生產(chǎn)廠商……制造1*2.面向?qū)ο蟮脑O(shè)計(jì)(OOD)面向?qū)ο蟮脑O(shè)計(jì)(OOD)的工作可以分為兩步:第一步是把OOA階段建立的分析模型直接作為初級(jí)的OOD模型;第二步是要對(duì)初級(jí)的OOD模型進(jìn)行擴(kuò)充,添加與編程細(xì)節(jié)有關(guān)的具體細(xì)節(jié)。面向?qū)ο笤O(shè)計(jì)的任務(wù)修改完善對(duì)象模型寫出所有類的定義構(gòu)造基于特定計(jì)算機(jī)環(huán)境的軟件系統(tǒng)所要求的額外的、與實(shí)現(xiàn)有關(guān)的類和對(duì)象模型。軟件系統(tǒng)要求的其它設(shè)計(jì)修改完善對(duì)象模型
主要包括對(duì)類做修改和補(bǔ)充,對(duì)對(duì)象模式做必要的調(diào)整,如重新設(shè)計(jì)類的繼承關(guān)系等。寫出所有類的定義
包括類名、屬性、方法(方法名、方法函數(shù)的數(shù)據(jù)類型、參數(shù)、參數(shù)類型)、繼承關(guān)系。還可在綜合分析的基礎(chǔ)上,對(duì)類的方法重新進(jìn)行設(shè)計(jì)或劃分,達(dá)到功能單一、高度共享、可重復(fù)使用程度高等設(shè)計(jì)要求。構(gòu)造基于特定計(jì)算機(jī)環(huán)境的軟件系統(tǒng)所要求的額外的、與實(shí)現(xiàn)有關(guān)的類和對(duì)象模型
主要有人機(jī)接口部分、數(shù)據(jù)管理部分和系統(tǒng)接口部分對(duì)象及對(duì)象模型的補(bǔ)充。人機(jī)接口是實(shí)際使用的軟件系統(tǒng)中人與系統(tǒng)的交互接口。數(shù)據(jù)管理完成軟件系統(tǒng)中系統(tǒng)需要保存和維護(hù)的類。系統(tǒng)接口是本系統(tǒng)設(shè)備和其它系統(tǒng)設(shè)備的接口。目前市場(chǎng)上提供支持軟件和類庫(kù)包。軟件系統(tǒng)要求的其它設(shè)計(jì)
實(shí)際的軟件系統(tǒng)要求的其它設(shè)計(jì)。這主要包括系統(tǒng)分布模式設(shè)計(jì)和物理設(shè)計(jì)。系統(tǒng)的分布模式有五種:?jiǎn)螜C(jī)模式、集中模式、文件服務(wù)器模式、客戶/服務(wù)器模式和瀏覽器/服務(wù)器模式。物理設(shè)計(jì)一般包括網(wǎng)絡(luò)設(shè)計(jì)和軟件平臺(tái)設(shè)計(jì)。面向?qū)ο笤O(shè)計(jì)的基本準(zhǔn)則模塊化抽象信息隱藏低耦合、高內(nèi)聚可擴(kuò)充可重用
還要充分考慮具體實(shí)現(xiàn)中的基于特定計(jì)算機(jī)環(huán)境的人機(jī)接口、數(shù)據(jù)管理和系統(tǒng)接口等因素。設(shè)計(jì)模式DesignPatterns《設(shè)計(jì)模式:可復(fù)用面向?qū)ο筌浖幕A(chǔ)》(DesignPatterns:ElementsofReusableObject-OrientedSoftware,ISBN0-201-63361-2)August1994該書作者為:ErichGamma,RichardHelm,RalphJohnson,JohnVlissides,后以“四人幫”(GangofFour,GoF)著稱一個(gè)設(shè)計(jì)模式(designpattern)定義了一個(gè)通用的設(shè)計(jì)結(jié)構(gòu),這種設(shè)計(jì)結(jié)構(gòu)能夠用來解決特定的面向?qū)ο笤O(shè)計(jì)問題。設(shè)計(jì)模式的描述:(1)模式名稱。用一兩個(gè)詞作為模式的標(biāo)記,簡(jiǎn)略描述模式的問題、解決方案和效果。(2)問題。描述了在何時(shí)使用設(shè)計(jì)模式。它解釋了模式用來解決什么設(shè)計(jì)問題。(3)解決方案。描述了設(shè)計(jì)模式的組成成分,它們之間的關(guān)系及各自的職責(zé)和協(xié)作方式。(4)效果。描述了模式應(yīng)用的效果和使用模式應(yīng)權(quán)衡的問題。創(chuàng)建模式(范例)抽象工廠(AbstactFactory)構(gòu)造器(BuilderPattern)工廠方法(FactoryMethodpattern)原型(Prototypepattern)單例模式(Singletonpattern)結(jié)構(gòu)模式(范例)適配器(Adapterpattern)橋接(Bridgepattern)組合(Compositepattern)裝飾(Decoratorpattern)外觀(Fa?adepattern)享元(Flyweightpattern)代理(Proxypattern)行為模式(范例)職責(zé)鏈(Chain-of-responsibilitypattern)命令(Commandpattern)翻譯器(Interpreterpattern)迭代器(Iteratorpattern)仲裁器(Mediatorpattern)回憶(Mementopattern)觀察器(Observerpattern)狀態(tài)機(jī)(Statepattern)策略(Strategypattern)模板方法(Templatemethodpattern)參觀者(Visitor)UnifiedModelingLanguage(UML)UML即統(tǒng)一建模語言,它是一個(gè)支持模型化和軟件系統(tǒng)開發(fā)的圖形化語言,為面向?qū)ο蠓治龊驮O(shè)計(jì)提供模型化和可視化支持。面向?qū)ο蟮姆治雠c設(shè)計(jì)(OOA&D,OOAD)方法的發(fā)展在80年代末至90年代中出現(xiàn)了一個(gè)高潮,UML是這個(gè)高潮的產(chǎn)物。它不僅統(tǒng)一了Booch、Rumbaugh和Jacobson的表示方法,而且對(duì)其作了進(jìn)一步的發(fā)展,并最終統(tǒng)一為大眾所接受的標(biāo)準(zhǔn)建模語言。3.面向?qū)ο蟮木幊蹋∣OP)面向?qū)ο蟮木幊蹋∣OP),又叫做面向?qū)ο蟪绦蛟O(shè)計(jì),或者編碼(coding),這是軟件工程的實(shí)現(xiàn)階段,相當(dāng)于建筑工程的施工階段。OOP的工作就是用一種面向?qū)ο蟮木幊陶Z言把OOD模型中的每個(gè)成分書寫出來,是面向?qū)ο蟮能浖_發(fā)最終落實(shí)的重要階段。這一步實(shí)際上是將OOD模型轉(zhuǎn)換成可以運(yùn)行的軟件系統(tǒng)。4面向?qū)ο鬁y(cè)試
軟件測(cè)試的目的是檢查和排除軟件中存在的各種隱含錯(cuò)誤。任何一個(gè)軟件產(chǎn)品在交付使用之前都要經(jīng)過多次嚴(yán)格的測(cè)試。一般要經(jīng)過:面向?qū)ο蠓治龅臏y(cè)試(OOATest)、面向?qū)ο笤O(shè)計(jì)的測(cè)試(OODTest)、面向?qū)ο缶幊痰臏y(cè)試(OOPTest)、面向?qū)ο蟮膯卧獪y(cè)試(OOUnitTest)、面向?qū)ο蟮募蓽y(cè)試(OOIntegrateTest)、面向?qū)ο蟮南到y(tǒng)測(cè)試(OOSystemTest)
等環(huán)節(jié)。面向?qū)ο鬁y(cè)試以類做為基本測(cè)試單位,可以更準(zhǔn)確地發(fā)現(xiàn)程序錯(cuò)誤,提高測(cè)試效率。一般情況下,大型商用軟件項(xiàng)目需要經(jīng)過內(nèi)部反復(fù)測(cè)試、小范圍試用、大范圍試用和再測(cè)試等多個(gè)環(huán)節(jié),必要時(shí)上述過程需要反復(fù)進(jìn)行。
由于軟件代碼的規(guī)模越來越龐大,無論經(jīng)過多少次測(cè)試,或經(jīng)過了多么嚴(yán)格的測(cè)試,軟件中依然難免存在各種各樣的隱含錯(cuò)誤。而且用戶在使用軟件的過程中可能會(huì)提出修改和擴(kuò)充軟件的要求。因此軟件在使用的過程中,需要開發(fā)人員或?qū)I(yè)軟件維護(hù)人員進(jìn)行必要和合理的維護(hù)。維護(hù)人員在重構(gòu)“源設(shè)計(jì)圖”,并掌握原設(shè)計(jì)人的設(shè)計(jì)思想和方法、策略的前提下主要以類及對(duì)象為基本單位進(jìn)行維護(hù)。一般情況下不應(yīng)改變類與對(duì)象的基本特性,同時(shí)不應(yīng)影響其他類。5.面向?qū)ο筌浖S護(hù)面向?qū)ο筌浖S護(hù)由于面向?qū)ο蟮能浖?shí)現(xiàn)方法的解空間與被解決問題的問題空間的結(jié)構(gòu)是一致的,軟件工程各個(gè)階段的分析、描述、表達(dá)和實(shí)現(xiàn)也是一致的,所以無論是發(fā)現(xiàn)了程序中的錯(cuò)誤而追溯到問題本身,還是因需求發(fā)生變化而追蹤到程序代碼,解決起來都相對(duì)比較簡(jiǎn)單和方便。另一方面,面向?qū)ο蟮姆庋b性可使一個(gè)對(duì)象的修改對(duì)其他對(duì)象的影響較少。因此,運(yùn)用面向?qū)ο蟪绦蛟O(shè)計(jì)方法可以大大提高軟件維護(hù)的效率。第3章面向?qū)ο蟪绦蛟O(shè)計(jì)概述3.1類與對(duì)象3.2消息和方法3.3什么是面向?qū)ο蟪绦蛟O(shè)計(jì)3.4數(shù)據(jù)抽象3.5封裝性和信息隱藏3.6繼承性與軟件重用3.7多態(tài)性3.8面向?qū)ο蟮某绦蛟O(shè)計(jì)語言3.9面向?qū)ο蟮能浖こ?.10C++編程環(huán)境簡(jiǎn)介1C++程序的開發(fā)過程2VisualC++6.0集成開發(fā)環(huán)境簡(jiǎn)介常用的面向?qū)ο筌浖_發(fā)環(huán)境
PowerBuilder、C++Builder、VisualC++、Delphi、JavaBuilderVC++6.0是Microsoft公司1998年推出的功能強(qiáng)大的可視化編程環(huán)境,是流行的Windows應(yīng)用程序開發(fā)的集成開發(fā)環(huán)境(IDE)。項(xiàng)目與項(xiàng)目工作區(qū)所謂項(xiàng)目就是文件的集合,它包括了資源文件、頭文件、源代碼文件、程序結(jié)構(gòu)消息文件和系統(tǒng)參數(shù)設(shè)置文件。要編寫一個(gè)應(yīng)用程序,必須創(chuàng)建一個(gè)項(xiàng)目,項(xiàng)目文件的擴(kuò)展名為.dsp。項(xiàng)目工作區(qū)文件(.dsw)含有工作區(qū)的定義和項(xiàng)目中所包含文件的所有信息。根據(jù)項(xiàng)目工作區(qū)文件,在工作區(qū)窗口中便可以打開相應(yīng)的文件進(jìn)行編輯,大大方便了程序員多項(xiàng)目的管理。3控制臺(tái)應(yīng)用程序?qū)嵗椒?:?jiǎn)?dòng)VisualC++6.0集成開發(fā)環(huán)境。建立新工程。添加源文件。編輯源程序。編譯、連接源程序。運(yùn)行程序。
(1)啟動(dòng)VisualC++,單擊“File/New”菜單項(xiàng),打開新建窗口,如圖所示。
(2)在“Projects”選項(xiàng)卡中選擇“Win32ConsoleApplication”選項(xiàng),在“Projectname”編輯框中輸入工程名稱,單擊“OK”按鈕進(jìn)入向?qū)Т翱冢_始創(chuàng)建工程。
(3)在向?qū)Т翱谥羞x擇“A‘Hello,Word’Application”選項(xiàng),單擊“Finish”按鈕完成工程的創(chuàng)建。這樣就完成了一個(gè)控制臺(tái)工程的創(chuàng)建。在工具欄中單擊按鈕,編譯并執(zhí)行應(yīng)用程序。
方法2:?jiǎn)?dòng)VisualC++6.0集成開發(fā)環(huán)境。新建文件。編輯源程序。保存源程序。編譯、連接源程序。運(yùn)行程序。
1.創(chuàng)建工作文件夾
創(chuàng)建VisualC++6.0的工作文件夾“D:\VisualC++應(yīng)用”,以后所有創(chuàng)建的C++程序都在此文件夾下,這樣既便于管理,又容易查找。在文件夾“D:\VisualC++應(yīng)用”下再創(chuàng)建一個(gè)子文件夾“第1章”用于存放第1章中的C++程序;對(duì)于第2章程序就存放在子文件夾“第2章”中,依此類推。2.啟動(dòng)VisualC++6.0圖1.3“每日提示”對(duì)話框
選擇“開始”→“程序”→“MicrosoftVisualStudio6.0”→“MicrosoftVisualC++6.0”,運(yùn)行VisualC++6.0。第一次運(yùn)行時(shí),將顯示“每日提示”對(duì)話框。單擊[下一條]按鈕,可看到有關(guān)各種操作的提示。如果在[啟動(dòng)時(shí)顯示提示]復(fù)選框中單擊鼠標(biāo),去除復(fù)選框的選中標(biāo)記,那么下一次運(yùn)行VisualC++6.0,將不再出現(xiàn)此對(duì)話框。單擊[關(guān)閉]按鈕關(guān)閉此對(duì)話框,進(jìn)入VisualC++6.0開發(fā)環(huán)境。3.添加C++程序
(1)單擊標(biāo)準(zhǔn)工具欄上的“新建”()按鈕,打開一個(gè)新的文檔窗口,在這個(gè)窗口中輸入下列C++代碼。
(2)選擇“文件”→“保存”菜單或按快捷鍵Ctrl+S或單擊標(biāo)準(zhǔn)工具欄的保存按鈕,彈出“保存為”文件對(duì)話框。將文件定位到“D:\VisualC++應(yīng)用\第1章”文件夾中,文件名指定為“Ex_Simple.cpp”(注意擴(kuò)展名.cpp不能省略,cpp是CPlusPlus的縮寫,即“C++”的意思)。[例Ex_Simple]一個(gè)簡(jiǎn)單的C++程序/*第一個(gè)簡(jiǎn)單的C++程序*/#include<iostream.h>
intmain(){ doubler,area; //定義變量
cout<<"輸入圓的半徑:"; //顯示提示信息
cin>>r; //從鍵盤上輸入變量r的值
area=3.14159*r*r; //計(jì)算面積
cout<
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年專利技術(shù)許可證合同(三篇)
- 度企業(yè)合同風(fēng)險(xiǎn)管理與服務(wù)外包協(xié)議
- 北京市綠化工程苗木采購(gòu)合同(版)
- 股份合作協(xié)議書轉(zhuǎn)讓合同模板
- 物流公司危貨運(yùn)輸安全生產(chǎn)合同范本
- 房建工程合同
- 2025年上海醫(yī)院勞動(dòng)合同(三篇)
- 駕駛員臨時(shí)聘用合同范本
- 農(nóng)村土地互換合同范本
- 年產(chǎn)500萬件家居墊片生產(chǎn)項(xiàng)目可行性研究報(bào)告建議書
- 2025年高考作文專練(25道真題+審題立意+范文)- 2025年高考語文作文備考總復(fù)習(xí)
- 中國(guó)高血壓防治指南(2024年修訂版)要點(diǎn)解讀
- 二十屆三中全會(huì)精神應(yīng)知應(yīng)會(huì)知識(shí)測(cè)試30題(附答案)
- 小學(xué)三年級(jí)下冊(cè)奧數(shù)題100道附答案
- 《烏有先生歷險(xiǎn)記》原文及翻譯
- 人員測(cè)評(píng)方案
- 簡(jiǎn)易呼吸器的使用和心肺復(fù)蘇-3
- 小升初卷(試題)-2023-2024學(xué)年六年級(jí)下冊(cè)數(shù)學(xué)人教版
- GB/T 40565.1-2024液壓傳動(dòng)連接快換接頭第1部分:通用型
- 《教科版》二年級(jí)科學(xué)下冊(cè)全冊(cè)課件(完整版)
- 2024年河北省九地市中考數(shù)學(xué)摸底試卷
評(píng)論
0/150
提交評(píng)論