版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第5講:類、對(duì)象、方法和參數(shù)(1)
class,object,methodandparameter用Alice學(xué)編程第5節(jié)共27頁,您現(xiàn)在瀏覽的是第1頁!面向?qū)ο蟮某绦蛟O(shè)計(jì)(Object-orientedprogramming)中用類、對(duì)象和方法來組織程序。這種組織方法的好處:
把一個(gè)大的程序分成若干個(gè)小的模塊
用和現(xiàn)實(shí)生活中一樣的概念來設(shè)計(jì)程序
容易發(fā)現(xiàn)程序運(yùn)行錯(cuò)誤5.1類和對(duì)象(classANDobject)用Alice學(xué)編程第5節(jié)共27頁,您現(xiàn)在瀏覽的是第2頁!類(Class):是一個(gè)描述一類有共性的物體的概念,如汽車、桌子等。在Alice中,每一類用一個(gè)3D模型表示。對(duì)象(Object)符合一個(gè)類中所描述的共性的實(shí)際的物體稱為這個(gè)類的一個(gè)實(shí)例(instance
),如汽車的共性有:都有一個(gè)方向盤、四個(gè)輪子、有顏色、排氣量等特點(diǎn)。但這僅僅是概念的描述,實(shí)際生產(chǎn)出來的汽車就是這個(gè)類的一個(gè)實(shí)例,我們把它叫做一個(gè)汽車對(duì)象。在Alice中,用個(gè)字母大寫的單詞表示類名。如Frog,Airport;而用全部小寫的單詞表示對(duì)象名。如frog,frog1,frog2,frog3Alice舉例用Alice學(xué)編程第5節(jié)共27頁,您現(xiàn)在瀏覽的是第3頁!5.2場(chǎng)景級(jí)的方法(World-levelmethods)我們所熟悉的方法如
move,turntoface,say都是屬于某個(gè)對(duì)象的,這種方法我們稱之為類級(jí)的方法(class-levelmethods)而我們的程序都存在于World.myfirstmethod中,我們稱這個(gè)方法為場(chǎng)景級(jí)的方法。FirstEncounter_without_methods.a2w用Alice學(xué)編程第5節(jié)共27頁,您現(xiàn)在瀏覽的是第4頁!World.myfirstmethod太長(zhǎng)帶來的問題隨著程序功能越來越多,代碼也越來越長(zhǎng),如果我們把這些代碼全部放到World.myfirstmethod中,則不僅不容易閱讀,而且不容易發(fā)現(xiàn)錯(cuò)誤。
用Alice學(xué)編程第5節(jié)共27頁,您現(xiàn)在瀏覽的是第5頁!逐步細(xì)化(StepwiseRefinement)在原來冗長(zhǎng)的代碼中分別找出相應(yīng)的代碼放到surprise、investigate、和react中。如:surpriseDoinorderalienOnWheelsmovesupalienOnWheelssays“whoareyou?"spiderRobot'sheadturnsaround用Alice學(xué)編程第5節(jié)共27頁,您現(xiàn)在瀏覽的是第6頁!舉例FirstEncounter.a2w該例子中說明的概念:
surprise
是一個(gè)world-levelmethod
,因?yàn)樗x在World節(jié)點(diǎn)中,而且其中包含對(duì)多個(gè)對(duì)象的操作(spiderRobot,alienOnWheels)surprise方法只有被調(diào)用(called/invoked
)才能有效果。用Alice學(xué)編程第5節(jié)共27頁,您現(xiàn)在瀏覽的是第7頁!自己定義方法的好處節(jié)省時(shí)間:寫程序時(shí)我們可以反復(fù)調(diào)用這個(gè)方法,而不需要重新寫一遍??s短代碼長(zhǎng)度:原來的代碼中的若干行代碼可以用這一行調(diào)用方法的代碼代替。
寫程序時(shí)在一個(gè)更高的層次上考慮(“thinkatahigherlevel”),如只要考慮surprise
而不用考慮這么多:“alienmovesup;aliensays‘whoareyou‘;robot'sheadturnsaround.““thinkatahigherlevel”實(shí)際上是一種封裝,即用一個(gè)方法封裝了具體的實(shí)現(xiàn)細(xì)節(jié)。用Alice學(xué)編程第5節(jié)共27頁,您現(xiàn)在瀏覽的是第8頁!5.3方法的參數(shù)(Parameter)舉例:創(chuàng)作一個(gè)動(dòng)畫讓甲殼蟲樂隊(duì)的每個(gè)成員按順序分別演出一個(gè)獨(dú)奏曲。用Alice學(xué)編程第5節(jié)共27頁,您現(xiàn)在瀏覽的是第9頁!故事板DotogetherDoinorder
georgeBeetlemoveup
georgeBeetlemovedownplaysoundDotogetherDoinorder
ringoBeetlemoveup
ringoBeetlemovedownplaysoundDotogetherDoinorder
paulBeetlemoveup
paulBeetlemovedownplaysoundDotogetherDoinorder
lennonBeetlemoveup
lennonBeetlemovedownplaysound用Alice學(xué)編程第5節(jié)共27頁,您現(xiàn)在瀏覽的是第10頁!一個(gè)更簡(jiǎn)潔的方法觀察BeetleBand-v1.5.a2w,四個(gè)成員演奏的動(dòng)畫極其類似,只有演奏者和播放的音樂不同,其它動(dòng)作類型和順序都一樣。是否可以僅告訴Alice演奏者的名字和對(duì)應(yīng)的音樂,它就可以自動(dòng)按照這種動(dòng)畫步驟來做呢?也就是說,總結(jié)這4個(gè)類似的方法的共性,并將它們歸一化為一個(gè)方法。用Alice學(xué)編程第5節(jié)共27頁,您現(xiàn)在瀏覽的是第11頁!參數(shù)的種類Alice中提供了幾種類型的參數(shù):
用Alice學(xué)編程第5節(jié)共27頁,您現(xiàn)在瀏覽的是第12頁!DemoBeetleBand-v2該例子中說明的概念定義參數(shù)的方法:名字和類型
參數(shù)相當(dāng)于占位符(placeholder),即在調(diào)用這個(gè)方法時(shí),這里位置是需要指定具體值的。用Alice學(xué)編程第5節(jié)共27頁,您現(xiàn)在瀏覽的是第13頁!不增加參數(shù)個(gè)數(shù),但是用演奏者的身高來控制跳起來的高度。beetleBand-control_height_with_who_para.a2w一個(gè)參數(shù)在方法中可以多次被用到用Alice學(xué)編程第5節(jié)共27頁,您現(xiàn)在瀏覽的是第14頁!作業(yè)5-2迷惑的袋鼠Kanga在內(nèi)陸四處張望尋覓早餐,Kanga(Animals中的袋鼠kangaroo)碰到了相當(dāng)奇怪的路標(biāo)sign(RoadsandSigns文件夾)。Kanga盯著路標(biāo)看了幾秒,然后把頭歪到一邊顯示她的困惑。接著Kanga向左跳了一些,然后轉(zhuǎn)向路標(biāo),隨后又向右跳了一些,再次轉(zhuǎn)向路標(biāo),這樣重復(fù)了好幾次。創(chuàng)建一個(gè)程序來模擬這個(gè)漫畫故事。編寫hopLeft方法(Kanga左轉(zhuǎn)一些后跳起,然后轉(zhuǎn)向路標(biāo))和hopRight方法(Kanga右轉(zhuǎn)一些后跳起,然后轉(zhuǎn)向路標(biāo))。每次跳躍,Kanga都會(huì)離路標(biāo)更近些。在World.myfirstmethod中,交替地調(diào)用hopLeft與hopRight方法(兩次)讓Kanga沿“之”形跳向路標(biāo)
參考視頻:參考視頻文件exercise-5-2.swf用Alice學(xué)編程第5節(jié)共27頁,您現(xiàn)在瀏覽的是第15頁!
用Alice學(xué)編程第5節(jié)共27頁,您現(xiàn)在瀏覽的是第16頁!解決方法將myfirstmethod中的代碼按照功能組織成幾個(gè)相對(duì)獨(dú)立的代碼塊,并分別給這些代碼塊起個(gè)名字。如:
Doinorder
surprise–spiderRobotandalienOnWheelssurpriseeachother
investigate–spiderRobotgetsacloserlookatalienOnWheels
react
–alienOnWheelshidesandspiderRobotsendsmessage用Alice學(xué)編程第5節(jié)共27頁,您現(xiàn)在瀏覽的是第17頁!在Alice中創(chuàng)建一個(gè)新的場(chǎng)景級(jí)方法
首先選中World節(jié)點(diǎn)選中World節(jié)點(diǎn)的method點(diǎn)擊"createnewmethod"用Alice學(xué)編程第5節(jié)共27頁,您現(xiàn)在瀏覽的是第18頁!Myfirstmethod方法是被誰調(diào)用的?用Alice學(xué)編程第5節(jié)共27頁,您現(xiàn)在瀏覽的是第19頁!自己改造Snowpeople例子Snowpeople_have_not_defined_methods.a2w用Alice學(xué)編程第5節(jié)共27頁,您現(xiàn)在瀏覽的是第20頁!用Alice學(xué)編程第5節(jié)共27頁,您現(xiàn)在瀏覽的是第21頁!舉例該例子中說明的概念
要想播放一段聲音,首先要將聲音文件導(dǎo)入Alice。該例子僅僅實(shí)現(xiàn)了georgeBeetle演奏的動(dòng)畫
完成其它三個(gè)成員的動(dòng)畫是否需要同樣制作三個(gè)方法?
BeetleBand-v1.5.a2w用Alice學(xué)編程第5節(jié)共27頁,您現(xiàn)在瀏覽的是第22頁!參數(shù)(Parameter)在我們熟悉的方法中,我們已經(jīng)使用了方法的參數(shù),如Move的方向,距離,持續(xù)時(shí)間等等。這些參數(shù)給你更多的控制,同樣一個(gè)方法,由于參數(shù)的值不同,效果不一樣。
一個(gè)方法可以有好幾個(gè)參數(shù),每個(gè)參數(shù)都必須是某種數(shù)據(jù)類型,如:一個(gè)方法在被調(diào)用時(shí)它的參數(shù)(Parameter)必須被具體的值所代替。
如上面的distance,duration分別被0.5meters,0.5seconds代替。一個(gè)方法可被多次調(diào)用,而每次調(diào)用時(shí)傳進(jìn)去的值都可能不一樣。用Alice學(xué)編程第5節(jié)共27頁,您現(xiàn)在瀏覽的是第23頁!定義帶有參數(shù)的方法soloParameters:bandMember,musicDotogether
Doinorder
bandMember
moveup
bandMembermovedown
play
music定義一個(gè)演奏的方法:solo,同時(shí)定義該方法的兩個(gè)參數(shù)bandMember,music分別是Object類型和Sound類型。用Alice學(xué)編程第5節(jié)共27頁,您現(xiàn)在瀏覽的是第24頁!增加一個(gè)數(shù)值類型的參數(shù)增加一個(gè)數(shù)值類型的參數(shù)來表達(dá)每個(gè)演奏者跳起的高度。beetleBand-add_height_para.a2w用Alice學(xué)編程第5節(jié)共27頁,您現(xiàn)在瀏覽的是第25頁!作業(yè)5-1雪人的脫帽禮為Snowpeople虛擬世界(參考文件:Snowpeople_have_not_defined_methods.a2w)添加一個(gè)全局方法。這個(gè)名為flipHats的新方法,將在女雪人把頭轉(zhuǎn)向男雪人之后被調(diào)用。在flipHats方法中,男雪人用右手摘下帽子,然后優(yōu)雅地把帽子指向女雪人,隨后再把帽子戴到自己頭上。在男雪人致完脫帽禮的時(shí)候,女雪人也會(huì)摘下帽子致脫帽禮。。參考視頻文件exercise-5-1.swf用Alice學(xué)編程第5節(jié)共27頁,您現(xiàn)在瀏覽的是第
溫馨提示
- 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. 人人文庫網(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屆高考?xì)v史一輪復(fù)習(xí)模塊四選修部分選修三20世紀(jì)的戰(zhàn)爭(zhēng)與和平第47講第二次世界大戰(zhàn)和雅爾塔體系下的冷戰(zhàn)與和平學(xué)案含解析新人教版
- 小吃店租房合同范例
- 關(guān)于水果店轉(zhuǎn)讓合同范例
- 工廠木材買賣合同范例
- 建筑承攬合同范例
- 定鋪?zhàn)赓U合同范例
- 上海團(tuán)體旅游合同模板
- 廣告公司合同范例
- 化工設(shè)備清洗合同模板
- 公園承包攤位合同范例
- 2024中國(guó)鐵路成都局集團(tuán)限公司招聘88人高頻考題難、易錯(cuò)點(diǎn)模擬試題(共500題)附帶答案詳解
- 數(shù)字信號(hào)處理試卷及答案
- 電子商務(wù)運(yùn)營(yíng) 教案 項(xiàng)目三 網(wǎng)店推廣
- 血栓風(fēng)險(xiǎn)評(píng)估及個(gè)體化干預(yù)(遺傳性易栓癥風(fēng)險(xiǎn)基因檢測(cè))
- 胃管置入術(shù)的規(guī)范操作課件
- 課題-初中數(shù)學(xué)作業(yè)優(yōu)化設(shè)計(jì)的研究研究報(bào)告及課題研究報(bào)告
- 冬季預(yù)防訓(xùn)練傷的
- 2023自動(dòng)扶梯與自動(dòng)人行道扶手帶技術(shù)要求
- 證據(jù)法司考真題
- 機(jī)床行業(yè)培訓(xùn)資料
- 項(xiàng)目管理培訓(xùn)之溝通管理課件
評(píng)論
0/150
提交評(píng)論