У меня есть функция, которая возвращает заказы за определенный период.Я создал объект Period, который гарантирует, что при указании диапазона дат начальная дата <= до конечной даты.Аналогично, если речь идет о месячном периоде, даты начала и окончания периода должны быть соответственно первым и последним днями месяца. </p>
Мой вопрос такой:
Я думал, чтов принципах объектно-ориентированного проектирования связь была плохой.Представляю ли я связь между классами Order и Period, когда класс Order использует класс Period в качестве параметра в одном из своих методов?
Я предполагаю, что да, но в этом есть свои преимущества, а именно: после определения объектов не нужно выполнять одинаковые проверки параметров каждый раз, когда в качестве параметра передается периодразличные методы класса Orders.
Кроме того, разве Microsoft постоянно не передает не свойственные объекты одного типа другим объектам?
Избегание сопряженных звуков, как избегание повторного использования для меня, что ООП должен былсодействие.Это звучит как конкурирующие цели.
Может кто-то уточнить.
Public Class Order
Public Shared Function GetOrders(ByVal customerId As Integer,
ByVal forPeriod As Period) As Orders
**'Should the param object MonthPeriod be replaced with 2 date params?
'Would I be "reducing coupling" by doing so, a good thing.**
End Function
End Class
Public Class Period
Property FromDate As Date
Property ToDate As Date
Public Sub New(ByVal fromDate As Date, ByVal toDate As Date)
If fromDate > ToDate Then
Throw New ArgumentException("fromDate must be less than Or equal toDate")
End If
_FromDate = fromDate
_ToDate = toDate
End Sub
End Class
Public Class MonthPeriod : Inherits Period
Public Sub New(ByVal fromDate As Date, ByVal toDate As Date)
MyBase.New(fromdate, toDate)
If fromDate.Date <> New Date(fromDate.Year, fromDate.Month, 1) Then
Throw New ArgumentException("fromDate must be the first day of the month")
End If
If toDate.Date <> New Date(toDate.Year, toDate.Month, Date.DaysInMonth(toDate.Year, toDate.Month)) Then
Throw New ArgumentException("fromDate must be the last day of the month")
End If
End Sub
End Class