Перегрузка - часть 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