你的工作是设计一个支持任务跟踪的 Project Plan 类库(类似于 MS Project 的工作方式)。这个类库有一个Task对象(等等)。
该Task对象具有EstimatedHours( Double)、StartDate( DateTime) 和EndDate( DateTime) 属性等。一个Task对象可以有一个父对象Task和多个子Task对象。具有子代(是父代)的 a的EstimatedHours、StartDate和EndDate属性Task取决于其直接子代的那些属性。parentTask是其孩子StartDate中最早的。StartDateparentTask是其孩子EndDate中最新的。EndDate父级是其子级的Task总和。因此,更改具有子项的这些属性是无效的。EstimatedHoursEstimatedHoursTask
您将如何处理在具有父级的任务上更改 EstimatedHours、StartDate 或 EndDate 的用例?(父级的属性是其子级的反映,因此对子级的任何更改都可能需要调整父级的属性以适当地反映更改)
一种选择是在每个属性更改时设置一个事件。父级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