ПОНЯТНО О Visual Basic NET (том 3)


Полиморфизм


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

В VB полиморфизм осуществляется при помощи наследования и при помощи так называемых интерфейсов. При наследовании полиморфизм проявляется тогда, когда мы у наследника как-то изменяем (переопределяем) процедуру родителя.

Интерфейсы мы рассматривать не будем. Можно сказать, что интерфейс – это одна из масок, которую объект надевает на себя, чтобы с нами пообщаться.

Должен сказать, что Visual Basic версий 6.0 и более ранних не поддерживает настоящие полиморфизм и наследование. Впервые их поддержка осуществлена в Visual Basic.NET.

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

Public Class Участок

    Public Владелец As String

    Public Длина, Ширина As Integer

    Public Высота_забора As Integer

    Public Shared Расход_краски_на_кв_м As Integer

 

    Public Function Периметр() As Integer

        Return 2 * (Длина + Ширина)

    End Function

 

    Public Function Площадь_забора() As Integer

        Return   Периметр() * Высота_забора

    End Function

    Public Function Расход_краски_на_забор() As Integer

        Return Расход_краски_на_кв_м * Площадь_забора()

    End Function

End Class

Предположим теперь, что в товариществе появились владельцы, которые предпочитают сплошному забору штакетник, то есть забор с промежутками между досками. Ясно, что площадь такого забора меньше (предположим, в 2 раза). Создадим для таких участков новый класс – Участок_штакетник. Поскольку он будет отличаться от класса Участок только функцией Площадь_забора, то для сокращения кода сделаем его наследником класса Участок: 




Начало  Назад  Вперед



Книжный магазин