Visual Basic 7 Объектно-ориентированный язык программирования

advertisement
Visual Basic 7
Объектно-ориентированный
язык программирования
Структурное программирование — это метод
программирования, опирающийся на структурную организацию
программы.
Под структурной организацией понимается:
1. Максимальное соответствие организации текста программы
логике решаемой проблемы. Основные методы реализации
этого принципа: структурируемость и читаемость текста.
2. Типизация и инкапсуляция данных — наличие структурных
типов данных. В том числе это подразумевает жесткий контроль
типов с диагностикой ошибок при трансляции программы.
3. Инкапсуляция кусков текста программы. Блоки программного
кода разных уровней, модули, правила прозрачности,
интерфейсы между блоками программного кода.
4. Инкапсуляция программного кода и данных во время
выполнения программы. Ограничение доступа, правила
прозрачности, интерфейсы, диагностика ошибок во время
выполнения программы, обработка исключительных ситуаций.
Объектно-ориентированное программирование — это метод
программирования, основанный на следующих абстракциях
данных:
1.
Инкапсуляция (encapsulation) данных с процедурами и
функциями (данные и методы работы с ними
рассматриваются как поля объекта) — сочетание принципов
типизации и инкапсуляции структурного программирования.
2.
Наследование (inheritance) наличие экземпляров класса:
потомки, прародители, иерархия.
3.
Полиморфизм (polymorphism) единое имя для некого
действия, которое по-разному осуществляется для объектов
иерархии.
Возможности VB7
Inheritance - Наследование свойств
Encapsulation - Инкапсуляция данных и методов
обработки
Overloading- Перегрузка
Polymorphism- Полиморфизм (множественность
использования методов)
Parameterized Constructors- Конструкторы объектов с
параметрами
Web-формы - формирование Web-интерфейсов
Web-услуги - бизнес-общения через интрасети и
Internet
Inheritance
Теперь существует новое служебное слово Inherits для извлечения
свойств существующих классов:
Class1 Function GetCustomer()
...
End Function
Class2 Inherits Class1
Function GetOrders()
...
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)
Без перегрузки пришлось бы создавать для каждого типа данных
свою процедуру:
Sub DisplayChar (theChar As Char)
...
Sub DisplayInt (theInteger As Integer)
...
Sub DisplayDouble (theDouble As Double)
Например, требуется добавить в обьект Заказ элемент Продукт и
элемент Сервис. Легко, добавляем методы AddService и
AddProduct в объект Order, и готово. Используя overloading мы
можем использовать метод Add для каждого случая, позволяя
VB автоматически вызывать правильный метод в зависимости
от передаваемых данных.
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
Конструкторы позволяют создавать новые
образцы класса, одновременно передавая
некие аргументы .
Конструкторы являются неотъемлемой частью
объектно-ориентированного
языка
программирования - допуская передачу
параметров при создании элемента. Это
упрощает код - позволяя создавать и
инициализировать случаи объектов одной
инструкцией (строкой кода)
Web-формы
Эта технология подразумевает формирование Web-интерфейсов почти
так же, как создаются формы Windows. Используя разнообразные
инструментальные средства, специально сгенерированные для
поддержания любой версий HTML, и метод "перетащи и оставь",
можно будет создавать пользовательский интерфейс на базе Web и
писать сервер-ориентированный код для каждого объекта таким же
образом, как это делается для форм на базе Windows.
Код для Web-форм постоянно находится на сервере, а HTML
генерируется "на лету". Элементы управления Web-формами
преобразуются в HTML-объекты по мере выполнения кода на
сервере.
Страница Web Forms состоит из двух частей: шаблона в виде HTMLфайла и файла с программным кодом. Такое разделение, в
частности, повышает скорость действия программы, так как
используется режим выполнения машинного кода (DLL), а не
интерпретации.
Web-услуги
Это
принципиально новая платформно-независимая
технология, связанная с использованием стандарта XML и
протокола SOAP, которая будет широко интегрирована со
средствами разработки. Основная идея заключается в
создании
компонентов
уровня
бизнес-логики,
взаимодействующих с внешними объектами с помощью
стандартных Web-протоколов.
В данном случае приложение будет обращаться за
выполнением некоторой функции не к DLL или ActiveX
DLL, а к компоненту на удаленном компьютере с помощью
Интернет-протокола.
Выглядит
это
примерно
следующим образом:
Разработчик создает проект типа Web Service с названием
RatingService, добавляет в него модуль класса с именем
ClassComponent и вписывает в него функцию для решения
некоторой задачи:
Public Function GetRate (ByVal ticker As String) As
String
‘ Решаем — покупать или продавать акции
If ticker = “ACME” Then
GetRate = “Покупать!”
Else
GetRate = “Продавать!”
End If
End Function
При построении проекта с данной функцией VB автоматически
сформирует XML-описание этой функции и опубликует его на Web:
<?xml version=’1.0’ ?>
<methods
href=’http://Kolesov/RatingService’>
<method name=’GetRate’ href = ‘GetRate’>
<request>
<param dt=’string’>ticker</param>
</request>
</method>
</methods>
Модернизированные
возможности языка
Free Threading- Свободное Создание потоков
Structured Exception - Обработчик ошибок
путем обработки исключительных ситуаций
Type Safety - Безопасные типы
Shared Members - Разделяемые элементы
Initializers - Инициализаторы
Overriding – Изменение методов при
наследование
Free Threading
Сегодня при создании 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
EndSub
ClassBackGroundWork
Sub DoIt()
…
End Sub End Class
Многопоточность - это комплексная концепция. Free-threading базируется на идее иметь возможность
выполнять более одного потока в одно время. Например, печать документа в фоне, пока
пользователь набирает новый документ. Free-threaded очень важен для создания масштабируемых
server-side компонент, так же он может быть полезен и при создании интерактивного user интерфейса.
Structured Exception
Взамен древнего, и нередко абсолютно негибкого On Error Goto выражения, мы
имеем новую структуру для обработки ошибок. Это блок, содержащий Try,
Catch, Finally ключевые слова. Код между Try и Catch является защищенным,
и если ошибка случается выполняется Catch блок. После выполнения Catch
блока выполняется код из Finally блока. Собственно, это структура, принятая
во всех современных языках. Разработчики были вынуждены включать код
обработки ошибок в каждую процедуру и каждую функцию. Существующий
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
Type Safety
В VB6 для параметров и аргументов, передаваемых по
ссылке компилятор позволял почти любые типы
преобразований. Преобразование не проходит в случае,
если данные при этом могут быть повреждены или
утеряны.
Новая опция позволит компилятору генерировать ошибки
времени компиляции для любых преобразований типов,
которые могут породить проблемы во время выполнения
программы.
Опция
Strict
усилит
безопасность
применения
преобразования типов, генерируя ошибки преобразований
во всех сомнительных случаях. Visual Basic сегодня
преобразовывает типы автоматически. Используя type
safety мы сможем заставить VB избегать автоматического
преобразования типов. Хотя это заставляет программиста
думать перед присвоением переменной одного типа
другому, но при этом позволит избежать ошибок.
Shared Members
Shared members - это данные и функции классов,
которые могут быть использованы совместно всеми
образцами данного класса.
Подобное разделение требуется в VB приложениях
использующих
наследование.
Разделяемые
элементы независимы от любого из примеров
данного класса. Они не похожи на стандартные
методы класса и не передаются непосредственно в
экземпляр класса. Из за этого никаких ссылок на не
разделяемые
элементы
такие
методы
не
поддерживают. Public shared members могут быть
доступны "извне" класса, и они могут быть
задействованы изнутри класса с помощью позднего
связывания.
Initializers - Инициализаторы
Visual
Basic
7
поддерживает
инициализацию переменных в одной
строке с объявлением. Инициализация
может быть использована в любом
месте, включая код внутри структур.
Сделано это может быть например так:
Dim X As Integer = 1
В предыдущей версии:
Dim X As Integer
X = 1
Overriding
Когда мы используем наследование, наш
новый класс получает все методы от
родительского класса. Однако может
быть необходимым изменить какие
либо из этих методов. Мы можем
переписать эти методы используя
Overriding. В тоже время VB7 будет
позволять
им
использовать
и
оригинальный метод родительского
объекта, используя ключевое слово
MyBase (MyBase.methodname).
Заключение
Поколение
Visual
Basic
7
предоставит
первоклассные
возможности
объектноориентированного языка , включающие
наследование,
инкапсуляцию
и
полиморфизм. Дополнительно, разработчики
смогут создавать максимально гибкий код с
использованием потоков. Написанный код
будет хорошо поддерживаться, учитывая
появление нового механизма обработки
ошибок . Visual Basic 7 предоставляет
прекрасные возможности для создания
мощных, масштабируемых Web приложений.
Download