11. ООП

E-mail Печать PDF
Рейтинг пользователей: / 0
ХудшийЛучший 

ООП в VB .NET

Классы

 
 

В VB .NET программа состоит из объектов, взаимодействующих друг с другом. Объекты создаются по шаблонам, называемым классами. Сами объекты называются экземплярами классов. В.NET классы можно программировать на любом языке.

Класс ? это пользовательский тип, обладающий расширенными возможностями. Объект - это переменная пользовательского типа.

Классы содержат в себе процедуры и функции, которые применимы к переменным данного класса. Эти процедуры и функции называются методами.

 

Четыре концепции ООП

1.           Инкапсуляция. Сокрытие данных. Для работы с данными определяются свойства, методы и события.

2.           Наследование. Объекты могут получать свойства и методы других объектов (предков). Класс-предок называется базовым, класс-потомок - производным. Наследники получают все свойства и методы предков, которые могут быть изменены, а также могут обладать собственными методами или свойствами. Наследование реализуется с помощью ключевого слова Inherits. Например:

Public Class Class1

Inherits ИмяБазовогоКласса

End Class

Visual Basic не поддерживает множественное наследование. У каждого класса может быть только один родитель (базовый класс или суперкласс). Нельзя унаследовать свойства двух различных классов, но у каждого базового класса может быть свой базовый класс.

3.           Полиморфизм. Методы различных объектов могут иметь одинаковые имена, но отличаться по своему содержанию.

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

4.           Абстракция. Моделирование объектов в программе. Какие свойства и методы должны входить в объект, чтобы он адекватно моделировал ситуацию?

 

Для создания нового класса внутри проекта необходимо выбрать пункт Add New Item / Class, после чего откроется окно нового класса.

Определение нового класса:

[Уровень_доступа] Class Имя_класса ‘имя - любое корректное

[Inherits Имя_класса-предка]

[Implements Имена_интерфейсов]

...'Список состава класса        ‘свойства и методы нового класса

End Class

 

Уровень_доступа:

  • Public - полный доступ к классу.
  • Private - класс не виден за пределами модуля, в котором он был объявлен.
  • Protected - класс доступен внутри модуля, в котором он объявлен, и внутри модулей, где присутствуют классы-потомки.
  • Friend - доступ к классу только в пределах программы, в которой он объявлен (по умолчанию).
  • ProtectedFriend - класс доступен в пределах программы, в которой он объявлен, и внутри других программ, в которых присутствуют его классы-потомки.
  • MustInherit - класс не предназначен для создания экземпляров классов. Только его наследники класса могут использоваться для создания объектов.
  • NotInheritable -класс не может иметь наследников.

 

Для каждого элемента класса также можно установить разную видимость. Для этого используются те же ключевые слова, кроме MustInherit и NotInheritable.

 

Свойства

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

Простой синтаксис объявления свойства объекта:

Уровень_доступа Имя_свойства As Тип_свойства

Например: Public MyProperty As Integer

Читать и изменять значения свойства можно следующим образом:

MyClassl.MyProperty = 34

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

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

Уровень_доступа Property Имя_свойства As Тип_свойства

Get

'Код, предназначенный для получения значения свойства

НазваниеСвойства = ИмяПеременной

End Get

Set (ByVal значение As Тип_данных)

'Код, предназначенный для установки свойства в значение

ИмяПеременной = значение

End Set

End Property

Конструкция Get в процедуре свойства является функцией, которая возвращает значение свойства при его чтении. Если убрать ключевые слова Get и End Get, то получить значение данного свойства будет невозможно.

Конструкция Set отвечает за получение нового значения для свойства. Если удалить ключевые слова Set и End Set, то изменить значение данного свойства будет невозможно. Для досрочного выхода из конструкции Set используются ключевые слова Exit Property.

 

Методы

Методы - это процедуры или функции, принадлежащие объекту. Методы определяют поведение объекта. Для вызова метода объекта указывается объект, затем, через точку, название метода. Например: MyObject.Method1

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

Методы могут быть открытыми и закрытыми. Открытые методы составляют интерфейс класса, а закрытые используются для внутренних нужд класса. Особый метод New() - (конструктор класса) автоматически вызывается при создании нового объекта. Конструктор может иметь аргументы.

В использовании деструкторов необходимости нет. Своевременным уничтожением объектов занимается сама среда («сборка мусора»). Явно вызвать деструктор можно с помощью метода Finalize.

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

Для каждого свойства или метода, коды которого могут быть перегружены, необходимо заменить слово Public на Overridable. Слово Overrides используется при написании свойств и методов, коды которых будут отличаться от кодов свойств и методов исходного файла с теми же именами.

 

События

Для того чтобы объявить событие в классе, необходимо воспользоваться ключевым словом Event:

Public Event EventName(event parameters)

Можно определить событие следующим образом:

Public Event EventName(ByVal sender as Object, ByVal e as System.EventArgs)

Класс System.EventArgs определяет базовый класс аргументов события.

Для генерации событий внутри класса предназначен оператор RaiseEvent, которому в качестве аргумента передается имя события:

RaiseEvent EventName(параметры события)

Модель событий в VB .NET выполнена на основе концепции делегатов - объектов, которые могут вызывать объектные методы. Для создания делегата используется ключевое слово Delegate.

Public Delegate Sub StringSubDelegate(ByVal aString As String)

 

Объявление объектов

После создания класса можно создавать внутри основной программы экземпляры данного класса. Для этого используется специальное ключевое слово New. Существуют два способа создания экземпляров класса.

1. Позднее связывание

Dim MyInstance As Object

MyInstance = New MyClass1()

Создаем новую переменную MyInstance типа Object, затем объявляем эту переменную как экземпляр класса MyClass1.

2. Раннее связывание

Объектная переменная сразу объявляется как переменная заданного класса.

Dim MyInstance As MyClass1

MyInstance = New MyClass1()

Или сразу: Dim MyInstance As New MyClass1

Лучше использовать раннюю привязку.

 

Абстрактные классы

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

Public MustInherit Class Number

...

Public MustOverride Function AsString() As String

End Class

Ключевое слово MustInherit означает, что данный класс предназначен только для создания производных классов; объекты класса Number создавать запрещено.

Атрибут MustOverride используется для декларирования функции, реализация которой предоставляется производному классу.

 

Интерфейсы

Интерфейс можно представить как абстрактный класс, в котором есть только объявления методов и свойств. Один и тот же интерфейс может быть реализован одновременно несколькими классами. Для создания экземпляра какого-либо класса достаточно сослаться не на указанный класс, а на интерфейс, реализованный данным классом.

Public Interface IEmployee

‘ Описание свойств, методов, событий

End Interface

 

Public Class Employee

Implements IEmployee

...

End Class

 

Для обращения из класса к нему самому можно использовать ключевое слово MyClass. Для обращения к базовому классу - MyBase.

 

Добавьтe Ваш комментарий

Ваше имя (псевдоним):
Ваш адрес почты:
Заголовок:
Комментарий:

Комментарии

Интересное




Похожие материалы

Партнёры