Иллюстрированный самоучитель по Visual Basic .NET

Версии Visual Basic

Первые две версии Visual Basic для Windows хорошо подходили для создания прототипов программ и демонстрационных приложений – но этим все и ограничивалось. В обеих версиях отличная среда программирования сочеталась с относительной простотой языка. Сам язык обладал относительно бедными возможностями. С появлением VB3 и новых средств работы с базами данных, требовавших изучения новой модели программирования, первая реакция нередко была обескураживающей: "Зачем они испортили VB?!"

Сейчас становится понятно, что включение поддержки баз данных в VB3 было необходимо, чтобы Visual Basic из "игрушечного языка" превратился в серьезный инструмент программирования. В VB4 появились базовые возможности для создания объектов, а следовательно – базовые средства объектно-ориентированного программирования. В VB5 и VB6 объектно-ориентированные аспекты языка были расширены, появились новые возможности создания элементов и использования интерфейсов. Однако сам язык постепенно утрачивал целостность, поскольку объектно-ориентированные средства строились на базовом фундаменте, в котором их поддержка не предусматривалась.

Например, правильность создания объектов в Visual Basic не гарантировалась – программисту приходилось применять особые синтаксические конструкции вместо конструкторов, используемых практически во всех объектно-ориентированных языках (конструкторы рассматриваются в главе 4). В итоге разработчики VB пришли к выводу, что поддержка VB на платформе .NET потребует новых изменений – например, использование .NET Framework требует полноценной объектной ориентации языка.

Вероятно, при знакомстве с изменениями VB основные трудности возникнут не в связи с новшествами в среде IDE или появлением новых ключевых слов, а из-за необходимости радикального пересмотра парадигмы программирования на VB. В частности, чтобы в полной мере использовать преимущества VB5 и VB6, с объектно-базированного подхода, обладавшего весьма ограниченными возможностями создания новых объектов, приходилось переходить на объектно-ориентированный подход, в инструментарии которого, например, важное место занимают интерфейсы. К сожалению, большинство программистов VB, выросших на этом продукте, ранее никогда не использовали принципы объектно-ориентированного программирования. Когда в VB впервые появились классы, многие программисты VB понятия не имели, что это такое и зачем они нужны.

Но даже эти ограниченные возможности, появившиеся в VB5 и VB6, при правильном применении упрощали работу над большими проектами. Например, они позволяли создавать компоненты многократного использования (такие, как элементы управления), а на более прозаическом уровне – просто приводить код в порядок, упрощая его сопровождение. В некоторых случаях удавалось исключить оператор Select Case, нередко порождавший большие проблемы с сопровождением. Речь идет о конструкциях, более или менее похожих на следующие: [В поставку VB.NET входит утилита преобразования программ, но не стоит возлагать на нее чрезмерные надежды. Ни одна серьезная программа не преобразуется автоматически – возможно, ее будет проще написать с нуля.]

Select Case kindOfEmployee
Case Secretary
RaiseSalary 5%
Case Manager
RaiseSalary 10%
Case Programmer
RaiseSalary 15%
Case Architect
RaiseSalary 20%
' и т. д.
End Select

Сопровождение подобного кода было делом крайне неприятным, поскольку при каждом добавлении нового типа сотрудника (Employee) приходилось изменять все соответствующие операторы Select Case, тогда как эту работу можно было бы поручить компилятору. Начиная с VB5 это наконец стало возможным, поскольку волшебство полиморфизма интерфейсов (см. главу 5) позволяло использовать конструкции вида:

For Each employee in Employees
employee.RaiseSalary
Next

Компилятор анализировал объект и автоматически выбирал нужный метод RaiseSalary. "Классы заметно повышают эффективность и удобство сопровождения приложений VB. Останетесь ли вы с VB5 или перейдете на VB.NET – без классов трудно представить себе серьезное приложение VB.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.