靜態成員屬性與索引器_第1頁
靜態成員屬性與索引器_第2頁
靜態成員屬性與索引器_第3頁
靜態成員屬性與索引器_第4頁
靜態成員屬性與索引器_第5頁
已閱讀5頁,還剩11頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

教學回顧一、面向對象程序設計開發的一般步驟:面向對象分析(OOA)需求分析(以對象為基本單位)面向對象設計(OOD)UML面向對象編程(OOP)屬性+name:string+sex:string-age:float服務(動作)+Input:void+Show:voidPerson(類名)面向具象寫抽象萬事萬物皆對象二、面向對象編程的一般步驟:1、選擇項目類型(控制臺/WINFORM/網站/組件)2、類的定義(與主函數所在類并列或者引用基類庫)3、在主函數中設計程序邏輯。4、編輯調試

教學回顧三、類的聲明1.格式如下:(類修飾符)class〈類名稱〉{}[訪問修飾符]類型變量名1聲明;[訪問修飾符]類型變量名2聲明;…//類的構造函數與析構函數[訪問修飾符]返回類型<方法的名稱([參數]){…//要執行的操作;}//聲明類的變量//聲明類的方法//聲明類構造與析構函數//聲明類的名稱教學回顧四、對象的應用:

利用new實例化具體化一個類,產生一個對象。對象是系統中用來描述客觀事物的一個實體,它是構成系統的一個基本單位。類的對象是該類的某一特定實體,即類類型的變量。

格式:類名對象名=new構造函數();

Employeee1=new

Employee();

Employeee2=newEmployee(30);="JeffreyRichter";e1.age=36;

如何解決錯誤輸入?

教學回顧e1.age=-20對象實例化內存狀態圖&e1&e1.agee1.Input()e1.Show()Employee()Employee(intpara1)棧內存e2.agee2.Input()e2.Show()Employee()Employee(intpara1)堆內存36JeffreyRichter1Employee.id思考題定義一個學生stuId統計已經錄入的學生人數,如何實現?如果將學生的年齡輸入了16-22歲應該如何實現?一、類的靜態成員1、靜態的數據成員:格式:static[訪問修飾符]成員名;2、靜態的構造函數格式:staticpublic類名;3、靜態的方法。格式:static[訪問修飾符]成員函數名()

{}注:

1、一旦建立靜態域,無論建立多少類的實例,內存中只存在一個靜態數據的拷貝

2、靜態的構造函數與靜態的方法只能引用類的靜態的數據成員。classEmployee{privateStringName;//fieldisnowprivateprivateInt32Age;//fieldisnowprivatepublicStringGetName(){return(Name);}publicvoidSetName(Stringvalue){Name=value;}publicInt32GetAge(){return(Age);}publicvoidSetAge(Int32value){if(value<=0)

throw(new

ArgumentException("Agemustbegreaterthan0");Age=value;}}

問題解決!上述方法中所示的抽象數據的方式有兩個缺點。首先,因為必須實現額外的函數,所以需要編寫更多的代碼;其次,使用此類型的用戶必須調用方法,而不是簡單地引用一個字段名。e.SetAge(36);//Updatestheagee.SetAge(-5);//Throwsanexception一、屬性與索引器1、定義:屬性是類的一種數據結構,它是讀寫類中私有和受保護的數據的一種途徑。屬性的讀寫通過get和set訪問器進行。2、舉例:classEmployee

{privatestring_Name; privateInt32_Age; publicstringName {get{return(_Name);}

set{_Name=value;}}

publicInt32Age {get{return(_Age);}

set{if(value<=0)

throw(new

ArgumentException(“Agemustbegreaterthan0”);

_Age=value;}}}類使用了與例一中的類功能完全相同的屬性。您可以看到,屬性稍微簡化了代碼,更重要的是,它們允許調用如下方式編寫代碼:

e.Age=36;//Updatestheage

e.Age=-5;//Throwsanexception

利用性質可以讓客戶訪問類的私有狀態,就好象訪問public的成員變量一樣。而這實際上是通過類的成員方法的訪問來實現的。

Form1.Height=15;

通過使用性質的方法,可以將類的狀態與訪問狀態的方法分離,從而使設計者可以自由地按需要改變對象的內部狀態,而客戶代碼不需要改變。使用get和set訪問器直接訪問間接訪問隱式調用學生練習定義一個學生類,對類的數據成員設置屬性。2、索引器

1、定義:類的索引器與屬性功能類似,它可以把類虛擬為一個數組,可以按照數組的方式對類的數據進行訪問,從而實現對數據的保護和隱藏。索引器的讀寫也是通過get和set訪問進行,但它們需要參數。索引器3-1usingSystem;class

IndexerExample{

public

string[]stringlist=new

string[10];

public

string

this[intindex] {

get

{

return

stringlist[index]; }

set

{

stringlist[index]=value.ToString(); } }}class

DemoIndexer{

static

void

Main() {

IndexerExample

IndexTest=new

IndexerExample(); IndexTest.stringlist[1]="Sam";

IndexTest[2]="Tom"; System.Console.WriteLine(“IndexTest[1]is是{0}\nIndexTest[2]is是{1}",IndexTest[1],IndexTest[2]);

Console.ReadLine(); }}已調用索引器索引器傳統賦值總結類的靜態成員一旦建立靜態域,無論建立多少類的實例,內存中只存在一個靜態數據的拷貝。類

溫馨提示

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

評論

0/150

提交評論