0

クライアントの配列があるとしましょう。すべての Client はその中に 3 つのオブジェクトを格納するため、たとえば Client[1] にはCurrentAccount, CreditCard,DebitCardクラスがあります。

このようなデータベースを作成するにはどうすればよいですか? CurrentAccountに public メソッド " " があるとしましょうgetAmount:

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

私はそうしないと確信しています。では、このデータベースをどのように作成するのでしょうか?

4

3 に答える 3

0

現在のアカウント、クレジット カード、およびデビット カードを取得するメソッドを持つクライアント クラスを作成する必要があります。次に、clients と呼ばれるクライアントの配列がある場合、次のようにすることができます。

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
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 に答える
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 に答える