對(duì)象就是能看到,感到,聽到,觸摸到,嘗到或聞到的東西,在這里我們這樣“定義”:對(duì)象是一個(gè)自包含的實(shí)體,用一組可識(shí)別的特性和行為來標(biāo)識(shí)。
在面向?qū)ο蟮木幊?oop)的編程方式,用使用下面的兩個(gè)術(shù)語。 類:這是對(duì)象的模板,定義了對(duì)象的特性。 實(shí)例:這是一個(gè)真實(shí)的對(duì)象,可以與之交互的東西。
屬性,方法和事件
在OOP中,下面的術(shù)語描述對(duì)象的特性。 屬性:這是一個(gè)名次,描述了某個(gè)對(duì)象的屬性 方法:這是一個(gè)動(dòng)詞,描述了對(duì)象可以完成的工作,或者希望它完成的工作。 事件:描述了對(duì)象為相應(yīng)某個(gè)動(dòng)作而執(zhí)行的操作。
.net中的對(duì)象 在.net中,其實(shí)所有的東西都是對(duì)象。為什么要使用對(duì)象?
在編程時(shí),對(duì)象的面向?qū)ο缶幊毯兔嫦驅(qū)ο笤O(shè)計(jì)的一部分,它們具有非常大的優(yōu)勢(shì),許多人認(rèn)為這是一個(gè)復(fù)雜的主題,但實(shí)際上,它非常簡(jiǎn)單,可以用四個(gè)簡(jiǎn)單的術(shù)語來解釋:抽象、封裝、多態(tài)和繼承。
抽象:這是一個(gè)隱藏復(fù)雜性,類的內(nèi)部工作情況,所以用戶不必知道它的運(yùn)作方式,就像。如果想要看電視,就不必知道電視機(jī)時(shí)如何工作的,只需打開電視機(jī),搜索頻道即可,on/off開關(guān)抽象了實(shí)際的操作,在string例子里,有一個(gè)trim方法,它可以刪除字符串尾部的空格,同樣不需要知道他是如何完成這個(gè)任務(wù)的,只要知道它有這個(gè)功能即可。
封裝:每個(gè)對(duì)象都包含進(jìn)行操作所需要的所有信息,這個(gè)對(duì)象稱為封裝,因此對(duì)象不比依賴其他對(duì)象來完成自己的操作,在術(shù)語TOupper()方法中,string不必到其他地方獲取信息來把所有的字符轉(zhuǎn)換為大寫。
多態(tài):這個(gè)術(shù)語用于表示不同的對(duì)象可以執(zhí)行相同的動(dòng)作,但要通過他們自己的實(shí)現(xiàn)代碼來執(zhí)行,名稱一樣,但底層實(shí)現(xiàn)的代碼是不一樣的。
繼承:它定義了類如何相互關(guān)聯(lián),共享特性的,繼承的工作方式是,定義類和子類,其中子類繼承了父類的所有特性,繼承的重要性是,它迫使類型相似的類具有一致性,并允許共享代碼,如果決定創(chuàng)建一個(gè)新類,就不必定義父類的所有特性。
好了,我們看個(gè)實(shí)例吧,創(chuàng)建一個(gè)user類,他具有一下特性: 屬性:name ,point,level 方法:post(),reply(),change() ok,現(xiàn)在在你的webmatrix里面創(chuàng)建吧。
看看以下源碼:
public class user
public sub new() end sub
private _name as string private _point as integer private _level as string
public property name as string
get return _name end get
set(byval value as string) _name=value end set
end property
public property point as integer get return _point end get
set(byval value as integer)
if value<0 then value=0 end if _point=value
end set
end property
public property level as string
get return _level end get
set(byval value as string) _level=value end set
end property
end class
這里定義的就是上面我們想要的,注意,如果你以前不了解一門面向?qū)ο笤O(shè)計(jì)的語言的話理解起來比較困難的。創(chuàng)建實(shí)例的是:
sub page_load(sender as object,e as eventargs) dim blueidea as new user() blueidea.name="5do8" blueidea.point="5000" blueidea.level="終極會(huì)員"
name.text=blueidea.name point.text=blueidea.point level.text=blueidea.level end sub
html視圖還是注意ID寫上3各label控件就ok了,可以看到效果: name: 5do8
point:5000
level:終極會(huì)員
代碼分析如下:
1、首先用class關(guān)鍵字定義類,后面是類名,而public是表示可以用于其他的程序; 2、然后是構(gòu)造函數(shù),new(),如果不寫的話也行,因?yàn)椋琻et默認(rèn)提供構(gòu)造函數(shù)的,這和c++里面的一個(gè)模式; 3、定義私有變量,用來存儲(chǔ)類的屬性,這些變量在代碼的外部不能訪問,如何使用這些變量,就要使用property語句即可;
public property name as string get return _name end get
set (byval value as string) _name=value end set end property
第一行里面的public聲名在外部可以訪問,property聲明一個(gè)屬性,它后面是屬性的名及其類型。get返回私有變量的值,這是內(nèi)部機(jī)制,接下來的set語句,在屬性中存儲(chǔ)一個(gè)值時(shí)執(zhí)行這個(gè)語句,這里僅僅把私有屬性設(shè)置為參數(shù)傳送的值,set 語句有些像方法調(diào)用,只傳一個(gè)參數(shù),該參數(shù)在設(shè)置屬性時(shí)由.net自動(dòng)賦值。 ..........其他的依次同理....最后是結(jié)束類end class。
創(chuàng)建實(shí)例的時(shí)候:
dim blueidea as new user() blueidea.name="5do8" blueidea.point="5000" blueidea.level="終極會(huì)員"
第一行創(chuàng)建user類的一個(gè)實(shí)例,名稱是blueidea。接下來是設(shè)置它的屬性值。最后綁定在web控件上。
這就是一個(gè)很簡(jiǎn)單的使用類的實(shí)例,但不像c++那樣,asp.net好像沒有提供析構(gòu)函數(shù)釋放一些不必要的內(nèi)存占用等。
另外,高級(jí)類屬性和方法就不說了,很多,慢慢的在實(shí)踐中應(yīng)該可以掌握的。
出處:藍(lán)色理想
責(zé)任編輯:moby
上一頁 事件驅(qū)動(dòng)編程和回送 下一頁 在asp.net(vb)中使用ADO.NET
◎進(jìn)入論壇網(wǎng)絡(luò)編程版塊參加討論
|