傳智播客課件PPT_第1頁
傳智播客課件PPT_第2頁
傳智播客課件PPT_第3頁
傳智播客課件PPT_第4頁
傳智播客課件PPT_第5頁
已閱讀5頁,還剩17頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、高級軟件人才實作培訓專家高級軟件人才實作培訓專家北京傳智播客教育 C#C#面向對象基礎面向對象基礎-讓子彈飛讓子彈飛講師:趙曉虎講師:趙曉虎高級軟件人才實作培訓專家高級軟件人才實作培訓專家簡要復習lTry-catch-finallylStaticl索引器thisint index,thisstring s,索引器是可以重載的。lNamespace高級軟件人才實作培訓專家高級軟件人才實作培訓專家今天要用到的技能點l抽象類、抽象方法的運用l方法重寫virtual、abstract和overridel“類”、”屬性”、“成員變量”、“方法”等的運用lC#繪圖技術GDI(圖形設備接口,簡單介紹)lTi

2、mer控件、Panel控件l體會方法重載IsHit()方法l課前熱身:GDI+繪制“某產品年度銷售情況”傳智播客員工通訊錄類設計高級軟件人才實作培訓專家高級軟件人才實作培訓專家關于C#畫圖的一些介紹1(GDI+)l命名空間:System.Drawing;(基本繪圖操作)lGraphics對象,可以理解為一只畫筆,要在哪個控件上繪圖,就要得到對應控件的Graphics對象(就是獲得對應控件的繪圖表面)。獲得Graphics對象一般有兩種方式:1.控件.CreateGraphics()/通過該方式創建后要調用g.Dispose()方法釋放資源。2.在重寫OnPaint()方法中通過參數PaintE

3、ventArgs e.Graphics;來獲得,一般使用為Paint事件中。/通過這種方式一般不需要手動調用Dispose();區別OnPaint()與窗體的Paint事件。(畫一些簡單圖形)l什么樣類型的對象需要使用完成后Dispose()?答:Pen,Brush,Font,Image,Ico,FileStream(文件操作),網絡操作等。 (在這些類中封裝了一些操作系統的資源)/Pens.XXX或Brushes.XXX等不需要,手動創建的才需要。強行釋放資源會出錯.高級軟件人才實作培訓專家高級軟件人才實作培訓專家關于C#畫圖的一些介紹2lGDI+中的坐標系。中的坐標系。原點在左上角。X水平

4、向右為正,Y垂直向下為正。 (Demo,鼠標移動,顯示坐標)/定義一個圖形的坐標,即指定了該圖形離頂部與左邊的距離。/每個控件的左上角都是(0,0)問題:完成一篇word文檔,在電腦上和打印機上顯示效果一樣,為什么?世界坐標(邏輯坐標)、頁面坐標、設備坐標,為了簡單理解即可。從使用的角度看,GDI+坐標系是一種轉換規則,把你所制定的邏輯數據轉換成最終設備驅動所能使用的數據。Point、Size、Rectangle/封裝,對”坐標”的封裝lDrawXXX(),畫各種圖形,PenlFillXXX(),填充,畫實心的,Brush高級軟件人才實作培訓專家高級軟件人才實作培訓專家熱身1:某工廠某產品的年

5、度銷售情況表高級軟件人才實作培訓專家高級軟件人才實作培訓專家知識點l虛方法:使用virtual關鍵字修飾,使用virtual關鍵字修飾的方法在本類中必須有實現,哪怕是空的。虛方法存在的意義就是為了讓子類重寫。子類可以重寫,也可以不重寫。l方法重寫:只有用virtual、abstract、override修飾的方法在繼承后子類可以重寫。/實現方法重寫的方式3個關鍵字l什么是方法重寫?答:方法重寫是指子類繼承父類后在子類中有一個與父類中某個方法簽名一致,但方法內容可以重新定義的方法,并用override關鍵字修飾。l抽象類:abstract關鍵字修飾;不能實例化;可以有抽象成員也可以有非抽象成員(

6、1.有抽象成員的類必須標記為abstract,并且不能有任何實現;2.類中的抽象成員在子類中必須實現(override),除非子類也是抽象類);lvirtual方法和abstract方法的區別:virtual方法子類可以override,也可以不override。Abstract標記的成員在子類中必須override,除非子類也是抽象類。lToString()方法、Equals()來自于Object,任何類都有,通過override有了不同的實現(舉例,自己的類實現ToString())高級軟件人才實作培訓專家高級軟件人才實作培訓專家l思考:父類到底要不要寫成抽象類?l抽象類的意義:不能從抽象

7、類創建對象,它的意義在于被擴展。代碼重用、多態(簡化了is DataType的判斷)。普通類的繼承能實現多態嗎?l方法重寫的意義:為所有子類定義了某種規范(某種必須有的規范),多態。/這里的規范可以理解為”行為“,就是方法。/以后用到得接口等中提到的規范,其實目的就是讓新增加的類必須具有某些方法,這樣才能滿足我們程序中的要求。(對程序擴展做了一定的約束。)高級軟件人才實作培訓專家高級軟件人才實作培訓專家練習l練習1:形狀類Shape(父類),包含Size屬性和計算面積getArea()方法。圓類Circle繼承Shape,可以計算圓的面積。正方形類Square繼承Shape,可以計算正方形面積

8、。最終要求能實現:Shape sh=new Circle(5);sh.getArea()能計算出圓的面積。Shape sh=new Square(5);sh.getArea()能計算出正方形的面積。高級軟件人才實作培訓專家高級軟件人才實作培訓專家熱身:傳智播客員工通訊錄高級軟件人才實作培訓專家高級軟件人才實作培訓專家傳智播客員工通訊錄的類設計l員工,屬性:(姓名,聯系電話、Email);方法:Print(),將自己的信息畫到Panel上。l講師,繼承自員工,有自己特有的。l市場人員,繼承自員工,有自己特有的l教學部經理,繼承自講師。重寫Teach()方法,內容變成了“講公開課”。l市場部經理,

9、繼承自市場人員。重寫Publicize()方法,內容變成了“區域宣傳”。l注意:所有人員均有顯示自己詳細信息的功能(姓名,電話、Email、職位)在類設計過程中考慮是否使用抽象類方法重寫時,考慮使用virtual還是abstract,為什么?某個類到底應該從誰來繼承,比如SellerManager應該直接繼承自Seller而不是Employee。高級軟件人才實作培訓專家高級軟件人才實作培訓專家測試傳智播客員工通訊錄類的設計l新建一個窗體l該窗體有一個泛型集合(父類數組代替),用來存儲員工信息l窗體加載時初始化5位員工,其中包括2個經理,3個普通員工。l單擊“顯示”按鈕時,循環將所有員工信息通過

10、“畫圖”(Graphics),顯示到Panel上。l注意:體會父類指向子類時的方法調用。注意:體會父類指向子類時的方法調用。(多態就是通過這個實(多態就是通過這個實現的,這就是為什么我們總是現的,這就是為什么我們總是Person p=new Chinese();而不是而不是Chinese c=new Chinese();)高級軟件人才實作培訓專家高級軟件人才實作培訓專家讓子彈飛-游戲介紹l演示游戲高級軟件人才實作培訓專家高級軟件人才實作培訓專家分析游戲中的對象和類lPlane位置(X,Y)被擊中次數HitTimes速度Speed是否被擊中IsHit飛機的有效區域Rectangle類型Field

11、Area大小Size=方法=Draw()把自己會知道控件上Move()方法lBullet位置(X,Y)速度Speed大小Size有效區域Rectangle類型,FieldArea=方法=Hit()判斷擊中目標了嗎?Move()移動Draw()繪制自身開始攻擊Fire().高級軟件人才實作培訓專家高級軟件人才實作培訓專家抽象Plane與Bullet的父類lGameObject:l屬性:坐標X,Y速度Speed大小Size區域FieldAreal方法:移動Move()繪制自身Draw()高級軟件人才實作培訓專家高級軟件人才實作培訓專家開始編寫窗體代碼l首先添加需要的資源到Resources(方便稍

12、后使用),這種方式可將圖片、音頻等資源直接編譯到exe或dll文件中,將來程序發布時只需要一個可執行文件即可,無需發布所有圖片、音頻等其他資源。與web程序不同。l第一步:窗體一開始運行就需要一個飛機【plane.Draw()】,讓飛機動起來【plane.Move()】。在窗體上添加Plane成員變量。l第二步:單擊鼠標時需要產生一個子彈【bullet.Draw()】,并且子彈需要“飛”【bullet.Move()】l何時判斷是否相撞,在哪里寫代碼?l判斷相撞的代碼應該寫在哪個類?Plane or Bullet?l完成IsHit()判斷是否相撞的代碼。高級軟件人才實作培訓專家高級軟件人才實作培

13、訓專家l當飛機第一次被擊中時,控制閃爍,通過兩個變量,plane.isHit;plane.isVisible;l飛機被擊中兩次后,播放聲音,并重新實例化一架飛機。高級軟件人才實作培訓專家高級軟件人才實作培訓專家擴展:又增加了一個飛船l體會Bullet類的IsHit()方法的設計,體會方法重載IsHit(Plane plane)IsHit(Ship ship)高級軟件人才實作培訓專家高級軟件人才實作培訓專家總結:如何分析系統中的類和對象高級軟件人才實作培訓專家高級軟件人才實作培訓專家lVirtual注意:l1.使用virtual關鍵字表示方法,寫在返回值的簽名public virutal或virtual publicl2.使用virutal關鍵字修飾的方法必須有實現l3.子類可以重寫,也可以不重寫。l子類重寫時使用override關鍵字。l注:方法重寫時,方法簽名必須與父類中的虛方法完全一致,否則重寫不成功,其中包括“

溫馨提示

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

評論

0/150

提交評論