熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

VB.NET的Object Oriented編程內功心法

2013-11-13 09:56:30  來源: .NET編程 

  每當我們提到Object Oriented編程時就好自然想起ClassClass又是何物?有何用處?Class只不過是用來形容Object所包容的屬性(Properties)方法(Method)和事件(Event)除此之外Class也描述誰能與不能執行於使用其屬性方法和事件
  
  假設用一輛汽車來跟Class相比那Class就是汽車的建造藍圖而汽車也就是用此藍圖所建造出來的實軆也就是說Object是Class宣告和建立(instantiate)的實軆因為汽車擁有屬性(長顏色等等屬性)方法(啟動停止前往後退等等方法)和事件(汽油將要用完防盜系統喇叭響等等事件)
  
  所以在還沒開始設計一個Class時我們應花多點時間去了解相關的商業問題於需求!這樣才能設計出一個完美無瑕的Class然後應用在客戶的商業解決方案這也反映怎樣達到重用同一個Class(源代碼)在不同的方案了和節省應有得開發資源(員工時間和金銭)就是所有投資者和商家最感興趣的一個項目世界往往就是如此殘酷身為一個編程員也只好默默的去接受!
  
  此篇隨筆的重點《VBNET的Object Oriented編程內功心法》何為內功心法?就是用VBNET冩Object Oriented編程的最基本的知識包括如何用VBNET達到Inheritance同Polymorphism之效果有了此基本基礎以後要冩一個好的Class就像如虎添翼那般容易了
  
  內功心法一
  首先就是要寫一個最基本Class的空殻只要緊記以下的語法就可以了能跨出第一步就有好的開始了
  Public Class ClassName
  //
  End Class
  
  內功心法二
  要怎樣在Class裡宣告Data Member但是往往每一個Data Member都會有不同的使用范圍也就是PublicPrivate或Protected都有不同的意義比如
  Public 代表屬性方法和事件是那裡都可以使用包括此Class的內用和外服
  Private 屬性方法和事件只能使用在此Class的裡面
  Protected 屬性方法和事件只能用於Inherit的Derived Class
  
  Public Class ClassName
  [Public | Private | Protected] Variable As DataType
  //
  End Class
  
  內功心法三
  加添方法進Class裡面方法(Method)可以是Sub(不回遞值數)或Function(回遞值數)有些更會有Arguement有多少個Arguement(自變量串行)就要看此方法的功能而定了所以一般方法的Prototype就大可冩成
  
  Public Class ClassName
  [Public | Private | Protected] [Overloads] [Sub] MethodName (Byval Arguement As DataType )
  //
  End Sub
  End Class
  
  Public Class ClassName
  [Public | Private | Protected] [Overloads] [Function] MethodName (Byval Arguement As DataType ) As DataType
  //
  Return Value
  End Function
  End Class
  
  而Overloads關鍵字就是用來建立多個同名稱但自變量不同的函式一般是用來減少函式命名的困憂!
  
  內功心法四
  也就是在Class裡加添屬性(Properties)有些屬性的值數只限於讀取而不能冩有些就之能冩而不能讀取但一般都是兩者兼施
  
  Public Class ClassName
  Private VeriableName As DataType
  
  [Public | Private | Protected] [Property] PropertyName ( ) As DataType
  Get
  //
  Return VeriableName
  End Get
  Set (ByVal Value As DataType)
  VeriableName = Value
  End Set
  End Property
  End Class
  
  只能讀取值數的屬性
  Public Class ClassName
  Private VeriableName As DataType
  [Public | Private | Protected] [ReadOnly] [Property] PropertyName ( ) As DataType
  Get
  //
  Return VeriableName
  End Get
  End Property
  End Class
  
  只限於冩值數的屬性
  Public Class ClassName
  Private VeriableName As DataType
  
  [Public | Private | Protected] [WriteOnly] [Property] PropertyName ( ) As DataType
  Set (ByVal Value As DataType)
  VeriableName = Value
  End Set
  End Property
  End Class
  
  內功心法五
  怎樣在Instantiate Class的同時宣告和執行某些函式例如建立一個新的SqlConnection Object或者宣告變量等等要達到這一點我們就利用Class的Constructors函式了以下就是在Class裡添加Constructor函式的語法
  
  Public Class CalssName
  [Public] [Sub] New ( )
  //
  End Sub
  End Class
  
  因為此是Object Oriented編程所以也可以建立多個不同自變量的Constructor函式但在此就跟編冩Overloads方法(Method)有點不同那就是不需要用Overloads關鍵字來表示該函式就是Overloads函式
  
  Public Class CalssName
  [Public] [Sub] New (Byval Arguement As DataType)
  //
  End Sub
  End Class
  
  內功心法六
  有了Contructor當然就要有Destructor嘛世界所有物軆本來是雙雙對對就連Object Oriented編程也一樣否則就不平衡了而Destructor函式是在系統將要釋放Object時所執行所以一般Destructor都是用來解放在整個Object裡所用過(宣告和建立)的資源
  
  Public Class ClassName
  [Protected] [Overrides] [Sub] Finalize ( )
  //
  End Sub
  End Class
  
  內功心法七
  往往我們會選擇宣告Public變量方法和外界(Class與Class之間)分享其值數但這樣共享變量是極不安全也很浪費資源(每一個Class都會宣告自己的變量)!為了更安全更節省資源和設計一套好的流程控制我們可以用Shared關鍵字去達到變量共享而又不浪費資源但又很可靠也就是在多個Class的Instant裡只有一分變量的存在!Shared變量的另一好處就是不用Instantiate該Class也能使用只需用Class的全名就可一了ClassNameVariable
  
  Public Class ClassName
  [Public] [Shared] Variable As DataType
  //
  End Class
  
  內功心法八
  可以在Class裡共享變量那共享方法也一樣只需在方法(內功心法五)的語法裡加上一個Shared關鍵字就是那麼的簡單!但是就要緊記一個重點Shared方法只能冩和讀取Shared變量的值數!
  
  Public Class ClassName
  [Public] [Shared] [Sub] MethodName (Byval ArguementAs DataType )
  //
  End Sub
  End Class
  
  Public Class ClassName
  [Public] [Shared] [Function] MethodName (Byval Arguement As DataType ) As DataType
  //
  Return Value
  End Function
  End Class
  
  內功心法九
  我想Inheritance也應該是所有VB編程員夢寐以求的另一突破!在過去的VB編程裡是不能真真做到這一點(也只有C/C++才能做到)現在VBNET就把它一一的實現了也把所有用VB的編程員帶到一個新境界我想先講解一下何為Inheritance會對以後的Class編冩比較有幫助
  
  那就拿圖一來做個例子人物稱為Base Class因為它擁有每個人物應用的屬性(身高軆重膚色)方法(站跳)事件(痛笑)如果用此人物(Base Class)演變出兩個新的人物(Derived Class)而命名為學生教師那此演變也就叫Inheritant了因為它把所有人物的基本屬性方法和事件一一應用在兩個新人物學生教師Inheritant的好處就是可以很有效率的把Base Class的屬性方法和事帶到Derived Class裡(沒有更改)而不需要重冩那麼浪費資源
  
  基本上當開始冩一個Class時(內功心法一)就可以用NotInheritable和MustInherit關鍵字來代表該Class是否能Inherit或者一定要Inherit才可以用(也就是該Class不能用New語法來Instantiate)而一般Class都是默認Ineritable
  
  不能Inherit的Base Class
  Public [NotInheritable] BaseClassName
  //
  End Class
  
  一定要Inherit才能使用的Base Class
  Public [MustInherit] BaseClassName
  //
  End Class
  
  內功心法十
  Polymorphism可以說是Object Oriented編程的最高境界它也是Inheritance(內功心法九)的另一個突破這簡直是VB編程員的渴望啊有誰不想學到此境界跟運用在每天悶郁的工作裡!
  
  Polymorphism有何過人之處?引起人人掙著去學呢?那就要重Inheritance裡說起了我們知道在用Inheritance可以很又效率的由Base Class去演變出一個Derived Class而不費一分一毫就能完完全全擁有Base Class的屬性方法和事件但是但是往往很多時後現有的方法(Method)裡面的流程代碼未必適合每一個Derived Class就這樣我們需要Polymorphism來補救了也就是說Polymorphism使我們能夠去改冩某一個方法(Method)裡的流程代碼!是不是很好完呢?
  
  要用Polymorphism此功能我們先要有一下兩個條件
  
  其一
From:http://tw.wingwit.com/Article/program/net/201311/12052.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.