Или ако като Джон Конел простичко
опишем класа, можем да си го представим като проект за построяване на къща,
който представлява листове чертежи, размери и указания за предприемача -
строител. Изградената къща по проекта е обекта.
Клас модули във VB .NET
(Class Modules)
Под Visual Studio.NET, VB клас модулът е вмъкнат в проекта
чрез подменю Add Class от меню Project. Включва се нов модул съдържащ кода:
Public Class ClassName
End Class
Въпреки че Visual Studio съхранява всеки клас в отделен
файл, това не се изисква. Конструкцията е Class...End Class която
маркира началото и края на дефиницията за клас. Така че, кодът на един
или повече от един
клас, както и на на един или повече от един модул код (конструкция
Module...End Module) могат да се съдържат в отделен
файл сорс код. Пример за VB клас модул (class module) e класът CChovek, дефиниран в следващата секция.
Членове на клас (Members)
Класовете дефинират свойства (properties), методи (methods),
полета (fields), и събития (events) на обектите. Ако терминът поле (field) е нов за вас, нека да кажем, че
това просто означава публична променлива (publicvariable) представена от класа; полетата
са "мързелив начин" за създаване на свойства. Общо, properties, methods, fields, и events се наричат членове (members)
на класа.
Във VB .NET, клас модулите могат да съдържат следните типове членове:
Data members- Данни
Включват променливи (наричани също така полета - fields) и константи.
Event members- Събития
Събитията са процедури,
които се викат автоматично от Common Language Runtime в отговор на случващи се акции, като
създаване на обект, кликване на бутон, промяна на част от данни или излизане на обект извън
дефинираната област на действие (scope).
Function
members-Функции
Важи за двете - функции и подпрограми. Функцията се нарича още метод - method. Клас конструкторът е специален
тип метод.
Property
members-Свойства
Свойството се изпълнява като Private променлива заедно със специален тип VB функция, която вмества двете функции за достъп (accessor functions) на свойството.
Type members-Типове
Член на класа може да е друг клас, известен като гнездови клас.
Класът CChovek който показваме, илюстрира някои
от типовете членове:
Public Class CChovek
' Data Members
' Member variables
Private msName As String
Private miVuzrast As
Integer
' Member constant
Public Const MAXVUZRAST As
Short = 120
' Member event
Public Event Testing( )
' Function Members
' Method
Public Sub Test( )
RaiseEvent Testing( )
End Sub
' Property Members
Property Vuzrast( ) As
Integer
' функции за достъп за свойството - property
Get
Vuzrast = miVuzrast
End Get
Set(ByVal Value As Integer)
' валидизация
If Value < 0 Then
MsgBox("Vuzrast cannot
be negative.")
Else
miVuzrast = Value
End If
End Set
End Property
' Property
Property Name( ) As String
' функции за достъп за свойството - property
Get
Name = msName
End Get
Set(ByVal Value As String)
msName = Value
End Set
End Property
' предефиниран конструктор - Overloaded constructor
Overloads Sub New( )
End Sub
' конструктор, който инициализира името-name
Overloads Sub New(ByVal
sNewName As String)
msName = sNewName
End Sub
Sub Dispose( )
' тук код за изчистване
End Sub
End Class
Таблица 2
| Class характеристики |
| Class | Характеристики |
| Sealed | Забранено
е добиването на Class (от
него не може да се наследява). |
| Implements | Договорите
на интерфейса са преизпълнени за класа |
| Abstract | Този
клас не може да се инстанцира сам; за да го
използвате,
Трябва
да получите произхождащ от него клас--също като
абстракните класове в C/C++. |
| Inherits | Означава,
че дефинирания клас ще наследи характеристиките
(properties, fields, methods) на класа написан до Inherits.Може да използвате тези характеристики или
да се "възползвате"
(override) от
тях. |
| Exported | Този
клас може да се види извън асемблито. |
| Not-Exported | Този
клас не може да се види извън асемблито. |
ww.syngress.com
Публичен интерфейс на VB .NET Class
(Public Interface)
Вече казахме, че когато говорим в генерални обектно-ориентирани понятия,
представените
(exposed) членове на софтуерните компоненти
конституират публичния интерфейс -
public interface (или само
interface) на компонента. Сега, във VB .NET, всеки член на
клас модул има тип за достъп -
access type, който може да бъде Public, Private, Friend, Protected, или Protected
Friend. Можем да
кажем, че VB .NET клас модулът може съответно да има Public, Private, Friend, Protected, и Protected
Friend членове.
Следователно срещаме някаква неяснота в дефинирането за
концепция публичен интерфейс на VB .NET класа. Духът на понятието
предполага, че бихме смятали всеки член,
изложен отвън класа, като част от публичния му интерфейс. Биха се
включили Protected, Friend, и Protected
Friend членове,
както и членове Public. От друга страна, може да се аргументира, че
членове на публичния интерфейс би могло да се изложат отвън проекта при
което класът решава, в кой случай само членовете Public биха се
включили в интерфейса.
Таблица 3
| Характеристики на членовете (Member) |
| Member | Характеристики |
|
| Private | Дефинира достъпността като позволена само или вътре в
самия клас или член на гнездови клас вътре в същия клас.. |
|
| Family | Дефинира достъпността като позволена вътре в самия клас
като член и подтип, който го наследява. |
|
| Assembly | Дефинира достъпността като позволена само отвътре на
асемблито, в което член е изпълнен. Family или Assembly клас. |
|
| Public | Дефинира достъпността като позволена от всеки клас |
|
| Abstract | Неизпълним член; като с C/C++, трябва да наследите
класа от него с цел да се изпълни |
|
| Final | Метод с инструкция final не може да бъде предефиниран -
overridden; превенция |
|
| Overrides | Използва се при виртуални методи; замества
предефинираното изпълнение от произхождащ клас |
|
| Static | Метод дефиниран като static съществува без да има нужда
да се инстанцира и може да бъде достигнат във всички инстанции на класа |
|
| Overloads | Методът, който се препокрива (overload) има същото име
и същия код, но параметрите, реда им и викащата конвенция могат да са
различни. |
|
| Virtual | Използва се за създаване на виртуален метод със
функционалност провеждана при предефиниране (Override) |
|
| Synchronized | Лимитира изпълнението по една "нишка" (thread) наведнаж. |
|
Всъщност не трябва да отдаваме голямо значение на точната
дефиниция на VB .NET публичен интерфейс на клас и следва да дадем право на всеки да
тълкува понятията по своя воля.