Данная статья является мои переводом пресс
релиза Микрософт. Так как переводчик из меня весьма своеобразный,
отдельные места изложенны "близко к тексту" Естественно
без ущерба смысловому содержанию
Что обещает нам Микрософт в следующей, седьмой
версии Visual Basic.
Пока Visual Basic остается стандартом для быстрого создания приложений.
Однако "объектностроительные" возможности Бэйсика продолжают
оставаться весьма ограниченными. Это ограничивает применение VB
при создании компонент среднего уровня. Следующая версия Бэйсика
будет содержать возможности любого объектно ориентированного языка,
используемые для упрощения создания приложений для организаций
и Web приложений. С этими возможностями VB обретет всю силу и
гибкость C++ или Java, оставаясь при этом наиболее популярным
инструментальным средством программирования.
Следующее поколение Visual Basic предоставит программистам первокласные
возможности обьектно ориентированного языка, такие как полноценное
наследование, энкапсуляция и полиморфизм. Так же появится возможность
свободного создания потоков, а так же такое долгожданное - обработка
ошибок с использованием исключений. Visual Basic будет предоставлять
возможности для полноценных и наращиваемых приложений, включая
веб приложения. Что нового будет в следующей версии:
Новые возможности обьектно - ориентированного языка
Дополнительно модернизированные возможности языка
История нововведений языка
У языка Visual Basic длинная история обновлений. Обновлений вместе
с операционной системой Windows. К примеру, важные изменения сделанные
в QuickBasic для поддержки графического интерфейса Windows 3.0
вылились в первый релиз Visual Basic. В Visual Basic 4.0 появились
возможности оперировать обьектами, базирующимися на СOM для создания
динамических библиотек. В пятой версии Visual Basic язык приобрел
возможности создания COM контролов (ActiveX controls)
С каждым следующим удачным изменением, популярность Visual Basic
стремительно росла. Когда VB приобретет полностью обьектно ориентированные
возможности для построения крупных WEB приложений - это только
подтвердит данную тенденцию.
Объектно ориентированное программирование
В традиционном структурном программировании существуют некоторые
слабости, выражающиеся , например в том, что данные храняться
отдельно от кода, эти данные обрабатывающего. Код, написанный
в такой структурной программе не является модульным Так как данные
могут быть доступны из любого участка кода, может сложиться ситуация,
когда данные будут изменены без ведома разработчика. Результатом
будут ошибки выполнения или проблемы с отладкой. Дополнительно
- поддержка такого софта становится тяжелым занятием. Попытка
понять, какие глобальные изменения вызовет замена одной строки
кода в стркутурной программе , нередко трудноосуществима. . К
тому же, программист вынужден заботатися о соотвествии данных
и кода, и о поддержке этого соотвествия. Как результат - код теряет
универсальность и не может быть использован повторно .
Объектно ориентированное программирование (OOP) решает эти проблемы
Объекно написанная программа упаковывает данные и методы изменяющие
эти данные внутри отдельного модуля, именуемого обьектом. Данные
внутри обьектов могут быть спрятаны, для обеспечения гарантий
их целостности. Объект может предоставлять Открытые методы для
работы с данными. Эта концепция называется Инкапсуляцией (encapsulation).
Так как детали реализации спрятаны внутри интерфейса класа, логика
программы может быть изменена без изменений "внешних"
для данного обьекта вызовов.
OOP позволяет программисту использовать код и данные повторно,
вызывая интерфейсы обьектов. Использование наследования от предварительно
определенных объектов позволяет проектировать и реализовывать
сложные приложения быстро. Написание нового кода всегда черевато
появлением новых ошибок, Повторное использование - позволяет избежать
этого.
Так как новая версия VB будет предоставлять все вышуказанные
возможности в полной мере, как и подобает первокласному обьектно
ориентированному языку - описанные преемущества смогут быть использованны
в VB программах
Inheritance - Наследование
Одно из свойств языка наиболее часто запрашиваемое от производителей
VB . Написание программ для Интернета требует повторного использозования
кода для ускорения разработки . Для обслуживания возможностей
наследования будет введено новое служебное слово Inherits.
Разработчики смогут использовать новое служебное слово Inherits
для извлечения свойств существующих классов. .
Class1
Function GetCustomer()
...
End Function
Class2
Inherits Class1
Function GetOrders()
...
End Function
Наследуемое выражение поддерживает все обычные свойства, связанные
с наследованием.
- Инстанс наследующего класса поддерживает все методы наследуемого
(базового) класса.
- Наследующий класс может замещать(override) методы базового
класа , используя ключевое словоOverrides
- Наследующий класс может расширять набор методов базового класса.
Encapsulation - Инкапсуляция
Термин инкапсуляция означает, что разработчик может разместить
и скрыть внутри обьекта информацию о самом объекте, такую как
внутреннюю структура объекта, Таким образом объект любой сложности
может выглядеть и использоваться извне очень легко .
Например вы устанавливаете свойство Caption для кнопки, при этом
вам нет необходимости знать, что происходит, каким образом запоминается
строка и где. VB позволит вам объявлять свойства и методы как
private protected или public.
Почему вам следует защищать методы и свойства классов? Допустим
некоторые свойства класса представляют состояние обьекта. Ели
вы не защитите эти свойства от возможного непосредственного изменения
извне , каким образом вы сможете гарантировать, что обьект находится
в правильном состоянии? Для защищенных свойств вы можете создать
специальные методы, использование которых позволит менять значения
указанных свойств, и соотвественно состояние обьекта. Эти методы
могут содержать код для проверки правильности присваемого значения.
Так как значения будут присваиваться в едином месте - это облегчит
отладку и последующее использование классов.
В примере ниже , "me" ссылается на специфический инстанс класса.
Protected cName as string
Protected Function ChangeName(NewName)
Me.cName = NewName
End Function
Overloading - Перегрузка
Перегрузка - свойство языка, позволяющее методам обьекта иметь
различный смысл в разных ситуациях. Операторы могут вести себя
по разному, в зависимости от типов данных, класов или операндов.
Например, x+y сожет означать разные вещи, в зависимости от того,
являются ли x и y целыми или структурами. Перегрузка используется
в случаях, когда ваша обьектная модель диктует использование одинаковых
имен для процедур, использующих разные типы данных. Например класс
может показывать(display метод)различные типы данных , как в примере
ниже.
Overloads Sub Display (theChar As Char)
...
Overloads Sub Display (theInteger As Integer)
...
Overloads Sub Display (theDouble As Double)
Without overloading, you'd have to create distinct names for
each procedure even though they do the same thing:
Sub DisplayChar (theChar As Char)
...
Sub DisplayInt (theInteger As Integer)
...
Sub DisplayDouble (theDouble As Double)
Polymorphism - Полиморфизм
Полиморфизм отражает возможность работать с объектами разного
типа или класса , с использованием одних и тех же методов. Дополнительно
это предоставляет возможность переопределить методы наследующего(производного)
класса. Например возьмем базовый класс Employee - полиморфизм
позволяет программисту определить различные PayEmployee
методы для любого количества наследующих классов, как например
Hourly или Salaried или Commissioned. Не имеет значение какго
типа обьект Employee , выполнение метода PayEmployee вернет
правильный результат
Class Employee
Function PayEmployee()
PayEmployee = Hours * HourlyRate
End Function
Class CommissionedEmployee
Inherits Employee
Overrides Function PayEmployee()
PayEmployee = BasePay + Commissions
End Function
Parameterized Constructors - Конструкторы обьектов с параметрами
Конструкторы позволяют создавать новый инстанс класса, одновременно
передавая некие аргументы . Конструкторы являются неотъемлемой
частью обьктно ориентированного языка программирования - допуская
передачу параметров при создании элемента Это упрощает код - позволяя
создавать и инициализировать инстансы обьетов одним стэйтментом
Дополнительно модернизированные возможности языка.
Следующее поколение Visual Basic будет иметь некоторое количество
новых конструкций для облегчения и ускорения программирования.
Эти возможности включают безопасные типы, возможности для повышения
производительности, такие как инициализаторы и указатели . VB
станет действительно всеобьемлющим языком.
Потоки
Сегодян при создании VB приложений код пишется синхронным. Это
означает , что каждая строка кода выполняется последовательно
за другой. Для разработки Web приложений, и просто масштабируемых
приложений пребуется иметь возможность создавать паралельные потоки
выполнения
Имея под рукой эту возможность , разработчик может может обменивать
"нити", для выполнения долгоиграющих процедур, таких
как сложный запрос к базе данных, или запустить сложные вычисления
в асинхронном режиме, позволяя приложению реагировать на действия
пользователей.
Sub CreateMyThread()
Dim b As BackGroundWork
Dim t As Thread
Set b = New BackGroundWork()
Set t = New Thread(New ThreadStart(AddressOf b.Doit))
t.Start
End Sub
Class BackGroundWork
Sub DoIt()
…
End Sub
End Class
Структурированная обработка исключений
Разработчики серьезных приложений требуют создания многократно
используемых, и легко обслуживаемых компонент. Больным местом
последнгих версий оставался мезанизм обработки ошибок. Разработчики
былы вынуждены включать код обработки ошибок в каждую прооцедуру
и каждую функцию Существующий Error handling , использующий On
Error GoTo может замедлять написание программ и усложнять
поддержку. больших приложений.
Используя Try...Catch...Finally, вы сможете решить большинство
проблем с обработкой ошибок, неразрешимых сегодня. И , к томуже
ничто не помешает использовать старую и новую схему совместно..
Sub SEH()
Try
Open "TESTFILE" For Output As #1
Write #1, CustomerInformation
Catch
Kill "TESTFILE"
Finally
Close #1
End try
End Sub
Безопасные типы
Сегодня язык VB очень либерально относится к неявным преобразованиям
типов, Для параметров и аргументов, передаваемых по ссылке компилятор
VB позволяет почти любые типы преобразований. Преобразование не
проходит в случае, если данные при этом могут быть повреждены
или утеряны. Новая опция позволит компилятору генерировать ошибки
времени компиляции для любых преобразований типов, могущих породить
проблемы во время выполнения программы. Опция Strict усилит безопасность
применения проеобразования типов, генерируя ошибки преобразований
во всех сомнительных случаях.
Разделяемые элементы
Shared members - это данные и функции классов, которые могут быть
использованны совместно всеми инстансами данного класса. Подобное
разделение требуется в VB приложениях использующих наследование.
Разделяемые элементы независимы от любого из инстансов класса.
Они не похожи на стандартные методы класса и не передаются непосредственно
в экземпляр класса. Из за этого никаких ссылок на не разделяемые
элементы такие методы не поддерживают. Public shared members могут
быть доступны "извне" класса, и они могут быть задействованы
изнутри класса с помощю позднего связывания.
Инициализаторы
Следующая версия Visual Basic будет поддерживать инициализацию
переменных в одной строке с обьявлением. Инициализация может быть
использована в любом месте, включая код внутри структур.. Сделанно
это может быть например так:
Dim X As Integer = 1
is equivalent to these statements:
Dim X As Integer
X = 1
Заключение
Слкдующее поколение Visual Basic предоставит первокласные возможности
объектно ориентированного языка , включающие наследование, инкапсуляцию
и полиморфизм. Дополнительно, разработчики смогут создавать максимально
гибкий код с использованием потоков. Написанный код будет хорошо
поддерживаться, учитывая появление нового механизма обработки
ошибок . Visual Basic предоставит прекрасные возможности для создания
мощных, масштабируемых Web приложений.
БОЛЕЕ СВЕЖИЕ НОВОСТИ О VB7 - Здесь
|