Помогни ни да направим Uroci.net по - богат! Добави урок
Категории Други уроци Adobe Photoshop Adobe Illustrator Adobe Flash Adobe Fireworks DreamWeaver CSS и HTML Corel Draw Image Ready PHP SEO CMS Microsoft Windows Microsoft Word Microsoft Excel PowerPoint Microsoft Access Microsoft Publisher Linux Visual basic
JavaScript Ajax 3ds Max Maya 3D C++ Sound Forge Gimp SWiSH

Създаване на вашата първа Клас библиотека (Class Library)

bubust   трудност:    видян: 1630



- Добавяне на методи (Methods) към класовете

Прибавянето на методи става като във VB6. Ако искате да създадете метод Admit в клас Uchenik, кодът ще изглежда така:

Public Function Admit() As Boolean

`добавяне на Uchenik към базата данни и т.н.

Return True

End Function

Викането от клиента е простичко, като например:

If Uchenik.Admit Then...

Но не мислете, че няма промени в методите. Има големи промени в дефинирането на методите, но са специфични за наследяемостта (inheritance), и затова ще ги разгледаме в друга глава.

- Добавяне на събития (Events)

За да добавите събитие към вашия клас, използвайте ключова дума Event. Представете си, че искате да добавите събитие към класа, който известява лабораторните резултати. Би трябвало да използвате такъв код:

Event LabResult(ByVal LabType As String)

Така се дефинира събитието. За да предизвикате събитието, трябва да използвате инструкция RaiseEvent. Примерно, ако установявате свойство UchenikID, бихте могли да проверите базата данни за нови лабораторни резултати за този ученик. Ако има нови лабораторни резултати, бихте могли да вдигнете събитие:

Dim miUchenikID As Integer

Public Property UchenikID() As Integer

Get

Return miUchenikID

End Get

Set

miUchenikID = Value

`проверка на базата данни за този Uchenik

`ако има нови лабораторни резултати

RaiseEvent LabResult("CBC")

End Set

End Property

Ако това беше реална процедура, вместо "CBC" , в събитието щеше да има извеждане на данните на ученика от базата данни (database).


- Обработване на събитията в клиентската програма (Client)

Имате две опции за обработване на това събитие в клиентската програма. Първият начин е чрез ключова дума WithEvents. Вторият начин е да използваме инструкция AddHandler . За да използвате ключова дума WithEvents, трябва да декларирате обекта и да включите WithEvents. Ако използвате WithEvents, декларацията не може да бъде локална за подпрограмата (sub) или за функцията (function). По тази причина кодът ще бъде извън всяка подпрограма или за функция, на модулно"module" ниво във вашата клиентската програма (client):

Dim WithEvents Uchenik As Uchenik

Този ред предполага, че сте импортирали пространство от имена Shkola. Отбележете, че ключова дума New не e в инструкцията. Не може да използвате ключова дума WithEvents в декларация вътре в процедура, нито да използвате ключова дума New в декларацията извън процедурата, за да създадете обект, който вдига събитие. По тази причина след като сте декларирали обект чрез WithEvents извън всяка процедура, трябва да използвате New вътре в процедура:

Dim WithEvents Uchenik As Uchenik

...

Public Sub Foo()

Uchenik = New cUchenik()

...

End Sub

Сега, за да прибавите събитийна процедура, кликнете върху името на класа Uchenik в падащия списък в горния край на прозореца за кода. В комбобокса MethodName , изберете от падащия списък LabResult. Така се създава събитийна процедура Uchenik_LabResult:

Public Sub Uchenik_LabResult(ByVal LabType As System.String)

Handles Uchenik.LabResult

...

End Sub

Вторият начин да се обработва събитие, е да се използва инструкция AddHandler. Вие трябва да имате подпрограма (sub) или функция (function), която да действа като събитийна процедура. Следващата стъпка е да използвате инструкция AddHandler , за да съедините конкретното събитие от обекта с процедурата, която създавате за обработка на събитието.

Примерно, да допуснем, че искате да създадете подпрограма за обработване на събитие, наречена LabHandler. Тази процедура ще се дефинира като стандартна подпрограма (sub). Трябва да подадете като аргументи, всички параметри, дефинирани в събитието LabResult. Тук, събитието наречено LabResult подава параметър lab от тип string. По тази причина, вашата процедура трябва да приема стринг като аргумент.

Когато използвате AddHandler, вие спесифицирате името на събитието в класа Uchenik , което ще обработвате (LabResult), но трябва и да го свържете с процедурата; в този случай, LabHandler. Вие даже не го свързвате директно с LabHandler; вместо това го свързвате с адреса на LabHandler, използвайки оператор AddressOf . Кодът за използване на AddHandler изглежда така:

Protected Sub button1_Click(ByVal sender As Object, _

ByVal e As System.EventArgs) Handles button1.Click

Dim Uchenik As New Uchenik()

AddHandler Uchenik.LabResult, AddressOf Me.LabHandler

...

End Sub

Private Sub LabHandler(ByVal LabType As String)

...

End Sub

Забележете, че в AddHandler, вие се свързвате с обектната променлива (Uchenik) и името на събитието (LabResult) , използвайки синтаксис Object.Event. Предимството на този способ е, че една процедура обработва много събития, даже и те да са от различни компоненти. Вие можете да прихващате събития в обекти, които сте създали по време на изпълнение (runtime). Можете например да получавате колекция от обекти и да обработвате техните събития чрез тази процедура.



- Кодът "Finalen"

Ето окончателния "Finalen"код, уверете се, че компилацията работи. Код за проект Shkola:

Public Class Uchenik

Dim msFirstName As String

Dim KlasDascaliList As New Collection()

Dim miUchenikID As Integer

Public Property FirstName() As String

Get

Return msFirstName

End Get

Set(ByVal Value As String)

msFirstName = Value

End Set

End Property

Default Public ReadOnly Property KlasDascali _

(ByVal iIndex As Integer) As KlasDascal

Get

Return CType(KlasDascaliList(iIndex), KlasDascal)

End Get

End Property

Public Function Admit() As Boolean

`добавяне на Uchenik към базата данни и т.н.

Return True

End Function

Event LabResult(ByVal LabType As String)

Public Property UchenikID() As Integer

Get

Return miUchenikID

End Get

Set(ByVal Value As Integer)

miUchenikID = Value

`проверка на базата данни за този Uchenik

`ако има нови лабораторни резултати

RaiseEvent LabResult("CBC")

End Set

End Property

End Class

Public Class KlasDascal

Dim miPhysID As Integer

Public Property KlasDascalID() As Integer

Get

Return miPhysID

End Get

Set(ByVal Value As Integer)

miPhysID = Value

End Set

End Property





Public ReadOnly Property Vuzrast() As Single

Get

`get Date of Birth (DOB)- получаване на дата на раждане

`изчисляване на Vuzrast от DOB

`връщане на Vuzrast

End Get

End Property

End Class





Фигура 67 Опция Solutions Configuration в лентата с инструменти.


Страници: «1 2 3

Регистрирайте се, за да добавите коментар

реклама

© Всички права запазени. 2006-2008. Created by: Site.bg
Препоръчваме: IT Новини | Кино и игри | Диплома.бг | Paparak.bg | Тунинг Портал | uchenik.com | TRAVEL туризъм | Реферати | AmAm.bg | Иде.ли | Курсови работи | AnimeS-bg.com | Фото Форум | Запознанства | Мрежа от приятели | IT Light | Spodeli.net | Фото-Култ | IDG.BG | Teenproblem.net | Блог - Образование | Fresh-BG.com | Hanovete.com | Bulfleet.com | Mythlands.com | Ohoboho.com | Казанлък.Com | News24 | Setcom.bg | Atol.bg | Elmaz.com | MobileBulgaria.com