《面向?qū)ο缶幊獭方虒W(xué)設(shè)計(jì)大綱

上傳人:文*** 文檔編號(hào):87349071 上傳時(shí)間:2022-05-09 格式:DOC 頁(yè)數(shù):194 大小:8.54MB
收藏 版權(quán)申訴 舉報(bào) 下載
《面向?qū)ο缶幊獭方虒W(xué)設(shè)計(jì)大綱_第1頁(yè)
第1頁(yè) / 共194頁(yè)
《面向?qū)ο缶幊獭方虒W(xué)設(shè)計(jì)大綱_第2頁(yè)
第2頁(yè) / 共194頁(yè)

本資源只提供2頁(yè)預(yù)覽,全部文檔請(qǐng)下載后查看!喜歡就下載吧,查找使用更方便

40 積分

下載資源

資源描述:

《《面向?qū)ο缶幊獭方虒W(xué)設(shè)計(jì)大綱》由會(huì)員分享,可在線閱讀,更多相關(guān)《《面向?qū)ο缶幊獭方虒W(xué)設(shè)計(jì)大綱(194頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、《易飛揚(yáng)面向?qū)ο缶幊獭? 《易飛揚(yáng)面向?qū)ο缶幊獭?1 分類 2 啟動(dòng) 3 公開(kāi) 4 私有 4 靜態(tài) 4 非靜 6 對(duì)象 7 成員 8 初始 9 清理 10 屬性 10 事件 11 創(chuàng)建 13 銷毀 13 重載 13 封裝 15 繼承 15 多態(tài) 16 接口 17 總結(jié) 19 由于“易語(yǔ)言.飛揚(yáng)”還未完全成型,在此過(guò)程中如果有所改動(dòng),教材也會(huì)相應(yīng)的改動(dòng),但是對(duì)于面向?qū)ο蟮木幊虂?lái)說(shuō),基本上是不會(huì)變的,因此本書(shū)作者才有信心將面向?qū)ο蟮木幊谭椒▽?xiě)出來(lái)。 之所以本書(shū)的名稱中有“編程思想”一樣,我們不是為了編程而去編程,那種整天加班,一天

2、到晚累得半死的生活并不是我們這些程序員理想中的生活,對(duì)于工作與生活的態(tài)度,也影響到我們編程中去,如何仿照自然的方法去編程,去生活同樣具有重要的意義。 那么什么是“對(duì)象”呢?這個(gè)問(wèn)題一直困擾著很多編程的入門(mén)者,有說(shuō)對(duì)象就是組件,有說(shuō)對(duì)象就是類的實(shí)體化,雖然我不反對(duì)用這些術(shù)語(yǔ),但我反對(duì)讓初學(xué)者搞不明白,實(shí)際上,“對(duì)象”就是你的一個(gè)好朋友,這個(gè)好朋友的功能強(qiáng)大,能夠幫助你完成你所設(shè)計(jì)的事情,那么,下面我們就介紹一直在你身邊的這個(gè)好朋友吧。 分類 物以類聚,人以群分,朋友也是這樣,如果你交個(gè)好朋友,那么就會(huì)受益無(wú)窮,如果你交了個(gè)損友,那么后果不難想象,所謂近墨者黑,近朱者赤,君子之交淡如水,

3、也就是說(shuō)交一些具有平常心的朋友,不會(huì)讓你去冒險(xiǎn),不會(huì)讓你心煩意亂。 好了,想法是好的,那么就會(huì)去找,如果真的找到了,那么就恭喜你,如果找不到,也不必傷心。那么我們理想中的好朋友就是對(duì)象,而真實(shí)的好朋友就是對(duì)象的實(shí)體,我們把他們分為一類人“好朋友”,還有就是“普通朋友”、“同事”、“老師”、“陌生人”等。 通過(guò)以上,可以了解到面向?qū)ο缶幊讨小邦悺迸c“對(duì)象”的關(guān)系。“類”相當(dāng)于“好朋友”、“普通朋友”、“同事”、“老師”、“陌生人”等這些思想的劃分,而具體的某個(gè)人就是類的“實(shí)際對(duì)象”。理想中的好朋友具有相關(guān)的特性,比如有身高,年紀(jì),性格等信息,也可以在人生的道路上幫助你成長(zhǎng)。 在面向?qū)ο笾校?/p>

4、把“相關(guān)特性”稱為“數(shù)據(jù)成員”,雖然聽(tīng)起來(lái)很奇怪,但大家只要了解到,與老易語(yǔ)言中的屬性是差不多的。 在面向?qū)ο笾校选肮δ堋狈Q為“方法”,雖然聽(tīng)起來(lái)很奇怪,但大家只要了解到,與老易語(yǔ)言中的方法命令是差不多的。 下面就來(lái)看第一個(gè)易飛揚(yáng)類的代碼吧。 上述代碼中,控制臺(tái)就是一個(gè)對(duì)象,也是你的好朋友,他具有“輸出行”這樣的方法命令,后面所接就是他的參數(shù):“輸出的文本”。而“輸出的文本”是在上一行中進(jìn)行了定義的,是一個(gè)文本變量,并且內(nèi)容是“易語(yǔ)言,你好!”,這樣一想,這個(gè)具體的好朋友還沒(méi)有分類呢,于是將這個(gè)好朋友分為“啟動(dòng)類”,這個(gè)行為作為“啟動(dòng)類”的一個(gè)“啟動(dòng)”方法去執(zhí)行。 啟動(dòng)

5、 上面已經(jīng)說(shuō)過(guò)了,在上述這段代碼中,有一個(gè)類——“啟動(dòng)類”,這是我們對(duì)好朋友的劃分,在該類中有一個(gè)方法——“啟動(dòng)”方法,這是好朋友能做的事情?;ɡㄌ?hào)里面的代碼就是事情的具體步驟。 好了,上述代碼是可以執(zhí)行的,大家還記得如何運(yùn)行嗎?不會(huì)的請(qǐng)看本書(shū)第一章節(jié)中的內(nèi)容。 在易飛揚(yáng)中,程序的運(yùn)行要依賴一個(gè)很重要的類——它的類名為“啟動(dòng)類”。在“啟動(dòng)類”的下面有一個(gè)必有的方法——“啟動(dòng)”方法,用法如其名,該方法是易飛揚(yáng)程序的入口,也就是說(shuō),易飛揚(yáng)的程序要從這個(gè)方法下面的代碼進(jìn)行運(yùn)行。大家可以把這個(gè)“啟動(dòng)”方法看成是老易語(yǔ)言中的“_啟動(dòng)子程序”子程序。這樣大家就可以很容易的看懂上面的代碼了。 注意了,

6、“啟動(dòng)類”必須是“公開(kāi)”的;而“啟動(dòng)”方法必須是“公開(kāi)”且“靜態(tài)”屬性。大家先不要管什么是“公開(kāi)”、“靜態(tài)”,只要記下來(lái)就好了,繼續(xù)看下面的文字吧。 在“啟動(dòng)”方法中的代碼,相信大家也能理解到了,是用控制臺(tái)輸出一行文字,文字的內(nèi)容是“易語(yǔ)言,你好!”。 不管如何,大家跟我學(xué)編程,我是不會(huì)虧待大家的,給大家一個(gè)小詩(shī)來(lái)說(shuō)明我的歸納結(jié)果,大家有空就將這個(gè)口訣背下來(lái)哦,當(dāng)出現(xiàn)對(duì)好朋友不理解時(shí),只要背一下這個(gè)小詩(shī),就基本上能解決問(wèn)題了。 口訣一: 面向?qū)ο罂糠诸悾? 聲明類有屬性表。 公開(kāi)大家都能用; 私有隱藏保安全。 內(nèi)部靜態(tài)調(diào)靜態(tài); 外部類名加成員。 非靜創(chuàng)建類對(duì)象; 對(duì)

7、象名加類成員。 面向?qū)ο罂糠诸悾? (面向?qū)ο笾杏深惤M成基本單位,一個(gè)類中有多個(gè)方法) 聲明類法有屬性。 (類有類的屬性表,方法有方法的屬性表) 內(nèi)部靜態(tài)調(diào)靜態(tài); (在內(nèi)部(類中)靜態(tài)成員只能被靜態(tài)成員所調(diào)用;) 外部類名加成員。 (而在外部(類外),只能通過(guò)“類名.”加成員名的方法進(jìn)行調(diào)用。) 非靜創(chuàng)建類對(duì)象; (“非靜態(tài)”成員的使用方法是:用類生成的“對(duì)象名”+“.”+類成員) 對(duì)象名加類成員。 (同上) 公開(kāi)大家都能用; (具有公開(kāi)屬性的類或方法,在其他的類或方法中可以直接調(diào)用,“公開(kāi)”就是可被調(diào)用,其方法的引用就是類名+方法名即可。) 私有隱藏保安全。

8、 (私有屬性只是為了安全考慮,不向其他程序員公開(kāi),因此使用時(shí)只能在類的內(nèi)部使用) 難免本文還是要先來(lái)說(shuō)明一下這些類或類成員名稱前面的這些名詞是做什么用的。 公開(kāi) 面向?qū)ο罂糠诸悾? 聲明類有屬性表。 公開(kāi)大家都能用; 私有隱藏保安全。 私有 了解“公開(kāi)”與“私有” 哈哈,現(xiàn)在的人都是說(shuō)自己有人權(quán)保護(hù)的,因?yàn)槊總€(gè)人都有自己的隱私,你的好朋友也不例外,當(dāng)你的好朋友出現(xiàn)在你面前時(shí),他公開(kāi)了他的形象和語(yǔ)言,以及行為,但他回家后,是自己會(huì)吃飯、睡覺(jué)等,這些是不會(huì)公開(kāi)給你看的哦。這樣的好處是,你的好朋友不會(huì)隨時(shí)公開(kāi)他的行為,他就具有自主性,自動(dòng)性,對(duì)他也是個(gè)保持哦。 在面象對(duì)象中

9、也是這樣,當(dāng)公開(kāi)時(shí),其他人都是可視的可調(diào)用的,但也設(shè)置一個(gè)“私有”屬性,對(duì)這個(gè)類進(jìn)行保護(hù),保護(hù)的重要意義在于,這些都是內(nèi)部的工作,自動(dòng)完成的,不需要其他人為的干涉,否則就是干涉內(nèi)政,或干涉別人的隱私羅。 無(wú)論類、還是類中方法與屬性,都可以設(shè)定它對(duì)外部是否可見(jiàn),這個(gè)“可見(jiàn)”便是在被外部應(yīng)用時(shí)是否可被調(diào)用?!肮_(kāi)”就是可被調(diào)用,而“私有”則不能。私有是面向?qū)ο笾械囊粋€(gè)重要工具,用于保護(hù)一些不想被外部調(diào)用的功能實(shí)現(xiàn),保證安全性。 靜態(tài) 內(nèi)部靜態(tài)調(diào)靜態(tài); 外部類名加成員。 非靜創(chuàng)建類對(duì)象; 對(duì)象名加類成員。 了解“靜態(tài)”與“非靜態(tài)” 你的好朋友可有不同的類型哦,有的是好靜,喜歡聽(tīng)你

10、的訴說(shuō),有的好動(dòng),自己就滔滔不絕,讓人發(fā)笑,一般人都是喜歡安靜,靜勝燥,柔勝鋼,陰盛陽(yáng)衰,我也說(shuō)多了,哈哈。 方法具有“靜態(tài)”屬性,如果沒(méi)有這個(gè)屬性就說(shuō)明是“非靜態(tài)”的方法。 “靜態(tài)”從字面上是很難理解的,在我看來(lái),只是給方法加上了一些限制而已。在內(nèi)部(類中)靜態(tài)成員只能被靜態(tài)成員所調(diào)用;而在外部(類外),只能通過(guò)“類名.”加成員名的方法進(jìn)行調(diào)用。在外部調(diào)用靜態(tài)方法時(shí),也可以把它看作老易語(yǔ)言中的“子程序”,這樣大家可能會(huì)更好的理解它。 好,給大家一個(gè)例程,以說(shuō)明靜態(tài)的調(diào)用方法是與老易語(yǔ)言中的一樣的。 下面是一個(gè)“好朋友”的類,其中明兩個(gè)方法命令:“說(shuō)話”和“行走”,代碼如下:

11、 調(diào)用程序代碼如下: 運(yùn)行結(jié)果如下圖所示: 可以看到以上的靜態(tài)方法的調(diào)用,都與原老易語(yǔ)言的“子程序”或組件的調(diào)用方法是差不多的。 當(dāng)然了,當(dāng)一個(gè)方法公開(kāi)時(shí),在其他類中是可以調(diào)用的,如果一個(gè)方法是私有的,那么在其他類中就不可調(diào)用。 如將上述“說(shuō)話”或“行走”改為私有屬性,那么在“啟動(dòng)”方法中就不能調(diào)用了。 非靜 “非靜態(tài)”成員的使用方法的關(guān)鍵在于先用“對(duì)象”創(chuàng)建后再使用創(chuàng)建的對(duì)象調(diào)用。 將上述的做一個(gè)反例來(lái)用,例如:將上述代碼中的“說(shuō)話”和“行走”方法命令中的靜態(tài)屬性去掉,就不能通過(guò)編譯,代碼如下: 如果我們改為以下的調(diào)用方式,就又可以進(jìn)行正常的編譯運(yùn)行了:

12、 上述代碼中,用好朋友這個(gè)類,生成了一個(gè)新的對(duì)象“張三”,由于張三已成為好朋友的一個(gè)具體的對(duì)象,因此使用此對(duì)象調(diào)用這個(gè)類中的方法命令“說(shuō)話”和“行走”。而大家在實(shí)際編程中,可以將方法命令換成你想要操作的其他功能,如建立菜單,打開(kāi)窗口,處理數(shù)據(jù)等,也就實(shí)現(xiàn)了你的面向?qū)ο蟮某绦蛄恕? “非靜態(tài)”成員的使用方法是: 用類生成的“對(duì)象名”+“.”+類成員 其中“類成員”可以是非靜態(tài)的數(shù)據(jù)和非靜態(tài)的方法命令。 對(duì)象 下面大家可能會(huì)產(chǎn)生個(gè)疑問(wèn),一是在類的內(nèi)部調(diào)用非靜態(tài)方法命令時(shí),是否也需要先聲明一個(gè)對(duì)象呢?解決疑問(wèn)的方法是自己動(dòng)手,寫(xiě)幾個(gè)不同的例子,用易飛揚(yáng)編譯后來(lái)驗(yàn)證一下。下面進(jìn)行例

13、子的比較。 先來(lái)研究一下:在類的內(nèi)部調(diào)用非靜態(tài)方法命令時(shí),是否也需要先聲明一個(gè)對(duì)象呢?回答是:也是必須要先創(chuàng)建一個(gè)對(duì)象才能使用。 通過(guò)的代碼如下所示: 上述代碼中,可以看到,在好朋友的類中,定義了一個(gè)“調(diào)用”的方法,此方法中又創(chuàng)建了一個(gè)叫趙強(qiáng)的對(duì)象實(shí)體,由這個(gè)對(duì)象實(shí)體調(diào)用好朋友類的“說(shuō)話”非靜態(tài)方法。如何看待這種現(xiàn)象呢?可以將靜態(tài)方法看作是此類的外部工具,表現(xiàn)形式如下: 這樣大家就易于理解為何可以在類的內(nèi)部再創(chuàng)建他自己本身了。也就表明靜態(tài)類實(shí)際上與類本身是無(wú)關(guān)的,而非靜態(tài)類是依賴于類本身的。 成員 對(duì)于類的數(shù)據(jù)成員的理解,其實(shí)也是很簡(jiǎn)單的,我們只要把它看成是對(duì)象的“屬性”就

14、可以了。這個(gè)屬性,就像是“好朋友”的姓名,衣服顏色一樣的特征。 在“易語(yǔ)言用戶”類的開(kāi)頭,聲明了一個(gè)“公開(kāi)”的文本數(shù)據(jù)成員“姓名”,用于保存易語(yǔ)言用戶的姓名。在“易語(yǔ)言用戶”類的方法成員中調(diào)用了該數(shù)據(jù)成員的值,并利用控制臺(tái)輸出,這樣就可以在有很多客戶的情況下,區(qū)分我們正在與哪個(gè)用戶進(jìn)行交流。 調(diào)用的代碼: 運(yùn)行的結(jié)果如下: 在“啟動(dòng)”方法中,聲明創(chuàng)建了兩個(gè)“易語(yǔ)言用戶”類對(duì)象,“李文”、“張劍”,并分別給這兩個(gè)對(duì)象的“小名”屬性賦了值。如何區(qū)分是哪位用戶有動(dòng)作呢,就要通過(guò)用記的“小名”進(jìn)行區(qū)分了。 通過(guò)以上的簡(jiǎn)單講解,相信大家對(duì)面向?qū)ο笥袀€(gè)入門(mén)的了解,然后大家可以將上

15、述代碼中無(wú)用的控制臺(tái)命令換成有用的程序代碼,就可以實(shí)現(xiàn)面向?qū)ο蟮木幊塘恕.?dāng)然,繼續(xù)了解了下的事物對(duì)編程更加有用。 初始 實(shí)際上“初始化”是一個(gè)特殊的類方法命令,類似于老易語(yǔ)言的“_初始化”子程序,希望你對(duì)老易語(yǔ)言中的面向?qū)ο笥兴私狻? 也就是說(shuō):當(dāng)一個(gè)類的對(duì)象被創(chuàng)建時(shí),“初始化”方法被自動(dòng)調(diào)用;這個(gè)初始化方法可以不寫(xiě),如果寫(xiě)了就會(huì)被首先執(zhí)行,一般來(lái)說(shuō),這是用于對(duì)類的創(chuàng)建時(shí)的預(yù)置環(huán)境用的,相當(dāng)于一個(gè)配置工具。我們用易語(yǔ)言不是也要配置一些東西,自己習(xí)慣的東西嗎,致于您要配置什么,就根據(jù)需要寫(xiě)什么吧。 我們選朋友時(shí)也是這樣,需要一定的標(biāo)準(zhǔn),適合的朋友才選擇,不適合的朋友就選離,所謂“君子務(wù)本

16、,本立而道生。” “初始化”必須是非“靜態(tài)”的、非“私有”的、無(wú)返回值的類成員方法,可以沒(méi)有參數(shù)或有多個(gè)參數(shù),允許被重載。 “靜態(tài)初始化”方法必須是“公開(kāi)”的、“靜態(tài)”的、無(wú)返回值且無(wú)參數(shù)的類成員方法。 以上所有方法均可以被省略,如果被省略,易語(yǔ)言編譯器會(huì)自動(dòng)生成其默認(rèn)實(shí)現(xiàn)。也就是默認(rèn)有一個(gè)空的初始化方法存在,任務(wù)是什么也不做。 編譯器在編譯具有基類的類的任一初始化方法之前,如果發(fā)現(xiàn)該初始化方法中不存在“調(diào)用其基類初始化方法的語(yǔ)句”,將自動(dòng)在首部插入一條調(diào)用其基類默認(rèn)初始化方法(即無(wú)參數(shù)的初始化方法)的語(yǔ)句,以確?;惖某跏蓟椒ū徽{(diào)用。 清理 實(shí)際上“清理”是一個(gè)特殊

17、的類方法命令,類似于老易語(yǔ)言中的“_銷毀”子程序。 也就是在類結(jié)結(jié)果束前進(jìn)行一些清理的工作。比較安慰的是,易飛揚(yáng)具有內(nèi)存自動(dòng)清潔功能,否則在這一步將要大家花費(fèi)大量的時(shí)間進(jìn)行內(nèi)容的清理工作。如果大家不寫(xiě)這個(gè)類方法,默認(rèn)是自動(dòng)產(chǎn)生一個(gè)空的清理方法,當(dāng)然是什么也不做啦。不過(guò)中國(guó)人交朋友都是有始有終的,也稱之為善始善終。既然有出生、相遇……,就有分別、死亡……,這是萬(wàn)世不滅的道理。 “清理”必須是“公開(kāi)”的、非“靜態(tài)”的、無(wú)返回值且無(wú)參數(shù)的類成員方法。 系統(tǒng)在調(diào)用類的“清理”方法之后,總是會(huì)調(diào)用其基類的“清理”方法。這是一個(gè)遞歸過(guò)程,最終的結(jié)果是,該類的最基礎(chǔ)類(系統(tǒng).對(duì)象)的“清理”方法被最后

18、調(diào)用。 屬性 在成員中實(shí)際上已講了一些屬性的概念,那是成員屬性,相當(dāng)于老易語(yǔ)言中組件的屬性。 在此還要講的是“屬性方法”,在易語(yǔ)言的使用中,大家一定是非常羨慕組件中的屬性不僅可以賦值,還可以讀取吧,現(xiàn)在你也可以了。 下面給出一個(gè)例子: 在上述代碼中,“易語(yǔ)言用戶”類設(shè)置了一個(gè)“年齡”屬性方法,用于返回屬性值,第二個(gè)帶有整數(shù)參數(shù)的“年齡”屬性方法,用于接受屬性的賦值。 啟動(dòng)類中,讀取屬性的值,實(shí)質(zhì)上是調(diào)用屬性讀取方法;對(duì)屬性賦值,實(shí)質(zhì)上是調(diào)用屬性設(shè)置方法。 怎么樣,你也可以制作屬性了吧。 事件 大家還記得在老版易語(yǔ)言中,那個(gè)按鈕被單擊事件,按鈕被雙擊事件……嗎?這是大家很羨

19、慕的一件事吧,您可能一直在想,怎么我做不了這種事件呢?從我的角度來(lái)看,這個(gè)就是一個(gè)特殊的方法,這個(gè)方法有特別的規(guī)定??纯聪旅嬉粋€(gè)事件子程序的代碼: 上述代碼中,大家可以看到,在聲明的部分,只是比普通的方法多了“事件接收”字樣,在后面的參數(shù)中“被單擊事件”去除事件兩個(gè)字后,“_被單擊”拿到了前面與組件相接,形成事件名稱。在老版易語(yǔ)言中也是規(guī)定好的“_按鈕_被單擊”事件是固定不變的,如果變了就不起作用了,在這里也是這樣的,如果不按規(guī)定寫(xiě),就不會(huì)與事件的產(chǎn)生起作用了。換句話說(shuō),對(duì)組件的事件處理是通過(guò)匹配這些文本后進(jìn)行相應(yīng)的處理的。 有個(gè)例子是說(shuō)明了這個(gè)問(wèn)題的。就是帶窗口的計(jì)算器的例子,這個(gè)例

20、子對(duì)每個(gè)按鈕被按下的事件進(jìn)行了處理。 寫(xiě)到這里,提醒大家的事,這個(gè)易飛揚(yáng)還沒(méi)有完全成型,因此語(yǔ)法還在改之中,原來(lái)稱“事件”,后改為“事件接收”,最新改為“事件處理”,這個(gè)大家要理解哦,每次更改都是為了精益求精。 創(chuàng)建 前面我的描述都是太簡(jiǎn)單了,現(xiàn)在開(kāi)始,我還是要將正統(tǒng)的面向?qū)ο蟮母拍罱榻B給大家?!爸剌d”、“封裝” 、“繼承”和“多態(tài)”這些都是非常重要的。 在面向?qū)ο笾杏幸痪淅显挘骸叭f(wàn)物皆對(duì)象”,這句話并不高深哦,有些類似于物理上常用的“萬(wàn)物都有原子組成”,哈哈,看到這里,大家也就可以理解了,如果想要編程的話,那么將所有操作的窗口、組件、單元都看成一個(gè)對(duì)象,然后對(duì)這個(gè)對(duì)象

21、進(jìn)行操作就好了呀,編程的思路會(huì)更加清晰的。 創(chuàng)建其實(shí)前面例子中大家都用過(guò)了,類似于用“對(duì)象類的名字”后接空格和“你取的新生成對(duì)象的名字”后接“=”等于號(hào)加上“創(chuàng)建”關(guān)鍵字及“對(duì)象類的名字”。 白皮書(shū)中介紹的語(yǔ)法: 創(chuàng)建 類名稱[([參數(shù)表])] 編譯器將根據(jù)參數(shù)表自動(dòng)搜尋并調(diào)用合適的“初始化”方法。 創(chuàng)建類的對(duì)象,會(huì)導(dǎo)致該類及其所有基類中的“初始化”方法被調(diào)用。最基礎(chǔ)類(系統(tǒng).對(duì)象)的“初始化”方法被最先調(diào)用,該類自身的“初始化”方法被最后調(diào)用。如果其中某個(gè)類有多個(gè)重載的“初始化”方法,編譯器將根據(jù)規(guī)則選擇其中之一調(diào)用。 示例: 對(duì)象 對(duì)象1 = 創(chuàng)建 對(duì)象; 學(xué)

22、生對(duì)象 張三 = 創(chuàng)建 學(xué)生對(duì)象("張三"); 銷毀 用戶不需要關(guān)心對(duì)象何時(shí)被銷毀以及如何銷毀。這完全是“垃圾收集器”的工作。 在對(duì)象被銷毀之前,其“清理()”方法會(huì)被系統(tǒng)調(diào)用。用戶可在此方法中做一些處理,但這種需求并不多見(jiàn)。 重載 那么對(duì)于一個(gè)類中的方法命令,如果重名了,就是“重載”。這個(gè)問(wèn)題的由來(lái)類似于中國(guó)人口那么多,那么叫“王強(qiáng)”、“趙軍”的不計(jì)其數(shù),這個(gè)就是重名了,但人還是不一樣的,因?yàn)槟敲炊嗳瞬豢赡苁且粋€(gè)人吧?,F(xiàn)在好了,在編程中,于一類的事物可以只取一個(gè)名字,而參數(shù)不同就可以進(jìn)行處理了,這樣不僅可以節(jié)約名稱(有意義名字總有用完的一天),還可以讓系統(tǒng)去自動(dòng)根據(jù)參數(shù)

23、的不同來(lái)進(jìn)行處理。很強(qiáng)的功能哦。 在一個(gè)類中,如果多個(gè)方法(不包括基類中的方法)具有“相同的方法名稱和不同的參數(shù)形式”,那么稱這個(gè)方法名稱被“重載”。 “不同的參數(shù)形式”意味著:參數(shù)個(gè)數(shù)不同,或參數(shù)個(gè)數(shù)相同但“相同位置處有不同類型的參數(shù)”。 編譯器將根據(jù)實(shí)際傳入的參數(shù)形式選擇調(diào)用匹配的重載方法。 下面還是舉個(gè)例子來(lái)說(shuō)明的好。 例如我們有兩個(gè)名為“移動(dòng)”的方法命令,參數(shù)不一樣,一個(gè)方法只有一個(gè)參數(shù)是文本型,表示地點(diǎn),另一個(gè)方法有兩個(gè)參數(shù)是XY坐標(biāo)。 公開(kāi) 類 啟動(dòng)類 { 公開(kāi) 靜態(tài) 啟動(dòng) () { 好朋友.移動(dòng)("大連");

24、 好朋友.移動(dòng)(123,456); } } 公開(kāi) 類 好朋友 { 公開(kāi) 靜態(tài) 移動(dòng)(文本 地點(diǎn)) { 控制臺(tái).輸出行("移動(dòng)到"+地點(diǎn)); } 公開(kāi) 靜態(tài) 移動(dòng)(小數(shù) 坐標(biāo)X ,小數(shù) 坐標(biāo)Y) { 控制臺(tái).輸出行("移動(dòng)到"+坐標(biāo)X.到文本()+","+坐標(biāo)Y.到文本()); } } 運(yùn)行結(jié)果如下: 怎么樣,厲害吧,易飛揚(yáng)編譯器生成的代碼會(huì)自動(dòng)處理一些事情的,有點(diǎn)智能化哦。實(shí)際上將“重載”理解為“重名”就好了。 封裝 講繼承之前要講到封裝的。 封裝聽(tīng)起來(lái)

25、很可怕,其實(shí)它什么也不是。就是將類裝在一個(gè)盒子里,不可見(jiàn),外國(guó)人以前稱之為黑盒子,現(xiàn)在叫封裝,換湯不換藥而已。 還記得前面說(shuō)過(guò)的類中有不公開(kāi)的私有成員嗎?這個(gè)就是其他人不可見(jiàn)了,就稱之為封裝了。 白皮書(shū)中是這樣說(shuō)的:類可以使用私有成員存儲(chǔ)內(nèi)部數(shù)據(jù),可以使用私有方法對(duì)內(nèi)部數(shù)據(jù)進(jìn)行處理,可以通過(guò)公開(kāi)或擴(kuò)展的屬性、方法、事件對(duì)外界提供操作接口,這些都是類的封裝機(jī)制的體現(xiàn)。 也就是你的好朋友自己有五臟六腹,不用你給他就有,他也不會(huì)給你看,因?yàn)檫@是他的隱私。但是他有衣服、名字等這些外在的東西你能看到,他會(huì)說(shuō)話,這是他的公開(kāi)的接口,雖然我們并不了解他的真實(shí)想法,這也是一種保護(hù)的方法。 具體的例程看

26、前面的沒(méi)有公開(kāi)屬性的類方法命令就行了。 繼承 父母的財(cái)產(chǎn)可以由孩子來(lái)繼承,父母的基因可以傳承給子女,傳承后可能有些基本的沒(méi)有改變,有些就有些改變了。下面是兩個(gè)公開(kāi)類,類名不一樣,但是小汽車是個(gè)子類,他的父類就是汽車。汽車可以包含的子類很多,如公交車,卡車等。 下面給出代碼: 公開(kāi) 類 汽車 { 公開(kāi) 移動(dòng)(文本 地點(diǎn)) { 控制臺(tái).輸出行("移動(dòng)到"+地點(diǎn)); } 公開(kāi) 移動(dòng)(小數(shù) 坐標(biāo)X ,小數(shù) 坐標(biāo)Y) { 控制臺(tái).輸出行("移動(dòng)到"+坐標(biāo)X.到文本()+","+坐標(biāo)Y.到文本());

27、 } } 公開(kāi) 類 小汽車 <基類 = 汽車> { 公開(kāi) 移動(dòng)(文本 地點(diǎn)) { 控制臺(tái).輸出行("安裝火箭移動(dòng)到"+地點(diǎn)); } 公開(kāi) 移動(dòng)(小數(shù) 坐標(biāo)X ,小數(shù) 坐標(biāo)Y) { 控制臺(tái).輸出行("安裝火箭移動(dòng)到"+坐標(biāo)X.到文本()+","+坐標(biāo)Y.到文本()); } } 調(diào)用的代碼為以下: 公開(kāi) 類 啟動(dòng)類 { 公開(kāi) 靜態(tài) 啟動(dòng) () { 汽車 奇瑞 = 創(chuàng)建 汽車; //汽車 奇瑞 = 創(chuàng)建 小汽車;

28、 奇瑞.移動(dòng)("大連"); 奇瑞.移動(dòng)(123,456); } } 大家可以看到,上述代碼中 如果將第一行的創(chuàng)建代碼屏蔽,與將第二行的創(chuàng)建代碼屏幕后的執(zhí)行效果是不一樣的。因?yàn)樾∑嚴(yán)^承了父類汽車的兩個(gè)方法,因此根據(jù)創(chuàng)建時(shí)的不同,運(yùn)行效果也就不一樣了。 這個(gè)哪里運(yùn)用最多呢?這樣有什么好處呢? 1.原來(lái),可以將一些類封裝為類庫(kù),然后公開(kāi)接口,如果你對(duì)某個(gè)類不滿意,你就可以繼承他的類,原始的類庫(kù)不用更改。 2.也方便大型軟件的共同開(kāi)發(fā),架構(gòu)師將父類全部定義好,即使是空的沒(méi)有代碼的也無(wú)所謂了,然后由下面的工程師制作子類繼承,將真實(shí)的代碼寫(xiě)入。 3.

29、改進(jìn)軟件也成為一件非常方便的事,如果某個(gè)類中的功能不適合使用了,需要升級(jí)了,就可以再一次地繼承他,方便了程序的升級(jí)。 多態(tài) 多態(tài)實(shí)際上是與對(duì)象緊密相聯(lián)系的。在類中,可以創(chuàng)建一個(gè)方法,如果這個(gè)方法中采用了對(duì)象作為參數(shù),那么如果對(duì)象傳遞時(shí)是基類,那么就按基類進(jìn)行處理,如果對(duì)象傳遞時(shí)是子類,那么就按子類進(jìn)行處理。 大家看下面的代碼: 公開(kāi) 類 基類 { 公開(kāi) 輸出() { 控制臺(tái).輸出行("基類"); } } 公開(kāi) 類 子類<基類="基類"> { 公開(kāi) 輸出() { 控制臺(tái).輸

30、出行("子類"); } } 上述代碼中有兩個(gè)類,一個(gè)是基類,一個(gè)是子類。那么都有相同的輸出方法,且子類的輸出方法覆蓋了父類的輸出方法。 當(dāng)創(chuàng)建不同的對(duì)象時(shí),那么如果傳遞了這些不同的對(duì)象,就會(huì)按不同對(duì)象進(jìn)行處理,代碼如下: 公開(kāi) 類 啟動(dòng)類 { 公開(kāi) 靜態(tài) 啟動(dòng)() { 基類 基類1 = 創(chuàng)建 基類(); 子類 子類1 = 創(chuàng)建 子類(); 測(cè)試多態(tài)(基類1); 測(cè)試多態(tài)(子類1); } 靜態(tài) 測(cè)試多態(tài)(基類 參數(shù))

31、 { 參數(shù).輸出(); } } 上述代碼中,可以看到,加了一個(gè)“創(chuàng)建多態(tài)”的方法命令,而這個(gè)方法命令的參數(shù)是對(duì)象,因此當(dāng)上述“啟動(dòng)”方法命令中創(chuàng)建了兩個(gè)不同的對(duì)象,一個(gè)是父對(duì)象,一個(gè)是子對(duì)象,于是在調(diào)用“測(cè)試多態(tài)”的靜態(tài)方法時(shí),就根據(jù)不同的對(duì)象進(jìn)行了不同的處理。 接口 “接口” 很簡(jiǎn)單,就是這樣一種東西:就是空的方法組成的一個(gè)類,打包成類模塊,然后供大家一起調(diào)用。 這個(gè)類里的方法中,沒(méi)有具體的代碼,就是一個(gè)空的表,也可稱之為接口表。類似于C語(yǔ)言中的頭文件。接口具體的好處是在于多人工程開(kāi)發(fā)時(shí),由系統(tǒng)分析師制定出統(tǒng)一標(biāo)準(zhǔn)的接口,程序師進(jìn)行具體接口程序的編

32、程,這樣大家在進(jìn)行大型工程項(xiàng)目時(shí)就通過(guò)接口進(jìn)行溝通了。 使用“接口”時(shí)要注意以下幾點(diǎn): 1.接口只“聲明”一個(gè)或多個(gè)“公開(kāi)”的方法,但不提供方法的實(shí)現(xiàn)代碼。也就是不需要系統(tǒng)分析師寫(xiě)代碼。 2.定義接口方法時(shí)可以省略掉方法的“公開(kāi)”屬性,編譯器默認(rèn)其具有此屬性。也就是說(shuō)系統(tǒng)分析師可以偷一些懶了。 寫(xiě)接口的格式樣例如下: 公開(kāi) 接口 接口1 { 公開(kāi) 接口方法1(); 公開(kāi) 接口方法2(); } 接口聲明與類聲明是同級(jí)別的。 3.只有類可以實(shí)現(xiàn)接口。一個(gè)類可以實(shí)現(xiàn)多個(gè)接口。一個(gè)接口可以實(shí)現(xiàn)多個(gè)方法。 4.接口文件編譯為類庫(kù)后,由系統(tǒng)分析師提交給程序師

33、具體實(shí)現(xiàn),不必提供類庫(kù)的源文件。也就是說(shuō)上述接口定義的代碼保存為EF文件,然后編譯為ECL文件,只要提供程序員ECL文件給他們編程就可以了。 5.接口類似一種“規(guī)范”,如果某個(gè)類實(shí)現(xiàn)了此接口,表明此類遵循了此規(guī)范,以后就可以按照這種規(guī)范的要求來(lái)使用此類。 6.當(dāng)系統(tǒng)分析師提供類以后,由程序師來(lái)實(shí)現(xiàn)接口的具體代碼時(shí),要將此接口中的所有方法實(shí)現(xiàn),一個(gè)也不能少哦,編譯器會(huì)做嚴(yán)格的檢查。 一個(gè)類欲實(shí)現(xiàn)某個(gè)接口,意味著這個(gè)類“必須實(shí)現(xiàn)這個(gè)接口(及其所有基接口)中聲明的所有方法”。 7.實(shí)現(xiàn)接口,就是由程序師具體實(shí)現(xiàn)原來(lái)接口表中空方法的代碼。那么在定義類時(shí),程序師需要將接口的信息告訴類。 定義類

34、時(shí),通過(guò)“接口實(shí)現(xiàn)表”屬性來(lái)指定該類所實(shí)現(xiàn)的接口,示例代碼如下: 類 類1 <接口實(shí)現(xiàn)表 = 接口1> //指定單個(gè)已實(shí)現(xiàn)的接口 { 公開(kāi) 接口方法1() { //這里需要程序員添加具體實(shí)現(xiàn)代碼 } 公開(kāi) 接口方法2() { //這里需要程序員添加具體實(shí)現(xiàn)代碼 } } 類 類2 <接口實(shí)現(xiàn)表 = 接口1, 接口2, 接口3> //指定多個(gè)已實(shí)現(xiàn)的接口 { //...... } 上述代碼中,類1指定了一個(gè)接口,類2指定了多個(gè)接口,具體的代碼在接口

35、方法中實(shí)現(xiàn)。 上述的代碼保存為EF文件后可以進(jìn)行編譯,在編譯為EXE文件時(shí),會(huì)檢查ECL類庫(kù)中的接口情況,如果正常,那么對(duì)于接口的調(diào)用就相當(dāng)于對(duì)于類中具體實(shí)現(xiàn)代碼的調(diào)用。 接口通過(guò)“定義接口”、“實(shí)現(xiàn)接口”的兩個(gè)步驟后,下面就可以進(jìn)行“使用接口”了。定義接口是由系統(tǒng)分析師進(jìn)行的工作,實(shí)現(xiàn)接口是由程序師進(jìn)行的工作,一般大的項(xiàng)目就會(huì)這樣安排,以利于分工合作,但是如果小的項(xiàng)目一般用不上,即使用上了,上述的也可能是一個(gè)人進(jìn)行的。 例如,在系統(tǒng)核心庫(kù)中已有一個(gè)現(xiàn)成的接口,并且被編譯為ECL類庫(kù),接口原代碼可能為以下形式:(定義接口) 公開(kāi) 接口 錯(cuò)誤處理 { 公開(kāi) 邏輯 處理錯(cuò)誤

36、(整數(shù) 錯(cuò)誤碼, 文本 錯(cuò)誤文本); } 實(shí)現(xiàn)接口的代碼可以寫(xiě)成以下內(nèi)容: 公開(kāi) 類 錯(cuò)誤處理類 <接口實(shí)現(xiàn)表 = 錯(cuò)誤處理> { 公開(kāi) 邏輯 處理錯(cuò)誤(整數(shù) 錯(cuò)誤碼, 文本 錯(cuò)誤文本) { 控制臺(tái).輸出行("哈哈,系統(tǒng)運(yùn)行時(shí)錯(cuò)誤被我捕獲!??!"); 控制臺(tái).輸出("錯(cuò)碼碼"); 控制臺(tái).輸出行(錯(cuò)誤碼); 控制臺(tái).輸出行(錯(cuò)誤文本); 返回 真; } } 調(diào)用接口的代碼可以為以下形式: 公開(kāi) 類 啟動(dòng)類 { 公開(kāi) 靜態(tài) 啟動(dòng)() {

37、 控制臺(tái).輸出行("測(cè)試中"); 錯(cuò)誤處理 自定接口 = 創(chuàng)建 錯(cuò)誤處理類; 運(yùn)行環(huán)境.置錯(cuò)誤管理器(自定接口); 對(duì)象 對(duì)象1; // = 創(chuàng)建 對(duì)象(); 控制臺(tái).輸出行(對(duì)象1.到文本()); //故意使用 "空" 對(duì)象 } } 當(dāng)調(diào)用接口的方法時(shí),就相當(dāng)于調(diào)用了具體對(duì)象實(shí)現(xiàn)的方法。 其中有兩行大家要注意: 錯(cuò)誤處理 自定接口 = 創(chuàng)建 錯(cuò)誤處理類; 運(yùn)行環(huán)境.置錯(cuò)誤管理器(自定接口); 上述代碼中可以看到,“錯(cuò)誤處理類”對(duì)象被聲明到“錯(cuò)誤處理”這

38、個(gè)接口中,然后下面一行對(duì)接口的操作實(shí)際上就是對(duì)對(duì)象的操作。 總結(jié) 大家也可以先學(xué)習(xí)舊版易語(yǔ)言中的面向?qū)ο?,等熟悉之后,再學(xué)習(xí)易飛揚(yáng)就非常輕松了。 對(duì)比如下: 面向?qū)ο笠蛩? VB 易語(yǔ)言 易飛揚(yáng) 構(gòu)造/初始 有 有 有 析構(gòu)/清理 有 有 有 繼承 不支持 有 有 虛擬方法 不支持 有 有 多態(tài) 不支持 有 有 封裝 有 有 有 重載/重名 無(wú) 無(wú) 有 接口 無(wú) 無(wú) 有 易語(yǔ)言中的面向?qū)ο蠼滩目梢酝ㄟ^(guò)學(xué)習(xí)《易語(yǔ)言編程系統(tǒng)》第十八章,或“易語(yǔ)言知識(shí)庫(kù)ESDN→資料手冊(cè)→開(kāi)發(fā)手冊(cè)→易語(yǔ)言面對(duì)對(duì)

39、象編程”中可以找到。 看教材的目的就是要實(shí)用,那么上述用了好朋友進(jìn)行比喻,如果應(yīng)用到實(shí)際程序中將會(huì)如何呢?你要將你的數(shù)據(jù)庫(kù)系統(tǒng)用分類的方法進(jìn)行分門(mén)別類,如菜單類,快捷鍵類,數(shù)據(jù)庫(kù)操作類……這樣,一個(gè)具有人性化的程序就會(huì)出來(lái)了,里面的命令程序只要按面向?qū)ο蟮姆椒ㄕ{(diào)用就行了。 好了,大話面向?qū)ο蟮酱藭焊嬉欢温洌Mㄟ^(guò)這些小小的比喻大家能了解掌握面向?qū)ο蟮闹R(shí),逐步看一些大一些的面向?qū)ο蟮睦蹋吹臅r(shí)候大家可以將這些大例程中的對(duì)象用概念圖畫(huà)出他的層次結(jié)構(gòu),互相之間的繼承關(guān)系,以這樣的方式對(duì)對(duì)象進(jìn)行研究,這樣基本上就能看明白了。 最后要告訴大家的是,我還會(huì)寫(xiě)更多的教材和練習(xí)給大家看,畢竟在

40、大量的練習(xí)下才會(huì)有長(zhǎng)足的進(jìn)步。 面向?qū)ο蟛⒉浑y, 細(xì)細(xì)品味易飛揚(yáng), 道法自然是根本, 編程世界誰(shuí)稱王! 第8章 易語(yǔ)言的子程序 本章主要介紹易語(yǔ)言子程序的創(chuàng)建和調(diào)用、子程序參數(shù)的使用以及參數(shù)屬性的設(shè)置方法。 本章學(xué)習(xí)內(nèi)容: 8.1 新建子程序 8.6 參數(shù)的參考屬性 8.2 調(diào)用子程序 8.7 子程序的返回值 8.3 兩類子程序的區(qū)別 8.8 課后練習(xí) 8.4 子程序參數(shù)

41、 8.5 參數(shù)的可空屬性 將程序分割成較小的功能單元就可以簡(jiǎn)化程序設(shè)計(jì)任務(wù),這些功能單元被稱為子程序,可以把共享的或常調(diào)用的功能置于子程序中,達(dá)到簡(jiǎn)化程序設(shè)計(jì)、方便代碼重用和提高程序維護(hù)效率的目的,這是結(jié)構(gòu)化程序設(shè)計(jì)的主要特征之一。 · 子程序可把程序劃分成相對(duì)獨(dú)立的功能單元,每個(gè)單元都比無(wú)子程序的整個(gè)程序容易調(diào)試和理解; · 一個(gè)應(yīng)用程序中的子程序,往往不必修改或只需稍作改動(dòng),便可以成為另一個(gè)程序的子程序。 8.1 新建子程序 下面我們就開(kāi)始新建第一個(gè)自定義子程序。方法十分簡(jiǎn)單,一步一步跟我來(lái)

42、吧! ①首先在啟動(dòng)窗口添加一個(gè)按鈕,默認(rèn)名稱為“按鈕1”。雙擊按鈕1進(jìn)入代碼編輯界面。 另一種更快捷的方法是,在代碼編輯區(qū)獲得焦點(diǎn)時(shí),同時(shí)按下“Ctrl 鍵”和“N鍵”,也可以新建子程序。 ②將光標(biāo)移到代碼編輯行,右鍵單擊,在彈出菜單中選擇“新子程序”命令,就可以新建子程序。 新建子程序的默認(rèn)名稱為“子程序1”,依此類推。 第三種方法,到主菜單上。選擇“插入” “新子程序”命令也可新建子程序。 “子程序1” 已經(jīng)存在,當(dāng)另一個(gè)子程序被修改成“子程序1”

43、時(shí),易語(yǔ)言彈出出錯(cuò)提示。 注意: 在同一個(gè)程序集中,子程序名不能重復(fù)。特別在修改的時(shí)候,易語(yǔ)言會(huì)提示并修改已經(jīng)被使用過(guò)的名稱。 被易語(yǔ)言修改的子程序名。 新建的子程序沒(méi)有參數(shù),這需要操作者自行添加所需數(shù)目的參數(shù)并設(shè)置參數(shù)的類型以及參數(shù)的可空、參考和數(shù)組等屬性。 特別應(yīng)該注意的是,每個(gè)新建的子程序都不會(huì)被易語(yǔ)言或其它子程序自動(dòng)調(diào)用,下面將講解如何調(diào)用子程序。 8.2 調(diào)用子程序 前一節(jié)中講了如何建立子程序,下面演示如何調(diào)用一個(gè)子程序。

44、①在“_按鈕1_被單擊”事件子程序中添加程序代碼 “ 子程序1() ”或直接復(fù)制名稱,將其粘貼過(guò)來(lái)。 ②在“子程序1”中添加代碼:信息框(“你好!我是信息框。”,#信息圖標(biāo),) 同一個(gè)子程序可以被多次調(diào)用。 ③在“按鈕2”事件子程序中添加代碼‘ 子程序1() ’。 ④按F5鍵運(yùn)行程序,分別單擊“按鈕1”和“按鈕2”,都能彈出“子程序1”里的信息框。 一個(gè)子程序可以在事件子程序和其它新建的子程序中多次被調(diào)用,也可以被其它程序集的事件子程序和新建的子程序調(diào)用。要注意的是,在本程

45、序中定義的子程序只能在本程序中使用。 每次調(diào)用子程序時(shí),子程序中的所有命令都將從第一條開(kāi)始順序執(zhí)行,當(dāng)執(zhí)行到子程序尾部或者遇到“返回”命令時(shí)即返回到調(diào)用此子程序命令的下一條命令處。 這里的“子程序1”同時(shí)被修改為‘信息框子程序’。 ①把“子程序1”修改為“信息框子程序”。 上節(jié)中提到了子程序名稱的問(wèn)題,這里我們還要提一個(gè)小建議。當(dāng)要修改一個(gè)子程序名稱時(shí),應(yīng)該直接到這個(gè)子程序的定義位置進(jìn)行修改。這樣可以使調(diào)用它的程序代碼同步修改該子程序的名稱,如上圖所示。這可以避免因調(diào)用無(wú)效子程序?qū)е碌木幾g錯(cuò)誤。

46、 大家可以看到,子程序必須由其它子程序調(diào)用才能被執(zhí)行。子程序的調(diào)用方法與命令的調(diào)用方法完全一致。

47、

48、 8.3 兩類子程序的區(qū)別 雖然新建的子程序(自定義子程序)和事件子程序的調(diào)用方法一樣,但它們之間也有一些不同之處。

49、 ②輸入?yún)?shù)名稱并設(shè)置類型。最后按F5鍵運(yùn)行程序,單擊“按鈕1”,信息框不見(jiàn)了。 這是“_按鈕1_被單擊”子程序的原型,沒(méi)有參數(shù)。 ①光標(biāo)選中子程序名稱,按Enter鍵添加一個(gè)參數(shù)。 信息框看不到的原因是“_按鈕1_被單擊”子程序參數(shù)結(jié)構(gòu)被改變,易語(yǔ)言就會(huì)把它當(dāng)作新建的子程序,和“按鈕1”沒(méi)有任何聯(lián)系了,而新建子程序可以任意的添加參數(shù)。請(qǐng)大家自行總結(jié)一下新建的子程序和事件子程序的區(qū)別。 8.4 子程序參數(shù) ??? 參數(shù)和變量的使用方法一樣,可以使用賦值語(yǔ)句在參數(shù)內(nèi)臨時(shí)存儲(chǔ)

50、數(shù)據(jù)。參數(shù)有參數(shù)名(用來(lái)在程序中引用一個(gè)參數(shù))、數(shù)據(jù)類型(確定參數(shù)能夠存儲(chǔ)數(shù)據(jù)的種類)以及“可空”和“參考”等屬性。參數(shù)只能在定義它的子程序中使用,相當(dāng)于局部變量。 ①把8.3中“_ 按鈕1_被單擊”事件子程序的“參數(shù)1”刪除。 參數(shù)的“類型”屬性可為空。如果空,默認(rèn)為整數(shù)型。 ②在“信息框子程序”添加兩個(gè)文本型參數(shù)“參數(shù)1”和“參數(shù)2”。 ③按F5鍵,程序無(wú)法運(yùn)行,在輸出面板中可以看到出錯(cuò)提示。這就說(shuō)明我們還要在調(diào)用上述子程序時(shí)提供具體的參數(shù)。

51、 ④用光標(biāo)選中此行并雙擊,在括號(hào)內(nèi)添加“,”號(hào),按Enter鍵。 ⑤看到了嗎?調(diào)用子程序的命令前多了個(gè)“+”號(hào),我們可以將它展開(kāi)。 展開(kāi)的方法:直接雙擊或用鍵盤(pán)上的右光標(biāo)鍵。 標(biāo)簽的標(biāo)題在此處設(shè)置。 參數(shù)提示和實(shí)際參數(shù)的內(nèi)容是互相對(duì)應(yīng)的,在上面添加文本型數(shù)據(jù)“易語(yǔ)言”,當(dāng)程序運(yùn)行時(shí),下面“參數(shù)1”保存的數(shù)據(jù)就是“易語(yǔ)言”。 ①接下來(lái)我們?cè)诔绦蛑袨樽映绦蛱峁┚唧w的參數(shù)數(shù)據(jù)。用“Ctrl+Tab”組合鍵切換到界面設(shè)計(jì)狀態(tài),在窗體上添加兩個(gè)標(biāo)簽和兩個(gè)編輯框

52、,并將標(biāo)簽的標(biāo)題屬性設(shè)置為“輸入123”,提示用戶。 這是前面提到的“按鈕1”,下面的是“按鈕2”。 ②切換到代碼編輯狀態(tài),在子程序調(diào)用處,分別為兩個(gè)參數(shù)提供數(shù)據(jù)(編輯框提供的文本型數(shù)據(jù))。 ③修改“信息框子程序”代碼。 ④按F5鍵運(yùn)行程序,在“編輯框1”和“編輯框2”中輸入“123”,單擊“按鈕1”,第一個(gè)信息框被彈出。你也可以輸入其它的數(shù)據(jù),看一看效果。 子程序如需要接收參數(shù)數(shù)據(jù),必須先在子程序定義處的參數(shù)表部分定

53、義所需的參數(shù)。調(diào)用有參數(shù)的子程序時(shí)所傳遞過(guò)來(lái)的數(shù)據(jù)將被順序地填入對(duì)應(yīng)的參數(shù)中。如果傳遞過(guò)來(lái)的數(shù)據(jù)與對(duì)應(yīng)位置處的參數(shù)數(shù)據(jù)類型不一致,在可以互相轉(zhuǎn)換時(shí),系統(tǒng)將自動(dòng)將傳遞過(guò)來(lái)的數(shù)據(jù)轉(zhuǎn)換成對(duì)應(yīng)參數(shù)的數(shù)據(jù)類型后再賦值給該參數(shù);如果不能轉(zhuǎn)換,就會(huì)產(chǎn)生運(yùn)行時(shí)錯(cuò)誤。如上面的第 2 步在調(diào)用子程序的同時(shí)就把“編輯框1.內(nèi)容”和“編輯框2.內(nèi)容”作為參數(shù)數(shù)據(jù)對(duì)應(yīng)地傳遞到了編輯框子程序內(nèi)的兩個(gè)參數(shù)“參數(shù)1”和“參數(shù)2”內(nèi)。 8.5 參數(shù)的可空屬性 參數(shù)可空,就是說(shuō)該參數(shù)是可選的,從字面上就能理解它的意思。就是在調(diào)用子

54、程序時(shí),可以不提供該參數(shù)所需的數(shù)據(jù)。看看下面的例子。 ①將“參數(shù)2”可空屬性選中。方法是,選中該處單元格再單擊或選中后按空格鍵。 ②把調(diào)用處的“參數(shù)2”刪除。 如果某個(gè)參數(shù)的“可空”屬性為真,那么在調(diào)用本子程序時(shí),可以不給此參數(shù)傳遞數(shù)據(jù)??煽盏膮?shù)主要用于支持具有默認(rèn)值的參數(shù);另外,如果給某個(gè)子程序添加了新參數(shù)卻又不想去更改以前調(diào)用此子程序的代碼,那么只要將新參數(shù)設(shè)置為可空參數(shù)就行了。 8.6 參數(shù)的參考屬性 打個(gè)比方,你家的門(mén)鎖有兩把鑰匙,分

55、別由兩個(gè)人拿著。不管是哪一個(gè)人都可以打開(kāi)房門(mén),改變家里家具的擺放位置。如果子過(guò)程的參數(shù)具有“參考”屬性,那么,當(dāng)調(diào)用子程序時(shí)負(fù)責(zé)提供該參數(shù)數(shù)據(jù)的是一個(gè)變量的話,在子程序中修改了該參數(shù)的值,那個(gè)變量的值也會(huì)跟著被改變。 ①在“_按鈕1_被單擊”事件子程序中添加兩個(gè)局部變量。 ②把編輯框提供的文本型數(shù)據(jù)轉(zhuǎn)換到整數(shù)型。 注意: 文本型數(shù)據(jù)默認(rèn)具有參考屬性,所以此例中為了演示參數(shù)的參考屬性,把文本型數(shù)據(jù)轉(zhuǎn)換到整數(shù)型。 ③添加信息框,顯示調(diào)用子程序后,“變量2”的值。

56、 ④將“信息框子程序”兩個(gè)參數(shù)的類型改為整數(shù)型。 ⑤添加代碼,修改“參數(shù)2”的值。 注意: 為了更好地了解程序的運(yùn)行過(guò)程,可以通過(guò)在關(guān)鍵代碼行前設(shè)置斷點(diǎn)的方法來(lái)跟蹤代碼行的執(zhí)行情況。 ⑥在代碼行前設(shè)置斷點(diǎn)。 設(shè)置斷點(diǎn)的方法:用光標(biāo)選中將被設(shè)置斷點(diǎn)的代碼行,再按F9鍵。 ⑦按F5鍵運(yùn)行程序,在啟動(dòng)窗口的編輯框中輸入“123”,單擊“按鈕1”。 窗口消失,程序停止,一個(gè)斷點(diǎn)變黃。這就說(shuō)明在“_按鈕1_被單擊”事件子程序中,第一個(gè)斷點(diǎn)處的“信

57、息框子程序”將被執(zhí)行。 “參數(shù)2”的值被改變。 “參數(shù)1”的值是“變量1”的值。兩個(gè)條件都成立。 再按F5鍵,“信息框子程序”里的代碼被執(zhí)行。說(shuō)明子程序已經(jīng)被調(diào)用。 再按F5鍵,斷點(diǎn)變?yōu)榧t色,彈出條件成立的信息框。 ⑧單擊“確定”按鈕。 程序又跳到了“信息框子程序”被調(diào)用處的下一行代碼處,說(shuō)明“信息框子程序”執(zhí)行完畢。 再按F5鍵,彈出“_按鈕1_被單擊”事件子程序中的信息框。 由于運(yùn)行開(kāi)始時(shí)“編輯框1”內(nèi)的數(shù)據(jù)為空文本,轉(zhuǎn)換到整數(shù)后為“0

58、”。 即使“參數(shù)2”的數(shù)據(jù)被改變,“變量2”仍保存原值。 “參數(shù)2”沒(méi)有設(shè)置參考。 ⑨單擊“確定”按鈕,代碼運(yùn)行結(jié)束。關(guān)閉程序,然后設(shè)置“參數(shù)2”的參考屬性,設(shè)置“參數(shù)2”的參考屬性的方法類似可空屬性的設(shè)置,在參數(shù)定義表“參考”欄相應(yīng)空格內(nèi)單擊使之出現(xiàn)一個(gè)“√”號(hào)。 按F5鍵運(yùn)行。最后信息框顯示“變量2”的值和“參數(shù)2”的值是相同的。 當(dāng)使用變量向子程序的參數(shù)傳遞數(shù)據(jù)時(shí),如果所傳遞過(guò)來(lái)的變量為數(shù)組、用戶定義數(shù)據(jù)類型、庫(kù)定義數(shù)據(jù)類型、字節(jié)集型或文本型,則無(wú)論參數(shù)的“參考”屬性是否為真,都將是傳遞變量的指針(即該變量的內(nèi)存地址),這

59、樣在子程序中改變?cè)搮?shù)的值時(shí)相應(yīng)變量的值也會(huì)被改變;如果所傳遞過(guò)來(lái)的變量類型與相應(yīng)參數(shù)的數(shù)據(jù)類型不一致但可以相互轉(zhuǎn)換,譬如將整數(shù)型變量傳遞到小數(shù)型的參數(shù)時(shí),則在數(shù)據(jù)被實(shí)際傳遞前,系統(tǒng)將首先自動(dòng)將整數(shù)型變量的值轉(zhuǎn)換為小數(shù)型數(shù)據(jù),然后再進(jìn)行傳遞,在這種情況下,即使參數(shù)的“參考”屬性為真,系統(tǒng)也無(wú)法傳遞指向原變量的指針,只能傳遞經(jīng)過(guò)類型轉(zhuǎn)換后的變量的值。如果系統(tǒng)將數(shù)據(jù)指針成功地傳遞過(guò)來(lái),那么在子程序中對(duì)此參數(shù)內(nèi)容的更改將會(huì)相應(yīng)地反映到調(diào)用子程序時(shí)負(fù)責(zé)提供相應(yīng)參數(shù)數(shù)據(jù)的變量上。 8.7 子程序的返回值 子程序可以返回?cái)?shù)據(jù),稱為返

60、回值,但必須首先定義返回值的類型,并且要在子程序中使用“返回”命令進(jìn)行返回。 ①將“信息框子程序”的返回值類型設(shè)置為整數(shù)型。 ②刪除下面兩行代碼。 參數(shù)2 = 123 信息框 (“參考的使用方法?!?+ #換行符 + “變量2==” + 到文本 (變量2), 0,) ③在“_按鈕1_被單擊”事件子程序中添加名稱為“返回值”的整數(shù)型變量。 ④“返回值”變量用來(lái)保存“信息框子程序”返回的整數(shù)型數(shù)值。 ⑤在“信息框子程序”的每個(gè)分支處添加返回命令。

61、 ⑥將“信息框子程序”里的兩個(gè)“信息框”命令復(fù)制到“_按鈕1_被單擊”子程序的判斷語(yǔ)句中。 ⑦最后按F5鍵運(yùn)行程序。 調(diào)用一個(gè)子程序時(shí),子程序中的所有命令將從第一條開(kāi)始順序執(zhí)行,當(dāng)執(zhí)行到子程序尾部或者遇到“返回”命令時(shí)即返回到調(diào)用此子程序命令的下一條命令處。當(dāng)一個(gè)子程序有返回值時(shí),如果需要使用該返回值,可以把子程序調(diào)用命令嵌在其它命令中,如“變量1=變量2+子程序名(參數(shù)…)+變量3”(這里假設(shè)“子程序名(參數(shù)…)”有返回值),也可以建立一個(gè)與該返回值數(shù)據(jù)類型相同的變量來(lái)接收該返回值,即使用“變量名=子程序名(參數(shù)…)”的形式(“=”在

62、這里是賦值號(hào))。 8.8課后練習(xí) (1)練習(xí)子程序的建立與調(diào)用。 ①新建“Windows窗口程序”添加一個(gè)按鈕。 ②添加如圖上的代碼。 完成后運(yùn)行一下程序看看。 這兩個(gè)地方添加什么值,才可以使程序運(yùn)行,并且能夠正確顯示呢?請(qǐng)大家來(lái)將這兩個(gè)命令補(bǔ)充完整。 (2)練習(xí)編寫(xiě)用子程序的方式表示兩數(shù)相加,返回和的例程。 , ①新建易程序,放兩個(gè)編輯框組件與一個(gè)按鈕組件,雙擊按鈕組件,進(jìn)入程

63、序代碼界面。 ②新建一個(gè)子程序,名稱為:“和是幾”。加入兩個(gè)數(shù)。參數(shù)類型為整數(shù)型。返回值類型為整數(shù)型。 ③在“_按鈕1_.被單擊”事件子程序下輸入以下程序代碼: 信息框 (和是幾 (到數(shù)值 (編輯框1.內(nèi)容), 到數(shù)值 (編輯框2.內(nèi)容)), 0, ) 在“和是幾”子程序下輸入以下程序代碼: 返回(數(shù)1+數(shù)2) 最后按F5鍵運(yùn)行程序看看。 (2)用子程序的方式編寫(xiě)判斷兩個(gè)數(shù)大小的程序,并返回最大數(shù)。 ①新建易程序,放兩個(gè)編輯框組

64、件與一個(gè)按鈕組件,雙擊按鈕組件,進(jìn)入程序代碼界面。 在“_按鈕1.被單擊”子程序下輸入以下程序代碼: 信息框 (和是幾 (到數(shù)值 (編輯框1.內(nèi)容), 到數(shù)值 (編輯框2.內(nèi)容)), 0, ) 在“和是幾”子程序下輸入以下程序代碼: 如果 (數(shù)1 > 數(shù)2) 返回 (數(shù)1) 否則 返回 (數(shù)2) 如果結(jié)束 最后按F5鍵運(yùn)行程序。大家再留意一下,“如果”命令還有這種形式的,這種形式的“如果”命令雖然占的代碼行稍多,但邏輯很清晰,提倡大家以后在使用“如果”命令時(shí)多使用這種形式。 ②新建一個(gè)子程序,名稱為:“誰(shuí)最大”。加入兩個(gè)數(shù)。參數(shù)類型為整數(shù)型。返回值類

65、型為整數(shù)型。 第2章 編程的基礎(chǔ)概念 在本章中,將講到編程的一些基礎(chǔ)知識(shí),包括變量的概念,變量的有效范圍,數(shù)據(jù)類型等知識(shí)。 其后,本書(shū)將引導(dǎo)您編寫(xiě)一個(gè)自己的MP3播放器,認(rèn)識(shí)窗口、按鈕、編輯框三個(gè)常用組件以及命令及事件子程序。 本章學(xué)習(xí)內(nèi)容: 2.1 編寫(xiě)第二個(gè)程序 2.6 編寫(xiě)一個(gè)MP3播放器 2.2 什么是變量與常量 2.7 認(rèn)識(shí)窗口、按鈕、編輯框 2.3 變量的數(shù)據(jù)類型 2.8 認(rèn)識(shí)事件子程序 2.4 變

66、量的有效范圍 2.9 認(rèn)識(shí)組件的方法 2.5 變量的初始值 2.10 課后練習(xí) 大家會(huì)說(shuō)1+2等于幾太簡(jiǎn)單了,這個(gè)例程雖然簡(jiǎn)單,但這是為以后進(jìn)行復(fù)雜一些的計(jì)算作準(zhǔn)備,所以我們先用最簡(jiǎn)單的例子來(lái)演示,大家只要學(xué)會(huì)寫(xiě)這個(gè)小程序,再遇到復(fù)雜一些的計(jì)算,就可以自己寫(xiě)了。 那么如何用易語(yǔ)言實(shí)現(xiàn)1+2的計(jì)算呢,大家就跟著下面的步驟來(lái)吧。 2.1 編寫(xiě)第二個(gè)易程序 ①首先啟動(dòng)易語(yǔ)言。點(diǎn)擊“編輯框”組件。 ②用鼠標(biāo)在窗體上拖動(dòng)畫(huà)出一個(gè)編輯框組件。名稱為“編輯框1”。 ③點(diǎn)擊“按鈕”組件。 ④在窗體上拖動(dòng)鼠標(biāo)畫(huà)出一個(gè)按鈕組件。名稱為“按鈕1”。 ⑤在屬性面板中找到按鈕的標(biāo)題屬性,將標(biāo)題內(nèi)容改為“計(jì)算1+2=?”。 ⑥大家可以看到按鈕組件的標(biāo)題被更改了,大家再雙擊按鈕組件,進(jìn)入程序代碼設(shè)計(jì)界面。 大家可以看到系統(tǒng)已自動(dòng)生成一個(gè)名稱為“_按鈕1_被單擊”的

展開(kāi)閱讀全文
溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!