main
 1namespace domain
 2{
 3  using System.Collections.Generic;
 4  using System.Linq;
 5
 6  public class Oppurtunity
 7  {
 8    Percent workingInterest;
 9    DeclineCurve declineCurve;
10
11    public Oppurtunity()
12    {
13      workingInterest = 100m.Percent();
14    }
15
16    public void WorkingInterest(Percent percent)
17    {
18      workingInterest = percent;
19    }
20
21    public void DeclinesUsing(DeclineCurve declineCurve)
22    {
23      this.declineCurve = declineCurve;
24    }
25
26    public IWell BringOnlineOn(Month initialProductionMonth)
27    {
28      return new Well(initialProductionMonth, workingInterest, declineCurve.StartingOn(initialProductionMonth));
29    }
30
31    public IEnumerable<IWell> BringOnlineOn(Month initialProductionMonth, int numberOfWells)
32    {
33      for (var i = 0; i < numberOfWells; i++)
34        yield return BringOnlineOn(initialProductionMonth);
35    }
36  }
37}