




已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
,北京傳智播客教育,C#面向?qū)ο蠡A(chǔ)-讓子彈飛,講師:趙曉虎,簡要復(fù)習(xí),Try-catch-finallyStatic索引器thisintindex,thisstrings,索引器是可以重載的。Namespace,今天要用到的技能點,抽象類、抽象方法的運用方法重寫virtual、abstract和override“類”、”屬性”、“成員變量”、“方法”等的運用C#繪圖技術(shù)GDI(圖形設(shè)備接口,簡單介紹)Timer控件、Panel控件體會方法重載IsHit()方法課前熱身:GDI+繪制“某產(chǎn)品年度銷售情況”傳智播客員工通訊錄類設(shè)計,關(guān)于C#畫圖的一些介紹1(GDI+),命名空間:System.Drawing;(基本繪圖操作)Graphics對象,可以理解為一只畫筆,要在哪個控件上繪圖,就要得到對應(yīng)控件的Graphics對象(就是獲得對應(yīng)控件的繪圖表面)。獲得Graphics對象一般有兩種方式:1.控件.CreateGraphics()/通過該方式創(chuàng)建后要調(diào)用g.Dispose()方法釋放資源。2.在重寫OnPaint()方法中通過參數(shù)PaintEventArgse.Graphics;來獲得,一般使用為Paint事件中。/通過這種方式一般不需要手動調(diào)用Dispose();區(qū)別OnPaint()與窗體的Paint事件。(畫一些簡單圖形)什么樣類型的對象需要使用完成后Dispose()?答:Pen,Brush,Font,Image,Ico,FileStream(文件操作),網(wǎng)絡(luò)操作等。(在這些類中封裝了一些操作系統(tǒng)的資源)/Pens.XXX或Brushes.XXX等不需要,手動創(chuàng)建的才需要。強行釋放資源會出錯.,關(guān)于C#畫圖的一些介紹2,GDI+中的坐標(biāo)系。原點在左上角。X水平向右為正,Y垂直向下為正。(Demo,鼠標(biāo)移動,顯示坐標(biāo))/定義一個圖形的坐標(biāo),即指定了該圖形離頂部與左邊的距離。/每個控件的左上角都是(0,0)問題:完成一篇word文檔,在電腦上和打印機上顯示效果一樣,為什么?世界坐標(biāo)(邏輯坐標(biāo))、頁面坐標(biāo)、設(shè)備坐標(biāo),為了簡單理解即可。從使用的角度看,GDI+坐標(biāo)系是一種轉(zhuǎn)換規(guī)則,把你所制定的邏輯數(shù)據(jù)轉(zhuǎn)換成最終設(shè)備驅(qū)動所能使用的數(shù)據(jù)。Point、Size、Rectangle/封裝,對”坐標(biāo)”的封裝DrawXXX(),畫各種圖形,PenFillXXX(),填充,畫實心的,Brush,熱身1:某工廠某產(chǎn)品的年度銷售情況表,知識點,虛方法:使用virtual關(guān)鍵字修飾,使用virtual關(guān)鍵字修飾的方法在本類中必須有實現(xiàn),哪怕是空的。虛方法存在的意義就是為了讓子類重寫。子類可以重寫,也可以不重寫。方法重寫:只有用virtual、abstract、override修飾的方法在繼承后子類可以重寫。/實現(xiàn)方法重寫的方式3個關(guān)鍵字什么是方法重寫?答:方法重寫是指子類繼承父類后在子類中有一個與父類中某個方法簽名一致,但方法內(nèi)容可以重新定義的方法,并用override關(guān)鍵字修飾。抽象類:abstract關(guān)鍵字修飾;不能實例化;可以有抽象成員也可以有非抽象成員(1.有抽象成員的類必須標(biāo)記為abstract,并且不能有任何實現(xiàn);2.類中的抽象成員在子類中必須實現(xiàn)(override),除非子類也是抽象類);virtual方法和abstract方法的區(qū)別:virtual方法子類可以override,也可以不override。Abstract標(biāo)記的成員在子類中必須override,除非子類也是抽象類。ToString()方法、Equals()來自于Object,任何類都有,通過override有了不同的實現(xiàn)(舉例,自己的類實現(xiàn)ToString()),思考:父類到底要不要寫成抽象類?抽象類的意義:不能從抽象類創(chuàng)建對象,它的意義在于被擴展。代碼重用、多態(tài)(簡化了isDataType的判斷)。普通類的繼承能實現(xiàn)多態(tài)嗎?方法重寫的意義:為所有子類定義了某種規(guī)范(某種必須有的規(guī)范),多態(tài)。/這里的規(guī)范可以理解為”行為“,就是方法。/以后用到得接口等中提到的規(guī)范,其實目的就是讓新增加的類必須具有某些方法,這樣才能滿足我們程序中的要求。(對程序擴展做了一定的約束。),練習(xí),練習(xí)1:形狀類Shape(父類),包含Size屬性和計算面積getArea()方法。圓類Circle繼承Shape,可以計算圓的面積。正方形類Square繼承Shape,可以計算正方形面積。最終要求能實現(xiàn):Shapesh=newCircle(5);sh.getArea()能計算出圓的面積。Shapesh=newSquare(5);sh.getArea()能計算出正方形的面積。,熱身:傳智播客員工通訊錄,傳智播客員工通訊錄的類設(shè)計,員工,屬性:(姓名,聯(lián)系電話、Email);方法:Print(),將自己的信息畫到Panel上。講師,繼承自員工,有自己特有的。市場人員,繼承自員工,有自己特有的教學(xué)部經(jīng)理,繼承自講師。重寫Teach()方法,內(nèi)容變成了“講公開課”。市場部經(jīng)理,繼承自市場人員。重寫Publicize()方法,內(nèi)容變成了“區(qū)域宣傳”。注意:所有人員均有顯示自己詳細(xì)信息的功能(姓名,電話、Email、職位)在類設(shè)計過程中考慮是否使用抽象類方法重寫時,考慮使用virtual還是abstract,為什么?某個類到底應(yīng)該從誰來繼承,比如SellerManager應(yīng)該直接繼承自Seller而不是Employee。,測試傳智播客員工通訊錄類的設(shè)計,新建一個窗體該窗體有一個泛型集合(父類數(shù)組代替),用來存儲員工信息窗體加載時初始化5位員工,其中包括2個經(jīng)理,3個普通員工。單擊“顯示”按鈕時,循環(huán)將所有員工信息通過“畫圖”(Graphics),顯示到Panel上。注意:體會父類指向子類時的方法調(diào)用。(多態(tài)就是通過這個實現(xiàn)的,這就是為什么我們總是Personp=newChinese();而不是Chinesec=newChinese();),讓子彈飛-游戲介紹,演示游戲,分析游戲中的對象和類,Plane位置(X,Y)被擊中次數(shù)HitTimes速度Speed是否被擊中IsHit飛機的有效區(qū)域Rectangle類型FieldArea大小Size=方法=Draw()把自己會知道控件上Move()方法Bullet位置(X,Y)速度Speed大小Size有效區(qū)域Rectangle類型,F(xiàn)ieldArea=方法=Hit()判斷擊中目標(biāo)了嗎?Move()移動Draw()繪制自身開始攻擊Fire().,抽象Plane與Bullet的父類,GameObject:屬性:坐標(biāo)X,Y速度Speed大小Size區(qū)域FieldArea方法:移動Move()繪制自身Draw(),開始編寫窗體代碼,首先添加需要的資源到Resources(方便稍后使用),這種方式可將圖片、音頻等資源直接編譯到exe或dll文件中,將來程序發(fā)布時只需要一個可執(zhí)行文件即可,無需發(fā)布所有圖片、音頻等其他資源。與web程序不同。第一步:窗體一開始運行就需要一個飛機【plane.Draw()】,讓飛機動起來【plane.Move()】。在窗體上添加Plane成員變量。第二步:單擊鼠標(biāo)時需要產(chǎn)生一個子彈【bullet.Draw()】,并且子彈需要“飛”【bullet.Move()】何時判斷是否相撞,在哪里寫代碼?判斷相撞的代碼應(yīng)該寫在哪個類?PlaneorBullet?完成IsHit()判斷是否相撞的代碼。,當(dāng)飛機第一次被擊中時,控制閃爍,通過兩個變量,plane.isHit;plane.isVisible;飛機被擊中兩次后,播放聲音,并重新實例化一架飛機。,擴展:又增加了一個飛船,體會Bullet類的IsHit()方法的設(shè)計,體會方法重載IsHit(Planeplane)IsHit(Shipship),總結(jié):如何分析系統(tǒng)中的類和對象,Virtual注意:1.使用virtual關(guān)鍵字表示方法,寫在返回值的簽名publicvirutal或virtualpublic2.使用virutal關(guān)鍵字修飾的方法必須有實現(xiàn)3.子類可以重寫,也可以不重寫。子類重寫時使用override關(guān)鍵字。
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 當(dāng)代文藝批評范式與創(chuàng)作實踐關(guān)系研究
- 全球及中國嬰兒食品行業(yè)市場發(fā)展分析及前景趨勢與投資發(fā)展研究報告2025-2028版
- 全球及中國商用車軸系統(tǒng)行業(yè)市場發(fā)展現(xiàn)狀及發(fā)展前景研究報告2025-2028版
- 全球及中國醫(yī)療器械托盤封口機行業(yè)市場發(fā)展現(xiàn)狀及發(fā)展前景研究報告2025-2028版
- 全球及中國凝膠膠囊行業(yè)市場發(fā)展現(xiàn)狀及發(fā)展前景研究報告2025-2028版
- 電梯安全管理的使用單位責(zé)任與操作規(guī)范研究
- 智能電煮保溫藥鍋行業(yè)跨境出海戰(zhàn)略研究報告
- 電療儀器企業(yè)縣域市場拓展與下沉戰(zhàn)略研究報告
- 環(huán)保冷媒空調(diào)行業(yè)深度調(diào)研及發(fā)展戰(zhàn)略咨詢報告
- 玉石健康床墊生產(chǎn)企業(yè)制定與實施新質(zhì)生產(chǎn)力戰(zhàn)略研究報告
- 2024年浙江省中考科學(xué)試卷
- 無人機組裝與調(diào)試課件:無人機概述
- 醫(yī)學(xué)教材 《瘧疾》課件
- 比較思想政治教育智慧樹知到期末考試答案章節(jié)答案2024年西南大學(xué)
- JG-T+100-1999塔式起重機操作使用規(guī)程
- 山東省濟南市高新區(qū)2023-2024學(xué)年八年級下學(xué)期期末物理試題
- DLT 5285-2018 輸變電工程架空導(dǎo)線(800mm以下)及地線液壓壓接工藝規(guī)程
- 中國兔子行業(yè)上下游產(chǎn)業(yè)鏈全景、發(fā)展歷程回顧及市場前景預(yù)測
- 10以上20以內(nèi)加減法
- 急產(chǎn)分娩應(yīng)急演練方案
- JBT 11699-2013 高處作業(yè)吊籃安裝、拆卸、使用技術(shù)規(guī)程
評論
0/150
提交評論