《HarmonyOS鴻蒙應(yīng)用開發(fā)》-項目3-04 特殊操作符;項目3-05 異步編程、導(dǎo)入導(dǎo)出、綜合案例:模擬田忌賽馬_第1頁
《HarmonyOS鴻蒙應(yīng)用開發(fā)》-項目3-04 特殊操作符;項目3-05 異步編程、導(dǎo)入導(dǎo)出、綜合案例:模擬田忌賽馬_第2頁
《HarmonyOS鴻蒙應(yīng)用開發(fā)》-項目3-04 特殊操作符;項目3-05 異步編程、導(dǎo)入導(dǎo)出、綜合案例:模擬田忌賽馬_第3頁
《HarmonyOS鴻蒙應(yīng)用開發(fā)》-項目3-04 特殊操作符;項目3-05 異步編程、導(dǎo)入導(dǎo)出、綜合案例:模擬田忌賽馬_第4頁
《HarmonyOS鴻蒙應(yīng)用開發(fā)》-項目3-04 特殊操作符;項目3-05 異步編程、導(dǎo)入導(dǎo)出、綜合案例:模擬田忌賽馬_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

XX學(xué)院教案課程HarmonyOS鴻蒙應(yīng)用開發(fā)課次8課題特殊操作符班級授課地點實到人數(shù)授課時間備課時間課型□理論□實踐√理實一體教學(xué)目標(biāo)知識目標(biāo):1.掌握四種特殊操作符的語法格式。2.理解各操作符的應(yīng)用場景。3.區(qū)分空值合并與邏輯或的區(qū)別。能力目標(biāo):1.能正確使用可選鏈訪問嵌套屬性。2.能合理選擇空值處理操作符。3.能安全使用非空斷言操作符。素質(zhì)目標(biāo):1.培養(yǎng)防御性編程思維。2.強化代碼安全意識。3.樹立風(fēng)險預(yù)防意識。教學(xué)重點1.可選操作符的安全訪問機制。2.空值合并操作符的判斷邏輯。3.非空斷言的風(fēng)險控制。教學(xué)難點1.可選鏈的短路特性。2.空值賦值的條件判斷。3.斷言操作的潛在風(fēng)險。教學(xué)過程(主要教學(xué)內(nèi)容、教學(xué)方式方法、教學(xué)時間分配等)主要教學(xué)內(nèi)容教學(xué)活動教學(xué)用時(分鐘)一、問題導(dǎo)入二、可選操作符三、控制處理四、斷言操作五、總結(jié)提升1.演示CourseInfo接口未初始化時的報錯。2.引出安全訪問的需求。1.CourseInfo案例分步解析:-未初始化course?.professor-已初始化但days為undefined2.對象鏈訪問的短路特性。1.空值合并操作符演示:-nullValue??"默認(rèn)值"-emptyText??"默認(rèn)值"2.空值賦值運算符:-b??=a的賦值條件-c??=d的生效場景。1.User接口的非空斷言:-user!.name的安全使用-user!.age!.toString()的風(fēng)險2.運行時錯誤分析。1.操作符使用場景對照表。2.安全編程規(guī)范要點。10'20'20'20'10’課程思政教學(xué)設(shè)計1.風(fēng)險意識:通過非空斷言強調(diào)安全底線。2.嚴(yán)謹(jǐn)作風(fēng):用空值合并培養(yǎng)細(xì)致習(xí)慣。3.預(yù)防思維:借可選鏈體現(xiàn)防患未然。教學(xué)手段教具極域課堂教學(xué)課后作業(yè)與思考題1.超星在線作業(yè)。2.基礎(chǔ)題:重構(gòu)CourseInfo添加學(xué)分查詢鏈。3.提高題:設(shè)計用戶權(quán)限的安全訪問方案??偨Y(jié)分析本堂課嚴(yán)格遵循教材案例體系,采用“問題驅(qū)動→逐項解析→風(fēng)險警示”的教學(xué)路徑:通過CourseInfo完整演示可選鏈的安全訪問。使用nullValue/emptyText對比空值處理邏輯。結(jié)合User接口深入分析斷言操作的風(fēng)險邊界。重點培養(yǎng)安全編程意識,通過控制臺錯誤直觀展示操作符的邊界條件。教學(xué)詳案(附頁)一、問題導(dǎo)入(10分鐘)1.錯誤場景演示(5分鐘)【教師操作】現(xiàn)場編寫代碼:interfaceCourseInfo{professor:string}letcourse:CourseInfo|undefined;console.log(fessor);//故意不初始化【學(xué)生觀察】編譯報錯“'course'ispossibly'undefined'.”【提問】“為什么會出現(xiàn)這個錯誤?如何避免?”(引導(dǎo)學(xué)生回憶undefined和null的潛在風(fēng)險)2.需求引出(5分鐘)【對比展示】修改代碼:console.log(course?.professor);//輸出undefined而非報錯【概念強調(diào)】“可選操作符就像安全氣囊,當(dāng)碰撞(空值)發(fā)生時保護程序不崩潰”。【板書】繪制對象鏈訪問示意圖:course→professor→length標(biāo)注可能斷裂的環(huán)節(jié)。二、可選操作符(20分鐘)【案例1】未初始化訪問。letcourse:CourseInfo|undefined;console.log("教授姓名:",course?.professor);//輸出undefined重點:操作符在第一個環(huán)節(jié)就短路返回?!景咐?】部分初始化:course={professor:"張教授",days:undefined};console.log("天數(shù):",course?.days?.length);關(guān)鍵點:第一層course?.days返回undefined。第二層?.length阻止繼續(xù)訪問?!惧e誤對比】刪除操作符演示錯誤鏈?zhǔn)椒磻?yīng)?!窘Y(jié)論】可選操作符會阻斷方法調(diào)用鏈。三、控制處理(20分鐘)1.空值合并操作符(10分鐘)【對比實驗】constfalsyValue=0;constfalsyValue1='';console.log('',falsyValue||"默認(rèn)值");//輸出"默認(rèn)值"console.log('',falsyValue??"默認(rèn)值");//輸出0console.log('',falsyValue1??"默認(rèn)值");//輸出空字符串console.log('',falsyValue1||"默認(rèn)值");//輸出“默認(rèn)值”【規(guī)律總結(jié)】板書真值表。左值??結(jié)果||結(jié)果null右值右值""""右值2.空值賦值運算符(10分鐘)【場景模擬】用戶配置初始化:letuserConfig:Config|null=null;constdefaultConfig:Config={theme:"light"};userConfig??=defaultConfig;//生效賦值console.log('',JSON.stringify(userConfig))//輸出:{"theme":"light"}【陷阱警示】演示錯誤用法:letcount=0;count??=10;//不會賦值強調(diào):僅對null/undefined生效,區(qū)別JS。四、斷言操作(20分鐘)1.安全斷言演示(10分鐘)【正確案例】類型收窄后使用。interfaceUser{name:string|null}functionprintName(user?:User){if(user){//判斷安全console.log(user!.name);//此時可安全斷言}}【錯誤案例】強制斷言后果。interfaceUser{name:string|undefined}functionprintName(user?:User){console.log(user!.name!.toString())//運行時可能會崩潰}展示錯誤堆棧截圖(對應(yīng)教材圖3.8)。2.防御性編程對比(10分鐘)【分組討論】給出三種寫法,各組分析適用場景。//方案1:強制斷言(危險)user!.age!.toString();//方案2:可選鏈(安全)user?.age?.toString();//方案3:默認(rèn)值保護(user?.age??0).toString();五、總結(jié)提升(10分鐘)1.操作符決策樹(7分鐘)【思維導(dǎo)圖】板書選擇路徑:需要訪問深層屬性?→選?.需要提供默認(rèn)值?→選??確定不為空?→謹(jǐn)慎用!2.課程思政升華(3分鐘)【編程箴言】“防御性編程如同系安全帶,非空斷言堪比危險駕駛”。XX學(xué)院教案課程HarmonyOS鴻蒙應(yīng)用開發(fā)課次9課題??異步編程、導(dǎo)入導(dǎo)出、綜合案例:模擬田忌賽馬班級授課地點實到人數(shù)授課時間備課時間課型□理論□實踐√理實一體教學(xué)目標(biāo)知識目標(biāo):1.掌握Promise的三種狀態(tài)及處理方法。2.理解async/await的語法糖特性。3.熟悉模塊化編程的導(dǎo)入導(dǎo)出規(guī)則。能力目標(biāo):1.能使用Promise處理異步操作。2.能通過async/await優(yōu)化異步代碼。3.能實現(xiàn)模塊的拆分與組合。素質(zhì)目標(biāo):1.培養(yǎng)異步編程思維。2.強化模塊化設(shè)計意識。3.理解策略優(yōu)化的價值。教學(xué)重點1.Promise的鏈?zhǔn)秸{(diào)用。2.await的阻塞特性。3.默認(rèn)導(dǎo)出與命名導(dǎo)出的區(qū)別。教學(xué)難點1.Promise的狀態(tài)轉(zhuǎn)換機制。2.命名空間的使用場景。3.重導(dǎo)出的實際應(yīng)用。教學(xué)過程(主要教學(xué)內(nèi)容、教學(xué)方式方法、教學(xué)時間分配等)主要教學(xué)內(nèi)容教學(xué)活動教學(xué)用時(分鐘)一、異步編程二、模塊化編程三、綜合案例四、總結(jié)提升1.Promise基礎(chǔ):-隨機數(shù)案例演示三種狀態(tài)-then/catch鏈?zhǔn)秸{(diào)用2.async/await應(yīng)用:-文件下載進(jìn)度模擬-await的同步化效果1.Second.ets模塊解析:-默認(rèn)導(dǎo)出NUM1-命名導(dǎo)出Point類-round命名空間2.Index.ets導(dǎo)入實踐:-混合導(dǎo)入語法-距離計算函數(shù)調(diào)用。1.類與接口設(shè)計:-Horse基類字段-IRacing接口規(guī)范2.賽馬策略實現(xiàn):-能力值等級判定-異步比賽過程模擬3.歷史典故還原。1.異步方案對比表格。2.模塊化設(shè)計要點。3.策略模式啟示。30'10'30'10'課程思政教學(xué)設(shè)計1.系統(tǒng)思維:通過模塊化培養(yǎng)工程化意識。2.創(chuàng)新精神:借田忌賽馬案例強調(diào)策略價值。3.文化自信:結(jié)合歷史典故傳承智慧。教學(xué)手段教具極域課堂教學(xué)課后作業(yè)與思考題1.超星在線作業(yè)。2.基礎(chǔ)題:實現(xiàn)Promise版文件下載器。3.提高題:設(shè)計馬匹訓(xùn)練模塊。總結(jié)分析本課嚴(yán)格遵循教材體系,采用“技術(shù)解析→案例還原→歷史映照”的教學(xué)路徑:通過隨機數(shù)案例完整演示Promise生命周期基于Second/Index模塊實踐導(dǎo)入導(dǎo)出規(guī)范依托田忌賽馬實現(xiàn)策略模式教學(xué)重點培養(yǎng)異步編程能力和模塊化設(shè)計思維,通過控制臺輸出直觀展示異步執(zhí)行過程。教學(xué)詳案(附頁)一、異步編程(30分鐘)1.Promise基礎(chǔ)(15分鐘)【概念講解】(1)同步與異步對比:用“排隊買奶茶”比喻同步(阻塞),“取號不同桌型等餐”比喻異步。(2)Promise三大狀態(tài):pending→(resolve)→fulfilledpending→(reject)→rejected(3)生命周期:創(chuàng)建→執(zhí)行→狀態(tài)變更→回調(diào)觸發(fā).【案例演示】(1)隨機數(shù)案例(教材3.5.1):constpromise=newPromise<number>((resolve,reject)=>{setTimeout(()=>{constnum=Math.random()num>0.5?resolve(num):reject(newError('數(shù)字太小'))},1000)})promise.then(res=>console.log(res)).catch(err=>console.error(err))(2)執(zhí)行過程分解:創(chuàng)建時立即執(zhí)行executor。setTimeout加入宏任務(wù)隊列。1秒后根據(jù)條件變更狀態(tài)。狀態(tài)觸發(fā)對應(yīng)回調(diào)?!炬?zhǔn)秸{(diào)用】演示.then().catch().finally()的完整鏈條2.async/await應(yīng)用(15分鐘)【語法解析】(1)async函數(shù)特征:必返回Promise。await只能用在async函數(shù)內(nèi)。(2)執(zhí)行流程圖示:遇到await→暫停執(zhí)行→Promise解決→繼續(xù)執(zhí)行【實戰(zhàn)演練】(1)文件下載模擬(教材3.5.2案例):asyncfunctiondownload(){console.log('開始下載')constresult=awaitnewPromise(resolve=>{letprogress=0consttimer=setInterval(()=>{progress+=20console.log(`進(jìn)度:${progress}%`)if(progress>=100){clearInterval(timer)resolve('完成')}},500)})console.log(result)}(2)錯誤處理對比:try/catch包裹await;與.catch()的等效關(guān)系。二、模塊化編程(10分鐘)1.導(dǎo)出規(guī)范【Second.ets解析】(教材3.6.1)(1)導(dǎo)出類型對照默認(rèn)導(dǎo)出:exportdefaultNUM1,每個模塊僅限一個。命名導(dǎo)出:exportclassPoint,可多個,需花括號。命名空間導(dǎo)出:exportnamespaceround,嵌套層級管理。(2)特殊語法//導(dǎo)出重命名export{originaszeroPoint}2.導(dǎo)入實踐【Index.ets操作】(教材案例)(1)混合導(dǎo)入語法importNUM1,{Point,round}from'./Second'(2)重導(dǎo)出演示//Utils.etsexport*from'./Second'export*from'./Third'三、綜合案例:田忌賽馬(30分鐘)1.類與接口設(shè)計【UML圖示】(1)類關(guān)系圖(2)關(guān)鍵字段說明2.策略實現(xiàn)【比賽流程】(1)馬匹初始化consttianji=[newRacingHorse(BloodType.HOT,'田忌','棕',92),newRacingHorse(BloodType.WARM,'田忌','黑',82),newRacingHorse(BloodType.COLD,'田忌','白',72)](2)異步比

溫馨提示

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

評論

0/150

提交評論