2010-02-04 89 views
1

所以我開始了我最初的一個簡單系統的設計。我應該在這個系統中放置交易

我有一個叫做Customer的超類/抽象。它有2個子類:PrivateCustomer和BusinessCustomer。

我也有一個帳戶類。此帳戶可能是首付款帳戶或只是一個常規帳戶。它由Enum確定。 客戶類有一個列表<>帳戶。

現在,我也有一個事務類,這是棘手的地方。 交易類具有以下屬性:

  • 發件人
  • 接收機
  • 金額
  • 日期
  • 類型(枚舉)

正如你可能想象: 客戶可以有一個或多個帳戶。 客戶可以進行0次或多次交易。 一個賬戶有交易(或其他方式?)

現在。我在哪裏放置交易?請記住,系統可能會/隨着時間的推移而獲得[插入大量]交易。

  • 要我在 交易的全局列表,簡單過濾 列表中,當我想看到所有 交易,PrivateCustomer 12345?
  • 客戶類別 中的每個帳戶屬性都有一個所有的 交易列表嗎?
  • 第三個?

只要它是OO解決方案,我會滿意的。

+0

「只要它的面向對象的解決方案,我就很滿足了「。所以沒有非OO回答傢伙! – 2010-02-04 13:43:56

+0

這是一個非常愚蠢的評論? – CasperT 2010-02-04 13:44:30

回答

2

爲什麼發送方和接收方不能引用客戶對象。換句話說,每個客戶都有一個參與交易對象的參考列表,如果您的設計允許循環參考,這是我的方式。沿着這些線路

東西:

using System; 
using System.Collections.Generic; 

namespace Sample 
{ 
    public abstract class Customer 
    { 
     protected string _name; 
     //... 
    } 

    public class PrivateCustomer : Customer 
    { 
     private List<Transaction> _transactions; 
     //... 
    } 

    public class BusinessCustomer : Customer 
    { 
     private List<Transaction> _transactions; 
     //... 
    } 

    public class Transaction 
    { 
     private Customer _sender; 
     private Customer _receiver; 
     private double _amount; 
     private DateTime _date; 
     private AccountType _accountType; 

     //... 
    } 

    public enum AccountType 
    { 
     Downpayment, 
     Regular 
    } 
} 

考慮到帳戶信息的版本(沒有雙關語意):

using System; 
using System.Collections.Generic; 

namespace Sample 
{ 
    public abstract class Customer 
    { 
     private List<Account> _accounts; 
     protected string _name; 
     //... 
    } 

    public class PrivateCustomer : Customer 
    { 
     //... 
    } 

    public class BusinessCustomer : Customer 
    { 
     //... 
    } 

    public class Transaction 
    { 
     private Account _sender; 
     private Account _receiver; 
     private double _amount; 
     private DateTime _date; 

     //... 
    } 

    public abstract class Account 
    { 
     private Customer _customer; 
     private Collection<Transaction> _transactions; 
    } 

    public class RegularAccount 
    { 
     //... 
    } 

    public class DownpaymentAccount 
    { 
     //... 
    } 
} 
+0

真相被告知,我不確定你的意思。我正在使用C#,如果這可以幫助你。 – CasperT 2010-02-04 13:51:07

+0

這是一項家庭作業嗎? – 2010-02-04 13:57:58

+0

我只是和朋友討論過如何設計這樣的東西。我們無法找到答案,所以我使用SO作爲第三方 – CasperT 2010-02-04 14:03:21