你的工作是设计一个支持任务跟踪的 Project Plan 类库(类似于 MS Project 的工作方式)。这个类库有一个Task
对象(等等)。
该Task
对象具有EstimatedHours
( Double
)、StartDate
( DateTime
) 和EndDate
( DateTime
) 属性等。一个Task
对象可以有一个父对象Task
和多个子Task
对象。具有子代(是父代)的 a的EstimatedHours
、StartDate
和EndDate
属性Task
取决于其直接子代的那些属性。parentTask
是其孩子StartDate
中最早的。StartDate
parentTask
是其孩子EndDate
中最新的。EndDate
父级是其子级的Task
总和。因此,更改具有子项的这些属性是无效的。EstimatedHours
EstimatedHours
Task
您将如何处理在具有父级的任务上更改 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