Помогни ни да направим Uroci.net по - богат! Добави урок

Принципи на обектно ориентираното програмиране

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



Интерфейси

Интерфейсите във VB.NET са като интерфейсите в предишните версии на VB: Дефиниции на класа баз актуално изпълнение. Защото няма изпълним код, не може да се инстанцира интерфейса, наместо това трябва да се изпълни в класа.

Има едно изключение за правилото "не изпълним код в интерфейса": Във VB.NET, може да дефинирате така наречените статични членове (static members).

Като програмисти под VB, трябва да осъществим капсулацията чрез софтуерни компоненти.

Във VB .NET, методите на интерфейса се реализират като функции (functions). От друга страна, свойствата се реализират като променливи - private които съхраняват стойността на свойството заедно с двойка функции - public functions--една за подаване (установяване) на променливата и една за връщането й (получаването). Тези функции се наричат понякога методи за достъп (accessor methods) на свойството. Множеството от изложени (exposed) функции (обикновени методи и методи за достъп) конституират интерфейса -interface на абстракцията.

Генерално един софтуерен компонент може да капсулира и изложи повече от една абстракция--оттук и повече от един интерфейс. Примерно бихме искали софтуерен компонент в проекта ни за служител на компания, който да капсулира интерфейс, наречен IIdentification (първата буква "I" е за интерфейс) , който да ни служи за целите на идентификацията. Този интерфейс може да има свойства като Name (име), Social Nomer (номер социална осигуровка), DriveNomer (номер на шофьорска книжка), Vuzrast(възраст), Birthmarks (белег по рождение), и така нататък. Нещо повече, софтуерният компонент може да капсулира интерфейс наречен IEducation за описване образованието на служителя. Този интерфейс може да включва свойства като Education Level (ниво образование), Diplomi(дипломи) и така нататък.

Интерфейсът на всяка абстракция изложен (представен) във софтуерния компонент се нарича интерфейс на софтуерния компонент (software component). Компонентът Служител (Slujasht) включва вече два интерфейса:

IIdentification и IEducation.

Трябва да отбележим, че понятието интерфейс често се свързва с множеството от всички изложени свойства и методи от софтуерния компонент, като в този случай компонента има само един интерфейс.

Връщайки се към оригиналната абстракция "Служител" (Slujasht), нейният интерфейс може да се състои от функциите показани в Таблица 1.

Таблица 1.


Членове (Members)на интерфейса на Slujasht
Type Name
Property FullName: GetFullName(), SetFullName( )
Property Address: GetAddress(), SetAddress( )
Property SlujashtID: GetSlujashtID(), SetSlujashtID( )
Property Zaplata: GetZaplata(), SetZaplata( )
Method IncZaplata( )
Method DecZaplata ( )

Само разлистване на функциите на интерфейса по име - name (както направихме) не дава достатъчно информация за извикването на тези функции. Така че много по-полезна дефиниция на интерфейс би била следната: множество от сигнатури на публични функции за софтуерни компоненти. За да разясним какво имаме предвид, нека да дискутираме една от най-интересните черти на обектно-ориентираното програмиране-- разликата между декларация (declaration) на функция и изпълнението (implementation) на тази функция. Разгледайте примера на функция за сортиране:

Function Sort(a( ) as Integer, iSize as Integer) as Boolean

For i = 1 to iSize

For j = i+1 to iSize

If a(j) < a(i) Then swap a(i), a(j)

Next j

Next I

Sort = True

End Function

Първият ред в нашата дефиниция:

Function Sort(a( ) as Integer, iSize as Integer) as Boolean

е декларацията на функцията (function declaration). Тя обезпечава информация за броя и типа на параметрите и типа на върнатата стойност от функцията. Тялото на функцията:

For i = 1 to iSize

For j = i+1 to iSize

If a(j) < a(i) Then swap a(i), a(j)

Next j

Next i

Sort = True

представлява изпълнението (implementation) на функцията. То описва как функцията изпълнява целта си. Забележете можем за променяме тялото на функцията без да променяме декларацията й. Понеже целта е да се сортира масив a можем да заместим предложения простичък алгоритъм с метода на мехурчето, двоичното сортиране и т.н. Сега да се поставим на мястото на клиент на функция Sort. Клиентът само иска да знае как да използва функцията, или как да се обърне към декларацията на функцията. Не го интересува нищо за изпълнението. Следователно само декларацията е интерфейс на функцията.

Сигнатурата (signature) на функцията е името и типа върната стойност, както и имената, реда и типа на нейните параметри. Декларацията на функцията е прост и ясен начин за описание на сигнатурата на функцията. Microsoft разбира под сигнатура само аргументите (argument signature) и няма предвид типа върната стойност да е част от сигнатурата на функцията. Под сигнатура те разбират генералното понятие за функцията. Но по-специфична дефиниция за нас е че интерфейсът на нашият компонент Служител може да е следният:

Function GetFullName(lEmpID As Long) As String

Sub SetFullName(lEmpID As Long, sName As String)

. . .

Sub IncZaplata(sngPercent As Single)

Sub DecZaplata(sngPercent As Single)


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

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


Калдейта ЕООД - © 2003-2010. Всички права запазени.
Препоръчваме: Национален Бизнес | Bomba.bg | IT Новини | Диплома.бг | TRAVEL туризъм | Реферати | AmAm.bg | Иде.ли | Курсови работи | Фото Форум | Spodeli.net | Фото-Култ | Atol.bg | Elmaz.com | MobileBulgaria.com | Казанлък.Com