あなたの仕事は、タスクの追跡をサポートする Project Plan クラス ライブラリを設計することです (MS Project の仕組みに似ています)。このクラス ライブラリには、Task
(とりわけ) オブジェクトがあります。
Task
オブジェクトにはEstimatedHours
( Double
)、StartDate
( DateTime
)、EndDate
( ) などのDateTime
プロパティがあります。Task
オブジェクトは、1 つの親オブジェクトTask
と複数の子オブジェクトを持つことができTask
ます。子を持つ (親である)のEstimatedHours
、StartDate
、およびEndDate
プロパティはTask
、直接の子のプロパティに依存します。親Task
のは、その子の中でStartDate
最も古いものです。StartDate
親はその子の最新Task
のものです。親のは、その子の の合計です。したがって、子を持つ でこれらのプロパティを変更することは無効です。EndDate
EndDate
Task
EstimatedHours
EstimatedHours
Task
親を持つタスクで、EstimatedHours、StartDate、または EndDate が変更されるユース ケースをどのように処理しますか? (親のプロパティはその子を反映しているため、子を変更する場合は、変更を適切に反映するために親のプロパティを調整する必要がある場合があります)
1 つのオプションは、各プロパティが変更されたときのイベントを作成することです。親Task
は、直接の子オブジェクトでこれらのイベントをリッスンし、Task
それらのイベントが発生したときに独自のプロパティに適切な変更を加えます。これは良いアプローチですか、それとももっと良い方法がありますか? どのようにしますか?
Task
オブジェクトがどのように見えるかについての基本的な考え方は次のとおりです。
Public Class Task
Private mChildren As List(Of Task)
Private mEndDate As DateTime = DateTime.MinVlue
Public Property EndDate() As DateTime
Get
Return mEndDate
End Get
Set(ByVal value As DateTime)
mEndDate = value
'What to do here?
End Set
End Property
Private mEstimatedHours As Double = 0.0
Public Property EstimatedHours() As Double
Get
Return mEstimatedHours
End Get
Set(ByVal value As Double)
mEstimatedHours = value
'What to do here?
End Set
End Property
Private mStartDate As DateTime = DateTime.MinVlue
Public Property StartDate() As DateTime
Get
Return mStartDate
End Get
Set(ByVal value As DateTime)
mStartDate = value
'What to do here?
End Set
End Property
End Class