程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB.NET >> vb.net的面向對象性

vb.net的面向對象性

編輯:VB.NET

vb.net的面向對象性。本站提示廣大學習愛好者:(vb.net的面向對象性)文章只能為提供參考,不一定能成為您想要的結果。以下是vb.net的面向對象性正文


在vb的晚期版本(1.0-3.0)並沒有包括面向對象的功用,從Vb 4.0開端,用戶可以象樹立一個新的窗體一樣樹立一個新的類,並把它作為一個新的對象.但還只能稱是半面向對象的編程言語。而Vb.net是真正意義上的完片面向對象的編程言語。本文將從Vb開端不斷到Vb.net,引見面向對象的一些根底知識。

Visual Basic中處置的任何事物簡直都和對象有關系,假如您對面向對象編程沒有看法,則需求樹立以下一些概念。
對象是一些把屬性(Properties)、字段(fileds)、辦法(methods)和事情(event)作為一個獨自的數據類型停止處置的實體。對象可以運用戶只需首先聲明一些變量和辦法當前,在覺得需求運用的時分,調用一個它的對象停止重用就可以了。
例如想保管一輛汽車的信息,就可以經過定義一些變量來描繪一輛車的顏色和馬力,但問題是,這個變量只是描繪這一輛汽車的參數,假如又要描繪另一輛汽車的參數的話,則又要定義一些其他變量來存儲這些信息。假如運用類,就可以處理這個問題,只需求定義一個通用的汽車的類,每當需求描繪一輛汽車的時分只需定義一個對象就可以了,這樣就到達了代碼重用的目的。
類描繪了對象的字段、屬性、辦法以及對象的事情,對象是類的一個實例。在定義了一個類後,可以在需求的時分定義很多對象。
1.字段,屬性,辦法和事情
類是由屬性,字段,辦法和事情組成的,字段就是一個對象含有的片斷的信息。用戶可以象運用變量一樣運用屬性來存儲一些信息。例如,一個對象名叫“Car”,其中有一個字段名為“Color”,上面的代碼就是顯示怎樣改動“Color”字段的值的:
Car.Color="Blue"
屬性的檢索和設置與字段類似,但是它們在類中是以"Property Get"和"Property Set"進程來定義的。
辦法表示了類可以做的一些事情,例如Car對象可以有StartEngine,Drive和Stop辦法。
事情是表示一個對象從內部失掉的信息的一個標示,事情允許對象任何時分在事情調用的時分做出相應的舉措。例如,類Car的一個事情可以是Check_Engine。由於微軟的Windows是一個事情驅動的零碎,所以事情能夠會來自於任何一個中央。比方,用戶點擊鍵盤或鼠標時,就是觸發了一個事情。當然,一些事情的觸發能夠來自於其他的對象。
2.封裝,承繼和多態
屬性,辦法和事情只是面向對象編程的局部概念,真正的面向對象編程需求對象滿足和支持上面三個特性:封裝性,承繼性和多態性。
封裝性表示一個對象的屬性和辦法。對外界而言,是不能直接訪問的。而對象自身關於屬性和辦法具有相對的控制,比方一個對象可以在屬性允許變化之前確認一下變量的值。
承繼性表示可以在一個類的根底上樹立一個新類。派生類,也就是承繼類,可以具有根本類的一切屬性、辦法和事情,並且可以加上一些其他的屬性和辦法,例如可以依據根本類Car樹立一個新類SUV。SUv類可以從Car類中承繼Color屬性,而且還可以加上一些其他的屬性例如:FourWheelDrive。
多態性是指一些不同的類可以樹立一個具有相反稱號的屬性或許辦法。多態性關於面向對象編程是十分重要的,由於它可以運用戶不管在什麼時分,也不管用戶正在處置什麼對象,都可以調用這個具有共同稱號的辦法。例如有一個根本類Car,多態性可以允許它的派生類具有不同定義的StartEngine辦法,派生類DieselCar的StartEngine辦法能夠和根本類的StartEngine辦法完全不一樣,但是也可以調用的。當然,其他的辦法或許屬性也可以這樣處置。
類是面向對象的根底。類和Type數據構造的區別在於,Type數據構造只要數據成員,而類的成員包括數據成員、屬性和辦法。類就是一個沒有圖形界面的ActiveX控件,用戶可以運用它,但不能看到它。在vb.net以前的版本中,類不能承繼,但在.Net版本中,完成了類的承繼。用戶可以經過以下的描繪來比擬類和Type數據構造的區別。
Structures是一個把一些相關的數據歸類的強無力的工具,如:一個用戶定義的一個名為udtAccount的數據類型:

Public Type udtAccount
      Number As Long
Type As Byte
CustomerName AS String
Balance As Double
End Type

用戶可以聲明一個udtAccount類型的一個實例,然後設置外面字段的值,把整個記載打印出來,把存到數據庫中等操作。
雖然Structures類型設置的功用很弱小,但是在代碼中,Structures能夠會帶來一些問題。用戶能夠樹立一個Withdrawal進程,但在Withdrawal超越了它的均衡點的時分會發生錯誤,而且也沒有方法阻止順序的其他中央改動Balance字段。
換一句話說,操作進程和Structures的聯絡靠的只是一些規則、人為的記憶以及順序員對代碼維護知識的理解。
而面向對象編程就可以處理這個問題,它把數據和操作進程結合在一同,並且組成一個獨立的實體。用戶定義Account為一個類來替代udtAccount Structure時,這些數據都變成了公有遙,而且那些訪問這些數據的操作進程也被定義為這個類的一局部,成為了這個類的屬性和辦法,這就是所謂的封裝性,也就是說一個對象就是一個包括數據和操作的單元。
當用戶經過一個類樹立一個Account對象時,就可以防止這種錯誤,用戶只能經過這個對象的屬性才干訪問它的一些數據字段,上面的代碼片斷顯示了Account類中的進程怎樣支持封裝性:

'The account balance is hidden from outside code.
Private mdblBalance As Double
'The read-only Balance property allows outside code
'to find out the account balance
Public Property Get Balance() As Double
     Balance=mdblBalance
End Properyt
'The Withdrawal method Changes the account balance
'but only if an overdraft error doesn't occur
Public Sub Withdrawal(ByVal Amount As Double)
    If Amount>Balance Then
       Err.Raise Number=VBObjectError+2081._
       Description:="Overdraft"
    End If
    mdblBalance=mdblBalance-Amount
End Sub

用戶並不需求擔憂如何運用類中的操作進程,也不用擔憂屬性、進程、公有變量的一此語法,最重要的就是記住,用戶可以定義一個類來封裝自己的數據和操作辦法。
用戶也不用要擔憂能否運用權了正確的對Account的操作,由於這些操作如今也被包括在對象之中了。
類在vb.net中是一個十分重要的局部,簡直一切正軌的順序都包括了一個或許幾個類,在vb.net中,類模塊和窗體的區別曾經不存在了,簡直一切的順序都是由類組成的,為了更好地運用這些類,它們被依照不同的功用分在不同的功用類庫裡。
除去這些外表景象,這些類庫都是在獨立的DLL靜態庫裡,用戶只需求用Imports闡明就可以援用它們了,這樣這些類外面的函數就可以用了,如:

Import System.Collections 'Use Collection namespace classes

邏輯上,每一個類庫代表了一個獨立的命名空間(namespace),當用戶援用了一個命名空間後,編譯器將可以找到這些命名空間所對應的類和辦法。最常用的命名空間是"System"命名空間,它是一個缺省的援用,並不需求用戶去聲明它,其中包括了一些用戶訪問最根本的類和辦法,如:Application,Arry,Console,Exception,Object以及一些根本的規范的對象,如:Byte,Boolean,Single,Double,String。在上面的最復雜的控制台順序中,我們可以看一看關於System的援用:

Imports System
'Simple Vb Hello World program
Public Class cMain
    shared sub Main() '標明啟動函數是Main
          '在控制台中寫文本
          Console.WriteLine("Hello Vb World")
    End Sub
End Class

下面的順序只是在DOS窗體中寫了一句文本"Hello Vb World",順序必需以Sub Main子例程開端啟動,而且在類模塊中,它必需聲明為"shared",而在vb.net中這個順序則應該寫成:

'simple Vb Hello World Program
Public Module cMain
   Sub Main()
       Console.WriteLine("Hello Vb World")
   End Sub
End Module

在下面這兩個例子中,除了在類模塊中,Sub Main被聲明為"Share"。讀者可以看出它們是很相象的,在Vb.net中模塊和晚期的版本的vb中的模塊的作用類似,在模塊中聲明的辦法和常量在整個順序中都是私有的。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved