2016-05-02 7 views
0

私はC#、Visual Studio 2015を使用しています。2クラスからのリストへのインスタンス

フォームロードからこれらの2人のアカウント(同じ人物)を追加するにはどうすればよいですか?

例のデータを追加する:

ボブ・スミス1970年1月1日 (アカウント):123456(バランス):$ 5000(アカウント):222222と(バランス):$ 3000?ここで

は、BankAccountクラスの一部です:

 public int AccountNumber { get; private set; } 
     public double Balance { get; private set; } 

     public BankAccount() 
     { 
      this.AccountNumber = generateAccountNumber(); 
      this.Balance = 0; 
     } 


     public BankAccount(Wallet accounts) 
     { 
      this.AccountNumber = generateAccountNumber(); 
      this.Balance = 0; 
      this.AccountNumber = Convert.ToInt16(accounts.AccountList);  
     } 

     public BankAccount(double beginningBalance) 
     { 
      Balance = beginningBalance; 
     } 

     private int generateAccountNumber() 
     { 
      Random numGenerator = new Random(); 
      //Requirement: 6 digit account number, cannot start with zero 
      return numGenerator.Next(100000, 999999); 
     } 

、これはウォレットクラスの一部である:

private string firstName; 
     private string lastName; 
     private DateTime birthDate; 
     private List<BankAccount> accountList = new List<BankAccount>(); 

     public Wallet(string firstName, string lastName, DateTime birth, List<BankAccount> Account) 
     { 
      this.firstName = firstName; 
      this.lastName = lastName; 
      this.birthDate = birth; 
      this.accountList = Account; 
     } 

     public List<BankAccount> AccountList 
     { 
      get { return accountList; } 
      set { accountList = value; } 
     } 

QUESTION:どのように私は(同じ人からの)2つのアカウントを作成してくださいすでにへそこにいる?

+0

私はあなたの質問を改訂することをお勧めします。 –

+0

申し訳ありませんが、それは助けたかどうかは分かりませんでしたが... – Thisone

+0

まず、あなたのデータを保存する方法と場所を知っている必要があります。これはデータベース、ファイルなどです。次に、データをロードするときはWHENを知っておく必要があります。 –

答えて

1

質問の2つのクラスは、お互いに参照を作成するだけでなく(銀行口座はウォレットとウォレットが銀行口座を知っています)、要件に応じてデータを設定する方法もありません。 BankAccountを作成し、人物と天体の両方を定義します。

代わりに、このような何かを試してみてください - 明らかにあなたの他の要件の一部に違反しますが、正しいインスタンスの作成を中心に、あなたの疑問を解決:

public BankAccount 
{ 
    public Wallet Account { get; private set; } // reference to the person 
    public int AccountNumber { get; private set; } 
    public decimal Balance { get; private set; } 

    public BankAccount(Wallet account) 
    { 
     this.AccountNumber = GenerateAccountNumber(); 
     this.Balance = 0; // always zero to start with 
     this.Account = account; // check to be NOT null or bank account may have no account 
    } 

    public void TransferMoney(decimal amount) 
    { 
     this.Balance += amount; 
    } 

    private int GenerateAccountNumber() 
    { 
     return new Random().Next(100000, 999999); 
    } 
} 

Walletクラスは、銀行口座を参照するべきではありません!

public class Wallet 
{ 
    private string firstName; 
    private string lastName; 
    private DateTime birthDate; 
    // don't keep a reference here. Bank accounts already know their accounts 
    // private List<BankAccount> accountList = new List<BankAccount>(); 

    public Wallet(string firstName, string lastName, DateTime birth) 
    { 
     this.firstName = firstName; 
     this.lastName = lastName; 
     this.birthDate = birth; 
    } 
} 

そして、これはあなたのサンプルシナリオを設定する方法です。あなたは銀行口座がちょうどではなく参照を維持するよりも、それらをチェックし、誰が所有しているかを知る必要がある場合口座番号はランダムであるため、コードを変更しない限り、口座番号を指定することはできません。

Wallet account = new Wallet("Bob", "Smith", ...); 
BankAccount account1 = new BankAccount(account); 
account1.TransferMoney(5000); 
BankAccount account2 = new BankAccount(account); 
account2.TransferMoney(3000);