月額料金が 18 か月にわたってシステムによって計算されるシナリオがあります。たとえば、料金が 10$ だとします。次に、$10/18 = $0.56 の月額を計算します。
お客様が18ヶ月の途中でサービスをキャンセルした場合。彼が使用した月数を見つけて、残りを返金する必要があります。例: お客様が 2012 年 6 月 2 日に作成し、2012 年 8 月 13 日にキャンセルした場合、2 か月間完全に使用したため、返金する必要があり($10/18)* (18-2)
ます。
これを計算するメソッドを作成できますが、より良い方法は、すべての計算を独自に行う必要がある日付オブジェクトを表す ADT を作成することです。
int chargeFor(int createdD,int createdM,int createdY,int canceledD,int canceledM,int canceledY){
int deltaD = canceledD - createdD;
int deltaM = canceledM - createdM;
int deltaY = canceledD - createdD;
if( deltaD != 0 )
return result = deltaY * 12 + deltaM + 1;
else
return result = deltaY * 12 + deltaM;
}