Oop 在这种情况下我应该使用聚合吗?
如果我有一个名为Payment的类,它是另一个名为Card的类的超类,那么如何将该类与另一个验证该卡是否有效的类联接起来。 我的UML图如下所示:Oop 在这种情况下我应该使用聚合吗?,oop,aggregation,Oop,Aggregation,如果我有一个名为Payment的类,它是另一个名为Card的类的超类,那么如何将该类与另一个验证该卡是否有效的类联接起来。 我的UML图如下所示: Payment<---------Card 2) 我已经读到我可以使用聚合,但我有点怀疑如何使用它: class paymentCard extends Payment { Card creditcard //aggregation public authorized(
Payment<---------Card
2) 我已经读到我可以使用聚合,但我有点怀疑如何使用它:
class paymentCard extends Payment
{
Card creditcard //aggregation
public authorized()
{
creditcard=new Card(numberCard)
if creditcard.verified() return true;
else return false;
}
}
两种形式中哪一种更好?对我来说,第一个看起来像是对外部类的查询,也可以是数据库,而第二个我不太确定
有什么意见吗?有一天你可能会想要其他的付款方式 在国际海事组织,付款有一种付款方式,可以是信用卡,也可以是…,因此:
class Payment
{
protected PaymentMethodoption;
}
abstract class PaymentMethod
{
public abstract bool authorized();
}
class PaymentByCreditCard : PaymentMethod
{
public override bool authorized() { return card.verified(card_number); }
}
你基本上回答了你自己的问题。关键问题是:创建信用卡对象的成本有多高?可能不只是像第二个例子那样向它传递一个数字,这意味着你可能会将它们存储在其他地方。yes@Henrique Barcelos,应该有一个对象数组来存储有效的信用卡号
class paymentCard extends Payment
{
Card creditcard //aggregation
public authorized()
{
creditcard=new Card(numberCard)
if creditcard.verified() return true;
else return false;
}
}
class Payment
{
protected PaymentMethodoption;
}
abstract class PaymentMethod
{
public abstract bool authorized();
}
class PaymentByCreditCard : PaymentMethod
{
public override bool authorized() { return card.verified(card_number); }
}