Скачиваний:
116
Добавлен:
27.04.2015
Размер:
528.9 Кб
Скачать

Тема 5.3. Средства объектно-ориентированного программирования в Visual Basic

5.3.1. Две роли классов в ООП и типы данных в Visual Basic

5.3.1. Средства создание собственных базовых классов в Visual Basic

5.3.2. Взаимодействие, взаимное различие и сходство форм, модулей и классов

5.3.3. Объектное программирование

5.3.4. Задачи для самостоятельного решения по теме «Введение в объектно-

ориентированное программирование»

5.3.5. Тестовые задания по теме « Введение в объектно-ориентированное

программирование»

5.3.1. Две роли классов в ооп и типы данных в Visual Basic

Язык программирования Visual Basic является объектно-ориентированным языком. Это означает, что все функциональные части приложения рассматриваются как объекты, содер­жащие в себе некоторые свойства, способные выполнять определенные методы и генерировать события.

С классами студенты сталкивались практически во всех предыдущих темах. Это были классы, предоставленные пользователю VS .Net в виде библиотек классов .Net Framework.

Например, класс математических функций – System.Math, класс – System.Array, System.IO, форма и элементы управления System.Form и другие.

Объектно-ориентированное программирование и проектирование построено на классах. Любую программную систему, построенную в объектном стиле, можно рассматривать как совокупность классов, возможно объединенных в проекты, пространства имен, решения, как это делается при программировании в Visual Studio .Net.

Очень важно обратить внимание на то, что у класса две различные роли: модуляитипа данных.

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

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

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

Объектно-ориентированная разработка программной системы основана на стиле, называемом проектированием от данных. Проектирование системы сводится к поиску подходящих для данной задачи абстракций данных. Каждая из них реализуется в виде класса, которые и становятся модулями – архитектурными единицами построения нашей системы. В основе класса лежит абстрактный тип данных.

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

Напомним, что типы данных могут быть двух видов. Тип данных является типом значений, если он содержит данные в пределах своей собственной области памяти. Ссылочный тип содержит указатель на другую область памяти, содержащую данные.

К типам значения относятся:

  • все числовые типы данных;

  • Boolean, Char и Date;

  • все структуры, даже если их члены являются ссылочными типами;

  • перечисления, поскольку их базовый тип всегда является SByte, Short, Integer Long, Byte, UShort, UInteger или ULong.

К ссылочным типам относятся:

  • String;

  • все массивы, даже если их члены являются типами значений;

  • типы классов, например Form;

  • делегаты.

Следующие элементы программирования не квалифицируются как типы, так как нельзя указывать ни один из них в качестве типа данных для объявленного элемента:

  • пространства имен;

  • модули;

  • события;

  • свойства и процедуры;

  • переменные, константы и поля.

Переменной типа данных Object можно присвоить либо тип значения, либо ссылочный тип. Переменная Object всегда содержит указатель на данные, но никогда не содержит самих данных. Однако если присвоить тип значений переменной Object, то она ведет себя так, как если бы она содержала свои собственные данные.

Переменная типа данных Object содержит 32-разрядные (4-байтные) адреса, которые ссылаются на объекты. Переменной типа Object можно назначить любой ссылочный тип (строка, массив, класс или интерфейс). Переменная типа Object может также ссылаться на данные любого типа значения (числовые, Boolean, Char, Date, структуры или перечисления).

Тип данных Object может указывать на данные любого типа данных, включая любой экземпляр объекта, который распознает приложение.

Значением Object по умолчанию является Nothing (пустая ссылка).

Переменной Object можно назначить переменную, константу или выражение любого типа данных. Чтобы определить тип данных, на который в данных момент ссылается переменная Object, можно использовать метод GetTypeCode( ) класса System..::.Type, как показано в приведенном ниже примере:

Dim myObject As Object

Dim datTyp As Integer

datTyp = Type.GetTypeCode(myObject.GetType())

В данном примере тип данных Object является ссылочным типом. Однако VB обрабатывает переменную Object в качестве типа значения, если она ссылается на данные типа значения.

Все типы данных и все ссылочные типы расширяются до типа данных Object. Это означает, что можно преобразовать любой тип к типу Object без ошибки.

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

В следующем примере преобразуется переменная anObject в Integer и String тип:

Public Sub objectConversion(ByVal anObject As Object)

Dim anInteger As Integer

Dim aString As String

anInteger = CType(anObject, Integer)

aString = CType(anObject, String)

End Sub

Если известно, что содержимое переменной типа Object имеет определенный тип данных, желательно преобразовать переменную в этот тип данных. Если продолжать использовать переменную Object, то это вызовет, либо упаковку и распаковку (для типа значения), либо позднюю привязку (для ссылочного типа). Эти операции требуют большего времени для выполнения и снижают производительность.

Соседние файлы в папке Пособие-Раздела-05-2008