0

假设我有一组客户。每个 Client 都在其中存储三个对象,例如 Client[1] 有一个CurrentAccount, CreditCard,DebitCard类。

我将如何创建这样的数据库?假设CurrentAccount有一个公共方法“ getAmount”,如果我打电话:

int num = Client[1].CurrentAccount.getAmount();

我很确定它不会。但是你如何创建这个数据库呢?

4

3 回答 3

0

您必须创建一个客户端类,该类具有获取当前帐户、信用卡和借记卡的方法。然后,如果您有一组称为客户端的客户端,则可以执行以下操作:

int num = clients[1].getCurrentAccount().getAmount();

与此相同:

Client client = clients[1];
CurrentAccount account = client.getCurrentAccount();
int num = account.getAmount();

只是更短。

于 2012-10-22T23:48:50.847 回答
0

抱歉,我不喜欢这种代码;)

您使用以下代码违反了得墨忒耳法则:

int num = clients[1].CurrentAccount.getAmount();

由于CurrentAccount必须隐藏客户达到金额值的事实。实际上,这会增加Client类实现和您的语句之间的耦合。

getCurrentAmount()你应该在你的Client类中定义一个命名的方法:

public class Client{

    private CurrentAccount currentAccount;

    //supposing constructor setting currentAccount here 

    //and below here, the new method
    public long getCurrentAmount(){
      return currentAccount.getAmount();
    }
} 

现在您的Client类实现将被更好地封装:

int num = clients[1].getCurrentAmount();
于 2012-10-23T00:00:00.840 回答
0
public class Client{
  public CurrentAccount ca = new CurrentAccount();
  public CreditCard cc = new CreditCard();
  public DebitCard dc = new DebitCard ();
}

public class CurrentAccount { 
  private int amount = 0;
  public int getAmount(){ return amount; } 
}

某处...

client<Client>[] = new Client<Client>[3]();
client[1] = new Client();client[2] = new Client();client[3] = new Client();
int amount = client[1].ca.getAmount();

编辑 1 更好的做法是在客户端类中定义一个方法。

public class Client{
      private CurrentAccount ca = new CurrentAccount(); // note that its private now.
      public CreditCard cc = new CreditCard();
      public DebitCard dc = new DebitCard ();
      // define a property acccess getter method
      public int getCurrentAccountAmount(){return ca.getAmount();} 
}

并将其称为:

int amount = client[1].getCurrentAccountAmount();
于 2012-10-22T23:55:07.037 回答