0

Card という名前の別のクラスのスーパークラスである Payment という名前のクラスがある場合、カードが有効かどうかを検証する別のクラスとどのように結合できますか。私のUML図は次のようになります。

Payment<---------Card

これを行うには2つの方法を考えましたが、どちらが正しいかを知りたいです。

1) クレジット カードが有効かどうかを確認するための関連付けを持つモデルですが、これを paymentCard に結合しません。

Card_list---1--------------1*---<>Card

したがって、クラス Card 内で次のように呼び出します。

class paymentCard extends Payment
{
     public authorized()        ---abstract method
     {
          if card.verified(card_number) return true;     ---here I call the card class
          else return false;
     }
}

2)集約を使用できることを読みましたが、使用方法が少し疑わしいです:

class paymentCard extends Payment
{
          Card creditcard                  //aggregation
          public authorized()
          {
               creditcard=new Card(numberCard)
               if creditcard.verified() return true;
               else return false;
          }
 }

2つの形式のうち、どちらが優れていますか? 私にとって、最初のものはデータベースにもなる外部クラスへのクエリのように見えますが、2番目のものはよくわかりません

任意のコメント?

4

2 に答える 2

1

いつの日か、他の支払い方法が必要になるかもしれません。

IMO、Payment には、ByCard、By... などの payment_method があります。

class Payment
{
    protected PaymentMethodoption;
}

abstract class PaymentMethod
{
    public abstract bool authorized();
}

class PaymentByCreditCard : PaymentMethod
{
    public override bool authorized() { return card.verified(card_number); }
}
于 2013-05-21T12:32:08.313 に答える
0

まあ、あなたは基本的にあなた自身の質問に答えました。重要な質問は、クレジット カード オブジェクトの作成にどれくらいの費用がかかるかということです。おそらく、2番目の例で行ったように番号を渡すだけではありません。つまり、それらを別の場所に保存する可能性があります。

于 2013-05-21T14:39:31.120 に答える