《程序設(shè)計(jì)與實(shí)例分析》課件-第二講_第1頁(yè)
《程序設(shè)計(jì)與實(shí)例分析》課件-第二講_第2頁(yè)
《程序設(shè)計(jì)與實(shí)例分析》課件-第二講_第3頁(yè)
《程序設(shè)計(jì)與實(shí)例分析》課件-第二講_第4頁(yè)
《程序設(shè)計(jì)與實(shí)例分析》課件-第二講_第5頁(yè)
已閱讀5頁(yè),還剩32頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

思考什么是托管代碼?什么是非托管代碼?請(qǐng)舉例說明。編程求1+2+3+……+100的結(jié)果?While和do…while的區(qū)別?Continue和break的區(qū)別?C#中的結(jié)構(gòu)化異常處理是通過什么語(yǔ)句實(shí)現(xiàn)的?教材23頁(yè)富翁與陌生人的問題答案?目錄CONTENTS面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念類和對(duì)象屬性和方法構(gòu)造函數(shù)和析構(gòu)函數(shù)1234目錄CONTENTS面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念類和對(duì)象屬性和方法構(gòu)造函數(shù)和析構(gòu)函數(shù)12342.1面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念2.1.1活字印刷技術(shù)2.1.2面向過程的方法和面向?qū)ο蟮姆椒?.1.3案例分析:日期計(jì)算程序2.1.4面向?qū)ο蟪绦虻幕咎匦?.1.1從活字印刷看面向?qū)ο笏枷氤R?guī)的印刷術(shù):不容易維護(hù),靈活性差,不容易擴(kuò)展,不可復(fù)用活字印刷術(shù):可維護(hù)、可復(fù)用、可擴(kuò)展、靈活性好在面向?qū)ο蟮木幊趟枷胫校枰紤]如何通過封裝、繼承、多態(tài),把程序的耦合度降低,需要利用恰當(dāng)?shù)脑O(shè)計(jì)模式使得程序更加的靈活,容易修改,并且易于復(fù)用活字印刷,是思想的成功,是面向?qū)ο蟮膭倮?.1.2面向過程的方法和面向?qū)ο蟮姆椒ā懊嫦蜻^程”(ProcedureOriented)是一種以過程為中心的編程思想。面向過程就是分析出解決問題所需要的步驟,然后用函數(shù)把這些步驟一步一步的實(shí)現(xiàn),使用的時(shí)候一個(gè)一個(gè)依次調(diào)用。五子棋游戲的面向過程設(shè)計(jì)思路面向?qū)ο蟪绦蛟O(shè)計(jì),將對(duì)象作為程序的基本單元,將程序和數(shù)據(jù)封裝其中,以提高軟件的重用性、靈活性和擴(kuò)展性。面向?qū)ο缶褪前褬?gòu)成問題的事務(wù)分解成各個(gè)對(duì)象,建立對(duì)象的目的不是為了完成一個(gè)步驟,而是為了描述某個(gè)事物在整個(gè)解決問題的步驟中的行為。五子棋游戲的面向?qū)ο蟪绦蛟O(shè)計(jì)思路:黑白雙方棋盤系統(tǒng)游戲規(guī)則要加入悔棋的功能怎么辦?將五子棋游戲修改為圍棋游戲,怎么辦?2.1.3案例分析:日期統(tǒng)計(jì)程序問題:請(qǐng)問從2008年7月8日到2015年4月6日之間一共有多少天?思路:?jiǎn)栴}抽象算法分析計(jì)算從2008年到2015年之間整年包含的天數(shù)計(jì)算從2008年7月8日到當(dāng)年年底(2008年12月31日)之間的天數(shù)計(jì)算從2015年元旦到2015年4月6日之間的天數(shù)面向?qū)ο蟮姆椒ǎ簞?chuàng)建一個(gè)CalculateDates類,將上述五個(gè)函數(shù)集成到該類當(dāng)中利用.NET框架來實(shí)現(xiàn):DateTimedd1,dd2;dd1=newDateTime(2015,4,6);dd2=newDateTime(2008,7,8);//兩個(gè)日期對(duì)象相減,得到一個(gè)TimeSpan對(duì)象,Days是這一TimeSpan對(duì)象的屬性intddays=(dd1-dd2).Days;Console.WriteLine(ddays);//結(jié)果2.1.4面向?qū)ο蟪绦颍∣OP)的基本特性面向?qū)ο蟪绦蛟O(shè)計(jì)方法采用數(shù)據(jù)抽象與隱藏、層次結(jié)構(gòu)體系、動(dòng)態(tài)綁定等機(jī)制,提供一種模擬人類認(rèn)知方式的軟件建模方法,帶來了系統(tǒng)的安全性、可擴(kuò)充性、代碼重用、易維護(hù)等人們期待的特性。面向?qū)ο蟪绦虬ㄋ膫€(gè)基本特征:抽象、封裝、繼承與派生、多態(tài)性。抽象為了能夠處理客觀事物,必須對(duì)對(duì)象進(jìn)行抽象。抽象就是忽略一個(gè)主題中與當(dāng)前目標(biāo)無關(guān)的那些方面,以便更充分地注意與當(dāng)前目標(biāo)有關(guān)的方面。抽象并不打算了解全部問題,而只是選擇其中的一部分,忽略暫時(shí)不用部分細(xì)節(jié)。在OOP中,抽象就是找出對(duì)象的本質(zhì),抽出這一類對(duì)象的共有性質(zhì)(數(shù)據(jù)和方法)并加以描述的過程。封裝封裝就是把對(duì)象的數(shù)據(jù)和方法結(jié)合成一個(gè)獨(dú)立的單位,并盡可能隱蔽對(duì)象的內(nèi)部細(xì)節(jié)。

把對(duì)象的全部數(shù)據(jù)和方法結(jié)合在一起,形成一個(gè)不可分割的獨(dú)立單位(即對(duì)象)。信息隱蔽,盡可能隱蔽對(duì)象的內(nèi)部細(xì)節(jié),對(duì)外形成一個(gè)邊界〔或者說形成一道屏障〕,只保留有限的對(duì)外接口使之與外部發(fā)生聯(lián)系。繼承與派生一個(gè)新類從已存在的類那里獲得該類已有的特性叫作類的繼承,已存在的類叫作父類,也叫作基類,產(chǎn)生的新類叫作子類或派生類。從一個(gè)已有的類那里產(chǎn)生一個(gè)新類的過程叫類的派生。已存在的類叫作父類,也叫作基類,產(chǎn)生的新類叫作派生類或子類。多態(tài)性多態(tài)性是指允許不同類的對(duì)象對(duì)同一消息作出不同的響應(yīng)。多態(tài)是具有表現(xiàn)多種形態(tài)的能力的特征。在編程中使用多態(tài)的方法,可以在代碼中本應(yīng)使用某一具體子類的地方使用較為抽象的基類對(duì)象,這種方法所帶來的好處是多態(tài)的代碼具有“變色龍”的特性,即在不同的條件下,同樣代碼可以完成不同的功能。適當(dāng)?shù)卦陂_發(fā)中應(yīng)用多態(tài)特性,可以開發(fā)出可擴(kuò)充性很強(qiáng)的系統(tǒng)。目錄CONTENTS面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念類和對(duì)象屬性和方法構(gòu)造函數(shù)和析構(gòu)函數(shù)12342.2類和對(duì)象2.2.1類和對(duì)象概述2.2.2類的定義2.2.3對(duì)象的創(chuàng)建和使用2.2.1類和對(duì)象概述什么是類?什么是對(duì)象?2.2.2類的定義2.2.3對(duì)象的創(chuàng)建和使用聲明對(duì)象就是用類來定義對(duì)象變量。聲明對(duì)象的格式為:類名對(duì)象名;為了使對(duì)象在內(nèi)存中分配到保存數(shù)據(jù)的空間,在聲明對(duì)象之后,常常需要使用關(guān)鍵字new對(duì)對(duì)象進(jìn)行實(shí)例化,其方法為:對(duì)象名=new類名();對(duì)象的聲明和實(shí)例化可以連起來完成,方法為:類名對(duì)象名=new類名();創(chuàng)建對(duì)象之后,它的成員可以通過運(yùn)算符“.”來訪問。myRectangle1.longside=0.0;RectanglemyRectangle1;myRectangle1=newRectangle();RectanglemyRectangle2=newRectangle();目錄CONTENTS面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念類和對(duì)象屬性和方法構(gòu)造函數(shù)和析構(gòu)函數(shù)12342.3屬性和方法2.3.1方法的定義與調(diào)用2.3.2方法的參數(shù)類型2.3.3方法的重載2.3.4屬性2.3.1方法的定義與調(diào)用放在一個(gè)類中的函數(shù)(通常附加一個(gè)存取權(quán)限修飾符如public和private)稱為“方法(method)”。訪問一個(gè)方法的最基本方式是通過類創(chuàng)建的對(duì)象。定義方法的一般形式為:其中訪問修飾符包括存取修飾符,如private、protected和public,其他修飾符還包括new、static、virtual、sealed、overide、abstract等,除了static修飾符用于表示靜態(tài)方法以外,其他修飾符都和繼承機(jī)制有關(guān)。定義方法之后,則可以通過使用new關(guān)鍵字創(chuàng)建類的對(duì)象來訪問此方法。2.3.2方法的參數(shù)類型C#方法的參數(shù)有五種類型:值參數(shù)、引用參數(shù)、對(duì)象類型參數(shù)、輸出參數(shù)和參數(shù)數(shù)組。值參數(shù):沒有使用任何修飾符聲明的值類型的參數(shù)。值參數(shù)在調(diào)用該參數(shù)所屬的方法時(shí)創(chuàng)建,并用調(diào)用中給定的實(shí)參值初始化。當(dāng)從該方法返回時(shí)值參數(shù)被銷毀。對(duì)值參數(shù)的修改不會(huì)影響到原自變量。值參數(shù)通過復(fù)制原自變量的值來初始化。2.3.2方法的參數(shù)類型引用參數(shù)用ref修飾符聲明的參數(shù)是調(diào)用者提供的自變量的別名,并不定義變量,而是直接引用原自變量對(duì)引用參數(shù)的修改就將直接影響相應(yīng)自變量的值在方法調(diào)用中,引用參數(shù)必須被賦初值對(duì)象類型參數(shù)對(duì)象類型的參數(shù)傳遞的是地址,因此對(duì)參數(shù)的成員的修改將直接影響相應(yīng)實(shí)參。在方法調(diào)用時(shí),對(duì)象參數(shù)必須被賦初值2.3.2方法的參數(shù)類型輸出參數(shù)用out修飾符定義的參數(shù)如果希望函數(shù)返回多個(gè)值,可使用輸出參數(shù)。輸出參數(shù)與引用參數(shù)類似,它并不定義自己的變量,而是直接引用原變量,這樣當(dāng)在函數(shù)內(nèi)為輸出參數(shù)賦值時(shí),就相當(dāng)于給原自變量賦值。與引用參數(shù)的差別在于:輸出參數(shù)在調(diào)用方法前無需對(duì)變量進(jìn)行初始化2.3.2方法的參數(shù)類型參數(shù)數(shù)組用params修飾符聲明的變量稱為參數(shù)數(shù)組允許向函數(shù)傳遞個(gè)數(shù)變化的參數(shù)在方法的參數(shù)類表中只允許出現(xiàn)一個(gè)參數(shù)數(shù)組,而且在方法同時(shí)具有固定參數(shù)和參數(shù)數(shù)組的情況下,參數(shù)數(shù)組必須放在整個(gè)參數(shù)列表的最后,同時(shí)參數(shù)數(shù)組只允許是一維數(shù)組。不能將params修飾符與ref和out修飾符組合起來使用。2.3.2方法的參數(shù)類型驗(yàn)證2.3.3方法的重載方法重載(overload)是指一個(gè)類有多個(gè)方法,名字相同,但方法的參數(shù)列表不一樣,這里的不一樣可能是個(gè)數(shù)或者類型不一樣。重載和方法的返回值無關(guān),返回值可以相同,也可以不同。重載的好處:對(duì)方法調(diào)用的程序員來說,它是友好的(程序員只關(guān)心自己調(diào)用的方法簽名即可,不用管參數(shù)為NULL怎么辦這些邏輯)。對(duì)于代碼維護(hù)量來說,它是容易的(核心代碼只放在參數(shù)簽名最多的方法中)。對(duì)于代碼擴(kuò)展來說,它是直接的(只要修改核心方法代碼即可,而不用一個(gè)方法一個(gè)方法的去COPY)。2.3.4屬性屬性是一種間接訪問數(shù)據(jù)成員的機(jī)制,它不允許直接操作數(shù)據(jù)內(nèi)容,而是通過訪問器(也稱為屬性方法)訪問數(shù)據(jù)成員。給屬性賦值的時(shí)候使用set訪問器,set訪問器始終使用value設(shè)置屬性值;獲取屬性值時(shí)使用get訪問器,get訪問器通過return返回屬性值。屬性的定義方式:只讀屬性、只寫屬性和讀寫屬性屬性和方法的區(qū)別和聯(lián)系目錄CONTENTS面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念類和對(duì)象屬性和方法構(gòu)造函數(shù)和析構(gòu)函數(shù)12342.4構(gòu)造函數(shù)和析構(gòu)函數(shù)2.4.1構(gòu)造函數(shù)2.4.2析構(gòu)函數(shù)2.4.1構(gòu)造函數(shù)有時(shí)候我們希望在創(chuàng)建對(duì)象的時(shí)候就直接給對(duì)象的數(shù)據(jù)賦初始值,利用類的構(gòu)造函數(shù)就能完成這個(gè)任務(wù)。構(gòu)造函數(shù)是一個(gè)與類名相同的函數(shù),它的聲明和普通方法類似,不同的是它沒有返回值。構(gòu)造函數(shù)也是可以重載的。構(gòu)造函數(shù)是在對(duì)象創(chuàng)建的時(shí)候自動(dòng)調(diào)用的。在創(chuàng)建對(duì)象的時(shí)候,根據(jù)參數(shù)的不同將調(diào)用不同的構(gòu)造函數(shù)。構(gòu)造函數(shù)主要用來為對(duì)象分配存儲(chǔ)空間,完成初始化操作(如給類的成員賦值等)。2.4.1構(gòu)造函數(shù)構(gòu)造函數(shù)實(shí)例:1、定義2、調(diào)用:employeep=newemployee(100);System.Console.WriteLine("根據(jù)日薪的算法,員工的薪水等于:{0}",p.salary);employeef=newemployee(500,52);System.Console.WriteLine("根據(jù)員工周薪的算法,員工的薪水等與:{0}",f.salary);2.4.2析構(gòu)函數(shù)析構(gòu)函數(shù)(destructor)與構(gòu)造函數(shù)相反,當(dāng)對(duì)象脫離其作用域時(shí),系統(tǒng)自動(dòng)執(zhí)行析構(gòu)函數(shù)。析構(gòu)函數(shù)往往用來做“清理善后”的工作。析構(gòu)函數(shù)名也與類名相同,只是在函數(shù)名前面加一個(gè)波浪符~,例如~stud()。它不能帶任何參數(shù),也沒有返回值(包括void類型)。只能有一個(gè)析構(gòu)函數(shù),不能重載。如果用戶沒有編寫析構(gòu)函數(shù),編譯系統(tǒng)會(huì)自動(dòng)生成一個(gè)缺省的析構(gòu)函數(shù),它也不進(jìn)行任何操

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論