2013-05-21 144 views
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; 
      } 
} 

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

有什么评论?

回答

1

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

IMO,付款具有可ByCard,通过......,所以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); } 
} 
0

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

+0

是@Henrique Barcelos,应该有一个对象数组来存储有效的信用卡号码 – Little

相关问题