當前位置:編程學習大全網 - 編程語言 - 過程,模塊,函數,類,他們有什麽不同?

過程,模塊,函數,類,他們有什麽不同?

模塊

VB的代碼存儲在模塊中。在VB中提供了三種類型的模塊:窗體模塊、標準模塊和類模塊。

簡單的應用程序可以只有壹個窗體,所用的程序都駐留在窗體模塊中,而當應用程序龐大復雜時,就要另外附加窗體。最終可能有幾個窗體中有壹些***同都要執行的代碼,為了在兩個窗體中不產生重復代碼,可創建壹個獨立的模塊,用它實現代碼公用。該獨立模塊即是標準模塊。此外還可以建立包含***享代碼與數據的類模塊。

每個標準模塊、類模塊和窗體模塊可包含:

聲明。 可將常數、類型、變量和動態鏈接庫(DLL)過程的聲明放在窗體、類或標準模塊的聲明部分。每個模塊只有壹個聲明部分

過程。每個模塊可有多個過程,過程是劃分VB代碼的最小單元,每個過程是壹個可執行的代碼片段。VB中主要有子過程、函數過程或者屬性過程等

各種模塊類型

1.窗體模塊

由於VB是面向對象的應用程序開發工具,所以應用程序的代碼結構就是該程序在屏幕上表示的對應模型。根據定交,對象包含數據和代碼。應用程序中的每個窗體都有壹個相對應的窗體模塊(文件擴展名為.frm)

窗體模塊是VB應用程序的基礎。窗體模塊可以包含處理事件的過程、通用過程以及變量、常數、自定義類型和外部過程的窗體級聲明。寫入窗體模塊的代碼是該窗體所屬的具體應用程序專用的;也可以引用該程序內的其它窗體和對象

每個窗體模塊都包含事件過程,在事件過程中有為響應該事件而執行的程序段。窗體可包含控件。在窗體模塊中,對窗體上的每個控件都有壹個對應的事件過程集。除了事件過程,窗體模塊還可包含通用過程,它對來自該窗體中任何事件過程的調用都作出響應。

2.標準模塊

標準模塊是程序中的壹個獨立容器,包含全局變量、Function(函數)過程和Sub過程(子過程)。

可將那些與特定窗體或控件無關的代碼放入標準模塊中。標準模塊中包含應用程序內的允許其它模塊訪問的過程和聲明。它們可以包含變量、常數、類型、外部過程和全局聲明或模塊級聲明。寫入標準模塊的代碼不必固定在特定的應用程序上;

(1)使用標準模塊

在編寫程序時,很可能會遇到壹些使用相同變量和例程的窗體和事件過程。在缺省狀態下,變量對於事件過程來說是局部的,就是說僅能在創建這些變量的事件過程中讀取或者修改變量。與之相似,事件過程對於創建它們的窗體來說也是局部。為了在工程中的所有窗體和事件中***享變量和過程,需要在該工程的壹個或多個標準模塊中對它們進行聲明和定義。

標準模塊或代碼模塊是具有文件擴展名.bas,並包含能夠在程序任何地方使用的變量和過程的特殊文件。

正如窗體壹樣,標準模塊被單 獨列在Project(工程)窗口內,並可通過使用File(文件)菜單中的Save Modulel As菜單項存盤。但是,與窗體不同,標準模塊不包含對象或屬性設置而只包含可在代碼窗口中顯示和編輯的代碼。

(2)創建標準模塊

如要在程序中創建新 的標準模塊,那麽單擊工具條Add Form(添加窗體)按鈕上的下箭頭並單擊Mode(模塊),或者單 擊Project(工程)菜單中的Add Module(添加模塊)菜單項。在工程中創建壹個空的標準模塊的步驟如下:

S1:啟動VB,打開壹個新的標準工程,單擊工程 菜單中的Add Module菜單項,單擊Open 按鈕。VB在工程中增加壹個名為Module的標準模塊。該 模塊對應的代碼窗口被打開,對象和過程列表框的內容表明該 標準模塊的通用聲明已被打開。在此所聲明的變量與過程 在整個程序都可以使用。

S2:雙擊工程資源管理器窗口的標題條,以便能看到整個工程資源管理器窗口,

S3:在File(文件)菜單中,單 擊Save Modulel As

S4:如果D:\VB6sbs\less10文件夾未被選擇時,選擇該文件夾,鍵入MyTestMod.bas,然後按回車。該標準模塊作為MyTestMod.bas文件保存到磁盤,並且可以通過Project(工程)的Add File菜單項可將此文件通過其文件名加載到另壹個工程中。

S5:雙擊Project(屬性)窗口標題條。由於模塊不包含對象,因此它惟壹的屬性就是Name

S6:將Name屬性改為modVariables,然後按ENTER鍵。

(3)聲明公用變量

在標準模塊中聲明 全局變量十分簡單,鍵入關鍵字Public,後跟該 變量名。

缺省狀態下,公用就量在模塊中被聲明為變體類型,但是可以通過使用As關鍵字來指定相應類型,可以把公用變量聲明為某個指定的基本類型。

3.類模塊

在VB中類模塊是面向對象編程的基礎。可以在類模塊中編寫代碼建立新對象。這些新對象可以包含自定義的屬性和方法。實際上,窗體正是這樣壹種類模塊,在其上可安放控件,可顯示窗體窗口

用類模塊創建對象,這些對象可被應用程序內的過程調用。標準模塊只包含代碼,而類模塊包含代碼又包含數據,可視為沒有物理表示的控件。

模塊設計的考慮

在VB中創建應用程序的最重要的部分是設計階段。首先需要為應用程序設計壹個用戶界面,這個界面的設計比較容易確定。但設計代碼的結構就是壹項較復雜的工作。構造應用程序的方法不同,可能會造成應用程序的性能以及代碼的可維護性,可使用性不同。

VB應用程序呈層次結構。典型應用程序包括若幹個模塊:應用程序中每個窗體的窗體模塊、***享代碼的標準模塊和類模塊。每個模塊包含若幹含 有代碼的過程:Event過程,Sub過程或Function過程及Property過程。

在很多情況中都存在著多個對象***享的重復過程。這種情況最好創建壹個***享的子過程,使大家都可以調用它。即使將來修改這些子程序,則只在壹個地方修改就可進行全部修改,這將大大提高程序的可讀性和可維護性。可以把所有的***享操作放在標準的模塊中。

代碼編輯器

VB代碼編輯器是壹個窗口,大多數代碼都在此窗口 上編寫。有許多便於編寫VB代碼的功能。在每個模塊中,對於模塊中包含 的每個對象,將模塊中的代碼再細分出與對象對應的獨立部分用"對象列表框"實現各對象間的切換。對於模塊,列表包含 壹個通用段和壹個類段;對於標準模塊,只有壹個通用段被顯示。每壹段代碼都可包含 若幹個用"過程列表框"訪問的不同過程。對窗體或控件的每壹個事件過程,窗體模塊的過程列表都包含壹個獨立的段。類模塊只列舉本身的事件從初始化到終止。標準模塊的過程列舉任何事件過程,因為標準模塊不支持事件。模塊通用段的過程列表只包含聲明段,其中放置模塊級的變量、常數和DLL聲明

VB代碼編輯器的壹些功能和用法:

1.自動完成編碼

VB能自動填充語句、屬性和參數,這些性能使編寫代碼更加方便。在輸入代碼時,編輯器列舉適當的選擇。通過"工具"菜單上的"選項"命令訪問"選項"對話框,在"選項"對話框的"編輯器"選項卡上可以選擇"自動列出成員特性",由它們決定是允許還禁止代各碼的設置值。在代碼中輸入壹控件名時,"自動列出成員特性"會顯示出這個控件的下拉式屬性表。鍵入屬性名的前幾個字母,就會從表中選中該名字,按Tab鍵將完成輸入。當不能確認給定的控件有什麽樣的屬性時,這個選項是非常有幫助的。即使選擇了禁止"自動列出成員特性",仍可使用CTRL+J組合鍵得到這種性能。

"自動快速信息"功能可顯示語句和函數的語法。

2.書簽

在代碼編輯器中書簽可用來標記代碼的某些行,以便以後可以很容易地返回這些行。書簽開關的切換以及定位到已有書簽的命令可以在編輯菜單中書簽選項中得到。

過程

過程概述

壹個應用程序是由若幹模塊組成的,而每個模塊 又是由若幹個更小的代碼片段組成,將組成這些模塊的代碼片段稱為過程。通過過程,可以將整個程序按功能進行分塊,每個過程用來完成壹項特定的功能。使用過程 來組織代碼,不僅可以使程序的結構更加清晰,而且便於查找和修改代碼。當在其它工程中使用某個相同功能時,可以將過程作為可重用的代碼,直接拿到該 工程中使用。

1.VB是過程基本分類:

函數過程(Functi9on Procedure):函數過程用來完成特定的功能並返回相應的結果。在事件或其它過程 中可按名稱調用函數。函數過程能夠接收參數,並且總是以該函數名返回壹個值。這類過程壹般用於完成計算任務。

子過程:子過程是沒有返回值的函數。在事件 過程 或其它過程 中可按名稱調用子過程。子過程能夠接收到參數,並可用於完成過程中的任務並返回壹些數值。但是,與函數過程不同,子過程不返回與其特定子過程名相關聯的值。子過程壹般用於接收或處理輸入數據、顯示輸出或者設置屬性。

屬性過程:屬性過程用來創建和操作程序中用戶定義的屬性。這是壹種有用的,在某種程度上相當高級的特性,它使能夠定制現有的VB控件並通過創建新的對象,屬性和方法來擴展VB語言

通用過程:允許把壹個經常用到的過程以熟悉的名稱寫入某個標準模塊中。

2.使用過程編程的優點

消除了重復語句行。

使程序更易閱讀。

簡化了程序開發

其它程序可重復使用該通用過程

擴展VB語言

子過程

子過程是在響應事件時執行的程序段。將模塊中的代碼分成子過程後,在應用程序中查找和修改代碼變得更容易了,子過程 類似於用戶自定義函數,不同之處是子過程不返回與其名稱相關聯的值,子過程壹般用來從 用戶那裏得到輸入數據、顯示或打印信息,或者操縱與某壹條件相關的幾種屬性。子過程也用來在過程調用中處理和返回若幹個變量。

1.子過程的語法

(1)子過程語法

[Private|Public|Friend][Static]Sub過程名[(參數表)]

[程序段]

[Exit sub]

[程序段]

End Sub

Sub語句的語法包含下面部分:

Public可選的。表示所有模塊的所有其它過程都可訪問這個Sub過程。如果在包含Option Private的模塊中使用,則這個過程在該工程外是不可使用的

Private可選的。表示只有在包含其聲明的模塊中的其它過程可以訪問該Sub過程

Friend可選的。只能在類模塊中使用。表示該Sub過程在整個工程中都可見的,但對對象實例的控件者是不可見的。

Static可選的。表示在調用之間保留Sub過程的局部就量的值。Static屬性對在Sub外聲明的變量不會產生影響,即使過程中也使用了這些變量。

過程名是必需。Sub的名稱遵循標準的變量命名約定。

參數表是可選的。代表在調用時要傳遞給Sub過程的參數的變量列表。多個變量由用逗號隔開

需要說明:

如果沒有使用Private,Public或Friend,Sub過程在缺省情況是公用的。如果沒有使用Static,則在調用之後不會保留變量的值。Friend關鍵字只能在類模塊中使用。不過Friend過程可以被工程的任何模塊中的過程訪問。Friend過程不會在其父類的燈型庫中出現,且Friend過程不能被後期綁定。

2.Sub過程可以是遞歸的,也就是說,該過程可以調用自己來完成某個特定的任務。不過,遞歸可能會導致堆棧上溢。通常Static關鍵字和遞歸的Sub過程不在壹起使用。

3.所有的可執行代碼都必須屬於某個過程,不能在別的Sub,Function或Property過程中定義Sub過程。

4.Exit Sub 語句使執行從壹個Sub過程中退出。

5.Sub過程 與Function過程的相似之處是:它們都 是壹個可以獲取參數,執行壹系列語句,以及改變其參數的值的獨立過程。而與Function過程不同的是Sub過程不能用於表達式

6.可以使用過程名並後跟相應的參數列表來調用壹個Sub過程。

7.在Sub過程中使用的變量分類為兩類:壹類是在過程內顯示定義的,另壹類則不是。

8.不能使用GoSub,GoTo或Return來進入或退出Sub過程

9.每次調用過程都會執行Sub和End Sub之間的語句塊。可以將子過程放入標準模塊、類模塊和窗體模塊中。

10. 在過程調用中,發送到子過程的參數值和類型必須與子過程聲明語句中參數值和類型相符

11.將變量傳遞給過程被稱為傳遞稱為引用參數,因為變量能夠被過程修改並返回給程序。

(2)調用子過程

在程序中調用子過程需要指明該過程的名稱,然後列出子過程所要求的參數。例如,要使用文字字符串調用AddNameToListBox過程,可以鍵入如下語句:AddNameToListBox "Kimberly"與之相似,通過鍵入如下語句可以使用變量來調用該過程 AddNameToListBox NewName $

在這兩種情況下,AddNameToListBox過程在列表框中添加確定的名稱。在該過程中,按值調用和按址調用肝產生相似的結果,因為在過程中並未修改該參數。

(3)使用子過程管理輸入

在程序中,當信息來自於兩個或多個來源,並需要采用相同格式時同,就往往使用子過程處理所輸入的信息。

2.通用過程

通用過程表示如何完成壹指定的任務。壹旦定義了通用過程,可由其他過程來調用。建立通用過程的理由之壹就是幾個不同的事件過程也許要執行同樣的動作。將公***語句放入通用過程,並用事件過程來調用它,這樣就不必重復代碼,也容易維護應用程序。

通用過程包含在標準模塊中,它可由程序中任何部分調用。通用過程與事件過程不同,因為它並不與某個運行事件或使用工具箱控件創建的對象相關聯。通用過程與VB的內建語句和函數類似,它們都名稱調用、可接收參數、並且分別完成壹特定任務。

3.事件過程

VB應用程序是事件驅動的應用程序,事件是窗體或控件所能識別的動作。在響應事件時,應用程序執行代碼。 VB的每壹個窗體和控件都 存放在壹個預定義的事件集。運行應用程序時,當某個事件 發生,而且在與該事件關聯的過程 中存在代碼,則VB就會調用該事件過程。因為事件過程的過程名在對象和代碼之間建立了聯系,所以可以說事件過程是附加在窗體和控件上的。

每個事件對應壹個事件過程,如果讓控件響應事件時就要把相應的代碼寫入到這個事件的事件過程中。壹個控件的事件過程將控件的實際名字、下劃線(_)和事件名組合起來。

控件事件的語法和窗體事件的語法

Private Sub controlnake_eventname(參數表)

語句塊

Exit Sub

語句塊

End Sub

Private Sub Form_eventname(參數表)

語句塊

Exit Sub

語句塊

End Sub

Function過程

VB包含內置的或內部的函數,還可用Function語句編寫自己的Function過程。在定義了壹個函數之後,可以像調用任何壹個VB的內部函數壹樣使用它,即可以在任何表達式,語句或函數中引用它。

函數過程是標準模塊中位中Function語句與End Function 語句之間的壹系列語句。函數中的這些語句完成附某些有意義的工作,壹般是處理文本,進行輸入或計算壹個值。通過將函數名與便條所需的參數壹起置於壹條程序語句中,可以調用該函數。換句話說,使用函數過程與使用內置函數(比如Time,Int或Str等)的方法完全相同。

每個函數完成壹種服務,比如進行計算並返回壹個值。

在標準模塊中聲明的函數在缺省的狀態下是公用函數,它們可在任何事件中過程中使用。

1.函數過程的語法

[Public|Private|Friend][Static]FunctionName[(Arglist)][As數據類型]

[程序段]

[Name=Expression]

[Exit Function]

[程序段]

[Name=Expression]

End Function

Function 語句的語法包含下面部分:

Public表示所有模塊的所有過程都可訪問這個Function過程。如果是在包含Option Private的模塊中使用,則這個過程在該工程外是不可使用的。

Private表示只有包含其聲明的模塊的過程要以訪問該Function過程。

Friend只能在類模塊中使用。表示該Function過程在整個工程中都是可見的,但對於對象實例的控制者是不可見的。

Static表示在調用之間將保留Function過程的局部變量值。Static屬性對在該Function外聲明的變量不會產生影響,即使過程中也使用了這些變量。

Name是Function的名稱;遵循標準的變量命名約定。

Arglist代表在調用時要傳遞給Function過程的參數變量列表,多個參數變量應用逗號隔開。

數據類型是Function過程的返回值的數據類型,可以是Byte,Boolean,Integer,Long,Currency,Single,Double,Date,Strig(不包含定長字符串),Object,Variant或任何用戶定義類型。

程序段是在Function過程中執行的任何語句塊。

Expression是Function的返回值。

其中的參數表,參數的語法以及語法各個部分如下:

[Option][ByVal|ByRef][ParamArray]Varname[()][As數據類型][=defaultvalue]

Optional表示參數不是必需的。如果使用了該選項,則Arglist中的後續參數都必須是可選的,而且必須都使用Optional關鍵字聲明。如果使用了ParamArray,則任何參數都不能使用Optional聲明。

ByVal 表示該參數按值傳遞。

ByRef表示該參數按地址傳遞,ByRef是VB的缺省選項。

ParamArray只用於Arglist的最後壹個參數,指明最後這個參數是壹個Variant元素的Optional數組。

Varname代表參數的變量的名稱;遵循標準的變量命名約定。

數據類型表示傳遞給該過程的參數的數據類型;可以是Byte,Boolean,Integer,Long,Currency,Single,Double,Date,String,Object或Variant.

defaultvalue表示任何常數或常數表達式,只對於Option參數時是合法的。如果類型為Object,則顯示缺省值只能是Nothing

簡要說明如下:

1.如果沒有使用Public,Private或Friend顯示指定,則Function過程為公用。如果沒有使用Static,則局部變量的值在調用之後不會保留。Friend關鍵字只能在類模塊中使用。但Friend過程可以被工程的任何模塊中的過程訪問。Friend過程不會在其父類的類型庫中出現。

2.Function過程可以是遞歸的;也就是說,該過程調用自己來完成某個特定的任務。不過,遞歸可能會導致堆棧上溢。通常Static關鍵字和遞歸Function過程不在壹起使用

3.所有的可執行代碼都必須屬於某個過程。

4.Exit Function語句使執行立即從壹個Function過程中退出。

5.與Sub過程壹樣,Function過程是壹個獨立的過程 ,可讀取參數、執行壹系列語句並改變其參數的值。與子過程不同,Function過程也返回壹個值到調用的過程。Sub過程與Function過程之間有三點區別:

語句或表達式的右邊包含函數過程和參數,這就調用了函數

與變量完全壹樣,函數過程應該定義返回值的數據類型

給Functionname賦壹個值,就可返回這個值。Function過程返回壹個值時,該值可成為表達式 的壹部分

例如,下面是已知直角三角形兩直角邊的值,計算斜邊的函數。

function hypotenuse(A as integer,B as integer) as string

hypotenuse=sqr(A^2+B^2)

End function

在VB中調用function過程的方法和調用任何內部函數的方法是壹樣的:

label1.caption=hypotenuse(Cint(text1.text),cint(text2.text))

strX=hypotenuse(width,height)

函數總是以該函數的名稱返回給調用過程壹個值。因此,函數中的最後壹行語句往往是將函數的最終計算結果放入functionname中的賦值語句。例如,下文中的函數過程total1用來為某個工程計算,然後將結果賦值給total1名。

function total1(cost)

t1=cost*0.05

t2=cost*0.015

total1=t1+t2

end function

如果沒有對name賦值,則過程將返回壹個缺省值:數值函數返回0,字符串函數返回壹個零長度字符串(""),variat函數則返回empty。如果在返回對象引用的function過程中沒有將對象引用賦給name(通過set),則函數返回nothing。

2.調用函數過程

在事件過程中調用函數Total1時,使用與下文相類似的語句:S1.Caption=TotalTax(500).該語句計算Cost值為500時Total的值,然後將結果賦值給S1對象的Caption(標題)屬性。

  • 上一篇:計算機論文常用參考文獻
  • 下一篇:三世書查婚姻是以女方為準,三世書測姻緣
  • copyright 2024編程學習大全網