版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第第7章章 面向?qū)ο蟮某绦蛟O計面向?qū)ο蟮某绦蛟O計 本章要點: 面向?qū)ο蟮母靖拍?類的定義與對象的聲明 構(gòu)造函數(shù)和析構(gòu)函數(shù) 類的靜態(tài)成員和實例成員 方法重載及運算符重載的編程實現(xiàn) 類的承繼與多態(tài)性的編程實現(xiàn) 類的屬性的實現(xiàn)7.1 循序漸進學實際 7.1.1 面向?qū)ο蟪绦蛟O計概述面向?qū)ο蟪绦蛟O計概述 1面向?qū)ο蟪绦蛟O計的由來面向?qū)ο蟪绦蛟O計的由來 面向?qū)ο蟮某绦蛟O計是一種基于構(gòu)造分面向?qū)ο蟮某绦蛟O計是一種基于構(gòu)造分析的、以數(shù)據(jù)為中心的程序設計方法。析的、以數(shù)據(jù)為中心的程序設計方法。面向?qū)ο蟮某绦蛟O計方法總體思緒是:面向?qū)ο蟮某绦蛟O計方法總體思緒是:將數(shù)據(jù)及處置這些數(shù)據(jù)的操作都封裝將數(shù)據(jù)及處置這些
2、數(shù)據(jù)的操作都封裝Encapsulation到一個稱為類到一個稱為類Class的數(shù)據(jù)構(gòu)造中,在程序中運用的數(shù)據(jù)構(gòu)造中,在程序中運用的是類的實例的是類的實例對象。對象是代碼與對象。對象是代碼與數(shù)據(jù)的集合,是封裝好了的一個整體,數(shù)據(jù)的集合,是封裝好了的一個整體,對象具有一定的功能。也就是說對象是對象具有一定的功能。也就是說對象是具有一定功能的程序?qū)嶓w。程序是由一具有一定功能的程序?qū)嶓w。程序是由一個個對象構(gòu)成的,對象之間經(jīng)過一定的個個對象構(gòu)成的,對象之間經(jīng)過一定的“相互操作傳送音訊,在音訊的作用下,相互操作傳送音訊,在音訊的作用下,完成特定的功能。完成特定的功能。 2面向?qū)ο蟪绦蛟O計的根本概念 1類和
3、對象 通常把具有同樣性質(zhì)和功能的東西所構(gòu)成的集合叫作類。 2屬性、方法與事件 屬性是對象的形狀和特點。 方法是對象可以執(zhí)行的一些操作,它表達了對象的功能。 事件是對象可以識別和呼應的某些操作 。3封裝 所謂的封裝,就是將用來描畫客觀事物的一組數(shù)據(jù)和操作組裝在一同,構(gòu)成一個類。 4承繼 類之間除了有相互交流或訪問的關(guān)系以外,還能夠存在著一種特殊的關(guān)系,這就是承繼。在Visual C#中只支持單承繼,即一個派生類只能有一個基類。5重載 重載指的是方法稱號一樣,但假設參數(shù)不同,就會有不同的詳細實現(xiàn)。重載主要有兩類:方法重載及運算符重載。 6多態(tài)性 所謂多態(tài)性就是在程序運轉(zhuǎn)時,面向?qū)ο蟮难哉Z會自動判別
4、對象的派生類型,并調(diào)用相應的方法。 7.1.2 7.1.2 類和對象的聲明類和對象的聲明 1類的聲明格式:類修飾符 class 類名:基類類名成員定義列表; 【例7-1】 定義一個Student類,用來對學生的信息和功能進展描畫。假設學生具有學號、姓名、年齡、性別、平均成果等特征,并且具有設置學生特征和顯示學生特征的功能。2對象的聲明 格式:類名實例名=new 類名(參數(shù)); 3類的成員1類成員的分類 類的詳細成員如下。 常量:用來定義與類相關(guān)的常量值。 字段:類中的變量,相當于C+中的成員變量。 類型:用來定義只能在類中運用的部分類型。 方法:完成類中各種計算或功能的操作。 屬性:定義類的特
5、征,并對它們提供讀、寫操作。 事件:由類產(chǎn)生的通知,用于闡明發(fā)生了什么事情。 索引器:允許編程人員在訪問數(shù)組時,經(jīng)過索引器訪問類的多個實例。又稱下標指示器。 運算符:定義類的實例能運用的運算符。 構(gòu)造函數(shù):在類被實例化時首先執(zhí)行的函數(shù),主要是完成對象初始化操作。 析構(gòu)函數(shù):在對象被銷毀之前最后執(zhí)行的函數(shù),主要是完成對象終了時的收尾操作。2類成員的可訪問性 在編寫程序時,可以對類的成員運用不同的訪問修飾符,從而定義它們的訪問級別,即類成員的可訪問性(Accessibility)。 在C#中,根據(jù)類成員的可訪問性可以把類成員分成四類,分別是公有成員(public)、私有成員(private)、維護
6、成員(protected)、內(nèi)部成員(internal)。3類的靜態(tài)成員和實例成員 類的成員又可以分成靜態(tài)成員和非靜態(tài)成員。在聲明成員時,假設在語句前加上static保管字,那么該成員是靜態(tài)成員,假設沒有static保管字,那么成員是非靜態(tài)成員。二者最重要的區(qū)別是:靜態(tài)成員屬于類一切,非靜態(tài)成員屬于類的實例一切,所以又稱實例成員。 7.1.3 7.1.3 類的構(gòu)造函數(shù)和析構(gòu)函數(shù)類的構(gòu)造函數(shù)和析構(gòu)函數(shù) 1構(gòu)造函數(shù) 構(gòu)造函數(shù)主要用來為對象分配存儲空間,完成初始化操作如給類的成員變量賦值等。在C#中,類的構(gòu)造函數(shù)遵照以下規(guī)定。1構(gòu)造函數(shù)的函數(shù)名和類的稱號一樣。2當某個類沒有構(gòu)造函數(shù)時,系統(tǒng)將自動為其
7、創(chuàng)建構(gòu)造函數(shù),這種構(gòu)造函數(shù)稱為默許構(gòu)造函數(shù)。如例7-2中默許的構(gòu)造函數(shù)為: Example1() ; 3構(gòu)造函數(shù)的訪問修飾符總是public。假設是private,那么表示這個類不能被實例化,這通常用于只含有靜態(tài)成員的類中。 4構(gòu)造函數(shù)由于不需求顯式調(diào)用,因此不用聲明前往類型。 5構(gòu)造函數(shù)可以帶參數(shù)也可以不帶參數(shù)。 2析構(gòu)函數(shù) 析構(gòu)函數(shù)在對象銷毀時被調(diào)用,常用來釋放對象占用的存儲空間。析構(gòu)函數(shù)具有以下特點。1析構(gòu)函數(shù)不能帶有參數(shù)。2析構(gòu)函數(shù)不能擁有訪問修飾符。 3不能顯式地調(diào)用析構(gòu)函數(shù)。4析構(gòu)函數(shù)的命名規(guī)那么是在類名前加上一個“號。如上例的Example1類的析構(gòu)函數(shù)為: Example1()
8、 ;5析構(gòu)函數(shù)在對象銷毀時自動調(diào)用。【例7-3】 類的構(gòu)造函數(shù)和析構(gòu)函數(shù)的演示。程序代碼詳見例7-3執(zhí)行結(jié)果 7.1.4 7.1.4 類的方法及方法的重載類的方法及方法的重載 1方法的定義 格式:方法修飾符 前往值類型 方法名(參數(shù)列表) 方法實現(xiàn)部分; 2靜態(tài)方法和非靜態(tài)方法 對于靜態(tài)方法和非靜態(tài)方法,只需抓住以下幾點:1靜態(tài)方法屬于類一切,非靜態(tài)方法屬于類定義的對象一切;2非靜態(tài)方法可以訪問類中包括靜態(tài)成員在內(nèi)的一切成員,而靜態(tài)方法只能訪問類中的靜態(tài)成員。 【例7-4】 靜態(tài)方法和動態(tài)方法的演示。請察看并分析以下程序的執(zhí)行結(jié)果。程序代碼詳見例7-4執(zhí)行結(jié)果 3參數(shù)數(shù)組 關(guān)于參數(shù)數(shù)組,需掌握
9、以下幾點。1假設形參表中含一個參數(shù)數(shù)組,那么該參數(shù)數(shù)組必需位于形參列表的最后;2參數(shù)數(shù)組必需是一維數(shù)組;3不允許將params修飾符與ref和out修飾符組合起來運用;4與參數(shù)數(shù)組對應的實參可以是同一類型的數(shù)組名,也可以是恣意多個與該數(shù)組的元素屬于同一類型的變量;5假設實參是數(shù)組那么按援用傳送,假設實參是變量或表達式那么按值傳送。 【例7-5】 參數(shù)數(shù)組的演示。請察看并分析以下程序的執(zhí)行結(jié)果。 程序代碼詳見例7-5 執(zhí)行結(jié)果 4方法的重載 方法重載是指同樣的一個方法名,有多種不同的實現(xiàn)方法。方法重載的格式是在一個類中兩次或多次定義同名的方法,這些同名的方法包括從基類承繼而來的方法,這些方法稱號
10、一樣,但每個方法的參數(shù)類型或個數(shù)不同,從而便于在用戶調(diào)用方法時系統(tǒng)可以自動識別應調(diào)用的方法。 【例7-6】 方法重載的演示。請察看并分析以下程序的執(zhí)行結(jié)果。 程序代碼詳見例7-6執(zhí)行結(jié)果 7.1.5 7.1.5 運算符重載運算符重載 在C#中,運算符重載在類中進展聲明,聲明的格式如下。格式:前往值類型 operator 運算符(運算對象列表) 重載的實現(xiàn)部分; ;在C#中,可以重載的運算符主要有:+ - ! + - true false* / % & | = != =不能重載的運算符有: = & | ?: new typeof sizeof is【例7-7】 運算符重載的演示。請察看并分析以下
11、程序的執(zhí)行結(jié)果。 程序代碼詳見例7-7 執(zhí)行結(jié)果 7.1.6 7.1.6 域與屬性域與屬性 1域 域又稱字段,它是類的一個成員,這個成員代表與對象或類相關(guān)的變量。域的定義格式如下。格式:域修飾符 域類型 域名; 【例7-8】 域的演示。請察看并分析以下程序的執(zhí)行結(jié)果。程序代碼詳見例7-8執(zhí)行結(jié)果 2屬性 屬性是對現(xiàn)實世界中實體特征的籠統(tǒng),它提供了一種對類或?qū)ο筇匦赃M展訪問的機制。屬性的聲明格式如下。格式:屬性修飾符 類型闡明符 屬性名 訪問聲明 【例7-9】 屬性的演示。請察看并分析以下程序的執(zhí)行結(jié)果。 程序代碼詳見例7-9執(zhí)行結(jié)果 7.1.7 this7.1.7 this關(guān)鍵字關(guān)鍵字 thi
12、s關(guān)鍵字用來援用類的當前實例,成員經(jīng)過this關(guān)鍵字可以知道本人屬于哪一個實例。this關(guān)鍵字只能用在類的構(gòu)造函數(shù)、類的實例方法中,在其它地方如靜態(tài)方法中運用this關(guān)鍵字均是錯誤的。 7.1.8 7.1.8 類的承繼類的承繼 承繼是面向?qū)ο蟪绦蛟O計中實現(xiàn)代碼重用的重要機制之一,它來源于現(xiàn)實世界中事物之間的聯(lián)絡。 類的承繼的根本格式與功能如下。 格式: class 派生類類名:基類類名 成員聲明列表; 【例7-10】 類承繼的演示。請察看并分析以下程序的執(zhí)行結(jié)果。 程序代碼詳見例7-10 執(zhí)行結(jié)果 7.1.9 7.1.9 多態(tài)性多態(tài)性 多態(tài)性是指同一操作作用于不同類的實例,這些類對它進展不同的
13、解釋,從而產(chǎn)生不同的執(zhí)行結(jié)果的景象。在C#中有兩種多態(tài)性:編譯時的多態(tài)性和運轉(zhuǎn)時的多態(tài)性。 運轉(zhuǎn)時的多態(tài)性是經(jīng)過承繼和虛成員來實現(xiàn)的。運轉(zhuǎn)時的多態(tài)性是指系統(tǒng)在編譯時不確定選用哪個重載方法,而是直到程序運轉(zhuǎn)時,才根據(jù)實踐情況決議采用哪個重載方法。編譯時的多態(tài)性具有運轉(zhuǎn)速度快的特點,而運轉(zhuǎn)時的多態(tài)性那么具有極大的靈敏性。【例7-11】 虛函數(shù)與多態(tài)性的演示。請察看并分析以下程序的執(zhí)行結(jié)果。程序代碼詳見例7-11執(zhí)行結(jié)果 7.1.10 7.1.10 密封類與籠統(tǒng)類密封類與籠統(tǒng)類 把一個類聲明為密封類的緣由是為了防止該類被其它類承繼,密封類的聲明方法是在類名前加上sealed修飾符。 籠統(tǒng)類表示一種籠
14、統(tǒng)的概念,普通用于為派生類提供公共接口。在聲明類時,在類名前有abstract修飾符那么表示該類為籠統(tǒng)類。籠統(tǒng)類只能作為其他類的基類,不能被實例化,在籠統(tǒng)類中可以包含籠統(tǒng)方法和籠統(tǒng)訪問器。 7.2 典型實例練才干 7.2.1 典型實例一:典型實例一:Time類的創(chuàng)類的創(chuàng)建與演示建與演示 【實例標題】【實例標題】 編寫一個名為編寫一個名為Time1的類,的類,該類可以存放時間信息,并且具該類可以存放時間信息,并且具有設置時間和顯示時間的功能。有設置時間和顯示時間的功能。然后編程對該類進展測試。測試然后編程對該類進展測試。測試界面如圖界面如圖7-1所示。所示。圖7-1 時鐘類測試界面 7.2.2
15、7.2.2 典型實例二:復數(shù)典型實例二:復數(shù)“* *運算及復數(shù)值運算及復數(shù)值設置的實現(xiàn)設置的實現(xiàn) 【實例標題】 編寫一個復數(shù)類,該復數(shù)類具有以下功能:1乘法運算的功能。如a和b分別是該復數(shù)類的兩個實例,那么可以進展a*b的運算,運算結(jié)果是一個復數(shù),該復數(shù)是復數(shù)a和復數(shù)b的乘積。2對復數(shù)值進展設置的功能,有兩種設置方法,分別對復數(shù)的實部虛部為0進展設置、對復數(shù)的實部和虛部同時進展設置。然后編程進展驗證。驗證界面如圖7-2所示。 圖7-2 復數(shù)“*運算及復數(shù)值設置的運轉(zhuǎn)界面 7.3 上機練習重運用 7.3.1 上機練習一:棧模型的實現(xiàn)上機練習一:棧模型的實現(xiàn) 【練習標題】【練習標題】 棧是一種重要
16、的數(shù)據(jù)構(gòu)造,在內(nèi)存中占用棧是一種重要的數(shù)據(jù)構(gòu)造,在內(nèi)存中占用延續(xù)的存儲單元。棧有兩個端點,固定延續(xù)的存儲單元。棧有兩個端點,固定的棧底和浮動的棧頂。為指示棧頂位置的棧底和浮動的棧頂。為指示棧頂位置還應設一個指示成員變量稱為棧頂指還應設一個指示成員變量稱為棧頂指示器。棧有兩種根本操作:示器。棧有兩種根本操作:push壓壓棧和棧和pop出棧,壓棧是向棧頂位出棧,壓棧是向棧頂位置寫入一個元素,然后使棧頂指示器加置寫入一個元素,然后使棧頂指示器加1,出棧是先使棧頂指示器減出棧是先使棧頂指示器減1,再把該位置,再把該位置的元素讀出來。棧及其操作模型如圖的元素讀出來。棧及其操作模型如圖7-3所示,所示,sp代表棧頂指示器。請編程實現(xiàn)代表棧頂指示器。請編程實現(xiàn)棧的模型并對之進展測試,測試的界面棧的模型并對之進展測試,測試的界面如圖如圖7-4所示。所示。圖
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《室內(nèi)設計空間組織》課件
- 《電源系統(tǒng)的建?!氛n件
- 《病理心理學》課件
- 通史版2025屆高考歷史二輪總復習第二編考前突破突破一史學入門與史料研讀課件
- 大學生網(wǎng)絡安全教育
- 單位管理制度集合大合集人員管理十篇
- 單位管理制度合并選集【職員管理篇】十篇
- 單位管理制度分享匯編職員管理篇
- 單位管理制度分享大全職工管理
- 單位管理制度范例選集職工管理篇十篇
- 【西平李氏】忠武郡王李晟后裔分布及部分家譜
- 水庫回水計算(實用)
- 人力資源管理概論全套課件
- 伊索寓言-狗和影子課件
- 卸船機用行星減速機的設計-畢業(yè)設計
- 中班美術(shù)活動美麗的蝴蝶教案【含教學反思】
- 北師大版九年級數(shù)學上冊教學教學工作總結(jié)
- 光儲電站儲能系統(tǒng)調(diào)試方案
- (完整)小學語文考試專用作文方格紙
- 管理供應商 供應商績效評估
- 煙花爆竹工程設計安全規(guī)范
評論
0/150
提交評論