0

如果我有一个名为 Payment 的类,它是另一个名为 Card 的类的超类,我如何将该类与另一个验证卡是否有效的类一起加入。我的 UML 图是这样的:

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

我已经想到了两种方法,但我想知道哪一种是正确的:

1)带有关联的模型来检查信用卡是否有效,但不将其加入到 paymentCard 中:

Card_list---1--------------1*---<>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;
          }
 }

这两种形式哪一种更好?对我来说,第一个看起来像是对也可以是数据库的外部类的查询,而第二个我不太确定

任何意见?

4

2 回答 2

1

有一天,您可能想要其他付款方式。

IMO,付款具有可以是 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

好吧,你基本上回答了你自己的问题。关键问题是:创建一个信用卡对象的成本是多少?可能不仅仅是像您在第二个示例中所做的那样向它传递一个数字,这意味着您可能会将它们存储在其他地方。

于 2013-05-21T14:39:31.120 回答