-6

一般的なオブジェクト指向プログラミングの質問があります。それは課題からのものであり、私は私の答えを書きましたが、それがインストラクターが探しているものではないかと思います。クラスを適切に実装するために使用するC#OOP手法について、誰かの意見やアドバイスを探していました。

質問: C#でコインジャーを実装します。コインジャーは米国の硬貨のみを受け入れ、32液量オンスの容量があります。さらに、jarには、収集された合計金額を追跡するためのカウンターがあり、カウントを$0.00にリセットする機能があります。

私のコード:

interface ICoinJar
{
    int coinage
    {
        get;
        set;
    }
    void resetcount();
}


static class USCoinTypes
{
 //Might want to make this a static array.
    public static readonly int US_CURRENCY_TYPE = 1;
    public static readonly int CURRENCY_AMOUNT = 0;
    public static readonly int CURRENCY_VOLUME = 1;
    public static readonly int MAX_VOLUME = 32;

    public enum CoinTypes
    {
        ONE_CENT = 0,
        FIVE_CENT,
        TEN_CENT,
        TWENTY_FIVE_CENT
    }

    public static readonly int[,] CoinInfo =
    {
        //amount, volume
        {1,5},
        {5,6},
        {10,3},
        {25,8}
    };

}


class USCoinJar : ICoinJar 
{

    // coinage in cents (NOT $)
    public int coinage { get; set; }
    public int volume { get; set; }

    public USCoinJar()
    {
    }

    //in Cents.
    //Could also make this accept an array for inserting multiple coins.
    public bool addcoins(int amount, int volume,  USCoinTypes.CoinTypes currencytype)
    {
        if (this.volume + volume > USCoinTypes.MAX_VOLUME)
            return false;
        coinage = coinage + amount;
        this.volume = this.volume + volume;
        return true;
    }

    public void resetcount()
    {
        coinage = 0;
        volume = 0;
    }
}
4

1 に答える 1

3

実装に関するいくつかの問題:

  • コインとボリュームの両方を書き込み可能として公開しています。つまりcoinage = 100000; volumne = 0;、プログラムは何も問題がなかったかのように続行されます。
  • ユーザーにボリュームを計算するように要求しています。ユーザーにあなたができる計算をさせないでください
  • 実際には、ユーザーがボリュームを計算するのに十分な情報を伝えることを許可していません。addcoins を 25 セントと呼ぶ場合、それは 4 分の 1、25 ペニー、ニッケルなどを意味しますか?
  • 値は何のstatic readonly intためのもので、なぜそれらを配列にするのですか?
  • 命名については、教授が別段の指示をしない限り、Microsoft が発表した命名ガイドラインに従う必要があります。

先に進むこともできますが、実際の要件とは何か、またどのようにそれらを満たすかを適切に検討するための出発点としては、これで十分だと思います。

于 2012-12-10T19:03:09.340 に答える