VB.NET навсегда
Главная | | Регистрация | Вход
Пятница
17.05.2024
08:28
Приветствую Вас Гость | RSS
Главная » 2009 » Сентябрь » 17 » Программирование интерфейсов
16:22
Программирование интерфейсов
Решения на основе компонентов имеют как положительные, так и отрицательные стороны. Одним из основных преимуществ является возможность создания приложе-
ний "по частям". Идея такова: разработка программного обеспечения может выполняться по тем же принципам, что и изготовление каких-либо промышленных образцов, т.е. система создается в виде нескольких отдельных компонентов вместо единой монолитной конструкции.

Звучит заманчиво, но, подобно большинству грандиозных проектов, об этом легче сказать, чем сделать. В частности, это относится к более ранним версиям Visual Basic.
Теоретически можно взять компонент, который выполняет те или иные действия, и заменить его другим, выполняющим те же действия. К сожалению, чаще всего этого не
происходит.

В чем же причина? Чтобы улучшить качество функционирования, разработчики предпочитают использовать ранее связывание, что позволяет им связывать компоненты
во время компиляции. В свою очередь, для того чтобы воспользоваться ранним связыванием, следует явно определить указанные компоненты, что приводит к созданию конст-
рукции с высокой степенью интеграции компонентов. В конечном итоге это приводит к появлению длинной цепи повторных компиляций. Незначительное изменение одного
компонента требует повторной компиляции всех зависящих от него компонентов, а также компонентов, зависящих от этих компонентов, и т.д.

В Visual Basic 5.0 появилась возможность хранить определение интерфейса отдельно от компонента, реализующего данный интерфейс. Поэтому необходимость создания зави-
симых компонентов исчезает. В этом случае для создания экземпляра какого-либо класса достаточно сослаться не на указанный класс, а на интерфейс, реализованный данным
классом.

Подобная технология позволяет разработчику постоянно изменять фактически используемый компонент. Это особенно важно в том случае, когда компонент и код, его использующий, разрабатываются одновременно. Например, на ранних стадиях разработки может использоваться достаточно простая реализация компонента. Несколько позже можно подключать его более сложную реализацию. А после завершения разработки первоначальная реализация компонента может быть с успехом заменена совершенно другой.

Интерфейсы облегчают весь процесс разработки программного обеспечения. С их помощью можно проанализировать элементы созданного проекта, а также значительно упростить сопровождение и выполнение приложений. Интерфейсы чем-то похожи на автомобильные шины. Скажите, трудно ли вам использовать для автомобиля шины только
одной марки, типа и стоимости?

Расширение возможностей языка VB.NET коснулось и интерфейсов. В настоящее время, например, событие может быть частью интерфейса, что является одним из наиболее существенных дополнений. (В предыдущих версиях Visual Basic существовало только позднее связывание событий.)

Механизм определения интерфейса также был изменен. В предыдущих версиях Visual Basic интерфейсы могли быть созданы с помощью класса или же с помощью средств языка описания интерфейсов (IDL). В листинге 3.12 приведен пример нового синтаксиса интерфейса, содержащего событие. Это достаточно простой пример. Но несмотря на это, понятно, что определение интерфейса в языке VB.NET выполняется по тем же законам, что и в языке Visual Basic.

Определение интерфейса в VB.NET

Public Interface IEmployee
Property FirstNamet) As String
Property LastNameO As String
Function ChangeSalary(ByVal Percentagelncrease as Decimal) as Decimal
Event Fired(ByVal ReasonCode as Integer)
End Interface


Интерфейсы в VB.NET имеют ряд других улучшений, к которым относится и наследование. Как только интерфейс создается, он может быть реализован в любом из языков платформы .NET Framework.

Реализация интерфейса в Visual Basic 6.0

Public Class Employee
Implements IEmployee
Private c_sFirstName as String
Private c_sLastName as String
Private c_dSalary as Decimal
Private Property IEmployee_FirstName() as String
Get
IEmployee_FirstName = c_sFirstName
End Get
Set(ByVal Value as String)
c_sFirstName = value
End~Set
End Property
Private Property IEmployee_LastName() as String
Get
IEmployee_LastName = c_sLastName
End Get
Set(ByVal Value as String)
c_sLastName — value
End~Set
End Property
Private Function IEmployee_ChangeSalary_
(ByVal Percentagelncrease as Decimal) as Decimal
Return c_dSalary * (Percentagelncrease / 100)
End Function


В этом фрагменте не реализовано событие
Это можно сделать, но код будет достаточно сложным

Синтаксис VB.NET, используемый для реализации интерфейсов, более гибок, прост и
понятен.

Реализация интерфейса в стиле VB.NET
Public Class Employee
Implements IEmployee
Private c_sFirstName as String
Private c_sLastName as String
Private c_dSalary as Decimal
Public Property FirstNameofEmployee() as String
Implements IEmployee.FirstName
Get
IEmployee_FirstName = c_sFirstName
End Get
Set(ByVal Value as String)
c_sFirstName = value
End~Set
End Property
Public Property LastNameOfEmployee() as String
Implements IEmployee.LastName
Get
IEmployee_LastName = c_sLastName
End Get
Set(ByVal Value as String)
c_sLastName = value
End Set
End Property
Private Function UpdateSalary(ByVal Percentagelncrease as Decimal)
as Decimal Implements IEmployee.ChangeSalary
Return c_dSalary * (Percentagelncrease / 100)
End Function

"В этом фрагменте не реализовано событие
'Это можно сделать, но код будет достаточно сложным
End Class


Новый стиль гораздо более гибок. Например, один класс может реализовать несколько интерфейсов, после чего можно использовать только один метод для его реализации во
всех интерфейсах сразу. Реализация методов в языках Visual Basic 5.0 и 6.0 приведена.

Реализация метода iEmployee в Visual Basic 5.0 или 6.0

Private Function IEmployee_ChangeSalary() As Decimal
Return c_dSalary * (Percentagelncrease / 100)
End Function


реализуется дополнительный интерфейс в том же классе и делегируются функциональные возможности предыдущего интерфейса.

Реализация методов IEmployee и 1Етр1оуее2
в Visual Basic 5.0 или 6.0

Private Function IEmployee ChangeSalary_
(ByVal Percentagelncrease as Decimal) As Decimal
Return c_dSalary * (Percentagelncrease / 100)
End Function

Private Function IEmployee2_ChangeSalary_
(ByVal Percentagelncrease as Decimal) As Decimal
Return IEmployee_ChangeSalary(Percentagelncrease)
End Function


В языке VB.NET подобная операция выполняется гораздо проще: следует всего лишь изменить существующие методы реализации предложения (см. листинг 3.17).

Реализация метода lEmployee в VB.NET

Private Function UpdateSalary(ByVal PercentageToChange as Decimal)
as Decimal Implements lEmployee.ChangeSalary
Return c_dSalary * (PercentageToChange / 100)
End Function


VB.NET позволяет добавить к объявлению функции небольшой фрагмент дополнительного кода, указывающего, что данная функция также является реализацией метода
IEmployee2 .ChangeSalary (см. листинг 3.18).


Реализация методов lEmployee и IEmployee2 в VB.NET
Private Function UpdateSalary((ByVal PercentageToChange as Decimal)
as Decimal Implements lEmployee.ChangeSalary,
IEmployee2.ChangeSalary
Return c_dSalary * (PercentageToChange / 100)
End Function

Просмотров: 1372 | Добавил: admin | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа
Меню
Поиск
Наш опрос
Оцените мой сайт
Всего ответов: 8
Copyright MyCorp © 2024
Создать бесплатный сайт с uCoz