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


Перегрузка - часть 2


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

    Public Function Периметр  _

(ByVal X1 As Integer, ByVal Y1 As Integer, ByVal X2 As Integer, ByVal Y2 As Integer) As Integer

        Return    2 * (Math.Abs(X1 - X2) + Math.Abs(Y1 - Y2))

    End Function

Пояснения:  Math.Abs(X1 - X2) – не что иное, как длина участка, Math.Abs(Y1 - Y2) – высота.

Поместим эту функцию в код класса рядом с ее тезкой. У одной функции 2 параметра, у другой – 4. Когда вы будете обращаться к этой функции, VB по числу параметров догадается, к какой именно функции из двух вы обращаетесь.

Сказавший «А» должен сказать и «Б». Если вы хотите вычислять с этими 4 параметрами также и расход краски, вам придется сделать перегрузку и остальных двух процедур. Вот какой получится у вас код класса:

Public Class Участок

    Public Владелец As String

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

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

 

    Public Function Периметр(ByVal Длина As Integer, ByVal Ширина As Integer) As Integer

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

    End Function

 

    Public Function Периметр  _

(ByVal X1 As Integer, ByVal Y1 As Integer, ByVal X2 As Integer, ByVal Y2 As Integer) As Integer

        Return 2 * (Math.Abs(X1 - X2) + Math.Abs(Y1 - Y2))

    End Function

 

    Public Function Площадь_забора(ByVal Длина As Integer, ByVal Ширина As Integer) As Integer

        Return Периметр(Длина, Ширина) * Высота_забора

    End Function

 

    Public Function Площадь_забора  _

(ByVal X1 As Integer, ByVal Y1 As Integer, ByVal X2 As Integer, ByVal Y2 As Integer) As Integer

        Return Периметр(X1, Y1, X2, Y2) * Высота_забора

    End Function

 

    Public Function Расход_краски_на_забор(ByVal Длина As Integer, ByVal Ширина As Integer) As Integer




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